> ## Documentation Index
> Fetch the complete documentation index at: https://docs.meetsquad.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Tool catalogue

> All thirty Squad MCP tools, grouped by area, with their parameters and the scope each one needs.

Thirty tools: seventeen read, thirteen write. Read tools need the `read:workspace` scope, write tools need `write:workspace`. Setup is on [Squad MCP server](/mcp/overview).

<Warning>
  Every tool below is listed to every session regardless of scope. A read-scoped session sees the write tools and gets an error on invocation telling it to reconnect with write access. Seeing a write tool in the list does not mean you can call it.
</Warning>

## Conventions

List tools take `limit` (default 25, maximum 100) and `cursor`. When more results exist, the response carries a `nextCursor` to pass back on the following call.

Anywhere a tool takes an entity ID, both the display ID (`AC-12`) and the UUID work.

## The catalogue

<AccordionGroup>
  <Accordion title="Workspace" icon="folder-tree">
    | Tool                     | Scope | What it does                                                                       |
    | ------------------------ | ----- | ---------------------------------------------------------------------------------- |
    | `list_workspaces`        | read  | Every organisation and workspace you can access, with the current selection marked |
    | `select_workspace`       | write | Sets which organisation and workspace later tools operate on                       |
    | `get_workspace_overview` | read  | Mission, top goals, seven-day signal activity, chain health, open work counts      |
    | `update_workspace`       | write | Edits name, description, mission statement or logo                                 |
    | `list_members`           | read  | People in the organisation with their user IDs                                     |

    `select_workspace` takes `orgId` and `workspaceId`, both from `list_workspaces`.

    `update_workspace` takes any of `name`, `description`, `missionStatement`, `logoUrl`.

    <Tip>
      `get_workspace_overview` is the orientation call. Run it first in a new session.
    </Tip>

    `list_members` is how you resolve a person to the user ID that `update_action` wants for `assignee`.
  </Accordion>

  <Accordion title="Search and fetch" icon="search">
    | Tool         | Scope | What it does                                                                    |
    | ------------ | ----- | ------------------------------------------------------------------------------- |
    | `search`     | read  | Keyword search across signals, insights, actions, goals, documents and clusters |
    | `get_entity` | read  | Fetch any entity by display ID or UUID                                          |

    `search` takes `query` (required), `types` (any of `signal`, `insight`, `action`, `goal`, `document`, `cluster`) and `limit`. Matching is on title and content, so it wants real keywords rather than a question.

    `get_entity` takes `id` and an optional `include` array. Insights accept `include: ["evidence"]`, which returns the supporting signals with their source links, capped at ten. Documents come back as markdown. It is also the way to poll asynchronous work such as brief generation.
  </Accordion>

  <Accordion title="Evidence" icon="radio">
    Signals, clusters and insights. See [Signals](/signals) and [Signal clusters](/signal-clusters).

    | Tool                   | Scope | What it does                                          |
    | ---------------------- | ----- | ----------------------------------------------------- |
    | `list_signals`         | read  | Browse raw feedback with filters                      |
    | `find_similar_signals` | read  | Semantically related signals for a given one          |
    | `list_clusters`        | read  | Clusters with sizes and labels                        |
    | `get_cluster`          | read  | A cluster's stats, member signals and linked insights |
    | `list_insights`        | read  | Insights ranked by combined score                     |

    `list_signals` takes `source`, `signalType`, `sentiment` (`positive`, `neutral`, `negative`, `mixed`), `clusterId`, `since`, `until`, `includeDismissed`. Dismissed signals are excluded by default. Rows are summaries, so follow up with `get_entity` for full content.

    `find_similar_signals` takes `signalId` and `limit` (default 5, maximum 20). Use it before ingesting something that might already be known.

    `list_clusters` takes `signalType` and `includeUnlabeled`. `get_cluster` takes `clusterId` and caps member signals at fifteen.

    `list_insights` takes `goalId` to scope to one goal, plus `category` (`pain_point`, `feature_request`, `positive_signal`, `trend`, `risk`), `minScore` and `status` (`active`, `stale`, `archived`, `resolved`).
  </Accordion>

  <Accordion title="Actions" icon="circle-check">
    See [Actions](/actions).

    | Tool                   | Scope | What it does                                                  |
    | ---------------------- | ----- | ------------------------------------------------------------- |
    | `list_actions`         | read  | Ranked actions, filtered                                      |
    | `get_action_context`   | read  | The action, its insight, the evidence and the goals it serves |
    | `update_action_status` | write | Moves an action through its lifecycle                         |
    | `update_action`        | write | Edits metadata, assigns, or links an action                   |

    `list_actions` takes `statuses` (`suggested`, `in_progress`, `completed`, `dismissed`), `assignee` (a user ID or `me`), `insightId`, `priority` (`P0`, `P1`, `P2`) and `includeSnoozed`. It defaults to open work: suggested and in progress, snoozed excluded.

    <Tip>
      `get_action_context` takes `id` and returns everything needed to execute the action in one call, including the top eight customer quotes with source links. Call it before implementing or deciding.
    </Tip>

    `update_action_status` takes `actionId`, `status` (`start`, `complete`, `dismiss`, `snooze`) and an optional `note` that gets appended to the action's notes. It is annotated destructive because the transition changes state others can see.

    `update_action` takes `actionId` plus any of `priority`, `effort` (`low`, `medium`, `high`), `category` (`comms`, `operational`, `product`, `strategic`, `workspace`), `notes`, `assignee` (a user ID, `me`, or null to unassign), `linkInsightId`, `linkOnePagerId`. Its `notes` replaces the whole field. To append, use `update_action_status`.
  </Accordion>

  <Accordion title="Strategy" icon="trophy">
    See [Goals](/goals) and [Activity](/activity).

    | Tool             | Scope | What it does                                     |
    | ---------------- | ----- | ------------------------------------------------ |
    | `list_goals`     | read  | Goals ordered by importance                      |
    | `get_activity`   | read  | The workspace change feed, newest first          |
    | `create_goal`    | write | Creates a strategic goal                         |
    | `update_goal`    | write | Edits title, description or importance           |
    | `update_insight` | write | Sets category or status, links or unlinks a goal |
    | `dismiss_signal` | write | Permanently removes a signal                     |

    `list_goals` takes `minImportance`. `create_goal` takes `title`, `description` and `importance` (1 to 5, default 3). `update_goal` takes `goalId` plus the fields to change and keeps a version snapshot.

    `get_activity` takes `entityTypes`, `actorType` (`human` or `agent`) and `agentId`, so you can separate what Squad's agents did from what people did.

    `update_insight` takes `insightId` plus `category`, `status`, `linkGoalId`, `unlinkGoalId`. Insight titles and descriptions come from the pipeline and cannot be edited.

    <Warning>
      `dismiss_signal` deletes the signal. It cannot be recovered. It takes `signalId` and an optional `reason`, which is echoed back in the response rather than stored on the record.
    </Warning>
  </Accordion>

  <Accordion title="Knowledge" icon="folder">
    See [Knowledge documents](/knowledge-documents).

    | Tool              | Scope | What it does                             |
    | ----------------- | ----- | ---------------------------------------- |
    | `list_documents`  | read  | Documents and briefs with paths and tags |
    | `create_document` | write | Creates a document from markdown         |
    | `update_document` | write | Replaces body or title, manages tags     |

    `list_documents` takes `tag` and paginates. The tag filter applies to the current page, so paginate for full coverage.

    `create_document` takes `title`, `markdown`, and optional `directoryId` and `tags`. A near-identical title returns the existing document instead of creating a duplicate. Do not open the markdown with the title as a heading, since the title renders separately.

    `update_document` takes `documentId` plus `markdown` (replaces the whole body), `title`, `addTags`, `removeTags`. A version snapshot keeps the previous content recoverable in the app.
  </Accordion>

  <Accordion title="Decision briefs" icon="file-text">
    See [One-pagers](/one-pagers).

    | Tool                      | Scope | What it does                          |
    | ------------------------- | ----- | ------------------------------------- |
    | `list_one_pagers`         | read  | Briefs with status and recommendation |
    | `generate_one_pager`      | write | Starts AI generation of a brief       |
    | `update_one_pager_status` | write | Moves a brief through review          |

    `list_one_pagers` takes `status` (`building`, `draft`, `in_review`, `finalised`, `failed`), `type` (`decision` or `prd`) and `sourceInsightId`.

    `generate_one_pager` takes exactly one of `actionId`, `insightId` or `retryOnePagerId`, plus an optional `type`. Generation runs asynchronously, so poll the returned `OP-` ID with `get_entity` until its status moves past `building`.

    `update_one_pager_status` takes `onePagerId` and `status` (`draft`, `in_review`, `finalised`). The `building` and `failed` states belong to generation and cannot be set here.
  </Accordion>

  <Accordion title="Ingest" icon="upload">
    | Tool            | Scope | What it does                              |
    | --------------- | ----- | ----------------------------------------- |
    | `ingest_signal` | write | Captures feedback into the evidence chain |

    `ingest_signal` takes a `signals` array of 1 to 50 items. Each item takes `content` (required), plus `source`, `title`, `sourceUrl`, `author`, `occurredAt` and `strength` (0 to 1, default 0.5). Content is deduplicated semantically on the server, then clustered and distilled asynchronously, so check back with `get_activity` or `list_signals` shortly after.

    For one-off items, run `find_similar_signals` or `search` first to see whether the theme is already known.
  </Accordion>

  <Accordion title="Integrations" icon="plug">
    | Tool                | Scope | What it does                                     |
    | ------------------- | ----- | ------------------------------------------------ |
    | `list_integrations` | read  | Connected feedback sources and their sync health |

    Returns each source's provider, status, most recent sync time and total signals pulled. Use it to explain a coverage gap before blaming the pipeline. Connect sources in the app. See [Integrations](/integrations).
  </Accordion>
</AccordionGroup>
