MCPツールリファレンス
Strataは、Model Context Protocolを通じて18個のツールをグループごとに整理して公開しています。デフォルトではコアツールのみが有効です。X-Strata-Tool-Groupsヘッダーで追加のグループを有効にしてください。
ツールグループ
ドキュメントとスペースの読み取り、編集、検索、グラフ表示
app_get_section_contentedit_documentexport_presentationfindget_company_themeget_document_graphget_imagelist_company_themesread_documentvalidate_presentationドキュメント上のライブプレゼンス
get_presenceコメントスレッドと編集提案
manage_commentsmanage_suggestions公開ドキュメントスナップショットの発行と取り下げ
get_publish_statuspublish_documentunpublish_documentプラットフォームおよびユーザーエージェントの呼び出しとステータスのポーリング
get_agent_statusinvoke_agentヘッダー設定
MCPクライアント設定にX-Strata-Tool-Groupsヘッダーを追加してツールグループを有効にします。カンマ区切りのグループ名を使用するか、"all"ですべてを有効にします。
{
"url": "https://api.strata.space/mcp",
"headers": {
"X-Strata-Tool-Groups": "core,comments,agents"
}
}コア
デフォルトドキュメントとスペースの読み取り、編集、検索、グラフ表示
#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; records a document-view audit event.
| パラメータ | 型 | 説明 |
|---|---|---|
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. - "createFromTemplate": templateDocumentId, title, [folderId], [variables] — create from a template, substituting its declared variables. Locate templates with find; they live in templates folders and declare name, description, and variables in frontmatter. - "move": documentId, folderId — change a document's audience by moving it into that folder. A personal folder is owner-only, a tier folder is visible to its members; to make a document private, move it to the user's personal folder. - "edit": documentId, oldString, newString, [replaceAll] — targeted replacement. - "insertSection": documentId, position, markdown — insert blocks at {kind: beforeSection | afterSection, sectionPath} or {kind: endOfDocument}. Use heading paths from read_document. - "write": documentId, newContent — full INLINE replacement. - "share": documentId, email, role — grant access and email an invitation to an external recipient when needed. - "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 }
Code blocks with language html render as live sandboxed previews (no network beyond them; vetted libs mermaid, d3, three, doom) and can chart named data from the same document: name a json/csv/tsv/yaml block on its fence (``json name=sales), a table with an HTML comment on the line above it (<!-- strata:name=sales -->), or use the reserved name frontmatter; the html block declares what it reads (``html uses="sales") and gets it inside the preview as strata.data.get('sales') — authoring guide: find(scope='strataDocumentation', slug='interactive-html').
Blog frontmatter controls a published post's design and metadata; edits report blogValidation findings. Guide: find(scope='strataDocumentation', slug='blog-design').
| パラメータ | 型 | 説明 |
|---|---|---|
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`) |
markdown? | string | Top-level Markdown blocks (action `insertSection`) |
newContent? | string | Full new body (action `write`) |
newString? | string | Replacement text (action `edit`) |
oldString? | string | Text to find (action `edit`) |
position? | unknown | Heading boundary (action `insertSection`) |
replaceAll? | boolean | Replace every match, default false (action `edit`) |
role? | string | viewer, commenter, or editor (action `share`) |
targetUserId? | string | User to revoke (action `unshare`) |
templateDocumentId? | string | Template document ID to instantiate (action `createFromTemplate`) |
title? | string | Document title (actions `create`, `presignUpload`) |
uploadId? | string | ID from `presignUpload` (action `finalizeUpload`) |
variables? | object | Variable values keyed by the template's declared keys (action `createFromTemplate`) |
#export_presentation
Export a presentation as standalone HTML or printed PDF. Returns a download URL valid for fifteen minutes. Presenter notes are removed from slide decks; opaque whole-deck HTML is rejected because note removal cannot be proven. PDF consumes the document owner's capture allowance; HTML is unmetered. PDF prints every slide in one headless page under a single sixty-second render deadline, with WebGL software-rendered and animation frozen to a still once a small render budget is spent, so a deck of many heavy scenes can time out where the HTML export succeeds.
| パラメータ | 型 | 説明 |
|---|---|---|
documentId | string | - |
format | "presentationHtml" | "presentationPdf" | Audience export format. |
revision? | integer (uint32) | Published revision; omit for the live projection |
viewport? | 1280 | 1920 | PDF viewport width, default 1920 |
#find
Search, list, or discover documents, spaces, and folders 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. List folders and their scopes (a document's audience comes from its folder) with intent='list', scope.type='folders'. Important: scope is a JSON object with a type field, not a string. Examples: {"scope":{"type":"all"}}, {"scope":{"type":"space","id":"space_..."}}, {"scope":{"type":"document","id":"doc_..."}}. 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.
| パラメータ | 型 | 説明 |
|---|---|---|
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. `scope` must be an object with `type`, not a string: `{ "type": "all" }`, `{ "type": "space", "id": "space_..." }` |
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_company_theme
Read company theme CSS and its verified source version for copying into a presentation.
| パラメータ | 型 | 説明 |
|---|---|---|
documentId | string | Theme source document |
#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)
| パラメータ | 型 | 説明 |
|---|---|---|
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.
| パラメータ | 型 | 説明 |
|---|---|---|
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 |
#list_company_themes
List company presentation themes available to copy.
| パラメータ | 型 | 説明 |
|---|
#read_document
Read a document's content by ID.
Returns rendered Markdown. Use before editing. Records a document-view audit event. 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.
| パラメータ | 型 | 説明 |
|---|---|---|
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 |
#validate_presentation
Render presentation slides and return layout, contrast, binding, structure, and theme findings. Always executes checks and stores captures. Costs one capture per slide per viewport, with no repeat charge for the same render key this cycle. Checks at most two slides at one viewport per call. Repeat with next as continuation and unchanged slides/viewports while status is more; merge findings and checked pairs. Omitted selection covers all slides at both viewports.
| パラメータ | 型 | 説明 |
|---|---|---|
documentId | string | - |
continuation? | object | Single-use continuation from the previous result |
slides? | integer (uint32)[] | Zero-based deck positions, cover included; omit for all |
viewports? | (1280 | 1920)[] | Viewport widths; omit for both |
コラボレーション
ドキュメント上のライブプレゼンス
#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.
| パラメータ | 型 | 説明 |
|---|---|---|
documentId | string | Document ID to query presence for |
コメント
コメントスレッドと編集提案
#manage_comments
Manage comments on a document. Create/reply can invoke mentioned agents and their connected tools.
Actions: - "create": Create a new comment. Requires "body". Optionally provide "quotedText" to anchor the comment to specific text, and "headingContext" for disambiguation. - "reply": Reply to an existing thread. Requires "parentCommentId" and "body". - "resolve": Resolve a comment thread. Requires "commentId". - "reopen": Reopen a resolved thread. Requires "commentId". - "list": List comments on the document. Optionally filter by "status" ("active" or "resolved").
| パラメータ | 型 | 説明 |
|---|---|---|
action | string | The action to perform: "create", "reply", "resolve", "reopen", or "list" |
documentId | string | The document ID (required for all actions) |
body? | string | Comment body text (required for "create" and "reply") |
commentId? | string | Comment ID (required for "resolve" and "reopen") |
headingContext? | string[] | Heading breadcrumbs for disambiguation when `quotedText` appears multiple times in the document (optional, for "create") |
parentCommentId? | string | Parent comment ID to reply to (required for "reply") |
quotedText? | string | Exact text in the document to anchor the comment to (optional, for "create"). The server resolves this to Yjs relative positions for precise anchoring |
status? | string | Filter by status when listing: "active" or "resolved" (optional for "list") |
#manage_suggestions
Manage suggestions on a document.
Actions: - "propose": Create a new suggestion. Refresh proposals carry baseVersion, sourceRef {documentId, sourceVersion}, and anchor {sectionPath, blockOrdinal, offset}. Requires "originalText" (exact text to replace) and "replacementText" (proposed replacement markdown). Optionally provide "headingContext" for disambiguation, "severity" (info/warning/error), "confidence" (0.0–1.0), and "rationale". - "accept": Accept a pending suggestion (applies the edit). Requires "suggestionId". - "reject": Reject a pending suggestion (no edit applied). Requires "suggestionId". - "withdraw": Withdraw your own pending suggestion. Requires "suggestionId". - "list": List pending suggestions on the document.
| パラメータ | 型 | 説明 |
|---|---|---|
action | string | The action to perform: "propose", "accept", "reject", "withdraw", or "list" |
documentId | string | The document ID (required for all actions) |
anchor? | object | Exact original-text location |
baseVersion? | integer (uint64) | Deck revision read before proposing or applying an edit |
confidence? | number (double) | Confidence score from 0.0 to 1.0 (optional, for "propose") |
headingContext? | string[] | Heading breadcrumbs for disambiguation when `originalText` appears multiple times (optional, for "propose") |
originalText? | string | Exact text to replace (required for "propose") |
rationale? | string | Rationale explaining why the suggestion is being made (optional, for "propose") |
replacementText? | string | Proposed replacement text in markdown (required for "propose") |
severity? | string | Suggestion severity: "info", "warning", or "error" (optional, for "propose") |
sourceRef? | object | Source and revision justifying the proposal |
suggestionId? | string | Suggestion ID (required for "accept", "reject", and "withdraw") |
公開
公開ドキュメントスナップショットの発行と取り下げ
#get_publish_status
Check the publish status of a document. Returns the current state (draft/published), version number, and whether there are unpublished changes (content hash comparison).
| パラメータ | 型 | 説明 |
|---|---|---|
documentId | string | Document ID to check status for |
#publish_document
Publish a document to your public profile. Creates a frozen snapshot of the current content. If the content hasn't changed since last publish, returns the existing version. Every successful call records a publication audit event.
Side effects: Creates a PublishedVersion record and copies Yjs state to a versioned S3 key. Your creator profile is provisioned at signup, so no profile is created as a side effect of publishing.
| パラメータ | 型 | 説明 |
|---|---|---|
documentId | string | Document ID to publish |
pinToProfile? | boolean | Whether to pin to profile after publishing |
presentation? | object | Whole-deck notes acknowledgement |
#unpublish_document
Unpublish a document, removing it from public view. The document returns to draft state and public URLs return 404. Published version records are retained for potential rollback.
| パラメータ | 型 | 説明 |
|---|---|---|
documentId | string | Document ID to unpublish |
エージェント
プラットフォームおよびユーザーエージェントの呼び出しとステータスのポーリング
#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.
| パラメータ | 型 | 説明 |
|---|---|---|
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.
| パラメータ | 型 | 説明 |
|---|---|---|
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 |