Fast.io
Server Details
AI-first file sharing and collaboration. 251 tools give agents a full workspace: file storage, branded shares, comments, workflows, and built-in RAG. 50GB free, no credit card.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.1/5 across 20 of 20 tools scored. Lowest: 3.2/5.
Most tools have clearly distinct purposes, but there is minor overlap between 'find' (unified search) and narrower search tools ('storage action=search', 'metadata action=search'), as well as between 'share' and 'fileshare'. Descriptions clarify usage, but an agent might occasionally misselect.
All tool names are single-word nouns or hyphenated compounds (e.g., 'fileshare', 'how-to'), following a consistent, predictable pattern. No mixing of conventions or verb styles.
20 tools is appropriate for the server's broad scope (file management, collaboration, workflows, etc.). Each tool earns its place with well-defined actions, and the count is not overwhelming.
The tool surface covers the entire lifecycle of file storage, sharing, collaboration, tasks, workflows, and administration. No obvious gaps are apparent; even edge cases like metadata extraction and e-signatures are addressed.
Available Tools
20 toolsaiADestructiveInspect
Ripley — the MCP delegation surface over Fastio's RAG agent. Ripley is read-only for storage CONTENT: it answers natural-language questions about workspace/share files & folders (with citations) and never creates/edits/deletes your files — for content writes, call the primitive MCP tools directly. It DOES create/manage chat threads (chat-create/chat-update/chat-delete/message-send) and can generate shares (share-generate). Prefer Ripley over issuing many primitive reads: ask one NL question and let the server-side agent search + synthesize. Quick start: action='ask' (question + profile) → returns {answer_text, citations, chat_id, message_id, web_url}; action='status' for an engineered workspace-status summary. Lower-level chat/message actions remain for multi-turn control. Call action='describe' for the full action/param reference. Destructive: chat-delete. Side effects: ask/status/chat-create/message-send consume credits; chat-cancel terminates an in-progress message (partial tokens billed; idempotent). Verbosity (detail param): chat-list/message-list default to terse (compact rows). chat-details/message-details default to full (drill-down). Pass an explicit detail='standard'|'full' to override (best-effort: chat/message/activity endpoints may not yet honor detail server-side).
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | chat-create (workspace only): 'user' (default) or 'agent' — flags the chat as agentic; set at creation, immutable; not accepted on share chats. chat-list:… | |
| name | No | New chat name. | |
| wait | No | message-read only. Default true: bounded-wait for completion (up to ~24s on a workspace via the activity long-poll). Set false for a single-shot status probe… | |
| files | No | File opaque IDs (max 25, share share-generate). | |
| limit | No | chat-list/message-list page size. Best-effort: the AI API spec documents NO pagination on the chat-list or message-list endpoints (both return all rows under… | |
| action | Yes | Operation. Use 'describe' for full action reference. | |
| detail | No | Per-entity verbosity for chat-list/chat-details/message-list/message-details (best-effort: chat/message/activity endpoints may not yet honor detail… | |
| offset | No | chat-list/message-list pagination offset — see the limit caveat (no documented paging on these endpoints; forwarded best-effort). | |
| chat_id | No | AI chat ID. | |
| privacy | No | Chat privacy (default: private). Workspace chat-create only — share chats are always private. | |
| node_ids | No | File node IDs (max 25, workspace share-generate). | |
| share_id | No | Alias for profile_id when the profile is a share — implies profile_type=share (so profile_type may be omitted). | |
| context_id | No | Alias for profile_id (either name works) | |
| message_id | No | AI message ID. | |
| profile_id | No | Polymorphic context ID (pair with profile_type=workspace|share). Typed aliases let you omit profile_type: workspace_id (⇒ workspace) / share_id (⇒ share); also… | |
| query_text | No | Question or prompt (max 12,768 chars). | |
| instance_id | No | Alias for profile_id (REST/how-to name; profile_id is canonical). | |
| context_type | No | Alias for profile_type (either name works) | |
| files_attach | No | Attach workspace FILES for the AI to read directly (comma-separated nodeId:versionId pairs; versionId optional → backend resolves current). Works regardless of… | |
| profile_type | No | Profile type: "workspace" or "share". | |
| workspace_id | No | Alias for profile_id when the profile is a workspace — implies profile_type=workspace (so profile_type may be omitted). | |
| folders_attach | No | Attach workspace FOLDERS for the AI to read (comma-separated folder nodeIds; no depth). Denied on restricted-view shares. See describe. | |
| include_deleted | No | chat-list: if true, list deleted chats via the /deleted variant (workspace AND share). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses read-only behavior for content, destructive actions (chat-delete), side effects (credit consumption for ask/status/chat-create/message-send), idempotency of chat-cancel, and verbosity defaults. Annotations are consistent (destructiveHint true corresponds to chat-delete).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well-organized, starting with high-level purpose then detailing actions and caveats. Could be slightly more concise, but every sentence adds value. Front-loaded with core concept.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 23 parameters and no output schema, the description covers all major actions, their behaviors, side effects, and default modes. It also directs to 'describe' for full reference, completing the information needed for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with parameter descriptions. The tool description adds context beyond schema, such as default verbosity per action, best-effort nature of detail parameter, and clarification for file_attach/folders_attach. Provides additional usage-level guidance that enhances the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that Ripley is a delegation surface for a RAG agent, answering natural-language questions about files/folders while managing chat threads and generating shares. It distinguishes itself from sibling primitive tools by advising to prefer Ripley over issuing many primitive reads.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides when to use and when not: 'Prefer Ripley over issuing many primitive reads' and 'for content writes, call the primitive MCP tools directly.' Also gives quick start action='ask' and mentions lower-level actions for multi-turn control.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assetBDestructiveInspect
Brand asset management (logos, banners, profile photos) on org/workspace/share/user. Upload, delete, list, read. Call action='describe' for the full action/param reference. Destructive: delete.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Operation. Use 'describe' for full action reference. | |
| content | No | Plain text content (e.g. SVG). | |
| asset_id | No | Asset ID or name. | |
| metadata | No | Additional metadata as JSON array string. | |
| entity_id | No | Opaque ID of a specific object (file, comment, etc.). Pair with entity_type to disambiguate. Entity ID (optional for user). | |
| file_name | No | Original file name. | |
| asset_type | No | Asset type key (e.g. 'logo', 'banner', 'photo'). | |
| entity_type | No | Entity type. | |
| file_base64 | No | Base64-encoded binary content. | |
| content_type | No | MIME type (default application/octet-stream). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, and the description confirms 'Destructive: delete.' It adds the note to call 'describe' for full reference but does not disclose other behaviors like overwrite policies or listing limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, with two sentences covering purpose, operations, and reference. Every sentence is necessary and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 10 parameters and no output schema, the description is somewhat incomplete. It relies on the agent calling 'describe' to get full action/param reference. The core purpose is clear, but behavioral details are lacking.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description gives examples of asset types (logos, banners, profile photos) and mentions entity scopes, but these are also covered in the schema. It adds minimal extra meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it manages brand assets (logos, banners, profile photos) across entities (org, workspace, share, user) and lists main operations (upload, delete, list, read). It distinguishes itself from siblings by focusing on brand assets, though it doesn't explicitly differentiate from the 'upload' sibling tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus siblings like 'upload' or 'storage'. It does not state when not to use it or provide examples of appropriate contexts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
authADestructiveInspect
Auth & sessions: signin, signup, signout, 2FA, PKCE, API keys, OAuth sessions. Call action='describe' for the full action/param reference. Destructive: api-key-delete, oauth-revoke, oauth-revoke-all.
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | Verification or authorization code. Meaning is action-specific — see action='describe' for the per-action reference (e.g. 2FA code for 2fa-verify, reset code… | |
| name | No | API key label. | |
| No | Email address. | ||
| token | No | 2FA / verification token. Meaning is action-specific — see action='describe' for the per-action reference (e.g. 2FA-disable token, 2fa-verify-setup token, 2FA… | |
| action | Yes | Operation. Use 'describe' for full action reference. | |
| key_id | No | API key identifier. | |
| scopes | No | Scope strings, e.g. ['org:123:rw']. Omit for full access. | |
| api_key | No | Fastio API key. | |
| channel | No | 2FA channel. | |
| expires | No | Token lifetime in seconds. | |
| password | No | Account password. | |
| last_name | No | Family name. | |
| password1 | No | New password. | |
| password2 | No | New password confirmation. | |
| agent_name | No | Agent name for approval screen and audit logs. | |
| first_name | No | Given name. | |
| scope_type | No | PKCE scope type. Default 'user' (full access). | |
| session_id | No | OAuth session identifier. | |
| email_token | No | Email verification code. | |
| key_expires | No | ISO 8601 expiration datetime. | |
| describe_action | No | When action='describe', narrow the output to ONE action's full params/notes (e.g. 'status'). Omit to get the compact action index. | |
| exclude_current | No | Skip current session in revoke-all. | |
| current_session_id | No | Current session ID for exclusion. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and destructiveHint=true. The description adds value by listing specific destructive actions (api-key-delete, oauth-revoke, oauth-revoke-all) and highlighting the 'describe' action for detailed reference. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, efficiently listing the core functionality, the discoverability mechanism, and destructive actions. Every sentence adds value; no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (23 parameters, no output schema), the description provides an entry point and relies on the 'describe' action for completeness. It covers enough context for initial use, though return values and detailed parameter usage are deferred.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description does not add meaning beyond the schema; it only directs to the 'describe' action for param details. No additional parameter semantics are provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as handling authentication and sessions (signin, signup, signout, 2FA, PKCE, API keys, OAuth sessions). It distinguishes from sibling tools like 'user' or 'org' by focusing on auth operations. The verb+resource pattern is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description instructs to call action='describe' for full action/param reference, providing a discoverability mechanism. However, it does not explicitly state when to use this tool vs alternatives (e.g., when to use 'auth' vs 'user' for user management) or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commentADestructiveInspect
Comments on files: add/list/delete/react, anchor to image regions, A/V timestamps, PDF pages, or text selections, link to tasks. Call action='describe' for the full action/param reference. Destructive: delete, bulk-delete. Verbosity (detail param): list/list-all/linked default to terse (compact rows). details defaults to full (drill-down). Pass an explicit detail='standard'|'full' to override (best-effort — may be a silent no-op until the comments API honors output=; see describe).
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Sort: 'created' or '-created' (default newest first). | |
| text | No | Comment body (max 8192 chars; max 500 display chars with mention tags stripped). Supports @[profile|user|file:...] mentions. | |
| emoji | No | Single emoji character. | |
| limit | No | Page size 2-200. | |
| action | Yes | Operation. Use 'describe' for full action reference. | |
| detail | No | Per-comment verbosity for list/list-all/details/linked. Defaults: terse for list/list-all/linked (compact rows), full for details (drill-down). See… | |
| offset | No | Offset for pagination. | |
| node_id | No | Storage tree node opaque ID. Both files and folders are nodes — use this name regardless of which. | |
| share_id | No | Alias for profile_id when the profile is a share — implies profile_type=share (so profile_type may be omitted). | |
| reference | No | Anchor: image region, A/V timestamp, PDF page, or text selection. | |
| comment_id | No | Comment opaque ID. | |
| context_id | No | Alias for profile_id (either name works) | |
| profile_id | No | Polymorphic context ID (pair with profile_type=workspace|share). Typed aliases let you omit profile_type: workspace_id (⇒ workspace) / share_id (⇒ share); also… | |
| properties | No | Arbitrary key-value JSON object metadata (edit action only). Accepts a native object or a JSON string. Merged into the comment's stored properties;… | |
| comment_ids | No | Array of comment opaque IDs. | |
| context_type | No | Alias for profile_type (either name works) | |
| profile_type | No | Profile type. | |
| workspace_id | No | Alias for profile_id when the profile is a workspace — implies profile_type=workspace (so profile_type may be omitted). | |
| display_limit | No | list-all only — ignored on the markdown list action. Number of comments to return to the agent (default 10, max 200). Backend page_size unchanged for cache… | |
| include_total | No | Include total count in response. | |
| reference_type | No | Filter by anchor type. | |
| include_deleted | No | Include soft-deleted. | |
| linked_entity_id | No | Task opaque ID. | |
| parent_comment_id | No | Parent comment ID for reply (single-level threading). | |
| linked_entity_type | No | Linked entity type — only 'task' is supported today. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds context beyond annotations: identifies destructive actions (delete, bulk-delete), explains verbosity behavior and that override may be a silent no-op. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is well-structured with a front-loaded overview, followed by specifics on destructive actions and verbosity. It is slightly dense but each sentence adds value; could be more concise but still effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (25 parameters, multiple actions, nested objects, no output schema), the description covers essential behavioral aspects (destroy, verbosity, describe action). Lacks example usage or return format, but adequate for a complex tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, baseline 3. Description adds meaningful semantics: clarifies that node_id applies to both files and folders, share_id implies profile_type=share, and workspace_id similarly. Also explains the purpose of the 'describe' action and verbosity defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the resource (comments) and specific operations: add, list, delete, react, anchor to various media, link to tasks. It distinguishes itself from sibling tools like 'how-to' or 'task' by focusing on commenting functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance to call 'action=describe' for full reference, explains verbosity defaults and overrides. However, lacks explicit when-not-to-use or alternative tools among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
downloadARead-onlyIdempotentInspect
Download URLs for files (file-url), folder ZIPs (zip-url), and quickshare links (quickshare-details — DEPRECATED, use the fileshare tool's create action for new shares). Consumes bandwidth credits. Call action='describe' for the full action/param reference.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Operation. Use 'describe' for full action reference. | |
| node_id | No | Storage tree node opaque ID. Both files and folders are nodes — use this name regardless of which. | |
| share_id | No | Alias for profile_id when the profile is a share — implies profile_type=share (so profile_type may be omitted). | |
| context_id | No | Alias for profile_id (either name works) | |
| profile_id | No | Polymorphic context ID. Pair with profile_type=workspace|share. Typed aliases let you omit profile_type: workspace_id (⇒ workspace) / share_id (⇒ share); also… | |
| version_id | No | Specific file version ID. | |
| instance_id | No | Alias for profile_id (REST/how-to name; profile_id is canonical). | |
| context_type | No | Alias for profile_type (either name works) | |
| profile_type | No | Profile type. | |
| workspace_id | No | Alias for profile_id when the profile is a workspace — implies profile_type=workspace (so profile_type may be omitted). | |
| quickshare_id | No | Quickshare opaque identifier. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond annotations: it mentions bandwidth credit consumption and deprecation of quickshare-details. Annotations already indicate read-only and idempotent behavior, so the description provides useful additional detail without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences that front-load the main actions, include a deprecation warning, and point to the describe action for further reference. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the schema covers all parameters and annotations add safety context, the description itself defers to action='describe' for full reference, indicating it is not fully self-contained. It lacks details on return values (no output schema) and does not explain bandwidth credits.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter has individual descriptions. The tool description adds no extra parameter-level semantics beyond categorizing actions and noting deprecation. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: downloading URLs for files, folder ZIPs, and (deprecated) quickshare links. It specifies the verb 'download' and the resource types (file-url, zip-url), and distinguishes itself from the fileshare tool for the deprecated action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description only provides usage guidance for the deprecated quickshare-details action, directing users to the fileshare tool. It does not offer when-to-use or when-not-to-use guidance for the primary actions (file-url, zip-url) or compare with other sibling tools like upload or storage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eventAIdempotentInspect
Event log and activity monitoring for workspaces and shares. Also surfaces the per-member DASHBOARD — a 'what's on your plate' feed of cards (obligations, @mentions, file activity, pending signatures) for one workspace, with view-only dismiss/snooze and a best-effort AI overlay. Call action='describe' for the full action/param reference. Verbosity (detail param): search/activity-list/activity-poll default to terse (compact rows). summarize defaults to standard (envelope around the AI summary). details defaults to full (drill-down). Pass an explicit detail='terse'|'standard'|'full' to override (best-effort on summarize/activity-list/activity-poll — only search/details honor output=; see describe).
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | Max seconds server holds connection (1-95, default 95). | |
| event | No | Exact event name. See describe action for catalog. | |
| limit | No | Max results (1-250, default 100). | |
| action | Yes | Operation. Use 'describe' for full action reference. | |
| cursor | No | Last activity timestamp for incremental polling. | |
| detail | No | Per-record verbosity for search/summarize/details/activity-list/activity-poll. Defaults: terse for search/activity-list/activity-poll (compact rows), standard… | |
| offset | No | Pagination offset. | |
| org_id | No | Filter by organization profile ID. | |
| user_id | No | Filter by user profile ID. | |
| card_key | No | Dashboard card identity "<lane>:<id>" (e.g. "obligation:123"). From a dashboard-list card. Required for dashboard-dismiss/dashboard-undismiss; URL-encoded into… | |
| category | No | Event category. See describe action for valid values. | |
| event_id | No | Alphanumeric event opaque ID. | |
| share_id | No | Filter by share profile ID. | |
| entity_id | No | Opaque ID of a specific object (file, comment, etc.). Pair with entity_type to disambiguate. 19-digit workspace, share, or File Share ID to monitor… | |
| object_id | No | Filter by related object opaque ID (file, folder, etc.). | |
| context_id | No | Alias for profile_id (either name works) | |
| profile_id | No | Polymorphic context ID. Pair with profile_type=workspace|share|org|fileshare. Use workspace_id instead when only workspaces are valid. 19-digit profile ID… | |
| visibility | No | Filter by event visibility level (external_audit_log | external). Default returns both, excludes internal. | |
| created_max | No | ISO 8601 datetime — events on or before. | |
| created_min | No | ISO 8601 datetime — events on or after. | |
| envelope_id | No | Signature envelope id (a signature card's target.id). Required for dashboard-sign-link. | |
| subcategory | No | Event subcategory. See describe action for valid values. | |
| acknowledged | No | Filter by acknowledgment status. | |
| context_type | No | Alias for profile_type (either name works). | |
| lastactivity | No | Timestamp from prior poll's response. Omit on first call. | |
| profile_type | No | Profile type: "workspace", "share", or "fileshare". `fileshare` is valid for activity-list (long-poll a File Share's feed — workspace members only; recipients… | |
| snooze_until | No | Optional for dashboard-dismiss: a future "Y-m-d H:i:s UTC" timestamp to snooze the card until (it reappears after). Omit for a permanent dismiss. | |
| user_context | No | Focus guidance for AI summary, e.g. "Focus on uploads". | |
| workspace_id | No | Workspace opaque ID. Use this when only workspaces are valid (not shares or other contexts). For polymorphic contexts use profile_id. Filter by workspace… | |
| calling_user_id | No | Filter by the user who triggered the event. | |
| parent_event_id | No | Filter by parent event ID for serial/batch events. SCOPE-EXCLUSIVE: cannot combine with any filter other than acknowledged, limit, offset. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable context beyond annotations: it explains that dashboard actions are 'view-only dismiss/snooze', mentions 'best-effort AI overlay', and clarifies that verbosity overrides are best-effort. This aligns with idempotentHint=true and destructiveHint=false, with no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is relatively long but front-loads the main purpose and then dives into verbosity details. It could be more structured (e.g., bullet points) and slightly more concise, but it is not excessively verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 31 parameters and no output schema, the description explains the major actions and defaults, and points to 'describe' for full details. However, it does not describe return values or response structure, leaving some gaps for a complex tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents parameters thoroughly. The description adds some meta-context (e.g., default verbosity rules), but this is mostly a reorganization of schema info. The added value is limited.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool is for event log and activity monitoring for workspaces and shares, and also surfaces a dashboard feed. It specifies multiple actions and provides a clear verb-resource relationship. However, it does not explicitly differentiate from sibling tools like 'activity' or 'user', which might also deal with events.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description advises to call action='describe' for full reference, which is helpful. It explains default verbosity for different actions, but does not provide explicit guidance on when to use this tool versus alternatives, nor when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
findARead-onlyInspect
Unified search across a workspace or share — ONE query, results GROUPED BY TYPE into buckets (files, metadata [workspace only], comments, workflows), each independently paginated and health-reported. Call action='describe' for the full action/param reference. This is the grouped SUPERSET; for a single result type prefer the narrower tools: storage action=search (files only), metadata action=search (lexical metadata fields only). The code-mode search tool searches the API endpoint catalog, not your content.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Alias for search (the name storage + code-mode search use). | |
| action | Yes | Operation. Use 'describe' for full action reference. | |
| search | No | Search query string. 1-1024 chars; empty/blank rejected (platform 1605). Searched across every applicable bucket. (Alias: query.) | |
| share_id | No | Alias for profile_id when profile_type=share. | |
| context_id | No | Alias for profile_id. | |
| profile_id | No | Workspace or share opaque ID (19-digit numeric ID or custom name). Pair with profile_type. Four accepted aliases besides this one (five id params total):… | |
| files_limit | No | files bucket page size (default 25). | |
| instance_id | No | Alias for profile_id (REST/how-to name; profile_id is canonical). | |
| context_type | No | Alias for profile_type. | |
| files_offset | No | files bucket result offset (default 0). | |
| profile_type | No | Profile to search: "workspace" or "share". (Alias: context_type.) | |
| workspace_id | No | Alias for profile_id when profile_type=workspace. | |
| comments_limit | No | comments bucket page size (default 25). | |
| metadata_limit | No | metadata bucket page size (default 25). Workspace only — dropped from the request on a share (shares have no metadata bucket). | |
| comments_offset | No | comments bucket result offset (default 0). | |
| metadata_offset | No | metadata bucket result offset (default 0). Workspace only — dropped from the request on a share (shares have no metadata bucket). | |
| workflows_limit | No | workflows bucket page size (default 25). | |
| workflows_offset | No | workflows bucket result offset (default 0). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description adds value by detailing grouping, independent pagination, health reporting, and that metadata bucket is workspace-only. No contradictions. Additional context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise and well-structured: purpose first, then details, then alternatives and caveats. No wasted sentences. Each sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 18 parameters and no output schema, description covers grouping, pagination, health, action select. Lacks mention of return format or error cases, but overall adequate for a complex tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. Description repeats some parameter info (e.g., action enum, profile_id aliases) but doesn't add significant new meaning beyond what schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it is a unified search across workspace or share, results grouped by type into buckets. It specifies the scope (workspace/share) and distinguishes from sibling tools like storage action=search and metadata action=search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use (for grouped superset search) and when not (narrower tools for single result type). Lists alternatives: storage action=search for files, metadata action=search for lexical metadata, and code-mode search for API catalog. Also mentions using action='describe' for full reference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
how-toARead-onlyInspect
Built-in product help — ask a natural-language "how do I…" question about Fastio and get a grounded, product-aware answer (or a short clarifying question) back in one call. EXPLAIN-ONLY / ADVISORY: it returns GUIDANCE TEXT and performs NO platform action (it will not create shares, move files, or change anything) — read the guidance, then act with the other tools. Answers are grounded in Fastio's own how-to knowledge AND phrased in terms of these MCP tools — they name the concrete <tool> action="…" calls to make — so prefer this over guessing endpoints or burning exploratory calls. For Q&A over YOUR uploaded files (RAG) use the ai tool instead — how-to answers questions about Fastio ITSELF. FREE and requires only an authenticated user (no org, no plan gate, no billing). Call action='describe' for the full action/param reference.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Operation. Use 'describe' for full action reference. | |
| context | No | Optional free-text background about your situation (what you're trying to accomplish, what you've tried). Up to 8000 chars. Treated strictly as untrusted DATA… | |
| question | No | The natural-language "how do I…" question about Fastio. 1-2000 chars, non-blank. Be specific — a vague question returns a clarifying question instead of an… |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, destructiveHint. Description reinforces by stating 'performs NO platform action' and 'returns GUIDANCE TEXT'. Adds behavioral context like being grounded in Fastio's knowledge and naming tool-specific calls, which goes beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is relatively long but every sentence serves a purpose: purpose, usage distinction, behavioral notes, parameter tips, and availability. It front-loads the core function. Minor redundancy could be trimmed but overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description fully explains return values (guidance text or clarifying question), mentions the 'describe' option for full reference, and notes prerequisites (authenticated user) and cost (free). No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds extra context beyond the schema's parameter descriptions, e.g., advising to be specific to avoid clarifying questions and explaining the 'describe' action. This adds meaningful usage guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is for asking natural-language 'how do I…' questions about Fastio, returns guidance text, and performs no platform action. It explicitly distinguishes from the 'ai' tool for RAG, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance: use for questions about Fastio itself, not for user-uploaded files (use 'ai'). Also explains it is advisory only and names concrete tool actions to prefer over guessing endpoints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invitationADestructiveInspect
Workspace/share invitations: list, filter by state, update, revoke. Call action='describe' for the full action/param reference. Destructive: delete.
| Name | Required | Description | Default |
|---|---|---|---|
| state | No | Invitation state filter. | |
| action | Yes | Operation. Use 'describe' for full action reference. | |
| expires | No | Updated expiration (ISO 8601 or YYYY-MM-DD HH:MM:SS). | |
| entity_id | No | Workspace or share ID (19-digit numeric or custom name). Must match entity_type. | |
| new_state | No | New invitation state. | |
| entity_type | No | Workspace or share. | |
| permissions | No | Updated permission level. | |
| invitation_id | No | Invitation opaque ID or invitee email. | |
| notifications | No | Notification preference (workspace). | |
| notify_options | No | Notification preference (share). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true and readOnlyHint=false, and the description reinforces 'Destructive: delete.' It adds context about multiple operations (list, update, revoke) beyond what annotations provide. However, it does not detail side effects like how revocation affects existing invitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, both front-loaded with core functionality and a key usage hint. Every sentence serves a purpose without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (10 parameters, multiple actions) and no output schema, the description is fairly complete. It covers the tool's purpose and the key behavior hint (describe). It could mention the return format of list operations, but overall adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents each parameter. The description adds no further parameter-level detail beyond the schema, meeting the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly and specifically states the tool manages workspace/share invitations with actions: list, filter by state, update, revoke. It distinguishes this tool from siblings by mentioning the destructive delete capability.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description advises to call action='describe' for the full action/parameter reference, providing a clear entry point. However, it does not explicitly contrast with sibling tools like 'member' or 'workspace' for when to use this tool instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memberADestructiveInspect
Workspace/share member management: list, add, remove, update, transfer ownership, join, leave. Call action='describe' for the full action/param reference. Destructive: remove.
| Name | Required | Description | Default |
|---|---|---|---|
| role | No | Share permission level. | |
| limit | No | Maximum number of items to return (1-500, default 100) | |
| action | Yes | Operation. Use 'describe' for full action reference. | |
| offset | No | Number of items to skip (default 0) | |
| expires | No | Expiration: workspace ISO 8601, share YYYY-MM-DD HH:MM:SS. | |
| message | No | Invitation email message (10-255 chars). | |
| user_id | No | User profile ID (share). | |
| entity_id | No | Workspace or share ID (19-digit numeric or custom name). Must match entity_type. | |
| member_id | No | Member ID (workspace). | |
| expiration | No | Alias for expires (share only). | |
| entity_type | No | Workspace or share. | |
| permissions | No | Workspace permission level. | |
| display_limit | No | How many members to return for the list action. Default 10, max 500. The MCP trims post-fetch; backend paging stays MCP-internal so the platform cache stays… | |
| notifications | No | Notification preference (workspace string). | |
| invitation_key | No | Invitation key string. | |
| notify_options | No | Notification preference (share). | |
| email_or_user_id | No | Email (to invite) or user ID (to add directly). | |
| invitation_action | No | Accept or decline. | |
| force_notification | No | Force notify existing user (workspace-only). | |
| invitation_expires | No | Invitation expiration ISO 8601 (workspace-only). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true. The description adds 'Destructive: remove,' which is consistent but does not elaborate on other behaviors (e.g., auth requirements, rate limits). Minimal added value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: two sentences covering purpose and a key usage tip. No unnecessary words, front-loaded with the main function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite high parameter count (20) and no output schema, the description is minimal. It offloads details to action='describe', leaving the agent with little upfront understanding of each action's requirements or effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description does not add meaning beyond the schema; it merely references action='describe' for details. No additional param context provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Workspace/share member management' and lists specific actions (list, add, remove, update, transfer ownership, join, leave). This distinguishes it from sibling tools like workspace, share, or user.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description advises calling action='describe' for full reference and highlights that 'remove' is destructive. However, it lacks explicit guidance on when to use this tool versus alternatives or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
metadataADestructiveInspect
AI metadata templates & extraction (the unstructured-data automation pipeline): template CRUD/clone, assign/resolve, the AI pipeline (eligible -> preview-match -> suggest-fields -> template-create -> nodes-add/-list -> auto-match -> extract-all), saved views, and lexical metadata search. Call action='describe' for the full action/param reference. Node-level metadata (get/set/delete/extract on a single file) lives on the storage tool. Destructive: template-delete, view-delete, nodes-remove. AI/credit side-effects: preview-match, suggest-fields, auto-match, extract-all (each spends AI credits).
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | search keyword(s). 1-1024 chars. Multi-token = ALL tokens (AND); case-insensitive; substring for <=64 chars, else whole-word. | |
| name | No | Template name (1-255 chars: template-create/-update/-clone and preview-match), OR an optional saved-view label on view-save (≤30 chars; omit to keep the… | |
| force | No | extract-all: when 'true', re-extract every mapped node even if it already has KV data (re-extract flow). Default 'false' skips nodes with values present. | |
| limit | No | search: page size (1-100, default 100). | |
| action | Yes | Operation. Use 'describe' for full action reference. | |
| config | No | view-save config JSON: `{version:1, columns:[{field,visible?,width?}], sort:{field,dir}, filters:[{field,operator,value_type,value}]}`. Max 5 filters… | |
| cursor | No | eligible/nodes-list: opaque pagination cursor from a prior page's response. Omit for the first page. | |
| fields | No | JSON array of field defs (template-create/-update/-clone). At least one field must have autoextract:true (default) or API returns 1605. Each: {name,… | |
| offset | No | search: results to skip (default 0). offset+limit must stay <= 10000. | |
| filters | No | template-list filter (default 'all'): all|enabled|disabled|custom|system. (Replaces the old workspace `template_filter` param.) | |
| node_id | No | Storage tree node opaque ID (used by template-resolve, and template-assign to scope an assignment). | |
| category | No | Metadata template category (accepted but ignored server-side — no effect). | |
| node_ids | No | JSON array of node IDs. suggest-fields: 1-25 file nodes. nodes-add/-remove: nodes to map/unmap (files+notes; folders/links rejected) — deduped first-seen, max… | |
| sort_dir | No | nodes-list: asc|desc (only with sort_field). | |
| page_size | No | eligible/nodes-list: cursor page size (1-250, default 100). Server caps at 250. | |
| batch_size | No | auto-match: optional batch-size override (clamped server-side). Omit for default. | |
| sort_field | No | nodes-list: optional template field name to sort by. | |
| description | No | Template description. ≤1000 chars, empty allowed (template-create/-update/-clone). preview-match: required, 1-2000. suggest-fields: optional, ≤2000. | |
| template_id | No | Metadata template ID (e.g. mt_abc123). For search, restricts to nodes with values from this template (custom fields excluded). | |
| user_context | No | suggest-fields: short view/template hint (1-64 chars, letters/numbers/spaces). Example: "photo collection". | |
| workspace_id | No | Workspace opaque ID (19-digit numeric ID or custom name). Required for every action. | |
| display_limit | No | search: how many items to return post-fetch. Default 10, max 100 (the backend fetches at most 100 per page — a higher value has no effect; use offset to page… | |
| extract_fields | No | extract-all: JSON array of field names to restrict the batch job to (e.g. `["vendor","amount"]`); omit for all fields. | |
| parent_node_id | No | view-export destination folder opaque ID (must be a folder, not trashed). Omit for workspace root. | |
| describe_action | No | When action='describe', narrow the output to ONE action's full params/notes (e.g. 'template-list'). Omit to get the compact action index. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint=false, destructiveHint=true), the description adds details about specific destructive actions and AI credit consumption. It also notes that the category parameter is ignored, batch sizes are server-clamped, and field autoextract requirement, providing valuable behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and pipeline, then provides sibling guidance and behavioral notes. It is dense but every sentence adds value, with no wasted words. The length is appropriate for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the thorough overview of operations and side-effects, the description lacks information about return values or output structure for actions like search, template-list, etc. There is no output schema, so the description should provide some guidance. The instruction to call action='describe' partially mitigates this, but for a 25-param tool, the description is not fully self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the baseline is 3. The description adds extra context such as the 'category' parameter being ignored and the 'action' parameter referencing 'describe' for full details. However, the description does not elaborate on many parameter details beyond the schema, so it slightly elevates but not to 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool handles 'AI metadata templates & extraction' and lists all major operations including CRUD, AI pipeline, views, and search. It distinguishes from the sibling 'storage' tool by noting that node-level metadata lives on that tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use the storage tool instead for node-level operations. It also advises to call action='describe' for full reference, and lists destructive actions and AI credit side-effects, guiding the agent on appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
orgBDestructiveInspect
Organization management: CRUD, billing, members, invitations, ownership transfer, assets, discovery, custom domains. Call action='describe' for the full action/param reference. Destructive: close (permanently deletes org and all data).
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Display name (3-100 chars). | |
| role | No | Permission level: admin, member, guest, view (not 'owner'). | |
| No | Email address of user to invite. | ||
| limit | No | Page size. | |
| meter | No | Meter type, e.g. storage_bytes, transfer_bytes, ai_tokens. | |
| state | No | Invitation state, e.g. pending, accepted. | |
| token | No | Transfer token for ownership claim. | |
| action | Yes | Operation. Use 'describe' for full action reference. | |
| detail | No | Per-entity verbosity for list/discover-*/members/list-workspaces/details. Defaults: terse for list/discover-*/members/list-workspaces, full for details. See… | |
| domain | No | URL-safe subdomain (2-63 chars, lowercase, unique). | |
| offset | No | Pagination offset (0-based). | |
| org_id | No | Organization 19-digit ID or domain string. | |
| confirm | No | Confirmation string, must match org domain or ID. | |
| content | No | Plain text content. asset-upload: e.g. SVG body. | |
| expires | No | Updated expiration datetime. | |
| message | No | Custom invitation email message (10-255 chars). | |
| user_id | No | User ID. | |
| end_time | No | End datetime (default now). | |
| hostname | No | Custom domain FQDN, e.g. files.acme.com. | |
| industry | No | Industry type, e.g. technology, healthcare, financial. | |
| metadata | No | Additional metadata as JSON array string. | |
| share_id | No | Filter by share ID. | |
| token_id | No | Transfer token ID. | |
| file_name | No | Original file name, e.g. logo.png. | |
| member_id | No | User ID or email of member. | |
| perm_join | No | Permission level required to join workspace. | |
| asset_name | No | Asset name, e.g. "logo", "banner". | |
| start_time | No | Start datetime (default 30 days ago). | |
| description | No | Description (10-1000 chars). | |
| domain_name | No | Domain to check for availability. | |
| file_base64 | No | Base64 file content for binary assets. | |
| folder_name | No | URL-safe workspace folder name (4-80 chars). | |
| join_action | No | Invitation action: accept or decline (default accept). Appended to the join URL path — restricted to these two values to prevent path injection. | |
| permissions | No | Updated permission level. | |
| twitter_url | No | Twitter/X profile URL. | |
| youtube_url | No | YouTube channel URL. | |
| accent_color | No | Brand accent color as JSON. | |
| billing_plan | No | Paid plan ID for billing-create, e.g. 'solo_monthly', 'business_v2_monthly', 'growth_monthly' (each has an annual variant). New orgs require a paid plan —… | |
| content_type | No | MIME type, e.g. image/png. Defaults to application/octet-stream. | |
| facebook_url | No | Facebook page URL. | |
| homepage_url | No | Organization website URL. | |
| intelligence | No | Enable RAG indexing. COSTS 10 credits/page. Defaults "false". See describe. | |
| workspace_id | No | Workspace opaque ID. Use this when only workspaces are valid (not shares or other contexts). For polymorphic contexts use profile_id. Filter by workspace ID. | |
| billing_email | No | Billing contact email. | |
| display_limit | No | Number of orgs to return to the agent (default 10, max 100). Backend page_size unchanged for cache warmth — applies to list. Trims post-fetch only. | |
| instagram_url | No | Instagram profile URL. | |
| invitation_id | No | Invitation ID or invitee email. | |
| owner_defined | No | Custom owner-defined properties as JSON. | |
| invitation_key | No | Invitation key from invite link. | |
| starting_after | No | billing-invoices cursor: pass a prior invoice's `id` to fetch the next page (cursor pagination, not offset). | |
| use_background | No | Enable/disable background, "true"/"false". | |
| background_mode | No | Background display mode, e.g. 'stretched', 'fixed'. | |
| describe_action | No | When action='describe', narrow the output to ONE action's full params/notes (e.g. 'list'). Omit to get the compact action index. | |
| background_color | No | Background color as JSON. | |
| background_color1 | No | Primary background color as JSON. | |
| background_color2 | No | Secondary background color as JSON. | |
| perm_member_manage | No | Who can manage members, e.g. 'Owner only'. | |
| perm_authorized_domains | No | Authorized email domain for auto-join. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already set destructiveHint=true and readOnlyHint=false. The description adds specific context about the 'close' action being destructive, which is helpful. However, it doesn't disclose other behavioral traits like rate limits, authentication needs, or side effects for non-destructive actions. The addition is moderate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at two sentences, front-loading the main capabilities and providing a critical directive ('use describe for full reference'). Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (58 parameters, many actions), the description is too sparse. It directs to 'describe' for details, but does not explain how parameters relate to actions or provide enough context for the agent to use it effectively without an extra call. The output schema is missing, and the description doesn't compensate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter already has a description. The tool description adds no extra meaning beyond listing the categories of actions. Baseline is 3 per guidelines, and no extra value is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Organization management' and lists the covered areas (CRUD, billing, members, etc.), making the tool's purpose obvious. However, it doesn't differentiate from sibling tools like 'member' or 'invitation', which might overlap, but the name 'org' implies a unified management endpoint.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a meta-instruction to call action='describe' for full reference, but lacks guidance on when to use this tool versus alternatives or when not to use it. No exclusions or context are provided, leaving the agent without clear decision criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
storageADestructiveInspect
Files & folders on workspaces/shares: list, search, copy, move, delete, rename, trash, transfer, versions, locks, previews, and per-node metadata (get/set/delete/extract/versions). Call action='describe' for the full action/param reference. Destructive: purge (irreversible). delete moves to trash. metadata-delete removes metadata keys. Verbosity (detail param): list/recent/search/trash-list default to terse (compact rows). details defaults to full (drill-down). Pass an explicit detail='standard'|'full' to override.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Alias for query. | |
| keys | No | metadata-delete: JSON array of metadata keys to delete (omit to clear all). | |
| name | No | Name for new folder or file. | |
| size | No | Size preset: "IconSmall", "IconMedium", "Preview", or custom. | |
| type | No | Filter by node type. | |
| limit | No | Max results (1-500, default 100). | |
| query | No | Search query — keyword, or keyword + semantic when intelligence is on. | |
| width | No | Target width in pixels. | |
| action | Yes | Operation. Use 'describe' for full action reference. | |
| cursor | No | Opaque cursor from a previous response. | |
| detail | No | Per-node verbosity for list/recent/search/trash-list/details. Defaults: terse for list/recent/search/trash-list, full for details. Bump to full when you need… | |
| height | No | Target height in pixels. | |
| offset | No | Results to skip (default 0). | |
| details | No | Search-only. Return fully-hydrated node objects per result (default limit drops to 10). Distinct from `detail` — call action='describe' for the contrast. | |
| node_id | No | Storage tree node opaque ID. Both files and folders are nodes — use this name regardless of which. Storage node opaque ID, or 'root'. On `list`, the target… | |
| sort_by | No | Sort column (default: name). | |
| max_size | No | Max read-content bytes (default 512000, max 1048576). | |
| new_name | No | New name for file or folder. | |
| node_ids | No | Storage node opaque IDs (details: 1-25 max). | |
| order_by | No | metadata-list-files: field key to sort by. | |
| share_id | No | For add-link: the target share to link (workspace-only). For the dual-type actions (list/details/copy/move/etc.): a profile alias implying profile_type=share —… | |
| sort_dir | No | Sort direction (default: asc). | |
| node_type | No | rename-only OPTIONAL hint: the node's type, when the caller already knows it. Notes route to a dedicated endpoint, so supplying node_type lets rename skip the… | |
| parent_id | No | Alias for node_id on `list` (the folder whose contents to list), or 'root'. | |
| upload_id | No | Opaque ID of completed upload session. | |
| context_id | No | Alias for profile_id (either name works) | |
| key_values | No | metadata-set: JSON object of key-value pairs matching template fields. | |
| order_desc | No | metadata-list-files: sort descending ('true' or 'false'). | |
| profile_id | No | Polymorphic context ID (pair with profile_type=workspace|share). Typed aliases let you omit profile_type: workspace_id (⇒ workspace) / share_id (⇒ share, on… | |
| version_id | No | Version ID to restore. | |
| as_markdown | No | Opt-in (list/recent/search/details/trash-list): when true, the platform renders the response as GitHub-flavored Markdown (?output=<detail>,markdown) for… | |
| files_scope | No | Scope semantic search to file versions. See describe for full constraints. | |
| instance_id | No | Alias for profile_id (REST/how-to name; profile_id is canonical). | |
| template_id | No | Metadata template ID (e.g. mt_abc123). Required for metadata-set/metadata-list-files. The template SYSTEM (CRUD/assign/AI-extraction) lives on the `metadata`… | |
| context_type | No | Alias for profile_type (either name works) | |
| preview_type | No | Type of preview to generate. See describe for which preview_types apply to which file categories. | |
| profile_type | No | Profile type: "workspace" or "share". | |
| workspace_id | No | Alias for profile_id when the profile is a workspace — implies profile_type=workspace (so profile_type may be omitted). Valid on every storage action. | |
| display_limit | No | How many items to return. Default 10, max 500. The MCP trims post-fetch; backend cache stays warm. Used by: list, recent, search. list/recent paginate via the… | |
| folders_scope | No | Scope semantic search to folders via BFS. See describe for full constraints. | |
| output_format | No | Output format: "png", "jpg", "webp". | |
| transfer_mode | No | 'copy' (default) or 'move'. 'move' invalid for node_id 'root'. | |
| dest_parent_id | No | Destination parent folder opaque ID, or 'root'. Primary param for transfer (the parent in the OTHER instance). For copy/move within the same instance use… | |
| extract_fields | No | metadata-extract: JSON array of field names to extract (e.g. `["vendor","amount"]`); omit/null for full row. | |
| parent_node_id | No | Parent folder opaque ID, or 'root'. (On `list`, also accepted as an alias for node_id — the folder to list.) | |
| transform_name | No | Transform name, e.g. "image" for resize/crop/format. | |
| describe_action | No | When action='describe', narrow the output to ONE action's full params/notes (e.g. 'list'). Omit to get the compact action index. | |
| dest_instance_id | No | Destination workspace or share profile ID. | |
| metadata_filters | No | metadata-list-files: JSON filter criteria for the metadata file listing. | |
| target_parent_id | No | Destination folder opaque ID, or 'root'. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and readOnlyHint=false. The description adds specifics about destructive actions: purge is irreversible, delete moves to trash, metadata-delete removes keys. It also explains default verbosity for different actions. This goes beyond the annotations, providing useful behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, somewhat dense sentence that covers many points. It front-loads the core actions but lacks paragraph breaks or structured sections. It is concise but could be more readable by splitting into bullet points or separate sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (50 parameters, many actions), the high-level description provides a good overview and points to action='describe' for details. However, it doesn't explain return values or all behavior nuance. Without an output schema, more context could be helpful, but the description does an adequate job for an introductory reference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 50 parameters have descriptions in the input schema (100% coverage), so the schema already documents meaning. The description adds minimal parameter-level detail, only noting default verbosity levels and the action parameter's use. Thus, it adds some value but not substantially beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool handles files and folders on workspaces/shares, listing many specific operations. It distinguishes from sibling tools like download, upload, which are separate concerns. The purpose is unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description directs users to call action='describe' for full reference, which is helpful. However, it does not explicitly state when to use this tool versus alternatives, nor when not to use it. There is no comparison to sibling tools, though the scope is broad enough that it's likely the primary file operation tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taskADestructiveInspect
Lightweight task lists/tasks for ad-hoc in-workspace tracking. For durable, multi-step orchestration use the workflow tool. Task lists and tasks in workspaces/shares with statuses, priorities, assignees, dependencies, bulk ops, attachments, and comments. Call action='describe' for the full action/param reference. Destructive: delete-list, delete-task.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Task list name (1-255 chars). | |
| limit | No | Items to return (1-200). | |
| title | No | Task title (1-500 chars). | |
| action | Yes | Operation. Use 'describe' for full action reference. | |
| filter | No | "assigned", "created", or "status" (needs status param). | |
| format | No | Response format: "json" (default) or "md". | |
| offset | No | Pagination offset. | |
| status | No | Task status. | |
| list_id | No | Task list ID. | |
| node_id | No | Storage tree node opaque ID. Both files and folders are nodes — use this name regardless of which. Node ID to link task to a file/folder/note. | |
| sort_by | No | Sort field. | |
| task_id | No | Task ID. | |
| assignee | No | Filter tasks by assignee profile ID. | |
| list_ids | No | Task list IDs for reorder-lists (desired order). | |
| priority | No | 0=none, 1=low, 2=medium, 3=high, 4=critical. | |
| share_id | No | Alias for profile_id when the profile is a share — implies profile_type=share (so profile_type may be omitted). | |
| sort_dir | No | Sort direction: "asc" or "desc". | |
| task_ids | No | Task IDs (bulk-status max 100; reorder-tasks order). | |
| target_id | No | attachment-add/-detach: the object ID to attach/detach (node, workflow, envelope, share, workspace, fileshare, or task). | |
| context_id | No | Alias for profile_id (either name works) | |
| profile_id | No | Polymorphic context ID (pair with profile_type=workspace|share). Typed aliases let you omit profile_type: workspace_id (⇒ workspace) / share_id (⇒ share); also… | |
| sort_order | No | Position in target list after move (default 0). | |
| target_ids | No | attachment-add: batch attach up to 100 object IDs (XOR target_id; same types). | |
| assignee_id | No | Profile ID of assignee (incl. pending members). null to unassign. | |
| description | No | Description (max 2000 for lists, 5000 for tasks). | |
| comment_body | No | comment-add: comment text (1-8192 chars; display text excluding mentions max 500). May include @-mention markup. | |
| context_type | No | Alias for profile_type (either name works) | |
| dependencies | No | Task IDs this task depends on. | |
| profile_type | No | Profile type: "workspace" or "share". | |
| workspace_id | No | Alias for profile_id when the profile is a workspace — implies profile_type=workspace (so profile_type may be omitted). | |
| display_limit | No | Number of tasks to return to the agent (default 10, max 200). Backend page_size unchanged for cache warmth — trims post-fetch only. | |
| describe_action | No | When action='describe', narrow the output to ONE action's full params/notes (e.g. 'list-tasks'). Omit to get the compact action index. | |
| comment_parent_id | No | comment-add: opaque ID of the parent comment for a threaded reply (single-level threading; must belong to this task's thread). | |
| target_task_list_id | No | Target task list ID for move-task (same profile). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations declare destructiveHint=true, and the description supplements by naming the destructive actions ('delete-list, delete-task'). This adds context beyond the annotation. The description also implies the tool is not read-only (consistent with readOnlyHint=false) and hints at the breadth of operations (bulk ops, attachments, etc.). It does not cover rate limits or authorization, but the annotation and description together provide adequate transparency for selection.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: 3 sentences. It front-loads the purpose and key differentiator (ad-hoc vs workflow), lists core features, provides actionable guidance (use describe), and warns about destructive operations. Every sentence serves a purpose; no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no output schema and 34 parameters, the description provides a good overview of features (statuses, priorities, assignees, etc.) and directs to the describe action for full parameter details. It mentions the destructive nature and the context (workspaces/shares). It could be enhanced by describing typical return shapes or noting that some actions may require specific parameters, but for a complex tool, the describe fallback makes it sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema coverage is 100% with descriptions for all 34 parameters. The description adds value by highlighting the action parameter and instructing to use 'describe' for a full action/param reference. This meta-guidance helps the agent navigate the parameter-rich schema. While the description doesn't detail individual parameter semantics beyond the schema, the suggestion to call describe compensates for the tool's complexity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as for 'lightweight task lists/tasks for ad-hoc in-workspace tracking' and distinguishes it from the durable orchestration sibling 'workflow'. It states the core capabilities (statuses, priorities, assignees, etc.) and the verb 'tracking' implies management. The resource is task lists/tasks, and the scope is ad-hoc in-workspace, making purpose specific and distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly guides when to use this tool ('ad-hoc in-workspace tracking') and when to use an alternative ('For durable, multi-step orchestration use the `workflow` tool.'). It also recommends calling action='describe' for full details. However, it does not provide explicit 'when not to use' beyond the workflow comparison, nor does it cover other potential alternatives or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
uploadADestructiveInspect
File upload: streaming (one-shot stream-upload — DEFAULT for unknown/generated content), chunked (create-session → POST /blob → chunk → finalize — only when filesize is known exactly), web URL import, and batch (multi-small-file). Call action='describe' for the full action/param reference. Side effects: finalize/stream/stream-upload/web-import/batch create files and consume storage credits. Same-name uploads to a folder OVERWRITE the existing node in place (preserved as a recoverable version). BINARY: content is text-only (writes verbatim UTF-8); for binary use content_base64 (server-decoded) or POST /blob + blob_id. UPLOAD STRATEGY (read top-to-bottom, pick the FIRST that matches): (1) Have a URL? → web-import (single call). (2) Have content but DON'T know exact size, OR generating/transforming content first? → stream-upload (single call, auto-finalizes, NO filesize required, size auto-detected from the bytes). (3) Have a file with KNOWN exact byte count? → create-session + chunk(s) + finalize. filesize must match the bytes you actually upload — mismatch causes finalize to fail with code 10522 and you must cancel the session. (4) Multiple small files (≤4 MB each, ≤200 total) into one folder? → batch. DEFAULT to stream-upload unless you are sure of the exact byte count. Do NOT guess filesize for generated content — use stream-upload instead. max_size is a hard ceiling that aborts mid-transfer — always overestimate or omit (server uses plan limit).
| Name | Required | Description | Default |
|---|---|---|---|
| org | No | Org ID for limit resolution. | |
| url | No | Source URL to import from. | |
| hash | No | File hash for verification. | |
| plan | No | Override billing plan to check (e.g. free, pro). | |
| wait | No | Long-poll duration ms (0 = return immediately). | |
| files | No | Batch manifest (1..200 entries). Each: filename + one of blob_id/content/content_base64. | |
| limit | No | Max results (1-100, default 50). | |
| action | Yes | Operation. Use 'describe' for full action reference. | |
| offset | No | Pagination offset. | |
| status | No | Filter by status. | |
| stream | No | Stream mode — size optional, single POST, auto-finalizes. | |
| blob_id | No | Blob ID from POST /blob. Preferred for binary/large files. Single-use. | |
| content | No | **Text only** — stored verbatim UTF-8. Do NOT pass base64 here (use content_base64). One of content/content_base64/blob_id. | |
| creator | No | Client identifier echoed back (alphanumeric + hyphens). | |
| file_id | No | File ID for update context. | |
| blob_ref | No | Alias for blob_id (deprecated). Accepted on chunk/stream/stream-upload only. | |
| chunk_id | No | Specific chunk number (omit for all). | |
| filename | No | File name. Optional when target_node_id is set (auto-resolved); pass to rename-on-replace. | |
| filesize | No | Total file size in bytes. | |
| max_size | No | Stream-body byte ceiling — aborts mid-transfer if exceeded. Always overestimate; omit to use plan limit. Stream sessions only. | |
| password | No | File Share link password (profile_type=fileshare only). Forwarded ONLY as the x-ve-password header on every upload phase — never in a URL/log. Supply when the… | |
| share_id | No | Alias for profile_id when the profile is a share — implies profile_type=share (so profile_type may be omitted). | |
| folder_id | No | Target folder OpaqueId or "root". Omit for instance root. | |
| hash_algo | No | Hash algorithm (e.g. 'sha256'). | |
| upload_id | No | Upload session ID or web upload job ID. | |
| chunk_size | No | Chunk size in bytes (server picks default). | |
| context_id | No | Alias for profile_id (either name works) | |
| profile_id | No | Polymorphic context ID (pair with profile_type=workspace|share|fileshare). Typed aliases let you omit profile_type: workspace_id (⇒ workspace) / share_id (⇒… | |
| instance_id | No | Target workspace/share ID — also the profile_id alias for upload flows; profile_id is canonical. | |
| chunk_number | No | 1-indexed chunk number. | |
| context_type | No | Alias for profile_type (either name works). | |
| include_hash | No | Compute SHA-256 client-side for entries without a hash (default true when omitted). | |
| profile_type | No | Target type: workspace | share | fileshare (alias: context_type). Use `fileshare` ONLY for content write-back to a File Share's bound file (requires… | |
| workspace_id | No | Alias for profile_id when the profile is a workspace — implies profile_type=workspace (so profile_type may be omitted). | |
| if_version_id | No | File Share write-back compare-and-swap (profile_type=fileshare only). Pass the version id the edit was based on (from `fileshare details` / `fileshare… | |
| action_context | No | Context: create or update. | |
| content_base64 | No | Base64-encoded **binary** — server decodes before writing. Whitespace stripped. Practical cap a few MB; use blob_id for larger. | |
| parent_node_id | No | Parent folder OpaqueId or "root". On create-session, stream-upload, and web-import, folder_id is accepted as an alias (either name works). | |
| target_node_id | No | Overwrite this specific node (preserves node_id; new version). When set, parent_node_id is ignored and filename is optional (auto-resolved). Must be a file… | |
| describe_action | No | When action='describe', narrow the output to ONE action's full params/notes (e.g. 'chunk'). Omit to get the compact action index. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses all critical behavioral traits: side effects (file creation, storage credit consumption), overwrite behavior (same-name files overwrite with recoverable versions), error conditions (filesize mismatch causing finalize to fail with code 10522), and the hard ceiling behavior of max_size. Annotations already indicate destructiveHint=true, but the description adds actionable specifics. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (e.g., 'BINARY:', 'UPLOAD STRATEGY') and front-loaded with the main variants. However, it is quite lengthy and dense, which could be slightly more concise without losing information. It earns its length due to the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's high complexity (40 parameters, multiple actions, no output schema), the description is remarkably complete. It covers all upload paths, error codes, defaults, and even points to further details via action='describe'. There is no missing context for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with 40 parameters, so baseline is 3. The description adds significant value by explaining how parameters relate to upload strategies (e.g., content vs content_base64 vs blob_id, filesize constraints, folder_id vs parent_node_id). It also clarifies parameter usage in context (e.g., 'stream' boolean for stream mode). One point deducted because the description could be more explicit about a few parameters like 'offset' and 'limit' which are only mentioned in schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly defines the tool's purpose: file upload with multiple strategies (streaming, chunked, web URL import, batch). It specifies the verb 'upload' and the resource 'files', and distinguishes itself from sibling tools (which are other categories like ai, auth, comment, etc.) by focusing exclusively on upload operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a comprehensive decision tree under 'UPLOAD STRATEGY' that tells the agent exactly when to use each upload mode (e.g., web-import for URLs, stream-upload for unknown sizes, chunked for known byte count, batch for small files). It also includes explicit 'do not' guidance (e.g., 'Do NOT guess filesize for generated content') and defaults to stream-upload.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
userCDestructiveInspect
User profile, contacts, invitations, and assets. Call action='describe' for the full action/param reference. Destructive: close.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of items to return (1-500, default 100) | |
| query | No | Contact search substring. | |
| action | Yes | Operation. Use 'describe' for full action reference. | |
| offset | No | Number of items to skip (default 0) | |
| content | No | Plain text content for asset upload. | |
| user_id | No | 19-digit user ID or email. | |
| archived | No | True for archived shares, false for active. | |
| filename | No | Original filename. | |
| last_name | No | Family name. | |
| asset_name | No | Asset type name (e.g. profile_pic). | |
| first_name | No | Given name. | |
| confirmation | No | Email or user ID confirmation for account close. | |
| content_type | No | MIME type. | |
| display_limit | No | How many items to return. Default 10, max 500. The MCP trims post-fetch; backend page_size stays MCP-internal so the platform cache stays warm. Applies to… | |
| email_address | No | Email address. | |
| invitation_id | No | Invitation opaque ID or key. | |
| content_base64 | No | Base64-encoded binary content. | |
| invitation_key | No | Invitation key. | |
| describe_action | No | When action='describe', narrow the output to ONE action's full params/notes (e.g. 'me'). Omit to get the compact action index. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and destructiveHint=true. Description adds 'Destructive: close', which is consistent and highlights that action, but does not elaborate on other actions' behavior or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise single sentence plus a note. No waste, but could benefit from slightly more structure given the tool's complexity. Still, it earns a high score for efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite 100% schema coverage, the description lacks context about the tool's overall behavior, return values (no output schema), and how actions interconnect. The openWorldHint is not explained, leaving gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage with descriptions for all parameters. Description adds no extra meaning beyond the schema, relying on action='describe' for details. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description mentions user profile, contacts, invitations, and assets, which gives a general idea but does not clearly distinguish from sibling tools like 'member' or 'invitation'. The action enum provides specificity, but the description itself lacks differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Minimal guidance: advises to use action='describe' for full reference and notes that 'close' is destructive. No explicit when-to-use vs alternatives, and no context on tool selection among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workflowADestructiveInspect
Durable workflow ORCHESTRATION + native content-review + e-signature, scoped to a workspace. NOT the in-workspace task-tracking primitive, NOT workspace action=enable-workflow. Covers lifecycle, steps (incl. step-reassign + agent-trace/activity), obligations, immutable templates (incl. the System Template Gallery: template-system-list/-get + template-from-system one-call instantiate), triggers, pools, extraction-schema, audit/export (incl. dual-control redaction), grants, agent-templates, outbound-webhook subscriptions, inbound-key management, mid-run modifications, review-* (native approval), and sign-* (e-signature; workspace-parented). Write/lifecycle actions are FIRE-AND-FORGET (return ids + state + a _next poll hint); destructive actions need confirm='true'. Call action='describe' for the full per-action reference, or action='guide' for the workflow-authoring playbook (both callable without auth).
| Name | Required | Description | Default |
|---|---|---|---|
| ops | No | modification-propose: JSON array of operations [{op, target_step_occurrence_id, ...}]. Max 50 ops per proposal. | |
| body | No | review comment text. | |
| hard | No | delete: 'true' = owner-only PERMANENT delete; default soft-archive. | |
| name | No | Name: workflow 1-255 (create/update), template 1-200 (template-create), agent-template, OR sign envelope name (sign-create/-update; max 255). | |
| role | No | grant: role viewer|participant|admin (additive). | |
| tags | No | Tags: a JSON array string (e.g. `["a","b"]`) or a comma-separated string. create/update. | |
| No | review-reviewer-add-external: reviewer email. | ||
| limit | No | Page size (offset-paginated lists: workflows/obligations 1-500, default 100). Some list actions apply lower per-action caps (e.g. review-list-active default… | |
| scope | No | audit-export-start: export scope (e.g. 'full'). Omit for the platform default. | |
| since | No | audit-events: lower-bound timestamp filter ('Y-m-d H:i:s UTC'). | |
| state | No | update: lifecycle transition (illegal → 400). | |
| until | No | audit-events: upper-bound timestamp filter ('Y-m-d H:i:s UTC'). | |
| action | Yes | Operation. Use 'describe' for full action reference. | |
| assets | No | review surface: JSON assets array [{node_id,version_id}] (XOR reviewed_node_ids+version_id). See note. | |
| bucket | No | list: filter runs by EXECUTION status (in_flight|completed|paused|failed) — distinct from state_filter (profile lifecycle). Activates cursor pagination. | |
| cursor | No | Cursor for cursor-paginated lists (list, grant-list, audit-events). Pass back the prior pagination.next_cursor verbatim. For list, the cursor is bound to the… | |
| fields | No | JSON array: schema field defs OR sign field placements (see note). | |
| handle | No | System gallery template handle (e.g. 'system:gallery:contract-review'). REQUIRED on template-system-get / template-from-system. NON-opaque (contains colons) —… | |
| inputs | No | template-from-system: JSON object mapping setup input ids to values (e.g. {"legal_reviewer":"<user_id>"}). Native or string. Omitted inputs with… | |
| job_id | No | Audit-export job OpaqueId. audit-export-poll/-download. | |
| offset | No | Pagination offset (default 0). | |
| output | No | step-output: output envelope (JSON; native or string). CAS (409 → re-read). | |
| reason | No | Optional reason (per-action max enforced; see notes). | |
| cascade | No | cancel: 'false' cancels only this workflow (default cascades to sync sub-children). | |
| confirm | No | Confirmation gate ('true'). REQUIRED for destructive actions + transfer; refused without it. | |
| enabled | No | trigger-create/-update / inbound-key-enable / outbound-webhook-create/-update: enabled flag. | |
| node_id | No | Storage node OpaqueId (review-preview-*). | |
| outcome | No | review-admin-resolve: outcome approved|rejected|cancelled. | |
| payload | No | step-advance: optional JSON payload for the dispatch handler. | |
| publish | No | template-from-system: default 'true' publishes + binds the revision so the next run executes it; 'false' leaves it validated/unbound (publish later via… | |
| step_id | No | Step DEFINITION OpaqueId (stable). step-occurrences. | |
| user_id | No | Target user's profile ID (19-digit). grant/grant-revoke. | |
| asset_id | No | Review asset OpaqueId. | |
| chunk_id | No | audit-export-download: 'manifest' or chunk int. | |
| decision | No | review-decision: approve | reject | request_changes (sent to the platform as `action`). | |
| node_ids | No | JSON array of node ids. extraction-schema-derive: REQUIRED sample node IDs. step-files: REQUIRED — the node ids to submit to a waiting manual wait_for_files… | |
| pool_key | No | Workflow pool key (unique per workspace; [a-z0-9_-]). inbox-pool + pool-* actions. | |
| template | No | template-create: the template-revision JSON doc (native or string). See per-action note. | |
| action_id | No | audit-redact mode=confirm: 32-char hex action_id returned by the request phase (expires 15 min, single-use). | |
| documents | No | sign-create/-update: JSON documents array 1-20 (see note). | |
| page_size | No | list: keyset page size (1-100, default 50). Passing page_size (or cursor/bucket) switches the run-list to CURSOR pagination — response carries… | |
| reviewers | No | review surface: JSON reviewers array [{kind:'member'|'external',...}] (XOR reviewer_user_ids). See note. | |
| comment_id | No | Review comment OpaqueId. | |
| expires_at | No | Optional expiry as a UTC timestamp 'Y-m-d H:i:s UTC'. grant: grant expiry (omit = none). sign-create/-update: envelope expiry (NOT a day count; omit/null =… | |
| recipients | No | sign-create/-update: JSON recipients array (see note). | |
| step_seeds | No | instantiate: optional JSON object seeding run-start files into specific steps (e.g. a wait_for_files step). Its keys are the VALUES of from_system's… | |
| subject_id | No | External-subject correlation handle (1-255). external-subject-workflows. | |
| surface_id | No | Review surface OpaqueId. | |
| target_url | No | outbound-webhook-create: HTTPS target URL for signed delivery. Private/reserved addresses are rejected. | |
| trigger_id | No | Workflow trigger OpaqueId. | |
| version_id | No | review surface: version_id for the reviewed_node_ids shorthand. | |
| dedup_scope | No | trigger-create: dedup scope. | |
| description | No | Workflow/template description (max 4000); also the extraction-schema-derive LLM hint. | |
| document_id | No | sign-document-*: document OpaqueId. | |
| envelope_id | No | sign-*: numeric envelope ID. | |
| event_match | No | trigger-create/-dry-run-draft: JSON event-match filter (REQUIRED both). Also trigger-update: OPTIONAL — re-scope the trigger's watch in place (no… | |
| policy_json | No | sign-create/-update: optional JSON policy {auth_method,...}. | |
| policy_mode | No | review surface: policy mode (default 'single'). | |
| pool_source | No | pool-create: pool key source (tag/template_id/freeform). | |
| redact_mode | No | audit-redact: mode=request (phase 1 — workspace admin proposes) or mode=confirm (phase 2 — a DIFFERENT workspace admin confirms). | |
| reviewer_id | No | Review reviewer OpaqueId. | |
| template_id | No | Workflow template revision OpaqueId (immutable). Also seeds create-from-template on `create`. | |
| window_days | No | trigger-dry-run/-dry-run-draft: historical backtest window in days (1-90). | |
| workflow_id | No | Workflow profile ID (19-digit). The orchestration runtime. | |
| apply_guards | No | trigger-dry-run/-draft: 'true' applies rate/concurrency/dedup guards. | |
| comment_text | No | review-decision: the reason. REQUIRED (non-blank) for decision='reject'/'request_changes'; optional for 'approve'. A blank reason on reject/request_changes is… | |
| external_jwt | No | OPTIONAL external-reviewer JWT (request-scoped; never stored; safe 401). | |
| invite_notes | No | review-reviewer-add-external: optional invite-email note. | |
| preview_type | No | review-preview-read: preview rendition. | |
| redaction_id | No | audit-redaction-get: OpaqueId of the committed redaction batch. | |
| sample_limit | No | trigger-dry-run/-dry-run-draft: max sample matches to return. | |
| state_filter | No | list: filter by lifecycle state (draft|active|paused|completed|cancelled|archived|deleted). | |
| workspace_id | No | Workspace ID (19-digit or custom name). The workflow profile's parent / authz anchor. | |
| display_limit | No | Post-fetch item cap (default 10, max 500) for list-type actions. | |
| event_payload | No | trigger-fire: optional JSON event_payload (testing/replay). Native or string. | |
| event_seq_end | No | audit-export-start: optional upper event-seq bound. | |
| link_token_id | No | Review link-token OpaqueId. | |
| mark_complete | No | step-output: no-op today; reserved (accepted but ignored — the handler decides completion). | |
| obligation_id | No | Obligation ID — a plain numeric sequence string (e.g. 100200300), NOT a 19-digit profile ID. | |
| owner_user_id | No | create: optional owner User ID (19-digit). Defaults to the caller. Also becomes runs_as_user_id. | |
| param_mapping | No | trigger-create/-dry-run-draft: JSON event->input mapping. Native or string. | |
| enabled_filter | No | trigger-list: enabled filter (true|false|all). | |
| max_concurrent | No | pool-create: max concurrent in-flight workflows for the pool (1-1000). REQUIRED. | |
| tool_allowlist | No | agent-template-create/-update: JSON array of tool-id strings. Native or string. | |
| archived_filter | No | list: 'false' (default, exclude archived), 'true' (only archived), 'all'. | |
| concurrency_cap | No | trigger-create/-update: concurrency cap (>=1 on update). | |
| create_workflow | No | template-from-system: 'true' creates a new workflow (cannot be combined with workflow_id); 'false' attaches to an existing workflow and REQUIRES workflow_id.… | |
| describe_action | No | When action='describe', narrow the output to ONE action's full params/notes (e.g. 'create'). Omit to get the compact action index. | |
| envelope_status | No | sign-list: status filter. | |
| event_seq_start | No | audit-export-start: optional lower event-seq bound. | |
| idempotency_key | No | Replay-safe key 1-128. REQUIRED on instantiate; optional on create. | |
| include_payload | No | audit-events: when 'true', inline each event's payload (heavier). Default omits it. | |
| modification_id | No | modification-get/-apply/-cancel: modification proposal OpaqueId. | |
| policy_quorum_n | No | review surface: quorum size (with policy_mode='quorum'). | |
| redaction_paths | No | audit-redact mode=request: JSON array of dot-path strings identifying fields to redact (e.g. ["payload.pii.email"]). | |
| runs_as_user_id | No | instantiate: optional runs_as principal (User ID). Defaults to the owner. | |
| subscription_id | No | outbound-webhook-get/-update/-delete/-rotate-secret: outbound webhook subscription OpaqueId. | |
| target_event_id | No | audit-redact mode=request: OpaqueId of the audit event to redact. | |
| trigger_payload | No | instantiate: optional JSON input bindings. Native or string. | |
| agent_credit_cap | No | Optional credit budget (create/update; omit = no cap). | |
| apply_change_ids | No | modification-apply: JSON array of change IDs to apply (empty array = apply all pending). Every supplied id must belong to this proposal. | |
| assigned_user_id | No | obligation-list: optional assignee filter (19-digit User ID). | |
| expected_version | No | template-from-system: integer compare-and-set against the catalog version. A mismatch returns 409 with expected_version/catalog_version — re-read the gallery… | |
| family_allowlist | No | outbound-webhook-create/-update: JSON array of CDN-family suffixes that restrict delivery (e.g. ["workers.dev","pages.dev"]). Empty = no restriction. | |
| include_overlays | No | audit-export-start: include redaction overlay rows. | |
| independent_root | No | trigger-create: whether fired runs are ancestry-independent. | |
| agent_template_id | No | Workflow agent-template OpaqueId. | |
| confirmer_user_id | No | audit-redact mode=confirm: confirmer's user ID (must match authenticated caller; must differ from the requester). | |
| event_type_prefix | No | audit-events: filter to event types under this prefix. | |
| include_nl_ledger | No | audit-export-start: include the NL ledger. | |
| obligation_status | No | obligation-list: status filter. | |
| reviewed_node_ids | No | review surface: JSON node-IDs array (shorthand; needs version_id; XOR assets[]). | |
| reviewer_user_ids | No | review surface: JSON member-User-ID array (XOR reviewers[]). | |
| version_id_pinned | No | review-decision: pinned asset version (CAS). | |
| expires_in_seconds | No | modification-propose: proposal expiry in seconds (max 604800 = 7 days; absent or <=0 defaults to max). | |
| instruction_prompt | No | agent-template-create/-update: the agent's instruction prompt text. | |
| resolution_payload | No | obligation-resolve: optional JSON payload (audit envelope only). | |
| step_occurrence_id | No | Step OCCURRENCE OpaqueId (one firing). step-get/-advance/-cancel/-output/-complete/-files/-reassign. | |
| target_template_id | No | trigger-create/-dry-run-draft: target WorkflowTemplate OpaqueId (REQUIRED). | |
| external_subject_id | No | instantiate: optional integrator correlation handle (1-255). Cross-workflow lookup index. | |
| modification_status | No | modification-list: optional status filter. | |
| permission_required | No | trigger-create: required permission for the event-actor (run-as gate). | |
| rate_limit_per_hour | No | trigger-create/-update: per-hour fire cap (>=1 on update; 0=no cap). | |
| target_workspace_id | No | transfer: destination workspace ID (same org only). | |
| dedup_window_seconds | No | trigger-create: dedup window in seconds. | |
| new_assignee_user_id | No | step-reassign: new assignee user ID (must be a workspace member). | |
| external_invite_notes | No | review-send-for-review: optional note included in the external reviewer invite emails. | |
| pool_admission_policy | No | pool-create: full-pool policy — reject (422, default) or queue. | |
| definition_revision_id | No | extraction-schema-set: optional definition-revision id to pin the new schema version. | |
| redaction_pin_strategy | No | audit-export-start: redaction pin strategy (e.g. 'job_start'). | |
| target_template_version | No | trigger-create/-dry-run-draft: optional pinned template version (positive int). | |
| event_type_subscriptions | No | outbound-webhook-create: JSON array of event type strings to subscribe to (e.g. ["workflow.created","workflow.cancelled"]). | |
| idempotency_key_template | No | trigger-create: template string for the per-fire idempotency key. | |
| confirm_removes_human_gate | No | modification-apply: required (='true') when any skipped step removes a human gate (approval/signing); 403 without it. | |
| include_evidence_snapshots | No | audit-export-start: include evidence snapshots. | |
| restart_on_overlay_mismatch | No | audit-export-start: 'true' restarts on a mid-run overlay-manifest mismatch. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses key behavioral traits beyond annotations: 'Write/lifecycle actions are FIRE-AND-FORGET (return ids + state + a `_next` poll hint); destructive actions need confirm='true'.' This adds crucial context that annotations (readOnlyHint=false, destructiveHint=true) do not fully convey. It also notes that 'describe' and 'guide' are callable without auth. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but front-loaded: it starts with the core purpose, exclusions, and a comprehensive list of covered areas. Every sentence adds value, and it avoids redundancy. However, it could be slightly more concise by listing fewer sub-domains, but the detail aids completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 136 parameters and numerous actions, the description is fairly complete by outlining major behavioral patterns and directing to action='describe' for per-action details. It covers scope, fire-and-forget behavior, confirm requirement, and auth hints. Given the complexity and lack of output schema, the description adequately sets context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the baseline is 3. The tool description provides high-level context for parameters by listing domains like 'Covers lifecycle, steps, obligations...' but does not detail individual parameters. This adds some meaning beyond the schema, especially for grouping, but not substantial per-parameter value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Durable workflow ORCHESTRATION + native content-review + e-signature, scoped to a workspace.' It explicitly distinguishes itself from siblings by stating 'NOT the in-workspace task-tracking primitive, NOT `workspace action=enable-workflow`.' This provides a specific verb+resource and differentiates it from other tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives guidance on when to use this tool by stating what it is not, effectively excluding the 'task' and 'workspace' tools. It also tells the agent to 'Call action='describe' for the full per-action reference' and 'action='guide' for the workflow-authoring playbook', providing clear context for further exploration. However, it does not provide explicit when-not-to-use scenarios beyond the two exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workspaceADestructiveInspect
Workspace management: list/details/update/delete, archive, members, notes, quickshares, share import, workflow/import toggles. NOTE: metadata actions MOVED — templates + AI extraction → metadata tool; node-level metadata → storage tool. The metadata-* actions here are deprecated one-release execute-and-warn shims, removed next release. Call action='describe' for the full action/param reference. Destructive: delete (workspace + all files). ⚠️ intelligence COSTS CREDITS (10/page) — only enable on explicit user request; toggle is rate-limited. Verbosity (detail param): list/available/members/list-shares default to terse (compact rows). details defaults to full (drill-down). Pass an explicit detail='standard'|'full' to override.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Search keyword(s). 1-1024 chars. Multi-token = ALL tokens (AND); case-insensitive; substring for ≤64 chars, else whole-word. | |
| keys | No | JSON array of metadata keys to delete (omit for all). | |
| name | No | Name. 1-255 (metadata-template-create, preview-match); 2-100 (metadata-template-update/-clone). Send "null" to clear on update. | |
| limit | No | Maximum number of items to return (1-500, default 100) | |
| action | Yes | Operation. Use 'describe' for full action reference. | |
| config | No | Saved-view config JSON: `{version:1, columns:[{field,visible?,width?}], sort:{field,dir}, filters:[{field,operator,value_type,value}]}`. Max 5 filters… | |
| detail | No | Per-entity verbosity for list/available/members/list-shares/details. Defaults: terse for list/available/members/list-shares, full for details. See… | |
| fields | No | JSON array of field defs. At least one field must have autoextract:true (default) or API returns 1605. Each: {name, description, type… | |
| offset | No | Number of items to skip (default 0) | |
| org_id | No | Filter workspaces to this org. | |
| blob_id | No | Blob ID from POST /blob. Preferred for large note content (UTF-8 decoded). Single-use. | |
| confirm | No | Must match folder_name or numeric ID. | |
| content | No | Plain text/markdown. Notes: max 102400 bytes (100 KiB) — use blob_id for larger. | |
| node_id | No | Storage tree node opaque ID. Both files and folders are nodes — use this name regardless of which. | |
| archived | No | Filter by archive status (default "false"). | |
| blob_ref | No | Alias for blob_id (deprecated). | |
| category | No | Metadata template category. | |
| node_ids | No | JSON array of node IDs (1-25, same workspace; deduped server-side). Bulk metadata-get returns {format:'multi', objects, templates, errors}. | |
| order_by | No | Field key to sort metadata file list by. | |
| share_id | No | 19-digit numeric ID or custom name of share to import. | |
| note_name | No | Note filename (must end with .md). | |
| parent_id | No | Parent folder opaque ID or 'root'. | |
| perm_join | No | Who can join the workspace. | |
| key_values | No | JSON object of key-value pairs matching template fields. | |
| order_desc | No | Sort descending: 'true' or 'false'. | |
| description | No | Description. metadata-template-create: required, 0-1000 (empty allowed); metadata-template-update/-clone: 10-1000; preview-match/suggest-fields: 1-2000.… | |
| folder_name | No | URL-safe workspace folder name (4-80 chars). | |
| template_id | No | Metadata template ID (e.g. mt_abc123). For metadata-search, restricts to nodes with values from this template (custom fields excluded). | |
| accent_color | No | Brand accent color JSON. "null" to clear. | |
| check_org_id | No | Org ID for check-name — suggests org-prefixed alternative if name taken. | |
| intelligence | No | Toggle AI features. ⚠️ COSTS CREDITS (10/page) — only enable on explicit user request. Disable flushes embeddings; re-enable re-indexes. Rate-limited. | |
| user_context | No | Short view/template hint (1-64 chars, letters/numbers/spaces). Example: "photo collection". | |
| workspace_id | No | Workspace opaque ID. Use this when only workspaces are valid (not shares or other contexts). For polymorphic contexts use profile_id. 19-digit numeric ID or… | |
| display_limit | No | How many items to return. Default 10, max 500. The MCP trims post-fetch; backend page_size stays MCP-internal so the platform cache stays warm. Applies to… | |
| name_to_check | No | Folder name to check availability. | |
| owner_defined | No | Custom properties JSON. "null"/"" to clear. | |
| extract_fields | No | JSON array of field names to extract (e.g. `["vendor","amount"]`); omit/null for full row. | |
| parent_node_id | No | Destination folder opaque ID for TSV export (must be folder, not trashed). Omit for workspace root. | |
| describe_action | No | When action='describe', narrow the output to ONE action's full params/notes (e.g. 'list'). Omit to get the compact action index. | |
| template_filter | No | Filter for metadata template list. | |
| metadata_filters | No | JSON filter criteria for metadata file listing. | |
| background_color1 | No | Background color 1 JSON. "null" to clear. | |
| background_color2 | No | Background color 2 JSON. "null" to clear. | |
| perm_member_manage | No | Who can manage members. | |
| nl_summaries_enabled | No | Master switch for AI summary enrichment of workflow obligations (default true). Setting 'true' requires the plan's content_ai feature. When 'false',… | |
| nl_summaries_daily_cap | No | Per-workspace daily ceiling on AI enrichment operations (0-100000, default 100). 0 disables enrichment without flipping nl_summaries_enabled. | |
| workflow_trigger_aliases | No | Verb->template alias map (JSON object), e.g. {"redact":"mt_x","summarize":"mt_y"}. A comment beginning with an alias verb (@redact) resolves through this map… | |
| workflow_approval_native_enabled | No | Tri-state gate for the native workflow-review surface. 'disabled' (default): native review off. 'mvs': single-asset, member-only, single-mode. 'extended': full… |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description provides critical behavioral details beyond annotations: destructive delete (workspace + all files), intelligence costs credits (10/page), rate-limited toggle, and verbosity defaults. This fully informs the agent of important side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is fairly concise given the tool's complexity, with important information front-loaded. It groups related information and uses line breaks. Some density could be reduced, but overall it is well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 48 parameters, no output schema, and rich annotations, the description covers all essential aspects: destructive risks, cost implications, moved actions, and verbosity handling. It is complete enough for an agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% parameter coverage, so the description does not need to compensate. However, it adds value by explaining verbosity defaults and overriding behavior, which is beyond the schema's parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool is for workspace management and enumerates actions like list, update, delete, archive, members, notes, quickshares. It explicitly distinguishes from siblings by noting that metadata actions have been moved to the metadata tool and node-level metadata to storage tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit guidance on when to use the tool and when not to (e.g., metadata actions moved to metadata tool, node-level metadata to storage tool). It also advises using action='describe' for full reference and warns about intelligence costing credits. However, it does not exhaustively cover all alternative tool uses.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!