- Brand
- CampusThreads
- Category
- Operations
- Primary Subcategory
- Project & Task Management Platforms
Integration details
Description
CampusThreads helps organization administrators run ambassador programs: review operations, coordinate events and shifts, manage tasks and resources, communicate with ambassadors and prospects, and configure their workspace.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Primary Subcategory
- Project & Task Management Platforms
- Secondary Subcategories
- None listed
- Brand
- CampusThreads
- Access
- Account required
- First tracked
- 2026-08-27
- Tool count
- 119
- Geography
- US
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
Agent DiscoverabilityChatGPT Discoverability ScoreUpdated dailyThe first to track the ChatGPT, Claude, Muse & Grok ecosystems, with the largest database on the core platforms. Tracked daily since .
0/100
Invisible#19of 56
in Project & Task Management Platforms- Picked
- 0.0/100
- Found
- 0.0/100
- Positioned
- –/100
Category leaderboard
Project & Task Management Platforms
- 1A
Asana69
- 2C
ClickUp40
- 3L
Linear39
- 4M
monday.com35
- 19C
CampusThreads0
Get alerts for CampusThreads
Get updates when CampusThreads’s Discoverability Score or category rank changes.
Competing in ChatGPT Project & Task Management Platforms
View Category119 tools agents can invoke
[Tenant: Lumo (slug=lumo-demo). Every tool is auto-scoped here — never search FOR this name as a record.] Use this only if asked explicitly which tools are available. Returns the catalog (name, description, side-effect class).
[Tenant: Lumo (slug=lumo-demo). Every tool is auto-scoped here — never search FOR this name as a record.] Use this only if you specifically need the signed-in admin's identity object (user id, email, company id/slug, brand, and the admin's linked ambassador account if any). The orientation already includes this info, so most questions don't need this tool.
[Tenant: Lumo (slug=lumo-demo). Every tool is auto-scoped here — never search FOR this name as a record.] Use this for ANY question about WHEN an ambassador is free, reachable, or already booked — 'what's their availability', 'are they free next week', 'can I schedule them', 'how do they get notified'. Returns, per ambassador: declared weekly SHIFT availability and CHAT availability (recurring slots in their own timezone, or an always/never mode); one-time UNAVAILABILITY blocks (time off — these override everything, including 'always available'); the shifts they already have SCHEDULED within the lookahead window; a `currentlyAvailable` flag for shifts and for chat; and their NOTIFICATION preferences (which categories reach them by email vs push, and whether a push token is registered). Identify the ambassador by `id` (numeric user id), `ids` (BATCH — many ids in one call; prefer this over per-id fan-out), or `query` (name substring). To find the best time to schedule a GROUP, use `availability_overlap` instead — it does the cross-ambassador overlap math for you. `windowDays` sets the scheduled-shift lookahead (default 7). Routing: prefer this optimized tool for the workflow it describes. If its result omits a field visible in the admin portal, or source-level detail is needed, call `ct_read` for supported generic entities or `portal_record_query` for an exact record before saying the MCP cannot access it.
[Tenant: Lumo (slug=lumo-demo). Every tool is auto-scoped here — never search FOR this name as a record.] Use this to set championActive=false on an ambassador. Reversible via ambassador_reactivate.
[Tenant: Lumo (slug=lumo-demo). Every tool is auto-scoped here — never search FOR this name as a record.] Permanently delete an ambassador (or cancel a pending invite). Two-phase: first call returns a preview + confirmation token; call again with confirm.token. Irreversible — to merely make an ambassador inactive, use ambassador_deactivate instead.
[Tenant: Lumo (slug=lumo-demo). Every tool is auto-scoped here — never search FOR this name as a record.] Invite one or more people to become ambassadors, by email — each is sent an invitation to onboard (the Recruit / Invite Ambassadors action). `notifyWhenOnboarded` pings you when an invitee finishes onboarding.
[Tenant: Lumo (slug=lumo-demo). Every tool is auto-scoped here — never search FOR this name as a record.] Rank ambassadors over a time window — shifts, hours worked, and reach (people reached). `basis: 'worked'` (default) counts only shifts the ambassador actually worked — productivity ('top ambassadors this month', 'who worked the most hours'). `basis: 'assigned'` counts every shift assigned to them in the window regardless of status (future scheduled shifts included; cancelled excluded) — their total workload / how many chances they have had. For 'who has had the FEWEST shifts' / spreading opportunities fairly, use `order: 'asc'` with `includeZeroActivity: true` (so ambassadors with no shifts appear, count 0) and usually `basis: 'assigned'`. Aggregates in one call — do NOT fan out over shift_query and tally yourself. Defaults to the last 30 days. Routing: prefer this optimized tool for the workflow it describes. If its result omits a field visible in the admin portal, or source-level detail is needed, call `ct_read` for supported generic entities or `portal_record_query` for an exact record before saying the MCP cannot access it.
[Tenant: Lumo (slug=lumo-demo). Every tool is auto-scoped here — never search FOR this name as a record.] Search WORKERS (ambassadors) within the tenant. WHEN: user asks about specific workers by name/status/id, or wants an ambassador count or status breakdown. NOT WHEN: the name they mention matches the tenant (auto-scoped, never a record). NOT WHEN: they ask about admin/portal users → use `colleague_query`. NOT WHEN: they ask about leads/prospects → use `prospect_query`. NOT WHEN: they ask WHEN a worker is free / what they're booked for / how they're notified → use `ambassador_availability`. Defaults: no args → count + byStatus + recent. `id` → that ambassador or null. `query` → substring across firstName/lastName/email. Each record includes profile voice-note presence (`hasProfileVoiceNote`, URL, duration) and `topicTags`, which are the topics the ambassador is qualified/interested to talk about for prospect matching. Use `hasVoiceNote` for 'who has a voice note' and `topic` for 'who is qualified to talk about X'. Status semantics: active = championActive && completedPassword; inactive = !championActive; pending = invited but not yet onboarded. Routing: prefer this optimized tool for the workflow it describes. If its result omits a field visible in the admin portal, or source-level detail is needed, call `ct_read` for supported generic entities or `portal_record_query` for an exact record before saying the MCP cannot access it.
[Tenant: Lumo (slug=lumo-demo). Every tool is auto-scoped here — never search FOR this name as a record.] Use this to set championActive=true on an ambassador. Reversal of ambassador_deactivate.
[Tenant: Lumo (slug=lumo-demo). Every tool is auto-scoped here — never search FOR this name as a record.] Use this to update an ambassador's profile fields. Cannot change company affiliation or auth fields.
[Tenant: Lumo (slug=lumo-demo). Every tool is auto-scoped here — never search FOR this name as a record.] Use this to read the CURRENT VALUES of shift/task/invoice operational rules, social-media attribution channels/hashtags for ambassador post analytics, scheduled-report cadence, or rule/policy-level feature toggles for this tenant. Application Settings → Social Media does not control the prospect widget's Content tab feed; use `widget_content_diagnostics` for that. This returns stored settings, not a feature catalogue — for 'how do I…' / 'where do I configure…' questions about the portal, use `product_help_search` instead. Routing: prefer this optimized tool for the workflow it describes. If its result omits a field visible in the admin portal, or source-level detail is needed, call `ct_read` for supported generic entities or `portal_record_query` for an exact record before saying the MCP cannot access it.
[Tenant: Lumo (slug=lumo-demo). Every tool is auto-scoped here — never search FOR this name as a record.] Update this tenant's operational settings (the values application_settings_get reads back): who can join, shift clocking/approval/cancellation rules, the default hourly rate, invoice config, social-media attribution hashtag tracking for ambassador post analytics, scheduled reports, and feature on/off toggles. Pass only the fields you want to change; omitted fields are left untouched. Reversible. These social-media fields do not control the widget Content tab feed. For branding and prospect-nurturing settings use widget_settings_update.
[Tenant: Lumo (slug=lumo-demo). Every tool is auto-scoped here — never search FOR this name as a record.] Use this for the full USAGE HISTORY of ONE physical asset — every logged event (Used in Activation, Changed Location, Changed Owner, Altered or Repaired, Shipped / In Transit, Damaged or Expired, Lost or Missing): when it happened, who carried it out, and the posting it was used for. Identify the asset by `id` or `query` (name substring). Returns the event timeline newest-first, counts by event type, and `usageCount`. To rank MANY assets by usage, use `physical_asset_query` and sort on its `usageCount`. For the immutable audit trail of event create/edit/delete actions, use `physical_asset_audit_trail`. Routing: prefer this optimized tool for the workflow it describes. If its result omits a field visible in the admin portal, or source-level detail is needed, call `ct_read` for supported generic entities or `portal_record_query` for an exact record before saying the MCP cannot access it.
[Tenant: Lumo (slug=lumo-demo). Every tool is auto-scoped here — never search FOR this name as a record.] Use this to find the BEST TIME to schedule a GROUP of ambassadors — 'when can the most of them meet', 'best 3-hour window next week for a team event'. Give it the ambassador ids to consider, an event duration and a date window; it computes — server-side — every candidate start time and ranks them by how many ambassadors are concurrently free, accounting for each one's weekly availability (in their own timezone), their time-off blocks, and shifts they're already booked for. Returns ranked windows, each with the available + unavailable ambassador names. Pick the in-scope ambassador set yourself first (e.g. by location/program) — this tool does the scheduling math, not the guest-list selection. Do NOT compute overlaps by hand from per-ambassador `ambassador_availability` calls; that is exactly what this replaces. Routing: prefer this optimized tool for the workflow it describes. If its result omits a field visible in the admin portal, or source-level detail is needed, call `ct_read` for supported generic entities or `portal_record_query` for an exact record before saying the MCP cannot access it.
[Tenant: Lumo (slug=lumo-demo). Every tool is auto-scoped here — never search FOR this name as a record.] Read the tenant's current Chat Guidelines exactly as the admin portal defines them. Use this for 'what are the chat guidelines', 'conversation guidelines', or ambassador/prospect chat moderation guidance. The admin portal stores this as the auto-generated Chat Guidelines resource (`resource.chatGuidelines=true`) and syncs its custom description to the tenant school settings. Returns the custom guidelines plus the always-enforced baseline rules shown in the portal. Routing: prefer this optimized tool for the workflow it describes. If its result omits a field visible in the admin portal, or source-level detail is needed, call `ct_read` for supported generic entities or `portal_record_query` for an exact record before saying the MCP cannot access it.
[Tenant: Lumo (slug=lumo-demo). Every tool is auto-scoped here — never search FOR this name as a record.] Update the tenant's custom Chat Guidelines, mirroring the admin portal's edit field on Moderation → Chat Guidelines. This edits the auto-generated Chat Guidelines resource description; the backend then syncs the same text to tenant settings for moderation.
[Tenant: Lumo (slug=lumo-demo). Every tool is auto-scoped here — never search FOR this name as a record.] Search COLLEAGUES (fellow admins — people who log into the portal alongside the signed-in user) within the tenant. WHEN: user asks 'who else has access', 'list our admins', 'who's on our team', or wants the admin headcount. NOT WHEN: the name they mention matches the tenant (auto-scoped, never a record). NOT WHEN: they ask about workers → use `ambassador_query`. NOT WHEN: they ask about leads → use `prospect_query`. Defaults: no args → all colleagues + count. `id` → that colleague. `query` → name/email substring. `isYou: true` flags the signed-in admin. Routing: prefer this optimized tool for the workflow it describes. If its result omits a field visible in the admin portal, or source-level detail is needed, call `ct_read` for supported generic entities or `portal_record_query` for an exact record before saying the MCP cannot access it.
[Tenant: Lumo (slug=lumo-demo). Every tool is auto-scoped here — never search FOR this name as a record.] Post a new comment on a task or resource. Provide exactly one of `taskId` or `resourceId`, plus `message`. The signed-in admin is recorded as the creator. Parent's tenant ownership is verified server-side.
[Tenant: Lumo (slug=lumo-demo). Every tool is auto-scoped here — never search FOR this name as a record.] Permanently delete a comment. Only the comment's creator can delete it. Two-phase: preview, then confirm with token.
[Tenant: Lumo (slug=lumo-demo). Every tool is auto-scoped here — never search FOR this name as a record.] Read comments across one or many tasks or resources in a SINGLE call. Provide exactly one of: `taskId` (one task), `taskIds` (batch of tasks), `resourceId` (one resource), `resourceIds` (batch of resources). ALWAYS prefer the batch form when checking comments across multiple parents — one call with `resourceIds: [1,2,3,...]` is dramatically faster than N calls each with one `resourceId`. Each returned comment carries `parent: { kind, id }` so you can group results client-side. Parent's tenant is verified server-side. Routing: prefer this optimized tool for the workflow it describes. If its result omits a field visible in the admin portal, or source-level detail is needed, call `ct_read` for supported generic entities or `portal_record_query` for an exact record before saying the MCP cannot access it.
[Tenant: Lumo (slug=lumo-demo). Every tool is auto-scoped here — never search FOR this name as a record.] Edit the message of an existing comment. Only the comment's creator can edit it (enforced server-side). The `edited` flag is set automatically.
[Tenant: Lumo (slug=lumo-demo). Every tool is auto-scoped here — never search FOR this name as a record.] The community bot's activity feed — every autonomous action it has taken (answers, engagement prompts, acceptance celebrations, office-hours syncs, escalations, weekly pulses, moderation, …). Filters: `kind` (machine kind, see byKind keys in the result), `channel`, `limit`. Items carry a human `title` — use that wording with the user, never the raw kind. Matches the Community page's 'Bot Activity' feed and its metrics. Routing: prefer this optimized tool for the workflow it describes. If its result omits a field visible in the admin portal, or source-level detail is needed, call `ct_read` for supported generic entities or `portal_record_query` for an exact record before saying the MCP cannot access it.
[Tenant: Lumo (slug=lumo-demo). Every tool is auto-scoped here — never search FOR this name as a record.] The Discord community's channels with activity: name, type, topic, message count, and the latest message preview. Filter: `query` (channel name substring). Matches the Community page's channel list. Refer to channels as #name. Routing: prefer this optimized tool for the workflow it describes. If its result omits a field visible in the admin portal, or source-level detail is needed, call `ct_read` for supported generic entities or `portal_record_query` for an exact record before saying the MCP cannot access it.
[Tenant: Lumo (slug=lumo-demo). Every tool is auto-scoped here — never search FOR this name as a record.] Community members ranked by engagement (messages, questions, reactions). Filters: `admittedOnly` (members whose offer of admission has been celebrated), `query` (name substring). Returns display name, engagement score and grade, message/question/reaction counts, last activity, and whether they have been admitted. Bots and ambassadors are excluded, matching the Community page's engagement list. Routing: prefer this optimized tool for the workflow it describes. If its result omits a field visible in the admin portal, or source-level detail is needed, call `ct_read` for supported generic entities or `portal_record_query` for an exact record before saying the MCP cannot access it.
[Tenant: Lumo (slug=lumo-demo). Every tool is auto-scoped here — never search FOR this name as a record.] Moderation cases the community bot opened for flagged Discord messages. Filter: `status` (open = still needs administrator review, resolved, any). Returns the member's name, channel, reason, the bot's explanation, the flagged content, and case status. Matches the Community page's 'Moderation Review' feed. Routing: prefer this optimized tool for the workflow it describes. If its result omits a field visible in the admin portal, or source-level detail is needed, call `ct_read` for supported generic entities or `portal_record_query` for an exact record before saying the MCP cannot access it.
[Tenant: Lumo (slug=lumo-demo). Every tool is auto-scoped here — never search FOR this name as a record.] Use this for ANY question about the Discord community's overall state — 'how is the community doing', engagement grade, member/message/question counts, the latest weekly pulse (top concern topics with week-over-week trends, most active channels), and the class-composition snapshot (programs, regions, admitted count). Matches the Community page header and its Weekly Pulse / Class Composition cards. For individual questions, members, channels, moderation cases, or the bot activity feed, use the dedicated community_* tools. Routing: prefer this optimized tool for the workflow it describes. If its result omits a field visible in the admin portal, or source-level detail is needed, call `ct_read` for supported generic entities or `portal_record_query` for an exact record before saying the MCP cannot access it.
[Tenant: Lumo (slug=lumo-demo). Every tool is auto-scoped here — never search FOR this name as a record.] Prospect questions asked in the Discord community and how each was handled. Filters: `status` (pending = still awaiting a reply, queued = reply in progress, answered = bot answered, escalated = handed to staff), `channel` (name, with or without #), `query` (substring of the question text). Returns the asker's name, channel, question, status, and the bot's response preview. Matches the Community page's 'Messages Needing Responses' feed (status: pending) and its questions list. Routing: prefer this optimized tool for the workflow it describes. If its result omits a field visible in the admin portal, or source-level detail is needed, call `ct_read` for supported generic entities or `portal_record_query` for an exact record before saying the MCP cannot access it.
[Tenant: Lumo (slug=lumo-demo). Every tool is auto-scoped here — never search FOR this name as a record.] Discord community verification and role-gating status. Use this for questions about who has verified their Discord account, who is still Unverified, verification-link events, and the current managed role transition from Unverified to Verified Prospect. This reflects the live prospect verification flow used by the Discord community. Broader ambassador/admin Discord OAuth linking and periodic role reconciliation are not live admin-portal features unless matching records are present in source data. Routing: prefer this optimized tool for the workflow it describes. If its result omits a field visible in the admin portal, or source-level detail is needed, call `ct_read` for supported generic entities or `portal_record_query` for an exact record before saying the MCP cannot access it.
[Tenant: Lumo (slug=lumo-demo). Every tool is auto-scoped here — never search FOR this name as a record.] Show current tenant/auth context and coarse tool capability counts.
[Tenant: Lumo (slug=lumo-demo). Every tool is auto-scoped here — never search FOR this name as a record.] Load the CampusThreads MCP operating guide. Use at the start of broad or multi-step CampusThreads work.
[Tenant: Lumo (slug=lumo-demo). Every tool is auto-scoped here — never search FOR this name as a record.] Discover CampusThreads portal entities, fields, types, allowed values, operations, and writable fields before using ct_read/ct_write.
[Tenant: Lumo (slug=lumo-demo). Every tool is auto-scoped here — never search FOR this name as a record.] List CampusThreads MCP workflow skills available to guide multi-step work.
[Tenant: Lumo (slug=lumo-demo). Every tool is auto-scoped here — never search FOR this name as a record.] Read one CampusThreads MCP workflow skill before executing a multi-step workflow.
[Tenant: Lumo (slug=lumo-demo). Every tool is auto-scoped here — never search FOR this name as a record.] Generic schema-driven write with strict validation and dry-run previews. Defaults to dryRun:true. Currently supports company_settings; use existing domain mutations for other entities until their schema write contracts are added.
[Tenant: Lumo (slug=lumo-demo). Every tool is auto-scoped here — never search FOR this name as a record.] Use this for ANY broad org-wide question — 'how are we doing', 'what needs my attention', 'give me a summary'. Returns ambassador status, shift status incl. needsAttention count, prospect count, prospect-thread backlog — all in one call. Routing: prefer this optimized tool for the workflow it describes. If its result omits a field visible in the admin portal, or source-level detail is needed, call `ct_read` for supported generic entities or `portal_record_query` for an exact record before saying the MCP cannot access it.
[Tenant: Lumo (slug=lumo-demo). Every tool is auto-scoped here — never search FOR this name as a record.] Use this for 'what needs my attention', 'what's outstanding', 'what should I do today', 'anything I'm behind on' — it returns one actionable digest fused across shifts, prospect threads and tasks: shifts proposed by ambassadors / pending approval / awaiting a report / with cancellation requests / unfilled and starting soon, prospect threads needing a response or help, and overdue tasks. For read-only METRICS and leaderboards use dashboard_overview instead. For shift-only action item questions ('when it comes to shifts', 'shift queue', 'what shift work is on me'), set `area: 'shifts'` so the result excludes unrelated thread/task sections and avoids extra queries. Each section returns `items` up to `detailLimit`; if `count` is higher than `items.length`, say more exist and ask before drilling in. Routing: prefer this optimized tool for the workflow it describes. If its result omits a field visible in the admin portal, or source-level detail is needed, call `ct_read` for supported generic entities or `portal_record_query` for an exact record before saying the MCP cannot access it.
[Tenant: Lumo (slug=lumo-demo). Every tool is auto-scoped here — never search FOR this name as a record.] Create a new ambassador group with an explicit (manual) member list. Dynamic criteria-based groups (by country, program, ambassador type, tags, etc.) must be created in the portal — this tool creates manual-selection groups only.
[Tenant: Lumo (slug=lumo-demo). Every tool is auto-scoped here — never search FOR this name as a record.] Use this for ANY question about ambassador groups (the way the tenant clusters ambassadors). No args → count, totalMemberships, recent. With `id` → single group. Filters: `query` (name substring). Routing: prefer this optimized tool for the workflow it describes. If its result omits a field visible in the admin portal, or source-level detail is needed, call `ct_read` for supported generic entities or `portal_record_query` for an exact record before saying the MCP cannot access it.
[Tenant: Lumo (slug=lumo-demo). Every tool is auto-scoped here — never search FOR this name as a record.] Rename a group or replace its member list. The member list is REPLACED wholesale — pass the full intended set of ambassador ids, not a delta. Only manual-selection groups should have their members edited this way.
[Tenant: Lumo (slug=lumo-demo). Every tool is auto-scoped here — never search FOR this name as a record.] Start a new INTERNAL thread — a discussion among the named ambassadors (plus you). Pass the ambassador record ids to include as contributors and, optionally, a `title` (up to 50 characters). After creating, post into it with `thread_send_message`.
[Tenant: Lumo (slug=lumo-demo). Every tool is auto-scoped here — never search FOR this name as a record.] Use this for internal admin↔ambassador chat threads, including posting conversations that are automatically created for a specific posting so ambassadors/admins can discuss that shift opportunity. Returned `source: 'posting'` means an auto-created posting conversation; `postingId` is for internal tool joins only and must not be shown to the user. Describe these as 'posting conversations' or 'the conversation for <posting title>', never as IDs, variables, or system-generated shells. No args → count, byStatus (active = msg in last 7d / quiet), recent. With `id` → single thread. Filters: `status`, `source`, `postingId`, `ambassadorId`, `query` (thread name). Routing: prefer this optimized tool for the workflow it describes. If its result omits a field visible in the admin portal, or source-level detail is needed, call `ct_read` for supported generic entities or `portal_record_query` for an exact record before saying the MCP cannot access it.
[Tenant: Lumo (slug=lumo-demo). Every tool is auto-scoped here — never search FOR this name as a record.] Generate an invoice for an ambassador for a pay period — the equivalent of the ambassador detail → Invoices → Add Invoice action. The total amount, hours and shift count are COMPUTED by the backend from the ambassador's shifts worked between startDate and endDate; you do not supply them. By default the period must contain at least one qualifying shift — pass allowEmpty:true to issue a zero-shift invoice anyway. The invoice is shared to the ambassador's app.
[Tenant: Lumo (slug=lumo-demo). Every tool is auto-scoped here — never search FOR this name as a record.] Use this for ANY question about invoices (records of ambassador earnings). No args → count, totalSum (per currency), top-earners-by-amount, recent. Single: `id` (one invoice). Batch: `ids: [...]`. Filters: `ambassadorId` (numeric user id) OR `ambassadorIds: [...]` (many), `generatedAfter`/`generatedBefore` (ISO datetime — 'past year', 'this month'). ALWAYS prefer the batched form over per-ambassador drilldown. Routing: prefer this optimized tool for the workflow it describes. If its result omits a field visible in the admin portal, or source-level detail is needed, call `ct_read` for supported generic entities or `portal_record_query` for an exact record before saying the MCP cannot access it.
[Tenant: Lumo (slug=lumo-demo). Every tool is auto-scoped here — never search FOR this name as a record.] Use this for ANY question about who has VISITED a location and when — 'who's been to <venue>', 'has anyone worked at X', 'when was the last activation at Y', 'how many visits has <location> had'. Returns every recorded visit to ONE location: the ambassador (resolved name), the date, the posting + shift it belonged to, plus reach, duration and rating — with per-ambassador and per-posting rollups. Identify the location by `id` (from location_query) or `query` (label/address substring). A location with zero visits returns an empty list — nobody has worked there yet. Optional `after`/`before` (ISO datetime) restrict the visit window. Routing: prefer this optimized tool for the workflow it describes. If its result omits a field visible in the admin portal, or source-level detail is needed, call `ct_read` for supported generic entities or `portal_record_query` for an exact record before saying the MCP cannot access it.
[Tenant: Lumo (slug=lumo-demo). Every tool is auto-scoped here — never search FOR this name as a record.] Create one or more locations (venues). Always pass a `locations` array — one element or many; many are written in a single batched commit, so prefer one bulk call over repeated single calls. Provide lat/lng for a location to appear on the portal Map.
[Tenant: Lumo (slug=lumo-demo). Every tool is auto-scoped here — never search FOR this name as a record.] Permanently delete a location. Two-phase: first call returns a preview + confirmation token; call again with confirm.token to delete. Irreversible.
[Tenant: Lumo (slug=lumo-demo). Every tool is auto-scoped here — never search FOR this name as a record.] Use this for ANY question about locations (venues where shifts happen). No args → count, byType breakdown, recent. With `id` → single location. Filters: `type` (storage_site/administrative_site/activation_site/transitional_site), `subType` (e.g. University/Coffee Shop), `query` (label or address). Each location carries `visitCount` / `lastVisited` / `totalReach` — read these to see at a glance which venues have had activity (visitCount 0 = nobody has worked there). For the who/when detail behind those numbers, use `location_activity`. Routing: prefer this optimized tool for the workflow it describes. If its result omits a field visible in the admin portal, or source-level detail is needed, call `ct_read` for supported generic entities or `portal_record_query` for an exact record before saying the MCP cannot access it.
[Tenant: Lumo (slug=lumo-demo). Every tool is auto-scoped here — never search FOR this name as a record.] Update a location (venue) — label, type, address, coordinates, tags. Pass only the fields you want changed.
[Tenant: Lumo (slug=lumo-demo). Every tool is auto-scoped here — never search FOR this name as a record.] Use this to inspect/open media from the tenant Media page in bulk. Returns MCP image content blocks for images, and resource links for videos/documents/other files. Use `key`/`keys` from media_query or filter by query/mediaType. Routing: prefer this optimized tool for the workflow it describes. If its result omits a field visible in the admin portal, or source-level detail is needed, call `ct_read` for supported generic entities or `portal_record_query` for an exact record before saying the MCP cannot access it.
[Tenant: Lumo (slug=lumo-demo). Every tool is auto-scoped here — never search FOR this name as a record.] Use this for the tenant Media page / Media Library grid. No args → count, byType (image/video/document/other), recent. Filters: `key`, `mediaType`, `mime` substring, `query` (filename). To inspect multiple images/videos/files, use `media_content_query` after this; it returns actual image blocks for images and resource links for videos/files. Routing: prefer this optimized tool for the workflow it describes. If its result omits a field visible in the admin portal, or source-level detail is needed, call `ct_read` for supported generic entities or `portal_record_query` for an exact record before saying the MCP cannot access it.
CampusThreads ChatGPT Plugin FAQ
How the directory, categories and Discoverability Score work.
Read the methodologyHow do I improve CampusThreads's ChatGPT Plugin discoverability?
The levers are the listing surface agents actually read: names, descriptions, keywords, tool metadata, and registry health. Which lever matters depends on where discovery breaks, which is what continuous measurement shows.
What are CampusThreads alternatives on ChatGPT?
As of 2026-10-11, CampusThreads competes with Asana, ClickUp, Linear, monday.com, Atlassian Rovo (Legacy), Trello, Smartsheet AU, Smartsheet EU and 47 more in ChatGPT Project & Task Management Platforms, ranked by public Discoverability Score.
Where does CampusThreads rank in Project & Task Management Platforms on ChatGPT?
As of 2026-10-11, CampusThreads ranks #19 of 56 in ChatGPT Project & Task Management Platforms with a Discoverability Score of 0/100 (Invisible).
Where is this profile measured?
This profile uses the geography attached to the latest public registry snapshot: US. Locale tags are intentionally omitted.