MCP Tools Reference
Strata exposes 17 tools via the Model Context Protocol, organized into groups. By default, only core tools are enabled. Enable additional groups via the X-Strata-Tool-Groups header.
Tool Groups
Header Configuration
Add the X-Strata-Tool-Groups header to your MCP client configuration to enable tool groups. Use comma-separated group names, or "all" to enable everything.
{
"url": "https://api.strata.space/mcp",
"headers": {
"X-Strata-Tool-Groups": "core,spaces,agents"
}
}Core
defaultDocument read, edit, list, and search
#app_get_section_content
Get the full content of a document section by document ID and section ID. Returns the section text and heading context.
| Parameter | Type | Description |
|---|---|---|
chunkId | string | The chunk ID to retrieve |
documentId | string | The document ID containing the section |
#edit_document
Edit a document, manage access, or upload content from a file.
ACTIONS - "create": title, [content], [folderId] — create with inline content. - "edit": documentId, oldString, newString, [replaceAll] — targeted replacement. - "write": documentId, newContent — full INLINE replacement. - "share": documentId, email, role — grant access. - "unshare": documentId, targetUserId — revoke access. - "presignUpload": contentLength + (documentId OR title [+folderId]). Returns { uploadId, uploadUrl, requiredHeaders, expiresAt }. - "finalizeUpload": uploadId. Idempotent. Returns { documentId, bytes, created }.
Upload flow (prefer when content already exists as a file or as bytes you generated — avoids re-emitting them as tool input): 1. wc -c file.md → byte count 2. presignUpload(contentLength, ...) → { uploadUrl } 3. PUT file to uploadUrl with requiredHeaders 4. finalizeUpload(uploadId) → { documentId }
| Parameter | Type | Description |
|---|---|---|
action | string | Action to perform (see tool description) |
content? | string | Initial markdown body (action `create`) |
contentLength? | integer (uint64) | Byte count of payload (action `presignUpload`) |
documentId? | string | Document ID |
email? | string | Recipient email (action `share`) |
folderId? | string | Folder ID (actions `create`, `presignUpload`) |
newContent? | string | Full new body (action `write`) |
newString? | string | Replacement text (action `edit`) |
oldString? | string | Text to find (action `edit`) |
replaceAll? | boolean | Replace every match, default false (action `edit`) |
role? | string | viewer, commenter, or editor (action `share`) |
targetUserId? | string | User to revoke (action `unshare`) |
title? | string | Document title (actions `create`, `presignUpload`) |
uploadId? | string | ID from `presignUpload` (action `finalizeUpload`) |
#find
Search, list, or discover documents and spaces across the workspace. Use this tool whenever you need to locate content before reading it — set intent to the kind of discovery (search, list, recent, related, info) and scope to where to look (all, a specific space, folder, or document, the set of all spaces, published documents, or strataDocumentation for Strata's own product docs). Search uses hybrid keyword + semantic retrieval fused via Reciprocal Rank Fusion, so both short keywords and natural sentences work as queries. Use filters for status, owner, date ranges, includeShared, direction, sinceDays (for intent='recent'), and tokenBudget. Returns a uniform shape with items that carry id, title, snippet, score, and source attribution; follow up with read_document to fetch full content for any item you want to use. If you receive zero results, broaden the scope before reformulating the query — narrow scopes can return empty even when content exists.
| Parameter | Type | Description |
|---|---|---|
intent | unknown | Discovery intent. "search" ranks by relevance, "list" enumerates, "recent" returns newest changes within filters.sinceDays, "related" finds documents similar to scope.id (requires scope.type="document"), "info" returns metadata about the scoped entity. |
scope | unknown | Where to look. Use IDs from the prompt or a prior find result. |
filters? | object | Narrowing filters. Ignored when inapplicable to the chosen intent. For intent="recent", set filters.sinceDays (default 7). |
limit? | integer (uint32) | Max results. Default: 10. Max: 50. |
nextToken? | string | Pagination cursor from a prior find result. Pass through unchanged. |
query? | string | Search text. Required when intent="search". |
tokenBudget? | integer (uint32) | Per-chunk content size budget for intent="search". Default: server-chosen. |
#get_document_graph
Get the connection graph neighborhood around a document. Returns nodes (documents) and edges (connections) discovered by BFS traversal.
Optional parameters: - depth: BFS depth (default 2, max 5) - maxNodes: Maximum nodes to return (default 50, max 200)
| Parameter | Type | Description |
|---|---|---|
documentId | string | The document ID to start the graph traversal from |
depth? | integer (uint32) | BFS traversal depth (default 2, max 5) |
maxNodes? | integer (uint32) | Maximum number of nodes to return (default 50, max 200) |
#get_image
Retrieve an image from a document as base64-encoded data. Use when you need to analyze, describe, or understand an image referenced in a document.
The imageId is found in document content as [Image: alt text (imageId: <id>)] markers or  in markdown.
Returns the image as inline base64 PNG data that can be viewed directly.
| Parameter | Type | Description |
|---|---|---|
documentId | string | Document the image belongs to. The caller must have `DocumentRead` on this document before bytes are returned |
imageId | string | Image ID (SHA256 hex from document content) |
maxWidth? | integer (uint32) | Maximum width to resize to before encoding (saves tokens). Defaults to 1024 |
#read_document
Read a document's content by ID.
Returns rendered Markdown. Use before editing. Large documents automatically return a structural outline instead of full content (default budget: 10000 tokens). Use the sections parameter with heading paths from the outline to read specific sections.
Workflow: read_document(id) → outline (if large) → read_document(id, sections: ["Heading > Subheading"]) → section content.
| Parameter | Type | Description |
|---|---|---|
documentId | string | Document ID to read, like `doc_01JAB...` |
commentFormat? | string | Comment output format: "footnotes" (default, inline markdown footnotes) or "structured" (appends a JSON block with full comment thread data) |
includeComments? | boolean | Whether to include comments in the response. Comments are rendered as inline footnotes in the markdown output |
includeSuggestions? | boolean | Whether to include pending suggestions as a JSON block appended to the markdown content |
maxTokens? | integer (uint32) | Token budget (default: 10000). Documents exceeding this return an outline instead of full content. Set to 0 to always get the outline |
sections? | string[] | Heading paths to read, like `["Architecture > Database Layer"]`. Prefix matching: `"Architecture"` returns that section and all sub-sections. Use paths from a prior outline response |
Collaboration
Section locking and presence
#get_presence
Query who is currently viewing or editing a document. Returns a list of collaborators with their entity type, display name, active section, status, and presence color. Useful for understanding who else is working on the document before making edits.
| Parameter | Type | Description |
|---|---|---|
documentId | string | Document ID to query presence for |
Agents
Platform agent invocation
#get_agent_status
Check the status of an agent task.
Returns the current status, tool call count, and output (if completed) or error (if failed). Poll this after invoke_agent to track completion.
Possible statuses: pending, running, completed, failed, cancelled, timedOut.
| Parameter | Type | Description |
|---|---|---|
taskId | string | The task ID returned by `invoke_agent` |
#invoke_agent
Invoke a platform agent to perform a task.
Specify the agent by ID or by name (mutually exclusive). Optionally provide a target document and a natural-language instruction.
Returns a task ID — use get_agent_status to poll for status and output. The agent executes asynchronously; this tool returns immediately after the task is created.
| Parameter | Type | Description |
|---|---|---|
agentId? | string | Agent ID to invoke (mutually exclusive with `agent_name`) |
agentName? | string | Agent name to invoke (mutually exclusive with `agent_id`) |
documentId? | string | Target document ID (optional) |
idempotencyKey? | string | Idempotency key (optional) |
instruction? | string | Natural-language instruction for the agent |