Skip to main content
Glama
Ownership verified

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.

MCP client
Glama
MCP server

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.

100% free. Your data is private.
Tool DescriptionsA

Average 4.1/5 across 25 of 25 tools scored. Lowest: 2.9/5.

Server CoherenceC
Disambiguation3/5

The tool set covers distinct domains like AI chat, file management, and user authentication, but there is significant overlap within domains. For example, 'ai' tool handles chat operations, but 'comment' and 'worklog' also involve messaging-like features, which could cause confusion. The descriptions help differentiate, but the boundaries are not always clear.

Naming Consistency2/5

Naming is highly inconsistent across tools. Some use simple nouns (e.g., 'ai', 'auth', 'user'), others use action-oriented names (e.g., 'upload', 'download'), and many are compound or hyphenated (e.g., 'app-comments', 'metadata-template-create'). There is no uniform verb_noun pattern, making it unpredictable for agents to infer tool purposes.

Tool Count2/5

With 25 tools, the count is excessive for a single server, indicating poor scoping. The tools span too many domains (e.g., AI, file management, authentication, workflow, metadata), making the server feel like a monolithic bundle rather than a focused set. This complexity can overwhelm agents and lead to misselection.

Completeness4/5

The tool surface is highly comprehensive, covering CRUD operations across multiple domains like files, tasks, comments, and user management. Minor gaps exist, such as limited AI tooling beyond chat, but agents can generally perform full workflows without dead ends due to the extensive coverage.

Available Tools

25 tools
aiA
Destructive
Inspect

AI-powered RAG chat, document analysis, and shareable summaries. Create chats, send messages, read AI responses, and generate shareable summaries. Works on both workspaces and shares. Side effects: chat-create and message-send consume AI credits (1 credit per 100 tokens). Destructive action: chat-delete permanently removes a chat.

Actions & required params (all actions require profile_type + profile_id):

  • chat-create: type, query_text (workspace req'd, share optional) (+ optional: privacy, files_scope, folders_scope, files_attach, personality)

  • chat-list: (+ optional: include_deleted, limit, offset)

  • chat-details: chat_id

  • chat-update: chat_id, name

  • chat-delete: chat_id

  • chat-publish: chat_id

  • message-send: chat_id, query_text (+ optional: personality, files_scope, folders_scope, files_attach)

  • message-list: chat_id (+ optional: limit, offset)

  • message-details: chat_id, message_id

  • message-read: chat_id, message_id

  • share-generate: node_ids (workspace) | files (share)

  • transactions: (workspace only)

  • autotitle: (share only, + optional: context)

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew name for the AI chat (max 100 chars) (required for: chat-update)
typeNoChat type: 'chat' for general conversation, 'chat_with_files' for file-grounded analysis. With chat_with_files, omit scope parameters to search ALL indexed files in the workspace (recommended default). (required for: chat-create)
filesNoFile opaque IDs to include (max 25, share only) (required for: share-generate when profile_type=share)
limitNoResults per page, 1-500 (default 100) (used by: chat-list, message-list, search)
actionYesOperation to perform
offsetNoPagination offset (default 0) (used by: chat-list, message-list, search)
chat_idNoAI chat ID (required for: chat-details, chat-update, chat-delete, chat-publish, message-send, message-list, message-details, message-read)
contextNoOptional user hint to guide AI generation (used by: autotitle)
privacyNoChat privacy setting (default: public) (used by: chat-create)
node_idsNoFile node IDs to include (max 25, workspace only) (required for: share-generate when profile_type=workspace)
context_idNoAlias for profile_id (either name works)
message_idNoAI message ID (required for: message-details, message-read)
profile_idNo19-digit workspace or share ID (also accepted as context_id)
query_textNoQuestion or prompt for chat-create / message-send (max 12,768 chars). (required for: chat-create (workspace), message-send)
files_scopeNoScope RAG search to specific file versions — REQUIRES workspace intelligence enabled (will error if intelligence is off). Comma-separated nodeId:versionId pairs (max 100 pairs). nodeId is required; versionId is auto-resolved to the current version if left empty (e.g., 'nodeId:' with nothing after the colon). Get versionId from storage list/details 'version' field. Do NOT enumerate folder contents as files_scope — use folders_scope with the folder's nodeId instead. OMIT this parameter to search all indexed files in the workspace (recommended default). Mutually exclusive with files_attach. (used by: chat-create, message-send)
personalityNoResponse style: "concise" (short, brief answers) or "detailed" (comprehensive with context and evidence, default). (used by: chat-create, message-send)
context_typeNoAlias for profile_type (either name works)
files_attachNoAttach specific files for direct AI analysis — works regardless of workspace intelligence setting. FILES ONLY: passing a folder nodeId returns a 406 error. To include folder contents in AI context, use folders_scope instead (requires intelligence). Comma-separated nodeId:versionId pairs (nodeId required, versionId auto-resolved to current version if empty). Max 20 files, 200 MB total. Mutually exclusive with files_scope/folders_scope. Check ai.attach=true in storage details before using — files with ai.attach=false will be rejected. (used by: chat-create, message-send)
profile_typeNoProfile type: "workspace" or "share" (also accepted as context_type)
folders_scopeNoScope RAG search to specific folders — REQUIRES workspace intelligence enabled (will error if intelligence is off). Comma-separated nodeId:depth pairs (depth 1-10, max 100 subfolder refs). Use this to narrow AI context to folder contents without listing individual files — the RAG backend finds files within scoped folders automatically. OMIT to search all indexed files (recommended default). Mutually exclusive with files_attach. (used by: chat-create, message-send)
include_deletedNoIf true, list deleted chats instead (share only) (used by: chat-list)
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds significant behavioral context beyond annotations. While annotations indicate readOnlyHint=false and destructiveHint=true, the description details side effects ('chat-create and message-send consume AI credits'), specific destructive actions ('chat-delete permanently removes a chat'), and operational constraints (e.g., 'workspace intelligence enabled' requirements, error conditions like 406 for folders). This enriches the agent's understanding of tool behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately front-loaded with a clear purpose statement, but it includes a lengthy bulleted list of actions and parameters that could be more streamlined. While informative, the structure is dense, and some details (like parameter lists) might be redundant given the comprehensive schema. Every sentence adds value, but the presentation could be more concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (21 parameters, multiple actions, no output schema), the description is largely complete. It covers purpose, usage guidelines, behavioral traits, and parameter context. However, without an output schema, it lacks details on return values or response formats, which is a minor gap. The annotations and schema provide strong support, but the description compensates well for the missing output information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 value by clarifying parameter semantics in the action list, such as indicating which parameters are required or optional for each action (e.g., 'chat-create: type, query_text (workspace req'd, share optional)'), and providing context like 'share-generate: node_ids (workspace) | files (share)'. However, it doesn't fully explain complex parameter interactions beyond what the schema covers.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose as 'AI-powered RAG chat, document analysis, and shareable summaries' and enumerates specific actions like 'create chats, send messages, read AI responses, and generate shareable summaries.' It distinguishes this tool from siblings by focusing on AI chat functionality rather than file management, comments, or other workspace operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidelines, including when to use specific actions (e.g., 'chat-create' requires workspace, share optional), prerequisites ('all actions require profile_type + profile_id'), and exclusions (e.g., 'share-generate: node_ids (workspace) | files (share)'). It also notes side effects like credit consumption and destructive actions, helping differentiate from alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

app-commentsCommentsAInspect

Launch the Comments MCP App widget. Threaded comment panel — view, add, and delete comments with reply threading, emoji reactions (add/remove), comment anchors for image/video/audio/PDF, and chronological activity feed. Supports workspace and share contexts.

Params: profile_type (workspace or share), profile_id (19-digit ID), node_id (optional): Storage node opaque ID to show file-level comments (omit for workspace/share-level), file_name (optional): File name for display in the header

ParametersJSON Schema
NameRequiredDescriptionDefault
node_idNoStorage node opaque ID to show file-level comments (omit for workspace/share-level)
file_nameNoFile name for display in the header
context_idNoAlias for profile_id (either name works)
profile_idNo19-digit workspace or share ID (also accepted as context_id)
context_typeNoAlias for profile_type (either name works)
profile_typeNoProfile type: "workspace" or "share" (also accepted as context_type)
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It describes the widget's interactive capabilities (view/add/delete comments, emoji reactions, anchors, activity feed) which is helpful, but doesn't mention authentication requirements, rate limits, whether it's read-only or destructive, or what happens when launched. The description adds value but leaves gaps in behavioral understanding.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded with the core purpose in the first sentence, followed by feature details and parameter guidance. Every sentence adds value, though the parameter section could be more integrated with the main description rather than appearing as an afterthought.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 6-parameter tool with no annotations and no output schema, the description provides adequate context about what the tool does and its parameters, but leaves gaps in behavioral understanding (authentication, side effects, response format). Given the complexity of launching an interactive widget with multiple parameters, more complete guidance would be helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 all 6 parameters thoroughly. The description adds minimal value beyond the schema - it mentions 'profile_type (workspace or share), profile_id (19-digit ID), node_id (optional): Storage node opaque ID to show file-level comments (omit for workspace/share-level), file_name (optional): File name for display in the header' but doesn't explain parameter relationships or provide additional context not in the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Launch the Comments MCP App widget' with specific functionality including 'view, add, and delete comments with reply threading, emoji reactions (add/remove), comment anchors for image/video/audio/PDF, and chronological activity feed.' It distinguishes this from sibling tools like 'comment' by specifying it launches an interactive widget/app rather than performing direct comment operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool: 'Supports workspace and share contexts' and specifies optional parameters for file-level vs. workspace/share-level comments. However, it doesn't explicitly state when NOT to use it or name alternatives among sibling tools (e.g., when to use 'comment' tool instead).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

app-file-pickerFile PickerAInspect

Launch the File Picker MCP App widget. Browse and pick files to attach to your conversation — navigate folders, search files, preview content, and select files to share with the agent. Also supports file management: upload/download, move/copy/delete, rename. Works with both workspace and share contexts, grid and list views, multi-select, and responsive layout.

Params: profile_type (workspace or share), profile_id (19-digit ID)

ParametersJSON Schema
NameRequiredDescriptionDefault
context_idNoAlias for profile_id (either name works)
profile_idNo19-digit workspace or share ID (also accepted as context_id)
context_typeNoAlias for profile_type (either name works)
profile_typeNoProfile type: "workspace" or "share" (also accepted as context_type)
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It discloses behavioral traits like supporting 'workspace and share contexts', 'grid and list views', 'multi-select', and 'responsive layout', which are useful context. However, it lacks details on permissions needed, rate limits, or what happens during file operations (e.g., are deletions permanent?). The description adds value but leaves gaps for a tool with management capabilities.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded, starting with the core purpose. However, it includes some redundancy (e.g., listing features like 'upload/download, move/copy/delete, rename' could be more concise) and the param note at the end is somewhat tacked on. Most sentences earn their place, but minor trimming could improve efficiency.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description provides good context on functionality (browsing, picking, management) and parameters. However, for a tool with file management capabilities (including destructive operations like delete), it lacks details on error handling, return values, or security implications. It's adequate but has clear gaps for a tool of this complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 all 4 parameters with descriptions and enums. The description adds minimal param info ('profile_type (workspace or share), profile_id (19-digit ID)'), which slightly reinforces but doesn't provide meaning beyond the schema. Baseline 3 is appropriate as the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('Launch', 'Browse and pick files', 'attach to your conversation') and resources ('File Picker MCP App widget', 'files'). It distinguishes from siblings like 'app-uploader' by emphasizing file selection/browsing rather than just uploading, and from 'app-file-viewer' by focusing on picking/management rather than viewing only.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool ('to attach files to your conversation', 'file management'), but does not explicitly state when NOT to use it or name specific alternatives. It implies usage for file selection tasks without contrasting with tools like 'upload' or 'app-uploader' for simpler uploads.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

app-file-viewerFile ViewerAInspect

Launch the File Viewer MCP App widget. Unified file preview and information — multi-format preview (image zoom/pan, PDF viewer, HLS video, audio waveform, spreadsheets, code, documents) with slide-out info panel showing file details, version history with restore, AI summary, and linked metadata. Always dark mode preview with keyboard navigation.

Params: profile_type (workspace or share), profile_id (19-digit ID), node_id: Storage node opaque ID of the file to view, file_name (optional): File name for display, mime_type (optional): MIME type for renderer selection

ParametersJSON Schema
NameRequiredDescriptionDefault
node_idYesStorage node opaque ID of the file to view
file_nameNoFile name for display
mime_typeNoMIME type for renderer selection
context_idNoAlias for profile_id (either name works)
profile_idNo19-digit workspace or share ID (also accepted as context_id)
context_typeNoAlias for profile_type (either name works)
profile_typeNoProfile type: "workspace" or "share" (also accepted as context_type)
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It does well by describing the tool's behavior: launching a widget with preview capabilities, dark mode interface, keyboard navigation, and specific features like zoom/pan, PDF viewer, HLS video support, etc. It mentions the tool provides 'file details, version history with restore, AI summary, and linked metadata' which gives good context about what information will be available. However, it doesn't mention potential limitations like file size restrictions, supported formats beyond those listed, or performance characteristics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded, starting with the core purpose ('Launch the File Viewer MCP App widget') followed by key features. The second sentence efficiently lists multiple capabilities. The parameter section at the end is somewhat redundant given the schema coverage but provides a quick reference. Overall, most sentences earn their place by conveying important functionality, though the parameter listing could be more concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (rich file viewer with multiple features) and 100% schema coverage but no annotations or output schema, the description does a good job of explaining what the tool does and its capabilities. It covers the preview functionality, interface characteristics (dark mode, keyboard nav), and information panel features. However, for a tool with no output schema, it doesn't describe what the widget launch returns or how the preview interface integrates with the user's workflow, leaving some gaps in understanding the complete user experience.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 all 7 parameters thoroughly. The description lists 4 parameters (profile_type, profile_id, node_id, file_name, mime_type) with brief explanations, but these don't add significant meaning beyond what's already in the schema descriptions. The schema provides more detailed information about parameter aliases (context_id/profile_id, context_type/profile_type) and enum values that aren't mentioned in the description. Baseline 3 is appropriate when schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Launch the File Viewer MCP App widget' with specific details about its functionality including multi-format preview capabilities (image, PDF, video, audio, spreadsheets, code, documents) and additional features like info panel, version history, AI summary, and metadata. It distinguishes itself from sibling tools like 'app-uploader', 'download', and 'storage' by focusing specifically on viewing/previewing files rather than uploading, downloading, or managing storage.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context through phrases like 'Unified file preview and information' and 'Always dark mode preview with keyboard navigation,' suggesting this is for viewing files in a rich preview interface. However, it doesn't explicitly state when to use this tool versus alternatives like 'download' (for downloading files) or 'storage' (for storage operations). No explicit exclusions or comparisons to sibling tools are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

approvalAInspect

Approval workflow operations. List, create, view details, and resolve (approve/reject) formal approval requests scoped to workspaces and shares. Approvals are placed on entities (tasks, nodes, worklog entries, shares) and require workflow to be enabled on the profile. On shares, requires admin or named member role. Use workspace action enable-workflow or share action enable-workflow first.

Actions & required params:

  • list: profile_type, profile_id (+ optional: status, limit, offset, format)

  • create: profile_type, profile_id, entity_type, entity_id, description (+ optional: approver_id, deadline, node_id)

  • details: profile_type, profile_id, approval_id (+ optional: format)

  • resolve: profile_type, profile_id, approval_id, resolve_action (+ optional: comment)

  • bulk-create: profile_id, description (+ optional: approver_id, deadline)

  • bulk-approve: profile_id (+ optional: comment)

  • bulk-reject: profile_id (+ optional: comment)

  • filtered-list: filter (+ optional: profile_type, profile_id, status, limit, offset, format) — omit profile_type/profile_id for cross-profile user view

  • summary: profile_type, profile_id (+ optional: format)

  • update: profile_type, profile_id, approval_id (+ at least one of: description, approver_id, deadline, node_id, properties) — pending only

  • delete: profile_type, profile_id, approval_id — permanent deletion, any status [DESTRUCTIVE]

  • bulk-delete: profile_id — permanently delete all approvals in a share (up to 500) [DESTRUCTIVE]

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of items to return (1-200, default 50) (used by: list, filtered-list)
actionYesOperation to perform
filterNoFilter type (required for: filtered-list)
formatNoResponse format: "json" (default) or "md" for Markdown
offsetNoNumber of items to skip (default 0) (used by: list, filtered-list)
statusNoFilter by status (used by: list, filtered-list)
commentNoComment for resolution (max 5000 chars) (used by: resolve, bulk-approve, bulk-reject)
node_idNoArtifact reference node ID (used by: create, update)
deadlineNoISO 8601 deadline for approval (used by: create, bulk-create, update)
entity_idNoEntity ID — opaque ID for task/node/worklog_entry, or numeric share profile ID when entity_type is share (required for: create)
context_idNoAlias for profile_id (either name works)
profile_idNo19-digit profile (workspace or share) ID (also accepted as context_id) (required for: list, create, details, resolve, update, delete, bulk-create, bulk-approve, bulk-reject, bulk-delete, summary)
propertiesNoFree-form metadata properties (JSON object) (used by: update)
approval_idNoApproval opaque ID (required for: details, resolve, update, delete)
approver_idNoProfile ID of designated approver, including pending members. If omitted, any admin can resolve. (used by: create, bulk-create, update)
descriptionNoApproval request description (1-65535 chars) (required for: create, bulk-create; optional for: update)
entity_typeNoEntity type: "task", "node", "worklog_entry", or "share" (required for: create)
context_typeNoAlias for profile_type (either name works)
profile_typeNoProfile type: "workspace" or "share" (also accepted as context_type) (required for: list, create, details, resolve, update, delete, summary; optional for: filtered-list)
resolve_actionNoResolution action: "approve" or "reject" (required for: resolve)
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds significant behavioral context beyond annotations (which only indicate it's not read-only and not destructive). It discloses destructive operations (delete, bulk-delete marked as permanent deletion), role-based access requirements, prerequisites (enable-workflow), scope limitations (entities, profiles), and action-specific constraints (e.g., 'pending only' for update). No contradiction with annotations exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with a clear purpose and prerequisites, but the lengthy action-parameter list (12 actions with details) makes it dense. While informative, it could be more concise by summarizing parameter patterns rather than listing each action individually. Every sentence adds value, but structure is somewhat overwhelming.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (20 parameters, multiple actions, no output schema), the description is mostly complete. It covers purpose, usage, behavioral traits, and parameter guidance. However, it lacks details on response formats, error handling, or pagination beyond basic limits, leaving some gaps for agent invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 value by grouping parameters by action, clarifying dependencies (e.g., 'omit profile_type/profile_id for cross-profile user view' for filtered-list), and noting aliases (context_id/profile_id, context_type/profile_type). However, it doesn't fully explain complex parameter interactions beyond schema basics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose as 'Approval workflow operations' and lists specific actions (list, create, view details, resolve) with their scope (workspaces and shares). It distinguishes this tool from siblings by specifying it handles formal approval requests on specific entities, unlike general workflow or task tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidance: it states prerequisites (workflow must be enabled via enable-workflow actions), role requirements (admin or named member for shares), and distinguishes between actions with their required parameters. It also clarifies when to omit parameters (e.g., omit profile_type/profile_id for cross-profile view in filtered-list).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

appsAInspect

MCP Apps — interactive UI widgets for file browsing, workspace dashboards, uploads, and more. Launch apps with workspace/share context, list available apps, and get app metadata.

Actions & required params:

  • list: list all available apps (no params)

  • details: app_id — get full metadata for a specific app

  • launch: app_id, profile_type, profile_id — renders the widget via embedded resource content with mimeType text/html;profile=mcp-app

  • get-tool-apps: tool_name — list apps available for a specific tool

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesAction to perform
app_idNoApp identifier (e.g., "file-picker", "workspace-picker", "file-viewer")
tool_nameNoMCP tool name to find apps for (e.g., "storage", "workspace")
context_idNoAlias for profile_id (either name works)
profile_idNoContext ID (workspace or share 19-digit ID) (also accepted as context_id) (required for: launch)
context_typeNoAlias for profile_type (either name works)
extra_paramsNoAdditional parameters to pass to the app on launch
profile_typeNoProfile type: "workspace" or "share" (also accepted as context_type) (required for: launch)
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It describes key behaviors: the launch action renders HTML widgets, and parameters have aliases (context_id/profile_id, context_type/profile_type). However, it doesn't cover important aspects like authentication requirements, rate limits, error conditions, or what 'renders' means operationally (e.g., returns HTML, opens a window).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a high-level purpose statement followed by an action-parameter table. Every sentence earns its place by providing essential information. It could be slightly more concise by integrating the table more smoothly, but overall it's efficiently organized with zero wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex tool with 8 parameters, no annotations, and no output schema, the description is adequate but has gaps. It covers the purpose, actions, and parameter mapping well, but lacks information about return values (especially important for the HTML-rendering 'launch' action), error handling, and operational constraints. The context is complete enough for basic use but insufficient for robust implementation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds significant value by mapping parameters to specific actions in the 'Actions & required params' section, clarifying which parameters are needed for each action. This operational mapping goes beyond the schema's individual parameter descriptions, though it doesn't fully explain complex parameters like 'extra_params'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose as managing 'interactive UI widgets for file browsing, workspace dashboards, uploads, and more' and enumerates four specific actions (list, details, launch, get-tool-apps). It distinguishes this multi-action tool from single-purpose siblings like 'app-file-picker' or 'app-uploader' by showing it's a unified interface for app management.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use each action (e.g., 'list all available apps', 'get full metadata for a specific app', 'renders the widget'), and the parameter requirements table implicitly guides usage. However, it doesn't explicitly state when to choose this tool over direct sibling tools like 'app-file-picker' or 'app-uploader', nor does it provide exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

app-uploaderUpload FilesCInspect

Launch the Upload Files MCP App widget. Upload files to a workspace or share with drag-and-drop support and progress tracking. Supports chunked uploads and web URL imports with real-time progress indicators.

Params: profile_type (workspace or share), profile_id (19-digit ID)

ParametersJSON Schema
NameRequiredDescriptionDefault
context_idNoAlias for profile_id (either name works)
profile_idNo19-digit workspace or share ID (also accepted as context_id)
context_typeNoAlias for profile_type (either name works)
profile_typeNoProfile type: "workspace" or "share" (also accepted as context_type)
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It mentions 'launch the widget' which implies a UI interaction rather than a direct API call, and describes features like drag-and-drop, progress tracking, chunked uploads, and URL imports. However, it doesn't cover important behavioral aspects like authentication requirements, rate limits, error handling, or what happens after upload completion.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is reasonably concise with two sentences covering core functionality and a separate Params section. The first sentence clearly states the main purpose, though the Params section could be integrated more smoothly. Overall, it's front-loaded with essential information without excessive verbosity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 4 parameters, no annotations, and no output schema, the description is insufficient. It doesn't explain what happens after widget launch, what the user experience entails, how results are communicated back to the agent, or any error conditions. The feature list is helpful but doesn't provide complete operational context for an AI agent to use this tool effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, providing a solid baseline. The description adds minimal value beyond the schema by mentioning 'profile_type (workspace or share), profile_id (19-digit ID)' in a separate Params section, but this essentially repeats what's already documented in the schema with enum values and descriptions. No additional semantic context is provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Launch the Upload Files MCP App widget. Upload files to a workspace or share with drag-and-drop support and progress tracking.' It specifies the verb (launch/upload) and resource (files to workspace/share), but doesn't explicitly differentiate from sibling tools like 'upload' or 'download' beyond mentioning widget features.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like the sibling 'upload' tool. It mentions features like drag-and-drop and progress tracking, but doesn't specify scenarios where this widget-based approach is preferred over direct API uploads or when to choose workspace vs. share contexts.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

app-workflowWorkflow ManagerBInspect

Launch the Workflow Manager MCP App widget. Unified workflow management interface — Kanban task board with drag-and-drop status changes, task detail editing with inline fields, approvals panel with create/resolve actions, todo checklist with inline add and bulk toggle, and worklog timeline with interjection highlighting and acknowledge buttons. Supports both workspace and share contexts with responsive layout.

Params: profile_type (workspace or share), profile_id (19-digit ID)

ParametersJSON Schema
NameRequiredDescriptionDefault
context_idNoAlias for profile_id (either name works)
profile_idNo19-digit workspace or share ID (also accepted as context_id)
context_typeNoAlias for profile_type (either name works)
profile_typeNoProfile type: "workspace" or "share" (also accepted as context_type)
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It describes the interface features (drag-and-drop, inline editing, etc.) but doesn't clarify whether this is a read-only view or allows mutations, what permissions are required, whether changes are saved automatically, or any rate limits. For a tool that appears to manage workflows with potential write operations, this is a significant gap in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded, starting with the core purpose ('Launch the Workflow Manager MCP App widget') followed by feature details. It uses efficient language without unnecessary fluff, though the parameter note at the end could be integrated more seamlessly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's apparent complexity (managing workflows with multiple features), no annotations, and no output schema, the description provides a good overview of interface capabilities but lacks critical behavioral context like mutation permissions, error handling, or response format. It's adequate as a high-level introduction but incomplete for safe and effective tool invocation by an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 all four parameters with clear descriptions and enums. The description adds minimal value by mentioning 'profile_type (workspace or share), profile_id (19-digit ID)' in a note, but this mostly repeats what's in the schema. The baseline of 3 is appropriate since the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool 'launches the Workflow Manager MCP App widget' and provides a detailed overview of its unified interface capabilities including Kanban board, task editing, approvals panel, todo checklist, and worklog timeline. It specifies the verb 'launch' and resource 'Workflow Manager MCP App widget', though it doesn't explicitly differentiate from sibling tools like 'task' or 'todo' which might have overlapping functionality.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by mentioning it 'supports both workspace and share contexts with responsive layout', which suggests when to use it based on context type. However, it doesn't provide explicit guidance on when to choose this tool over alternatives like 'task' or 'todo' tools, nor does it specify prerequisites or exclusions for usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

app-workspace-pickerWorkspace PickerAInspect

Launch the Workspace Picker MCP App widget. Workspace and share management — select organizations, workspaces, and shares with search and filtering. Create new workspaces with 4-step wizard (org, name, settings, review) and new shares with 5-step wizard (type, name, settings, branding, review). Supports real-time name availability checks.

Params: profile_type (workspace or share), profile_id (19-digit ID)

ParametersJSON Schema
NameRequiredDescriptionDefault
context_idNoAlias for profile_id (either name works)
profile_idNo19-digit workspace or share ID (also accepted as context_id)
context_typeNoAlias for profile_type (either name works)
profile_typeNoProfile type: "workspace" or "share" (also accepted as context_type)
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It describes the tool as launching a UI widget with specific creation wizards and real-time checks, which helps understand it's interactive rather than purely programmatic. However, it doesn't mention important behavioral aspects like whether it blocks execution, requires user interaction, returns data, or has any side effects. The description adds some context but leaves significant behavioral questions unanswered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized at 4 sentences, front-loaded with the core purpose, followed by functionality details, creation workflows, and parameter highlights. Each sentence adds value: launching the widget, management capabilities, creation specifics, and parameter guidance. It could be slightly more concise by integrating the param note into the flow, but overall it's well-structured with minimal waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (UI widget with creation wizards), no annotations, and no output schema, the description is somewhat complete but has gaps. It covers what the tool does and its creation workflows but lacks details on behavioral outcomes, error handling, or what happens after widget launch. For a tool with interactive elements and no structured safety/behavior annotations, more context on user interaction and results would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 all parameters thoroughly with descriptions and enums. The description adds minimal param information ('Params: profile_type (workspace or share), profile_id (19-digit ID)'), which partially overlaps with schema content. However, it doesn't explain parameter relationships or usage patterns beyond what's in the schema. The baseline is 3 for high schema coverage, but the description adds slight value by highlighting the two main parameters, warranting a 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Launch the Workspace Picker MCP App widget' and describes its functionality for workspace and share management including selection, search, filtering, and creation. It distinguishes itself from siblings by focusing on a specific UI widget for workspace/share selection rather than direct API operations. However, it doesn't explicitly contrast with specific sibling tools like 'workspace' or 'share' that might handle similar domains differently.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context through phrases like 'Workspace and share management' and mentions specific creation workflows, suggesting this tool is for UI-driven selection/creation tasks. However, it doesn't provide explicit guidance on when to use this widget vs. alternative programmatic tools (like 'workspace' or 'share' siblings) or when not to use it. The usage context is implied rather than explicitly stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

assetA
Destructive
Inspect

Asset management (logos, banners, profile photos). Upload, delete, list, and read assets on organizations, workspaces, shares, or user profiles. Destructive action: delete removes an uploaded asset.

Actions & required params:

  • types: entity_type

  • list: entity_type, entity_id

  • upload: entity_type, entity_id, asset_id or asset_type, content or file_base64 (+ optional: file_name, content_type, metadata)

  • delete: entity_type, entity_id, asset_id or asset_type [DESTRUCTIVE]

  • read: entity_type (workspace only), entity_id, asset_id or asset_type

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesOperation to perform
contentNoPlain text content (e.g. SVG). Use this instead of file_base64 for text-based assets. (used by: upload)
asset_idNoAsset ID or name (required for: upload, delete, read if asset_type not provided)
metadataNoAdditional metadata as JSON array string (used by: upload)
entity_idNoEntity ID (not needed for 'types' action or 'user' entity_type when operating on authenticated user) (required for: list, upload, delete, read for non-user entities)
file_nameNoOriginal file name (e.g. logo.png) (used by: upload)
asset_typeNoAsset type key (e.g. 'logo', 'banner', 'photo') (required for: upload, delete, read if asset_id not provided)
entity_typeYesEntity type the asset belongs to
file_base64NoBase64-encoded file content for binary files. Use content for text. (used by: upload)
content_typeNoMIME type (e.g. image/png). Defaults to application/octet-stream (used by: upload)
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds valuable behavioral context beyond annotations by explicitly stating 'Destructive action: delete removes an uploaded asset' and detailing required parameters for each action. While annotations already indicate destructiveHint=true, the description provides specific context about what gets destroyed. It doesn't mention rate limits or authentication needs, but adds meaningful operational details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear opening statement followed by action-specific parameter requirements. It's appropriately sized and front-loaded with the core purpose. Some redundancy exists between the description and schema, but every sentence serves a purpose in clarifying the multi-action tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex multi-action tool with 10 parameters and no output schema, the description provides adequate but not comprehensive coverage. It explains the different actions and their parameter requirements, but doesn't describe return values, error conditions, or response formats. With destructiveHint=true annotation and no output schema, more behavioral context would be helpful for completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the schema already documents all parameters thoroughly. The description adds some semantic context by grouping parameters by action (e.g., 'upload: entity_type, entity_id, asset_id or asset_type, content or file_base64'), but this mostly restates what's already in the schema's parameter descriptions. The baseline of 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose as 'Asset management (logos, banners, profile photos)' with specific verbs (upload, delete, list, read) and resources (organizations, workspaces, shares, user profiles). It distinguishes itself from sibling tools like 'upload' or 'storage' by focusing specifically on brand assets for entities.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context about when to use different actions (list, upload, delete, read, types) with entity_type and entity_id requirements. However, it doesn't explicitly state when NOT to use this tool versus alternatives like 'upload' or 'storage' from the sibling list, which would be needed for a perfect score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

authA
Destructive
Inspect

Authentication and session management. Covers sign-in/out, signup, 2FA, PKCE browser login, API key management, and OAuth session management. Destructive actions: api-key-delete permanently removes an API key, oauth-revoke/oauth-revoke-all revoke active sessions.

Actions & required params:

  • signin: email, password (+ optional: expires)

  • signout: (none)

  • signup: email, password (+ optional: first_name, last_name)

  • check: (none)

  • session: (none)

  • status: (none)

  • set-api-key: api_key

  • email-check: email

  • email-verify: email (+ optional: email_token)

  • password-reset-request: email

  • password-reset: code, password1, password2

  • 2fa-verify: code

  • 2fa-status: (none)

  • 2fa-enable: channel

  • 2fa-disable: token

  • 2fa-send: channel

  • 2fa-verify-setup: token

  • pkce-login: (+ optional: email, scope_type, agent_name)

  • pkce-complete: code

  • api-key-create: (+ optional: name, scopes, agent_name, key_expires, token)

  • api-key-list: (none)

  • api-key-get: key_id

  • api-key-update: key_id (+ optional: name, scopes, agent_name, key_expires)

  • api-key-delete: key_id (+ optional: token)

  • oauth-list: (none)

  • oauth-details: session_id

  • oauth-revoke: session_id

  • oauth-revoke-all: (+ optional: exclude_current, current_session_id)

ParametersJSON Schema
NameRequiredDescriptionDefault
codeNoVerification / authorization code (required for: password-reset, 2fa-verify, pkce-complete)
nameNoAPI key label / memo (optional for: api-key-create, api-key-update)
emailNoEmail address (required for: signin, signup, email-check, email-verify, password-reset-request; optional for: pkce-login)
tokenNo2FA token or verification code (required for: 2fa-disable, 2fa-verify-setup; optional for: api-key-create, api-key-delete — required when account has 2FA enabled)
actionYesOperation to perform
key_idNoAPI key identifier (required for: api-key-get, api-key-update, api-key-delete)
scopesNoArray of scope strings for scoped API keys (e.g., ['org:123:rw', 'workspace:456:r']). Omit for full access. (optional for: api-key-create, api-key-update)
api_keyNoFast.io API key (required for: set-api-key)
channelNo2FA channel (required for: 2fa-enable, 2fa-send)
expiresNoCustom token lifetime in seconds (optional for: signin)
passwordNoAccount password (required for: signin, signup)
last_nameNoUser's last / family name (optional for: signup)
password1NoNew password (required for: password-reset)
password2NoNew password confirmation (required for: password-reset)
agent_nameNoAgent name shown in approval screen and audit logs. Defaults to MCP client name. (optional for: pkce-login, api-key-create, api-key-update)
first_nameNoUser's first / given name (optional for: signup)
scope_typeNoScope type for PKCE login. 'user' = full access (default). 'org'/'workspace' = user picks entities. 'all_orgs'/'all_workspaces'/'all_shares' = all of that type. (optional for: pkce-login)
session_idNoOAuth session identifier (required for: oauth-details, oauth-revoke)
email_tokenNoEmail verification code (optional for: email-verify)
key_expiresNoExpiration datetime in ISO 8601 format for API keys (e.g., '2026-12-31T23:59:59Z'). (optional for: api-key-create, api-key-update)
exclude_currentNoExclude current session from revoke-all (optional for: oauth-revoke-all)
current_session_idNoSession ID to preserve when exclude_current is true (optional for: oauth-revoke-all)
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds valuable behavioral context beyond the annotations. While annotations indicate destructiveHint=true, the description specifically identifies which actions are destructive ('api-key-delete permanently removes an API key, oauth-revoke/oauth-revoke-all revoke active sessions'). This clarifies the nature of the destruction, which helps the agent understand the specific risks. No contradiction with annotations exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is excessively long and poorly structured for an MCP tool. While the action-parameter mapping is useful, it should be in the schema, not the description. The description should be front-loaded with core purpose and key behavioral notes, but instead it dumps 28 action entries with parameter lists. This violates the principle that every sentence should earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's high complexity (22 parameters, 28 actions, no output schema, destructive operations), the description provides good coverage of what actions exist and their parameters. However, it lacks critical context about return values, error conditions, authentication state transitions, and how different actions relate to each other. For such a complex authentication system, more behavioral guidance would be helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the baseline would be 3, but the description adds significant value by mapping each action to its required and optional parameters in a clear, tabular format. This provides practical usage guidance that complements the schema's technical descriptions, making it easier for an agent to construct valid calls without cross-referencing the schema extensively.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose as 'Authentication and session management' and enumerates all specific actions it covers (sign-in/out, signup, 2FA, PKCE browser login, API key management, OAuth session management). This provides a comprehensive verb+resource mapping that distinguishes it from sibling tools like 'user' or 'member' which handle different aspects of user management.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. While it lists all available actions, it doesn't indicate when to choose specific actions (e.g., when to use signin vs pkce-login) or when to use this authentication tool versus other tools in the sibling list. There's no mention of prerequisites, dependencies, or contextual triggers for different operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

commentA
Destructive
Inspect

Comment operations on files. List, add, delete comments with support for anchoring to image regions, video timestamps, PDF pages, and text selections in markdown/notes. Also manage emoji reactions and link comments to workflow entities (tasks, approvals). Anchor comments to positions: image regions (x, y, width, height as 0-1 normalized), video/audio timestamps (seconds), PDF pages, text selections (exact, prefix, suffix, start_offset, end_offset). Destructive actions: delete removes a comment and all its replies, bulk-delete removes multiple comments.

Actions & required params:

  • list: profile_type, profile_id, node_id (+ optional: sort, limit, offset, include_deleted, reference_type, include_total)

  • list-all: profile_type, profile_id (+ optional: sort, limit, offset, include_deleted, reference_type, include_total)

  • add: profile_type, profile_id, node_id, text (+ optional: parent_comment_id, reference, linked_entity_type, linked_entity_id)

  • delete: comment_id [DESTRUCTIVE]

  • bulk-delete: comment_ids [DESTRUCTIVE]

  • details: comment_id

  • reaction-add: comment_id, emoji

  • reaction-remove: comment_id

  • link: comment_id, linked_entity_type, linked_entity_id

  • unlink: comment_id

  • linked: linked_entity_type, linked_entity_id (+ optional: profile_type, profile_id)

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoSort order: "created" (oldest first) or "-created" (newest first, default) (used by: list, list-all)
textNoComment body text (max 8,192 chars including mention tags, max 2,048 chars display text). Supports @[profile:id], @[user:opaqueId:Name], @[file:fileId:name.ext] mention tags. (required for: add)
emojiNoSingle emoji character to react with (required for: reaction-add)
limitNoNumber of comments to return (2-200, default server-determined) (used by: list, list-all)
actionYesOperation to perform
detailNoDetail level: terse|standard|full (default: standard) (used by: list)
offsetNoNumber of comments to skip for offset-based pagination (used by: list, list-all)
node_idNoStorage node opaque ID (the file or folder to comment on) (required for: list, add)
referenceNoAnchor the comment to a specific position: image region, video/audio timestamp, PDF page, or text selection in markdown/notes
comment_idNoOpaque ID of a comment (required for: delete, details, reaction-add, reaction-remove, link, unlink)
context_idNoAlias for profile_id (either name works)
profile_idNo19-digit profile (workspace or share) ID (also accepted as context_id) (required for: list, list-all, add)
comment_idsNoArray of comment opaque IDs (required for: bulk-delete)
context_typeNoAlias for profile_type (either name works)
profile_typeNoEntity type: "workspace" or "share" (also accepted as context_type) (required for: list, list-all, add)
include_totalNoIf true, include total comment count in response (used by: list, list-all)
reference_typeNoFilter comments by reference/anchor type (used by: list, list-all). "document" covers both PDF and text-anchored comments; "text" is an alias for "document"
include_deletedNoIf true, include soft-deleted comments in results (used by: list, list-all)
linked_entity_idNoOpaque ID of the task or approval to link (required for: link, linked; optional for: add)
parent_comment_idNoParent comment ID to reply to (single-level threading only — replies to replies are flattened) (used by: add)
linked_entity_typeNoWorkflow entity type to link: "task" or "approval" (required for: link, linked; optional for: add)
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds valuable behavioral context beyond annotations. While annotations indicate destructiveHint=true and readOnlyHint=false, the description specifies that 'delete removes a comment and all its replies' and 'bulk-delete removes multiple comments,' providing concrete details about destructive behavior. It also mentions support for various anchor types and workflow linking, which aren't covered by annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with a clear purpose statement, but becomes verbose with the detailed action/parameter listing. While informative, some details (like specific anchor coordinate ranges) could be streamlined since they're already in the schema. The structure is logical but could be more concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (21 parameters, nested objects, multiple actions) and lack of output schema, the description does well by explaining anchor types, destructive behaviors, and parameter groupings. It covers most essential context, though it could benefit from brief examples or more explicit guidance on action selection.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 significant value by organizing parameters by action ('Actions & required params' section), clarifying which parameters are required for each operation. This semantic grouping helps the agent understand parameter dependencies beyond what the schema provides individually.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool performs 'comment operations on files' with specific verbs (list, add, delete) and resources (comments with various anchor types). It distinguishes itself from sibling tools like 'app-comments' by focusing on core comment management rather than application-specific functionality.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides implied usage through the detailed action list and parameter requirements, showing when each action is appropriate. However, it lacks explicit guidance on when to choose this tool over alternatives like 'app-comments' or 'task' for workflow-related comments, and doesn't mention prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

downloadA
Read-onlyIdempotent
Inspect

Get download URLs for files and folders. Supports individual file downloads (file-url), ZIP folder downloads (zip-url), and quickshare link details (quickshare-details). Downloads consume bandwidth credits.

Actions & required params:

  • file-url: profile_type, profile_id, node_id (+ optional: version_id)

  • zip-url: profile_type, profile_id, node_id

  • quickshare-details: quickshare_id

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesOperation to perform
node_idNoStorage node opaque ID (required for: file-url, zip-url)
context_idNoAlias for profile_id (either name works)
profile_idNo19-digit workspace or share ID, or custom name (also accepted as context_id) (required for: file-url, zip-url)
version_idNoVersion ID for a specific file version (used by: file-url)
context_typeNoAlias for profile_type (either name works)
profile_typeNoProfile type: "workspace" or "share" (also accepted as context_type) (required for: file-url, zip-url)
quickshare_idNoQuickshare opaque identifier (required for: quickshare-details)
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds valuable behavioral context beyond annotations: it discloses that 'Downloads consume bandwidth credits'—a critical operational detail not covered by readOnlyHint or idempotentHint. While annotations already indicate safety (readOnlyHint: true, destructiveHint: false), this extra info enhances transparency for resource-aware decisions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently structured: a clear purpose statement followed by a bulleted list of actions and their required parameters. Every sentence earns its place, with no redundant information, making it easy to scan and understand quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (8 parameters, 3 actions) and lack of output schema, the description is mostly complete: it covers purpose, actions, params, and a key behavioral trait (bandwidth usage). However, it omits details like response format or error handling, which could aid the agent, leaving room for slight improvement.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the input schema already documents all parameters thoroughly. The description adds minimal value by listing required params per action, but this largely repeats schema info. It doesn't provide deeper semantics (e.g., format details), so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('Get download URLs') and resources ('files and folders'), distinguishing it from siblings like 'upload' or 'storage'. It enumerates three distinct operations, making the scope explicit and avoiding tautology.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context by listing the three supported actions and their required parameters, which implicitly guides when to use each. However, it lacks explicit guidance on when to choose this tool over alternatives (e.g., vs. 'upload' or 'storage') or any exclusions, keeping it from a perfect score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

eventA
Read-onlyIdempotent
Inspect

Event log and activity monitoring. Search audit events, get AI summaries of activity, view event details, and poll for real-time activity updates on workspaces and shares.

Actions & required params:

  • search: (all filter params optional: user_id, org_id, workspace_id, share_id, event, category, subcategory, created-min, created-max, limit, offset)

  • summarize: (same filters as search + optional: user_context)

  • details: event_id

  • activity-list: profile_id (+ optional: cursor)

  • activity-poll: entity_id (+ optional: lastactivity, wait)

ParametersJSON Schema
NameRequiredDescriptionDefault
waitNoMaximum seconds the server will hold the connection (1-95, default 95) (used by: activity-poll)
eventNoFilter by exact event name (used by: search, summarize). Common values — File ops (workspace): workspace_storage_file_added, workspace_storage_file_deleted, workspace_storage_file_moved, workspace_storage_file_copied, workspace_storage_file_updated, workspace_storage_file_restored, workspace_storage_folder_created, workspace_storage_folder_deleted, workspace_storage_folder_moved, workspace_storage_download_token_created, workspace_storage_zip_downloaded, workspace_storage_file_version_restored, workspace_storage_link_added. File ops (share): share_storage_file_added, share_storage_file_deleted, share_storage_file_moved, share_storage_file_copied, share_storage_file_updated, share_storage_file_restored, share_storage_folder_created, share_storage_folder_deleted, share_storage_folder_moved, share_storage_download_token_created, share_storage_zip_downloaded. Comments: comment_created, comment_updated, comment_deleted, comment_mentioned, comment_replied, comment_reaction. Membership: added_member_to_org, added_member_to_workspace, added_member_to_share, removed_member_from_org, removed_member_from_workspace, removed_member_from_share, membership_updated. Workspace lifecycle: workspace_created, workspace_updated, workspace_deleted, workspace_archived, workspace_unarchived. Share lifecycle: share_created, share_updated, share_deleted, share_archived, share_unarchived, share_imported_to_workspace. AI: ai_chat_created, ai_chat_new_message, ai_chat_updated, ai_chat_deleted, ai_chat_published, node_ai_summary_created, workspace_ai_share_created. Metadata: metadata_kv_update, metadata_kv_delete, metadata_kv_extract, metadata_template_update, metadata_template_delete, metadata_template_settings_update, metadata_view_update, metadata_view_delete, metadata_template_select. Quick shares: workspace_quickshare_created, workspace_quickshare_updated, workspace_quickshare_deleted, workspace_quickshare_file_downloaded, workspace_quickshare_file_previewed. Invitations: invitation_email_sent, invitation_accepted, invitation_declined. User: user_created, user_updated, user_deleted, user_email_reset, user_asset_updated. Org: org_created, org_updated, org_closed, org_transfer_token_created, org_transfer_completed. Billing: subscription_created, subscription_cancelled, billing_free_trial_ended.
limitNoMax results to return (1-250, default 100) (used by: search, summarize)
actionYesOperation to perform
cursorNoLast activity timestamp for incremental polling (used by: activity-list)
detailNoDetail level: terse|standard|full (default varies per action: standard for search/activity-list, terse for activity-poll) (used by: search, activity-list, activity-poll)
offsetNoNumber of results to skip for pagination (used by: search, summarize)
org_idNoFilter by organization profile ID (19 digits) (used by: search, summarize)
user_idNoFilter by user profile ID (19 digits) (used by: search, summarize)
categoryNoFilter by event category (used by: search, summarize). Valid values: user, org, workspace, share, node, ai, invitation, billing, domain, apps, metadata
event_idNoAlphanumeric opaque ID of the event (required for: details)
share_idNoFilter by share profile ID (19 digits) (used by: search, summarize)
entity_idNo19-digit workspace or share ID to monitor for changes (required for: activity-poll)
context_idNoAlias for profile_id (either name works)
profile_idNo19-digit profile (workspace or share) ID (also accepted as context_id) (required for: activity-list)
created-maxNoISO 8601 datetime — events created on or before (used by: search, summarize)
created-minNoISO 8601 datetime — events created on or after (used by: search, summarize)
subcategoryNoFilter by event subcategory (used by: search, summarize). Valid values: storage, comments, members, lifecycle, settings, security, authentication, ai, invitations, billing, assets, upload, transfer, import_export, quickshare, metadata
context_typeNoAlias for profile_type (either name works)
lastactivityNoTimestamp from a prior poll's response — look for the top-level lastactivity field in the previous markdown body. Omit on first call. (used by: activity-poll)
profile_typeNoProfile type: "workspace" or "share" (also accepted as context_type) (optional context for: activity-list)
user_contextNoFocus guidance for the AI summary, e.g. "Focus on uploads" (used by: summarize)
workspace_idNoFilter by workspace profile ID (19 digits) (used by: search, summarize)
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, indicating safe, non-destructive operations. The description adds useful context beyond this by specifying real-time polling capabilities and AI summarization, but does not disclose behavioral traits like rate limits, authentication needs, or response formats. With annotations covering safety, a 3 is appropriate as the description adds some value without contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and front-loaded with a clear purpose statement, followed by a bulleted list of actions with required parameters. It efficiently conveys essential information without unnecessary fluff, though it could be slightly more concise by avoiding repetition in parameter lists (e.g., 'same filters as search').

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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, 5 actions) and rich schema/annotations, the description is adequate but has gaps. It lacks details on output formats, error handling, or pagination behavior, and there is no output schema to compensate. While it covers actions and parameters well, it doesn't fully address how results are returned or handled, making it minimally viable but incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all 23 parameters. The description adds semantic value by grouping parameters under specific actions (e.g., 'search: (all filter params optional...)'), clarifying usage contexts, and providing examples like 'Focus on uploads' for user_context. This enhances understanding beyond the schema's technical details, though it doesn't fully compensate for the lack of output schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs and resources: 'Search audit events, get AI summaries of activity, view event details, and poll for real-time activity updates on workspaces and shares.' It distinguishes itself from sibling tools by focusing exclusively on event logging and activity monitoring, which is unique among the listed siblings like 'storage', 'comment', or 'workspace'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use each action (search, summarize, details, activity-list, activity-poll) based on specific needs like filtering, summarizing, or real-time updates. However, it does not explicitly state when not to use this tool versus alternatives (e.g., using 'storage' for file operations instead of event monitoring), which prevents a perfect score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invitationA
Destructive
Inspect

Invitation management for workspaces and shares. List pending invitations, filter by state, update invitation details, and revoke invitations. Destructive action: delete removes the pending member from the member list and unassigns their workflow items (tasks, approvals, todos).

Actions & required params:

  • list: entity_type, entity_id (+ optional: state for shares)

  • list-by-state: entity_type (workspace only), entity_id, state

  • update: entity_type, entity_id, invitation_id (+ optional: new_state, permissions, notifications, notify_options, expires)

  • delete: entity_type, entity_id, invitation_id [DESTRUCTIVE]

ParametersJSON Schema
NameRequiredDescriptionDefault
stateNoInvitation state filter. Workspace supports all states; share supports pending/accepted/declined. (required for: list-by-state; optional for: list)
actionYesOperation: list (all), list-by-state (workspace only), update, delete
expiresNoUpdated membership expiration date (ISO 8601 or YYYY-MM-DD HH:MM:SS) (used by: update)
entity_idYes19-digit workspace or share ID, or custom name
new_stateNoNew invitation state (used by: update)
entity_typeYesWhether managing workspace or share invitations
permissionsNoUpdated permission level (workspace: admin/member/guest; share: admin/member/guest/view) (used by: update)
invitation_idNoInvitation opaque ID or invitee email (required for: update, delete)
notificationsNoUpdated notification preference (workspace only). For share, use 'notify_options'. (used by: update)
notify_optionsNoUpdated notification preference (share only). For workspace, use 'notifications'. (used by: update)
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds significant behavioral context beyond the annotations. While annotations indicate destructiveHint=true, the description elaborates specifically that 'delete removes the pending member from the member list and unassigns their workflow items (tasks, approvals, todos).' It also explains state support differences between workspace and share, and provides action-specific parameter requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently structured with a clear purpose statement followed by a bulleted list of actions with their required parameters. Every sentence earns its place by providing essential operational guidance. The destructive warning is appropriately highlighted without unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex tool with 10 parameters, 4 actions, and no output schema, the description provides strong operational guidance. It covers all actions, specifies parameter requirements, and adds important behavioral context. The main gap is the lack of information about return values or response formats, which would be helpful given the absence of an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 value by organizing parameters by action ('Actions & required params'), clarifying which parameters are required for each operation, and providing context about destructive consequences. However, it doesn't add significant semantic meaning beyond what's already well-documented in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose as 'Invitation management for workspaces and shares' and specifies four distinct actions (list, list-by-state, update, delete), making it highly specific. It differentiates itself from sibling tools like 'member' or 'workspace' by focusing exclusively on invitation operations rather than general member or workspace management.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use each action, including required parameters and optional ones. It specifies that 'list-by-state' is 'workspace only' and distinguishes between 'notifications' for workspace and 'notify_options' for share. The destructive warning for 'delete' also helps guide usage decisions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

memberA
Destructive
Inspect

Member management for workspaces and shares. Add, remove, update members, transfer ownership, join, and leave. Member lists include both active and pending (invited but not yet registered) members with status and invite fields. Pending members can be assigned tasks, approvals, and todos. Destructive action: remove revokes a member's access.

Actions & required params:

  • add: entity_type, entity_id, email_or_user_id (+ optional: permissions, role, notifications, expires, message, invitation_expires, force_notification)

  • remove: entity_type, entity_id, member_id [DESTRUCTIVE]

  • details: entity_type, entity_id, member_id (workspace) or user_id (share)

  • update: entity_type, entity_id, member_id (workspace) or user_id (share) (+ optional: permissions, role, notifications, notify_options, expires, expiration)

  • transfer-ownership: entity_type, entity_id, member_id (workspace) or user_id (share) [DESTRUCTIVE]

  • leave: entity_type, entity_id [DESTRUCTIVE]

  • join: entity_type, entity_id (+ optional: notifications, notify_options, invitation_key, invitation_action)

  • join-invitation: entity_type (workspace only), entity_id, invitation_key, invitation_action

ParametersJSON Schema
NameRequiredDescriptionDefault
roleNoPermission level for share members (admin, member, guest, view) (used by: add, update)
actionYesOperation to perform
expiresNoMembership expiration date (workspace: ISO 8601, share: YYYY-MM-DD HH:MM:SS) (used by: add, update)
messageNoCustom message to include in invitation email (10-255 chars) (used by: add)
user_idNoUser profile ID (required for share: details, update, transfer-ownership)
entity_idYes19-digit workspace or share ID, or custom name
member_idNoMember ID (required for: remove; required for workspace: details, update, transfer-ownership)
expirationNoMembership expiration (alias for expires, share only) (used by: update)
entity_typeYesWhether managing workspace or share membership
permissionsNoPermission level for workspace members (admin, member, guest) (used by: add, update)
notificationsNoNotification preference (workspace: string, share: enum format) (used by: add, update, join)
invitation_keyNoUnique invitation key string (required for: join-invitation; optional for: join)
notify_optionsNoNotification preference for shares (alias for notifications) (used by: update, join)
email_or_user_idNoEmail address (to invite) or user profile ID (to add directly) (required for: add)
invitation_actionNoWhether to accept or decline the invitation (required for: join-invitation; optional for: join)
force_notificationNoForce send notification email to existing user (workspace-only) (used by: add)
invitation_expiresNoInvitation expiration date (ISO 8601, workspace-only) (used by: add)
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds significant behavioral context beyond annotations. While annotations indicate destructiveHint=true, the description explicitly marks specific actions as '[DESTRUCTIVE]' (remove, transfer-ownership, leave) and explains what 'remove' does ('revokes a member's access'). It also describes member list behavior ('includes both active and pending members') and pending member capabilities ('can be assigned tasks, approvals, and todos'), providing valuable operational context not captured in annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear opening statement, bullet-point action list, and organized parameter mapping. While comprehensive, some sentences could be more concise (e.g., the long parenthetical about pending members). The information is front-loaded with the core purpose, but the detailed parameter section is necessary given the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex tool with 8 actions, 17 parameters, and no output schema, the description provides substantial context. It covers actions, parameter mapping, destructive behaviors, and member status details. The main gap is lack of output information (what each action returns), which would be important given the absence of an output schema. However, the description compensates well with operational guidance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the schema already documents all 17 parameters thoroughly. The description adds value by grouping parameters by action ('Actions & required params'), showing which parameters are required for each operation and noting optional ones. This provides practical usage context beyond the schema's technical documentation, though it doesn't add new semantic meaning to individual parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose as 'Member management for workspaces and shares' and lists all 8 specific actions (add, remove, update, transfer-ownership, etc.). It distinguishes this tool from siblings by focusing exclusively on membership operations, unlike tools like 'workspace', 'share', or 'invitation' which handle broader entity management.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage through the action list and parameter requirements, but doesn't explicitly state when to use this tool versus alternatives. For example, it doesn't clarify when to use 'member' vs 'invitation' or 'user' tools, nor does it mention prerequisites like authentication requirements or permissions needed to perform actions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

orgA
Destructive
Inspect

Organization management. Core CRUD, billing/subscription, member management, invitations, ownership transfer, asset management, discovery, and custom domains. Destructive action: close permanently deletes the org and all its data. Side effects: billing-create/billing-activate change subscription state, create consumes credits.

Actions & required params:

  • list: (+ optional: limit, offset)

  • details: org_id

  • create: domain, name (+ optional: description, industry, billing_email, homepage_url, accent_color, background_color, background_mode)

  • update: org_id (+ optional: domain, name, description, industry, billing_email, use_background, owner_defined, accent_color, background_color, background_mode)

  • close: org_id, confirm [DESTRUCTIVE]

  • public-details: org_id

  • limits: org_id

  • list-workspaces: org_id (+ optional: limit, offset)

  • list-shares: org_id (+ optional: limit, offset)

  • create-workspace: org_id, folder_name, name (+ optional: description, perm_join, intelligence, accent_color, background_color1, background_color2)

  • billing-plans: (no params)

  • billing-create: org_id (+ optional: billing_plan)

  • billing-cancel: org_id [DESTRUCTIVE]

  • billing-details: org_id

  • billing-activate: org_id

  • billing-reset: org_id

  • billing-members: org_id (+ optional: limit, offset)

  • billing-meters: org_id, meter (+ optional: start_time, end_time, workspace_id, share_id)

  • members: org_id (+ optional: limit, offset)

  • invite-member: org_id, email (+ optional: role, message)

  • remove-member: org_id, member_id [DESTRUCTIVE]

  • update-member-role: org_id, member_id, role

  • member-details: org_id, user_id

  • leave: org_id [DESTRUCTIVE]

  • transfer-ownership: org_id, user_id [DESTRUCTIVE]

  • join: org_id (+ optional: invitation_key, join_action)

  • invitations-list: org_id (+ optional: state)

  • invitation-update: org_id, invitation_id (+ optional: state, permissions, expires)

  • invitation-delete: org_id, invitation_id [DESTRUCTIVE]

  • transfer-token-create: org_id

  • transfer-token-list: org_id (requires agent account type)

  • transfer-token-delete: org_id, token_id [DESTRUCTIVE]

  • transfer-claim: token

  • discover-all: (+ optional: limit, offset)

  • discover-available: (no params)

  • discover-check-domain: domain_name

  • discover-external: (+ optional: limit, offset)

  • asset-upload: org_id, asset_name, content or file_base64 (+ optional: file_name, content_type, metadata)

  • asset-delete: org_id, asset_name [DESTRUCTIVE]

  • asset-types: (no params)

  • asset-list: org_id

  • custom-domain-get: org_id

  • custom-domain-create: org_id, hostname

  • custom-domain-delete: org_id [DESTRUCTIVE]

  • custom-domain-validate: org_id

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoDisplay name, 3-100 chars (required for: create, create-workspace; optional for: update)
roleNoPermission level: admin, member, guest, view. Cannot be 'owner'. (required for: update-member-role; optional for: invite-member)
emailNoEmail address of user to invite (required for: invite-member)
limitNoPage size (used by: list, list-workspaces, list-shares, members, billing-members, billing-meters, discover-all, discover-external)
meterNoUsage meter type, e.g. storage_bytes, transfer_bytes, ai_tokens (required for: billing-meters)
stateNoInvitation state, e.g. pending, accepted (optional for: invitations-list, invitation-update)
tokenNoTransfer token to claim org ownership (required for: transfer-claim)
actionYesOperation to perform
domainNoURL-safe subdomain. 2-63 chars, lowercase alphanumeric + hyphens, unique (required for: create; optional for: update)
offsetNoOffset for pagination, 0-based (used by: list, list-workspaces, list-shares, members, billing-members, billing-meters, discover-all, discover-external)
org_idNoOrganization ID (19-digit numeric ID) or domain string
confirmNoConfirmation string, must match org domain or ID (required for: close)
contentNoPlain text content for asset, e.g. SVG. Use instead of file_base64 for text assets (used by: asset-upload)
expiresNoUpdated expiration date, datetime (optional for: invitation-update)
messageNoCustom message for invitation email, 10-255 chars (optional for: invite-member)
user_idNoUser ID (required for: member-details, transfer-ownership)
end_timeNoEnd of time range, datetime, default now (optional for: billing-meters)
hostnameNoFully qualified domain name for custom domain, e.g. files.acme.com (required for: custom-domain-create)
industryNoIndustry type, e.g. technology, healthcare, financial, education (optional for: create, update)
metadataNoAdditional metadata as JSON array string (optional for: asset-upload)
share_idNoFilter by share ID (optional for: billing-meters)
token_idNoID of transfer token (required for: transfer-token-delete)
file_nameNoOriginal file name, e.g. logo.png (optional for: asset-upload)
member_idNoUser ID or email of member (required for: remove-member, update-member-role)
perm_joinNoPermission level required to join workspace, e.g. 'Member or above' (optional for: create-workspace)
asset_nameNoAsset name, e.g. "logo", "banner" (required for: asset-upload, asset-delete)
start_timeNoStart of time range, datetime, default 30 days ago (optional for: billing-meters)
descriptionNoOrganization description, 10-1000 chars (optional for: create, update, create-workspace)
domain_nameNoDomain name to check for availability (required for: discover-check-domain)
file_base64NoBase64-encoded file content for binary assets. Use content for text (used by: asset-upload)
folder_nameNoURL-safe folder name for workspace, 4-80 chars, unique within org (required for: create-workspace)
join_actionNoAction for invitation: accept/decline (optional for: join)
permissionsNoUpdated permission level (optional for: invitation-update)
twitter_urlNoTwitter/X profile URL (optional for: create, update)
youtube_urlNoYouTube channel URL (optional for: create, update)
accent_colorNoBrand accent color as JSON (optional for: create, update, create-workspace)
billing_planNoTarget billing plan ID, e.g. 'agent', 'free', 'pro' (optional for: billing-create)
content_typeNoMIME type, e.g. image/png, defaults to application/octet-stream (optional for: asset-upload)
facebook_urlNoFacebook page URL (optional for: create, update)
homepage_urlNoOrganization website URL (optional for: create, update)
intelligenceNoEnable AI-powered RAG indexing and semantic search. ⚠️ COSTS CREDITS: 10 credits per page for every uploaded document — can consume the entire free plan budget quickly. MUST default to "false" unless the user explicitly requests RAG or AI search. "true"/"false" (optional for: create-workspace, defaults to "false")
workspace_idNoFilter by workspace ID (optional for: billing-meters)
billing_emailNoBilling contact email (optional for: create, update)
instagram_urlNoInstagram profile URL (optional for: create, update)
invitation_idNoInvitation ID or invitee email address (required for: invitation-update, invitation-delete)
owner_definedNoCustom owner-defined properties as JSON (used by: update)
invitation_keyNoInvitation key from invite link (optional for: join)
use_backgroundNoEnable/disable background, "true"/"false" (used by: update)
background_modeNoBackground display mode, e.g. 'stretched', 'fixed' (optional for: create, update)
background_colorNoBackground color as JSON (optional for: create, update)
background_color1NoPrimary background color as JSON (optional for: create-workspace)
background_color2NoSecondary background color as JSON (optional for: create-workspace)
perm_member_manageNoWho can manage members, e.g. 'Owner only', 'Admin or above' (optional for: create, update, create-workspace)
perm_authorized_domainsNoAuthorized email domain for auto-join (optional for: create, update)
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds substantial behavioral context beyond annotations. Annotations indicate destructiveHint=true and readOnlyHint=false, but the description explicitly marks specific actions as '[DESTRUCTIVE]' (e.g., 'close', 'billing-cancel', 'remove-member', 'asset-delete'), clarifies side effects ('billing-create/billing-activate change subscription state, create consumes credits'), and notes special requirements ('transfer-token-list (requires agent account type)'). This provides crucial operational details that annotations alone don't convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately front-loaded with a clear purpose statement and key behavioral disclosures. However, the extensive list of 44 actions with parameter notes makes it quite long. While each action entry serves a purpose, the description could be more concise by grouping similar actions or using a table format. The structure is logical but verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's high complexity (54 parameters, 44 actions, no output schema), the description provides exceptional completeness. It covers purpose, behavioral traits, destructive actions, side effects, account requirements, and parameter mappings for all actions. The combination of the comprehensive description with the fully documented schema (100% coverage) gives the agent everything needed to correctly invoke this complex tool despite the lack of output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the schema already documents all 54 parameters thoroughly. The description adds value by organizing parameters by action in the 'Actions & required params' section, showing which parameters are required/optional for each operation. This provides semantic grouping that helps the agent understand parameter context, though it doesn't add new semantic information beyond what's in the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description begins with a clear, comprehensive statement: 'Organization management. Core CRUD, billing/subscription, member management, invitations, ownership transfer, asset management, discovery, and custom domains.' This explicitly states the tool's purpose as a multi-faceted organization management system, distinguishing it from sibling tools like 'member', 'workspace', or 'asset' which handle more specific aspects. The verb 'management' coupled with the detailed resource scope provides excellent specificity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool by listing all available actions (e.g., 'list', 'create', 'update', 'close', 'billing-create', 'invite-member'). This implicitly guides usage for organization-level operations. However, it doesn't explicitly state when NOT to use it or name specific alternatives among sibling tools (e.g., when to use 'member' tool vs. the member-related actions here). The guidance is comprehensive but not comparative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

shareA
Destructive
Inspect

Share management. Create, list, view, update, delete shares. Archive/unarchive, password auth, quickshare creation, and discovery. Supports anonymous file drops on Receive/Exchange shares. Member listing included; full member management is in the 'member' tool. Destructive action: delete permanently removes the share.

Actions & required params:

  • list: (+ optional: org_id, type, limit, offset)

  • details: share_id

  • create: workspace_id, name or title (+ optional: description, share_type, storage_mode, folder_node_id, access_options, invite, notify, display_type, password, intelligence, comments_enabled, download_security, guest_chat_enabled, anonymous_uploads_enabled, create_folder, folder_name, custom_name, expires, workspace_style, accent_color, background_color1, background_color2, background_image, owner_defined)

  • update: share_id (+ optional: name, description, share_type, access_options, expires, download_security, comments_enabled, anonymous_uploads_enabled)

  • delete: share_id, confirm [DESTRUCTIVE]

  • public-details: share_id

  • archive: share_id

  • unarchive: share_id

  • password-auth: share_id, password

  • members: share_id (+ optional: limit, offset)

  • available: (no params)

  • check-name: name

  • quickshare-create: workspace_id, node_id (+ optional: expires, expires_at)

  • enable-workflow: share_id

  • disable-workflow: share_id

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoShare title (2-80 chars; maps to API 'title') (used by: create, update, check-name)
typeNoFilter by share type (list action)
limitNoMaximum number of items to return (1-500, default 100)
titleNoShare title (2-80 chars). 'name' param also sets title; use either one. (used by: create)
actionYesOperation to perform
inviteNoWho can invite others (default: 'owners') (used by: create)
notifyNoNotification setting (default: 'never') (used by: create)
offsetNoNumber of items to skip (default 0)
org_idNoFilter to shares in this org (list action)
confirmNoConfirmation value: must match share ID or custom_name (required for: delete)
expiresNoExpiration: datetime string YYYY-MM-DD HH:MM:SS for create/update, or seconds from creation for quickshare-create (default 10800, max 604800 = 7 days). Alternatively use expires_at with ISO 8601 datetime for quickshare-create. Not allowed on workspace_folder shares. (used by: create, update, quickshare-create)
node_idNoFile node opaque ID (required for: quickshare-create). Quick shares: single file only, max 1 GB, default expiration 3 hours, max 7 days (1 week), auto-deleted on expiration.
passwordNoPassword for share access (only with 'Anyone with the link') (used by: create, password-auth)
share_idNoShare profile ID or custom name
expires_atNoISO 8601 datetime for quickshare expiration as alternative to expires in seconds. Example: 2026-03-12T15:00:00Z. (used by: quickshare-create)
share_typeNoNew share type (used by: create, update)
custom_nameNoCustom share URL name (4-80 chars, alphanumeric + unicode letters) (used by: create)
descriptionNoShare description (10-500 chars) (used by: create, update)
folder_nameNoName for new folder (default: 'Shared Folder') (used by: create)
accent_colorNoAccent color as JSON string (used by: create)
display_typeNoDisplay mode (default: 'grid') (used by: create)
intelligenceNoEnable AI-powered RAG indexing and semantic search on the share. ⚠️ COSTS CREDITS: 10 credits per page for every uploaded document — can consume the entire free plan budget quickly. MUST default to false unless the user explicitly requests RAG or AI search. NOT SUPPORTED on workspace_folder shares — always forced to false; use the parent workspace's AI endpoints instead. (default: false) (used by: create)
storage_modeNoStorage mode (default: 'independent') (used by: create)
workspace_idNoParent workspace ID (required for: create, quickshare-create)
create_folderNoCreate a new workspace folder (workspace_folder mode) (used by: create)
owner_definedNoCustom metadata as JSON string (used by: create)
access_optionsNoAccess level. 'Anyone with the link' not allowed for receive/exchange shares. (used by: create, update)
folder_node_idNoWorkspace folder node ID (workspace_folder mode) (used by: create)
workspace_styleNoUse workspace styling (default: true) (used by: create)
background_imageNoBackground image index (0-128, default: 0) (used by: create)
comments_enabledNoEnable comments (default: true) (used by: create, update)
background_color1NoPrimary background color as JSON string (used by: create)
background_color2NoSecondary background color as JSON string (used by: create)
download_securityNoDownload security level: 'off' (no restrictions, default), 'medium' (guests can preview but not download), 'high' (all guest downloads blocked). (used by: create, update)
guest_chat_enabledNoEnable guest chat (default: false) (used by: create)
anonymous_uploads_enabledNoEnable anonymous file uploads on public Receive/Exchange shares. When true with 'Anyone' access, guests can upload without registration. Not applicable to Send shares or Portals (Send-only shares with independent storage). (used by: create, update)
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds significant behavioral context beyond what annotations provide. Annotations indicate readOnlyHint=false, openWorldHint=true, and destructiveHint=true. The description elaborates with specific destructive warnings ('delete permanently removes the share'), authentication details ('password auth'), rate limit implications ('anonymous file drops'), and operational constraints ('Supports anonymous file drops on Receive/Exchange shares'). It also clarifies scope boundaries with the 'member' tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately front-loaded with the core purpose, but the extensive parameter-by-action listing makes it quite long. While every sentence serves a purpose, the structure could be more concise - the parameter listing duplicates information available in the schema, though it adds valuable action-based organization. The description earns its length but could potentially be more streamlined.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's high complexity (36 parameters, multiple actions) and lack of output schema, the description provides substantial context. It covers destructive behavior, authentication needs, sibling tool relationships, and action-specific parameter requirements. However, without an output schema, it doesn't describe return values or response formats, which would be helpful for a tool with this many possible actions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite 100% schema description coverage, the description adds crucial parameter semantics by organizing parameters by action in the 'Actions & required params' section. This provides operational context that the schema alone doesn't offer - showing which parameters are required for each specific action (e.g., 'create: workspace_id, name or title'), which helps the agent understand parameter dependencies and usage patterns beyond individual parameter descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with a clear, specific purpose statement: 'Share management. Create, list, view, update, delete shares.' It explicitly distinguishes this tool from the 'member' tool by stating 'full member management is in the 'member' tool,' showing clear sibling differentiation. The description covers multiple specific operations with distinct verbs and resources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context about when to use certain actions (e.g., 'Member listing included; full member management is in the 'member' tool') and includes explicit guidance like 'Destructive action: delete permanently removes the share.' However, it doesn't provide explicit alternatives for when to use this tool versus other sibling tools (like 'workspace' or 'storage'), only distinguishing from 'member' specifically.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

storageA
Destructive
Inspect

File and folder operations. List, search, create folders, copy, move, delete, rename, restore from trash, transfer (copy or move) between containers, manage file versions, acquire/release file locks, and get preview/transform URLs. Works on both workspaces and shares. Destructive action: purge permanently destroys a trashed node (irreversible). delete moves to trash (recoverable via restore).

Actions & required params:

  • list: node_id (+ optional: sort_by, sort_dir, page_size, cursor)

  • recent: lists most recently modified files/folders across the entire workspace or share (not scoped to a specific folder) (+ optional: type, page_size, cursor)

  • details: node_id

  • search: query (+ optional: files_scope, folders_scope, details, limit, offset)

  • trash-list: (workspace-only, + optional: limit, offset)

  • create-folder: parent_node_id, name

  • copy: node_id or node_ids, target_parent_id

  • move: node_id or node_ids, target_parent_id

  • delete: node_id or node_ids [DESTRUCTIVE]

  • rename: node_id, new_name

  • purge: node_id [DESTRUCTIVE]

  • restore: node_id or node_ids

  • add-file: parent_node_id, name, upload_id

  • add-link: parent_node_id, share_id (workspace-only)

  • transfer: node_id, dest_instance_id, dest_parent_id (+ optional: transfer_mode)

  • version-list: node_id

  • version-restore: node_id, version_id

  • lock-acquire: node_id

  • lock-status: node_id

  • lock-release: node_id

  • preview-url: node_id, preview_type

  • preview-transform: node_id, transform_name (+ optional: width, height, output_format, size)

  • read-content: node_id — Read file content directly (text or base64, max 1MB) (+ optional: max_size)

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoName for new folder or file (required for: create-folder, add-file)
sizeNoSize preset: "IconSmall", "IconMedium", "Preview", or custom with width/height (used by: preview-transform)
typeNoFilter by node type (used by: recent)
limitNoMaximum number of results to return (default: 100) (used by: search, trash-list)
queryNoSearch query string — performs keyword search, or keyword + semantic search when workspace intelligence is enabled. (required for: search)
widthNoTarget width in pixels (used by: preview-transform)
actionYesOperation to perform
cursorNoOpaque cursor from a previous response for next page (used by: list, recent)
heightNoTarget height in pixels (used by: preview-transform)
offsetNoNumber of results to skip (default: 0) (used by: search, trash-list)
detailsNoReturn full node details per result (previews, AI state, metadata, versions). Default limit drops to 10 when enabled. (used by: search)
node_idNoStorage node opaque ID, or 'root' for root folder
sort_byNoSort column (default: name) (used by: list)
max_sizeNoMaximum content size in bytes for read-content (default: 512000, max: 1048576) (used by: read-content)
new_nameNoNew name for file or folder (required for: rename)
node_idsNoArray of storage node opaque IDs (used by: copy, move, delete, restore)
share_idNoShare identifier to link (required for: add-link, workspace-only)
sort_dirNoSort direction (default: asc) (used by: list)
page_sizeNoItems per page: 100, 250, or 500 (default: 100) (used by: list, recent)
upload_idNoOpaque ID of the completed upload session (required for: add-file)
context_idNoAlias for profile_id (either name works)
profile_idNo19-digit workspace or share ID, or custom name (also accepted as context_id)
version_idNoVersion ID to restore (required for: version-restore)
files_scopeNoScope semantic search to specific file versions. Comma-separated nodeId:versionId pairs (max 100). Requires intelligence enabled; silently ignored otherwise. OMIT to search all files. (used by: search)
context_typeNoAlias for profile_type (either name works)
preview_typeNoType of preview to generate (required for: preview-url)
profile_typeNoProfile type: "workspace" or "share" (also accepted as context_type)
folders_scopeNoScope semantic search to specific folders via BFS. Comma-separated nodeId:depth pairs (depth 1-10, max 100). Requires intelligence enabled; silently ignored otherwise. OMIT to search all files. (used by: search)
output_formatNoOutput format: "png", "jpg", "webp" (used by: preview-transform)
transfer_modeNoTransfer mode: 'copy' (default) keeps source, 'move' copies then trashes source. Cannot use 'move' with node_id 'root'. (optional for: transfer)
dest_parent_idNoDestination parent folder opaque ID, or 'root' (required for: transfer)
parent_node_idNoParent folder opaque ID, or 'root' for root (required for: create-folder, add-file, add-link)
transform_nameNoTransform name, e.g. "image" for resize/crop/format conversion (required for: preview-transform)
dest_instance_idNoDestination workspace or share profile ID (required for: transfer)
target_parent_idNoDestination folder opaque ID, or 'root' for root (required for: copy, move)
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds significant behavioral context beyond annotations: it clarifies the difference between delete (moves to trash) and purge (permanent destruction), explains that 'recent' lists across entire workspace/share (not scoped to folders), notes intelligence requirements for semantic search, and specifies size limits for read-content. Annotations already indicate destructiveHint=true and readOnlyHint=false, which the description reinforces by labeling destructive actions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with a clear purpose statement but becomes a lengthy bulleted list of actions and parameters. While comprehensive, this structure is verbose (35+ lines) and could be more efficiently organized. Every sentence earns its place by providing necessary information, but the format isn't optimally concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's high complexity (23 actions, 35 parameters) and lack of output schema, the description provides excellent coverage of operations, parameters, and behavioral nuances. However, it doesn't describe return values or error conditions, which would be helpful for a tool with this many actions. The annotations provide safety context, but output behavior remains unspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite 100% schema description coverage, the description adds crucial parameter semantics by mapping each action to its required parameters (e.g., 'list: node_id (+ optional: sort_by, sort_dir, page_size, cursor)'), clarifying which parameters are action-specific. This provides operational context that the schema alone doesn't offer, helping the agent understand parameter dependencies across 23 different actions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly lists all 23 specific operations (list, search, create folders, copy, move, delete, rename, etc.) with their required parameters, clearly distinguishing this as a comprehensive file/folder management tool. It differentiates from sibling tools like 'upload', 'download', 'share', and 'ai' by focusing on storage operations rather than upload workflows, sharing mechanisms, or AI features.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use specific actions (e.g., 'delete moves to trash (recoverable via restore)', 'purge permanently destroys a trashed node (irreversible)'), and indicates workspace-only restrictions for 'trash-list' and 'add-link'. However, it doesn't explicitly mention when to use this tool versus alternatives like 'upload' for file uploads or 'share' for sharing operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

taskA
Destructive
Inspect

Task management operations. Create and manage task lists and individual tasks within workspaces and shares. Tasks support statuses, priorities, assignees, dependencies, and bulk operations. Responses include created_by (user ID of creator). On shares, requires admin or named member role. Destructive actions: delete-list soft-deletes a task list and all its tasks, delete-task soft-deletes a task.

Actions & required params:

  • list-lists: profile_type, profile_id (+ optional: sort_by, sort_dir, limit, offset, format)

  • create-list: profile_type, profile_id, name (+ optional: description)

  • list-details: list_id (+ optional: format)

  • update-list: list_id (+ optional: name, description)

  • delete-list: list_id [DESTRUCTIVE]

  • list-tasks: list_id (+ optional: sort_by, sort_dir, status, assignee, limit, offset, format)

  • create-task: list_id, title (+ optional: description, status, priority, assignee_id, dependencies, node_id)

  • task-details: list_id, task_id (+ optional: format)

  • update-task: list_id, task_id (+ optional: title, description, status, priority, assignee_id, dependencies, node_id)

  • delete-task: list_id, task_id [DESTRUCTIVE]

  • change-status: list_id, task_id, status

  • assign-task: list_id, task_id (+ optional: assignee_id)

  • bulk-status: list_id, task_ids, status

  • move-task: list_id, task_id, target_task_list_id — move a task to a different list (+ optional: sort_order)

  • reorder-tasks: list_id, task_ids — reorder tasks within a list

  • reorder-lists: profile_type, profile_id, list_ids — reorder task lists

  • filtered-list: profile_type, profile_id, filter (+ optional: status [required when filter=status], limit, offset, format)

  • summary: profile_type, profile_id (+ optional: format)

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoTask list name (1-255 chars, required for create-list)
limitNoNumber of items to return (1-200) (used by: list-lists, list-tasks, filtered-list)
titleNoTask title (1-500 chars, required for create-task)
actionYesOperation to perform
filterNoFilter type: "assigned" (tasks assigned to me), "created" (tasks I created), "status" (by status, requires status param) (required for: filtered-list)
formatNoResponse format: "json" (default) or "md" for Markdown
offsetNoNumber of items to skip (used by: list-lists, list-tasks, filtered-list)
statusNoTask status (required for change-status, bulk-status)
list_idNoTask list ID (required for list-details, update-list, delete-list, list-tasks, create-task, task-details, update-task, delete-task, change-status, assign-task, bulk-status)
node_idNoOptional node ID to link task to a file, folder, or note (used by: create-task, update-task)
sort_byNoSort field for list queries (used by: list-lists, list-tasks)
task_idNoTask ID (required for task-details, update-task, delete-task, change-status, assign-task)
assigneeNoFilter tasks by assignee profile ID (used by: list-tasks)
list_idsNoArray of task list IDs for reorder-lists (in desired order)
priorityNoPriority: 0=none, 1=low, 2=medium, 3=high, 4=critical (used by: create-task, update-task)
sort_dirNoSort direction: "asc" or "desc" (used by: list-lists, list-tasks)
task_idsNoArray of task IDs (required for bulk-status max 100, reorder-tasks in desired order)
context_idNoAlias for profile_id (either name works)
profile_idNo19-digit profile (workspace or share) ID (also accepted as context_id) (required for: list-lists, create-list, reorder-lists, filtered-list, summary)
sort_orderNoPosition in target list after move (default: 0) (used by: move-task)
assignee_idNoProfile ID of user to assign, including pending members (required for assign-task, pass null to unassign)
descriptionNoDescription text (max 2000 for lists, max 5000 for tasks) (used by: create-list, update-list, create-task, update-task)
context_typeNoAlias for profile_type (either name works)
dependenciesNoArray of task IDs this task depends on (used by: create-task, update-task)
profile_typeNoProfile type: "workspace" or "share" (also accepted as context_type) (required for: list-lists, create-list, reorder-lists, filtered-list, summary)
target_task_list_idNoTarget task list ID to move a task into (required for move-task). Must be in the same profile as the source list.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds significant behavioral context beyond the annotations. While annotations indicate destructiveHint=true and readOnlyHint=false, the description specifies that destructive actions involve 'soft-deletes' (not permanent deletion), clarifies that responses include 'created_by' (user ID of creator), details permission requirements for shares, and explains that move-task requires target list to be 'in the same profile as the source list.' This provides rich operational context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear opening statement followed by detailed action listings. While comprehensive, it's appropriately sized for a complex tool with 18 actions and 26 parameters. Every sentence serves a purpose, though the action list is lengthy but necessary for clarity. It could be slightly more front-loaded with key usage patterns.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's high complexity (26 parameters, 18 actions, no output schema), the description provides exceptional completeness. It covers all major aspects: purpose, detailed action breakdown with parameters, behavioral traits (soft-deletes, permissions, constraints), and practical usage notes. The combination of comprehensive action listings and behavioral context fully compensates for the lack of output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite 100% schema description coverage, the description adds substantial parameter semantics through the 'Actions & required params' section that maps specific actions to their required and optional parameters. It clarifies relationships between parameters (e.g., 'status [required when filter=status]'), provides practical usage context (e.g., 'pass null to unassign' for assignee_id), and explains parameter interactions that aren't in the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose as 'Task management operations' with specific verbs like 'Create and manage task lists and individual tasks' and details the scope including workspaces and shares. It distinguishes itself from sibling tools like 'todo' by specifying comprehensive task management with statuses, priorities, assignees, dependencies, and bulk operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidance with the 'Actions & required params' section that lists 18 specific operations, each with required and optional parameters. It includes contextual notes like 'On shares, requires admin or named member role' and identifies destructive actions (delete-list, delete-task), giving clear when-to-use guidance for different scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

todoA
Destructive
Inspect

Todo checklist operations. List, create, view, update, delete, toggle, and bulk-toggle todos scoped to workspaces and shares. Responses include created_by (user ID of creator). Requires workflow to be enabled on the target entity (workspace action enable-workflow or share action enable-workflow). On shares, requires admin or named member role. Destructive action: delete soft-deletes a todo.

Actions & required params:

  • list: profile_type, profile_id (+ optional: sort_by, sort_dir, filter_done, limit, offset, format)

  • create: profile_type, profile_id, title (+ optional: assignee_id)

  • details: todo_id (+ optional: format)

  • update: todo_id (+ optional: title, done, assignee_id)

  • delete: todo_id [DESTRUCTIVE]

  • toggle: todo_id

  • bulk-toggle: profile_type, profile_id, todo_ids, done

  • filtered-list: profile_type, profile_id, filter (+ optional: limit, offset, format)

  • summary: profile_type, profile_id (+ optional: format)

ParametersJSON Schema
NameRequiredDescriptionDefault
doneNoDone state (required for: bulk-toggle; optional for: update)
limitNoNumber of items to return (1-200, default 100) (used by: list, filtered-list)
titleNoTodo title (1-500 chars, required for create)
actionYesOperation to perform
filterNoFilter type: "assigned" (todos assigned to me), "created" (todos I created), "done" (completed), "pending" (incomplete) (required for: filtered-list)
formatNoResponse format: "json" (default) or "md" for Markdown
offsetNoNumber of items to skip (default 0) (used by: list, filtered-list)
sort_byNoSort field, default "created" (used by: list)
todo_idNoOpaque todo ID (required for details, update, delete, toggle)
sort_dirNoSort direction, default "desc" (used by: list)
todo_idsNoArray of todo IDs (required for bulk-toggle, max 100)
context_idNoAlias for profile_id (either name works)
profile_idNo19-digit profile (workspace or share) ID (also accepted as context_id) (required for list, create, bulk-toggle, filtered-list, summary)
assignee_idNoProfile ID of user to assign, including pending members. Pass null to unassign (used by: create, update)
filter_doneNoFilter by completion state (used by: list)
context_typeNoAlias for profile_type (either name works)
profile_typeNoEntity type: "workspace" or "share" (also accepted as context_type) (required for list, create, bulk-toggle, filtered-list, summary)
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds significant behavioral context beyond annotations. Annotations indicate readOnlyHint=false and destructiveHint=true, but the description elaborates with: 'Destructive action: delete soft-deletes a todo,' clarifying the nature of destruction. It also specifies permission requirements (workflow enabled, admin/member role on shares) and response details ('Responses include `created_by` (user ID of creator)'), which are not covered by annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and front-loaded with a clear purpose, followed by usage guidelines and a detailed parameter mapping. Every sentence adds value, such as explaining destructive actions and permissions. However, it is slightly verbose due to the extensive parameter list, which is necessary but reduces conciseness, warranting a score of 4 rather than 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (17 parameters, multiple actions) and the absence of an output schema, the description is highly complete. It covers purpose, usage guidelines, behavioral traits (e.g., soft-delete, permissions), and parameter semantics in detail. This compensates for the lack of output schema and provides sufficient context for an agent to use the tool effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds valuable parameter semantics beyond the input schema, which has 100% coverage. It maps actions to required and optional parameters in a clear list (e.g., 'list: profile_type, profile_id (+ optional: sort_by, sort_dir, filter_done, limit, offset, format)'), helping the agent understand which parameters are needed for each operation. This goes beyond the schema's generic descriptions, though it doesn't fully explain all 17 parameters' nuances, so it scores 4 instead of 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Todo checklist operations. List, create, view, update, delete, toggle, and bulk-toggle todos scoped to workspaces and shares.' It specifies the exact verbs (list, create, etc.) and resources (todos), and distinguishes itself from siblings by focusing on todo operations rather than other entities like tasks, comments, or assets.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use the tool: 'Requires workflow to be enabled on the target entity (workspace action enable-workflow or share action enable-workflow). On shares, requires admin or named member role.' However, it does not explicitly mention when not to use this tool or name specific alternatives among siblings (e.g., task tool), which prevents a score of 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

uploadAInspect

File upload operations. Chunked uploads via POST /blob sidecar (create session, POST raw binary to /blob, upload chunks with blob_id, finalize), streaming uploads (single-call stream-upload that creates a session and streams in one shot — auto-finalizes), web URL imports, and upload configuration. Side effects: finalize/stream/stream-upload create new files that consume storage credits.

UPLOAD STRATEGY: 1) For files with a URL: use web-import (single call). 2) For files with unknown size (generated/piped content): use stream-upload — one call creates the session and streams the bytes (auto-finalizes). 3) For files with known size: create-session → POST to /blob → chunk with blob_id → finalize. The POST /blob sidecar is the only supported upload data path — it bypasses MCP transport limits, has no base64 overhead, and works for files up to 100 MB.

STREAM MODE: When you don't know the file size upfront, prefer the consolidated stream-upload action — it accepts profile/parent/filename plus content|blob_id and handles create-session + stream + auto-finalize internally. The lower-level create-session (with stream=true) + stream pair is still supported for cases where you need the session ID between calls.

MAX_SIZE GUIDANCE: max_size is a ceiling on the stream body — exceeding it aborts the upload mid-transfer. Always overestimate, never undershoot. There is no penalty for setting it higher than you need. Safest default: omit max_size entirely and the server uses your plan's file-size limit. Note: streaming uploads via MCP are also bounded by the POST /blob sidecar (100 MB cap per blob) — for larger files, use the chunked flow (create-sessionchunkfinalize) instead, and call upload action limits first to confirm your plan's max file size.

POST /blob SIDECAR: The MCP server exposes a /blob HTTP endpoint that accepts raw data (no base64, no MCP transport limit, up to 100 MB). The create-session response includes blob_upload with the endpoint URL, your session ID, and a ready-to-use curl command. Blobs expire after 5 minutes and are single-use.

OVERWRITE A SPECIFIC NODE: Pass target_node_id on create-session or stream-upload to deterministically overwrite a specific node (preserves node_id; new version created). This is the reliable way to update an existing file — don't delete+reupload. When target_node_id is set, parent_node_id is ignored and filename is optional.

Actions & required params:

  • create-session: profile_type, profile_id, parent_node_id, filename, filesize (+ optional: chunk_size, stream, max_size, target_node_id). When stream=true, filesize is optional. When target_node_id is provided, parent_node_id is ignored and filename is optional.

  • stream-upload: profile_type, profile_id, parent_node_id, filename, content | blob_id (exactly one) (+ optional: max_size, target_node_id, hash, hash_algo). Creates a stream session and uploads in one call. Auto-finalizes. When target_node_id is provided, parent_node_id is ignored and filename is optional.

  • chunk: upload_id, chunk_number, content | blob_id (exactly one). Not allowed on stream sessions.

  • stream: upload_id, content | blob_id (exactly one) (+ optional: hash, hash_algo). Only for stream sessions. Auto-finalizes. Prefer stream-upload unless you need the session ID between calls.

  • finalize: upload_id. Not needed for stream sessions.

  • status: upload_id (+ optional: wait)

  • cancel: upload_id [DESTRUCTIVE]

  • list-sessions: (none)

  • cancel-all: (none) [DESTRUCTIVE]

  • chunk-status: upload_id (+ optional: chunk_id)

  • chunk-delete: upload_id, chunk_number [DESTRUCTIVE]

  • web-import: profile_type, profile_id, parent_node_id, url (+ optional: filename)

  • web-list: (+ optional: limit, offset, status)

  • web-cancel: upload_id [DESTRUCTIVE]

  • web-status: upload_id

  • limits: (+ optional: action_context, instance_id, file_id, org)

  • extensions: (+ optional: plan)

  • blob-info: (none) — returns POST /blob endpoint URL, session ID, headers, curl example, and workflow for shell-based uploads

ParametersJSON Schema
NameRequiredDescriptionDefault
orgNoOrganization ID for limit resolution (used by: limits)
urlNoSource URL to import from (required for: web-import)
hashNoFile hash for verification (used by: stream, stream-upload)
planNoOverride billing plan to check (e.g. free, pro) (used by: extensions)
waitNoLong-poll duration in milliseconds (0 = return immediately). Server holds connection until status changes or wait expires. (used by: status)
limitNoMax results (1-100, default 50) (used by: web-list)
actionYesOperation to perform
offsetNoPagination offset (used by: web-list)
statusNoFilter by status (used by: web-list)
streamNoEnable stream mode — size becomes optional, upload via single POST to /upload/{id}/stream/ instead of chunking. Auto-finalizes on completion. (used by: create-session)
blob_idNoBlob ID from POST /blob response. The standard method for uploading file data — avoids base64 overhead and MCP transport limits. Consumed (deleted) after use. (used by: chunk, stream, stream-upload as one of content/blob_id)
contentNoSmall text content for a chunk (code snippets, JSON, etc.). For larger text files, use POST /blob + blob_id instead. (used by: chunk, stream, stream-upload as one of content/blob_id)
file_idNoFile ID for update context (required if action_context=update) (used by: limits)
blob_refNoAlias for blob_id (deprecated — use blob_id instead)
chunk_idNoSpecific chunk number to retrieve (omit for all) (used by: chunk-status)
filenameNoName of the file to upload (required for: create-session, stream-upload unless target_node_id is provided; optional for: web-import)
filesizeNoTotal file size in bytes (required for: create-session when stream=false; optional when stream=true)
max_sizeNoCeiling for the stream body in bytes. Upload fails mid-transfer if actual bytes exceed this value — always overestimate, never undershoot. There is no penalty for setting it too high. Safest default: omit this parameter and the server uses your plan's file-size limit. Note: streaming uploads via MCP are also bounded by the `POST /blob` sidecar (100 MB cap per blob); for larger files use the chunked flow instead, and call `upload` action `limits` first to confirm plan headroom. Applies to stream sessions only (create-session with stream=true, or any stream-upload call). (used by: create-session, stream-upload)
hash_algoNoHash algorithm (e.g. 'sha256') (used by: stream, stream-upload)
upload_idNoUpload session ID or web upload job ID (required for: chunk, stream, finalize, status, cancel, chunk-status, chunk-delete, web-cancel, web-status)
chunk_sizeNoChunk size in bytes (optional, server picks default) (used by: create-session)
context_idNoAlias for profile_id (either name works)
profile_idNoTarget workspace/share profile ID (also accepted as context_id) (required for: create-session, stream-upload, web-import)
instance_idNoTarget workspace/share ID (required if action_context=create) (used by: limits)
chunk_numberNo1-indexed chunk number (required for: chunk, chunk-delete)
context_typeNoAlias for profile_type (either name works)
profile_typeNoTarget type: workspace or share (also accepted as context_type) (required for: create-session, stream-upload, web-import)
action_contextNoContext action: create or update (used by: limits)
parent_node_idNoParent folder OpaqueId or "root" (required for: create-session, stream-upload, web-import)
target_node_idNoWhen provided, overwrite this specific node_id (creating a new version). Overrides filename+parent matching — use this when you need a deterministic overwrite target (e.g., the filename may have drifted or the file lives in a folder you don't want to re-resolve). Preserves node_id; version-list shows prior versions. Must reference an existing file node (not a folder). When set, the API uses action=update and file_id=target_node_id; parent_node_id is ignored and filename is optional (server keeps the existing name unless you pass one). (used by: create-session, stream-upload)
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds significant behavioral context beyond annotations: it discloses side effects ('finalize/stream creates new files that consume storage credits'), destructive actions (marked with [DESTRUCTIVE] for cancel, cancel-all, chunk-delete, web-cancel), and technical constraints (blobs expire after 5 minutes, single-use, bypasses MCP transport limits, up to 100 MB). Annotations only provide readOnlyHint=false and destructiveHint=false, so the description carries most of the burden effectively 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (UPLOAD STRATEGY, STREAM MODE, etc.), but it is lengthy and includes some redundant details (e.g., repeating POST /blob sidecar information). While informative, it could be more concise by eliminating repetition and tightening explanations, as not every sentence earns its place efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the high complexity (30 parameters, no output schema) and rich schema coverage, the description is largely complete. It covers upload strategies, side effects, destructive actions, and parameter semantics. However, it lacks explicit information on error handling or response formats, which would be beneficial for a tool with no output schema, leaving minor gaps in full contextual understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 value by explaining parameter interactions and conditional requirements: 'When stream=true, filesize is optional', 'When target_node_id is provided, parent_node_id is ignored and filename is optional', and clarifying exclusive choices like 'content | blob_id (exactly one)'. It also groups parameters by action in the 'Actions & required params' section, enhancing understanding beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states 'File upload operations' and details multiple upload strategies (chunked, streaming, web URL imports), providing specific verbs and resources. It clearly distinguishes this tool from sibling tools like 'download' by focusing on upload functionality, with no tautology present.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use different upload strategies: 'For files with a URL: use `web-import`', 'For files with known size: create-session → POST to /blob → chunk with blob_id → finalize', and 'For files with unknown size: create-session with stream=true → POST to /blob → stream with blob_id'. It also advises against alternatives like 'don't delete+reupload' for updates.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

userA
Destructive
Inspect

User profile and account management. View/update profile, search contacts, manage invitations, and handle user assets. Destructive action: close permanently deletes the account.

Actions & required params:

  • me: (none)

  • update: first_name | last_name | email_address (at least one)

  • search-contacts: query

  • close: confirmation [DESTRUCTIVE]

  • details-by-id: user_id

  • profiles: (none)

  • allowed: (none)

  • org-limits: (none)

  • list-shares: (+ optional: archived, limit, offset)

  • invitation-list: (+ optional: invitation_key)

  • invitation-details: invitation_id

  • accept-all-invitations: (+ optional: invitation_key)

  • asset-upload: user_id, asset_name, content | content_base64 (+ optional: filename, content_type)

  • asset-delete: user_id, asset_name [DESTRUCTIVE]

  • asset-types: (none)

  • asset-list: user_id

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of items to return (1-500, default 100)
queryNoName or email substring to search your contacts (people you've interacted with before). Returns {email: name} — no user_id. (required for: search-contacts)
actionYesOperation to perform
offsetNoNumber of items to skip (default 0)
contentNoPlain text content (e.g. SVG). Use this instead of content_base64 for text-based assets. (used by: asset-upload)
user_idNo19-digit numeric user ID or email (required for: details-by-id, asset-upload, asset-delete, asset-list)
archivedNoTrue to show archived shares, false for active (used by: list-shares)
filenameNoOriginal filename (e.g. photo.png) (used by: asset-upload)
last_nameNoUpdated last name (used by: update)
asset_nameNoAsset type name (e.g. profile_pic) (required for: asset-upload, asset-delete)
first_nameNoUpdated first name (used by: update)
confirmationNoUser's email address or user ID as confirmation (required for: close)
content_typeNoMIME type (e.g. image/png) (used by: asset-upload)
email_addressNoUpdated email address (used by: update)
invitation_idNoInvitation opaque ID or invitation key (required for: invitation-details)
content_base64NoBase64-encoded file content (for binary files). Use content for text. (used by: asset-upload)
invitation_keyNoOptional invitation key for users without validated email (used by: invitation-list, accept-all-invitations)
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds significant behavioral context beyond annotations. While annotations indicate destructiveHint=true and readOnlyHint=false, the description explicitly calls out destructive actions ('close permanently deletes the account', 'asset-delete: [DESTRUCTIVE]'), specifies required parameters for each action, and clarifies optional parameters. This provides crucial operational details that annotations alone don't cover.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately front-loaded with a clear purpose statement, but the detailed action-parameter list is lengthy (16 actions with parameter notes). While this information is valuable, it could be more structured (e.g., bullet points) for better readability. Every sentence earns its place, but the format is somewhat dense.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (17 parameters, 16 actions, no output schema), the description is largely complete. It covers purpose, actions, parameters, and destructive behaviors. The main gap is lack of output format details (e.g., what 'me' returns), but with annotations providing safety context and the schema covering parameters, it's sufficient for most use cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite 100% schema description coverage, the description adds substantial value by mapping parameters to specific actions. It clarifies which parameters are required for which actions (e.g., 'update: first_name | last_name | email_address (at least one)'), indicates destructive parameters, and shows optional parameters. This action-parameter mapping is not in the schema and is essential for correct tool invocation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'User profile and account management' with specific verbs like 'View/update profile, search users, manage invitations, and handle user assets.' It distinguishes itself from siblings like 'auth', 'member', and 'invitation' by covering a comprehensive set of user-related operations beyond authentication or specific invitation handling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use specific actions (e.g., 'close: confirmation [DESTRUCTIVE]' for account deletion) and implies usage through action-parameter mappings. However, it lacks explicit guidance on when to choose this tool over alternatives like 'auth' for authentication or 'invitation' for invitation management, though the broad scope suggests it's the primary user management tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

worklogAInspect

Activity log for tracking agent work. Log what you did and why after uploads, task changes, share creation, or any significant action — builds a searchable audit trail for humans and AI. Also create urgent interjections that require acknowledgement. Entries are append-only and permanent. On shares, requires admin or named member role.

Response fields: entries include acknowledged (boolean), acknowledgable (boolean — true if interjection needs acknowledgement), and updated (ISO timestamp).

Actions & required params:

  • append: entity_type, entity_id, content — log an activity (use after making changes)

  • list: entity_type, entity_id (+ optional: sort_dir, type, limit, offset, format)

  • interject: entity_type, entity_id, content — urgent correction requiring acknowledgement

  • details: entry_id (+ optional: format)

  • acknowledge: entry_id

  • unacknowledged: entity_type, entity_id (+ optional: limit, offset, format)

  • profile-list: profile_type, profile_id — list all worklogs at the profile level (+ optional: limit, offset, format)

  • filtered-list: profile_type, profile_id, filter (+ optional: type, limit, offset, format)

  • summary: profile_type, profile_id (+ optional: format)

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFilter by entry type: "info" (regular) or "interjection" (urgent) (used by: list, filtered-list)
limitNoNumber of entries to return (1-200) (used by: list, unacknowledged, profile-list, filtered-list)
actionYesOperation to perform
filterNoFilter type: "authored" (worklogs authored by me) or "interjections" (interjections targeted at me) (required for: filtered-list)
formatNoResponse format: "json" (default) or "md" for Markdown
offsetNoNumber of entries to skip (used by: list, unacknowledged, profile-list, filtered-list)
contentNoEntry text content (1-10000 chars) (required for: append, interject)
entry_idNoWorklog entry ID (required for: details, acknowledge)
sort_dirNoSort direction: "asc" or "desc" (default "desc") (used by: list)
entity_idNoEntity ID — task/task_list opaque ID or profile 19-digit ID (required for: list, append, interject, unacknowledged)
context_idNoAlias for profile_id (either name works)
profile_idNo19-digit profile (workspace or share) ID (also accepted as context_id) (required for: profile-list, filtered-list, summary)
entity_typeNoEntity type: "task", "task_list", or "profile" (required for: list, append, interject, unacknowledged)
context_typeNoAlias for profile_type (either name works)
profile_typeNoProfile type: "workspace" or "share" (also accepted as context_type) (required for: profile-list, filtered-list, summary)
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds valuable behavioral context beyond annotations: it specifies that entries are 'append-only and permanent', discloses role requirements ('requires admin or named member role' for shares), and explains the acknowledgment system for interjections. Annotations only indicate it's not read-only and not destructive, so the description meaningfully supplements this with operational details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with core purpose and usage, but the lengthy 'Actions & required params' section is somewhat redundant given the comprehensive schema. While informative, it could be more concise by focusing on semantic guidance rather than restating parameter lists. The structure is logical but not optimally efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex tool with 15 parameters, 9 actions, and no output schema, the description does a good job of explaining the tool's purpose, behavior, and parameter usage. It covers key aspects like permanence, role requirements, and the acknowledgment system. However, it doesn't detail response formats or error handling, leaving some gaps given the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 significant value by organizing parameters into action-specific groups (e.g., 'append: entity_type, entity_id, content'), clarifying the relationship between actions and their required parameters, and providing semantic context like 'urgent correction requiring acknowledgement' for 'interject'. This goes well beyond the schema's technical documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose as an 'Activity log for tracking agent work' with specific verbs like 'log', 'create', and 'builds a searchable audit trail'. It distinguishes itself from siblings by focusing exclusively on worklog/audit trail functionality, unlike other tools for tasks, comments, or uploads.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use the tool: 'after uploads, task changes, share creation, or any significant action' and for 'urgent interjections that require acknowledgement'. It doesn't explicitly mention when NOT to use it or name specific alternatives among siblings, but the context is sufficiently detailed for informed usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

workspaceA
Destructive
Inspect

Workspace management. List, view details, update settings, archive/unarchive, manage members, notes, quickshares, shares, discover available workspaces, and manage metadata (template CRUD, assignment, file metadata get/set/delete, AI extraction). Destructive action: delete permanently removes the workspace and all its files.

Actions & required params:

  • list: (+ optional: org_id, limit, offset)

  • details: workspace_id

  • update: workspace_id (+ optional: folder_name, name, description, accent_color, background_color1, background_color2, perm_join, perm_member_manage, intelligence, owner_defined)

  • delete: workspace_id, confirm [DESTRUCTIVE]

  • archive: workspace_id

  • unarchive: workspace_id

  • members: workspace_id (+ optional: limit, offset)

  • list-shares: workspace_id (+ optional: archived, limit, offset)

  • import-share: workspace_id, share_id

  • available: (no params)

  • check-name: name_to_check (+ optional: check_org_id — suggests org-prefixed alternative if name is taken)

  • create-note: workspace_id, parent_id, note_name, and exactly one of content OR blob_id. NOTE type only — use this for markdown you plan to edit incrementally from an agent. For large notes, POST raw bytes to /blob first and pass the returned blob_id instead of content (avoids base64 overhead and MCP transport limits — same pattern as upload). Do NOT upload markdown as a file first if you want to edit it later via update-note.

  • update-note: workspace_id, node_id (+ optional: note_name, and exactly one of content OR blob_id — both optional, but not both at once). For large notes, POST raw bytes to /blob first and pass the returned blob_id instead of content. ONLY works on nodes with type=='note'. A .md file uploaded via the upload flow is a File, not a Note, and update-note will reject it with "Node is not a note" (error 153548). To edit a File's content, use upload action create-session with the SAME parent_node_id and SAME filename as the existing file — same-name uploads overwrite in place and preserve prior content as a version. To check node type: storage action details, inspect type.

  • read-note: workspace_id, node_id

  • quickshare-get: workspace_id, node_id

  • quickshare-delete: workspace_id, node_id [DESTRUCTIVE]

  • quickshares-list: workspace_id (+ optional: limit, offset)

  • metadata-template-create: workspace_id, name, description, category, fields

  • metadata-template-delete: workspace_id, template_id [DESTRUCTIVE]

  • metadata-template-list: workspace_id (+ optional: template_filter)

  • metadata-template-details: workspace_id, template_id

  • metadata-template-update: workspace_id, template_id (+ optional: name, description, category, fields)

  • metadata-template-clone: workspace_id, template_id (+ optional: name, description, category, fields)

  • metadata-template-preview-match: workspace_id, name, description

  • metadata-template-suggest-fields: workspace_id, description, node_ids (+ optional: user_context)

  • metadata-template-assign: workspace_id, template_id (+ optional: node_id)

  • metadata-template-unassign: workspace_id

  • metadata-template-resolve: workspace_id, node_id

  • metadata-template-assignments: workspace_id

  • metadata-get: workspace_id, node_id

  • metadata-set: workspace_id, node_id, template_id, key_values

  • metadata-delete: workspace_id, node_id (+ optional: keys) [DESTRUCTIVE]

  • metadata-extract: workspace_id, node_id (+ optional: template_id, extract_fields). ASYNC — returns 202 with a job_id; poll jobs-status for completion before reading values.

  • jobs-status: workspace_id. Returns the workspace's async job state (used to poll metadata-extract jobs and other async operations).

  • metadata-list-files: workspace_id, node_id, template_id (+ optional: metadata_filters, order_by, order_desc)

  • metadata-list-templates-in-use: workspace_id, node_id

  • metadata-versions: workspace_id, node_id

  • enable-workflow: workspace_id

  • disable-workflow: workspace_id

  • enable-import: workspace_id

  • disable-import: workspace_id

ParametersJSON Schema
NameRequiredDescriptionDefault
keysNoJSON array of metadata key names to delete (omit to delete all) (used by: metadata-delete)
nameNoName. Server-enforced ranges: 2-100 chars for update/metadata-template-create/metadata-template-update/metadata-template-clone; 1-255 chars for metadata-template-preview-match. Send "null" to clear (update only). (used by: update, metadata-template-create, metadata-template-update, metadata-template-clone, metadata-template-preview-match)
limitNoMaximum number of items to return (1-500, default 100)
actionYesOperation to perform
fieldsNoJSON-encoded array of field definitions. IMPORTANT: at least one field per template must have `autoextract:true` (omitted → defaults to true) or the API returns 1605 / HTTP 400. Each field: {name, description, type (string|int|float|bool|json|url|datetime), min?, max?, default?, fixed_list?, can_be_null?, autoextract?}. Set `autoextract:false` on fields managed manually (user-entered notes, reviewer flags, etc.) — those are skipped by full-row AI extraction but still writable via metadata-set. (used by: metadata-template-create, metadata-template-update, metadata-template-clone)
offsetNoNumber of items to skip (default 0)
org_idNoOptional org ID to filter workspaces by organization (used by: list)
blob_idNoBlob ID from POST /blob response. The recommended method for large note content — avoids base64 overhead and MCP transport limits. Consumed (deleted) after use. Bytes are decoded as UTF-8 and passed as note content. (used by: create-note, update-note as one of content/blob_id)
confirmNoSafety confirmation: must match the workspace folder_name or numeric ID (required for: delete)
contentNoMarkdown content for the note (max 100KB). For larger notes, use POST /blob + blob_id instead to avoid base64 overhead and MCP transport limits. (used by: create-note, update-note as one of content/blob_id)
node_idNoStorage node opaque ID (used by: update-note, read-note, quickshare-get, quickshare-delete, metadata-template-assign, metadata-template-resolve, metadata-get, metadata-set, metadata-delete, metadata-extract, metadata-list-files, metadata-list-templates-in-use, metadata-versions)
archivedNoFilter by archive status: "true" for archived, "false" for active (default) (used by: list-shares)
blob_refNoAlias for blob_id (deprecated — use blob_id instead) (used by: create-note, update-note)
categoryNoMetadata template category (used by: metadata-template-create, metadata-template-update, metadata-template-clone)
node_idsNoJSON-encoded array of storage node IDs (1-25 items), typically sourced from metadata-template-preview-match results. Folder nodes are filtered out server-side. (used by: metadata-template-suggest-fields)
order_byNoField key to sort by when listing files with metadata (used by: metadata-list-files)
share_idNo19-digit numeric ID or custom name of share to import (required for: import-share)
note_nameNoFilename for note (must end with .md extension, e.g. 'my-note.md') (used by: create-note, update-note)
parent_idNoParent folder opaque ID, or 'root' for root (required for: create-note)
perm_joinNoWho can join the workspace (used by: update)
key_valuesNoJSON object of key-value pairs matching template fields (required for: metadata-set)
order_descNoSort descending for metadata list: 'true' or 'false' (used by: metadata-list-files)
descriptionNoDescription. Server-enforced ranges: 10-1000 chars for update/metadata-template-create/metadata-template-update/metadata-template-clone; 1-2000 chars for metadata-template-preview-match and metadata-template-suggest-fields. Newlines allowed. For update, send "null" or "" to clear. (used by: update, metadata-template-create, metadata-template-update, metadata-template-clone, metadata-template-preview-match, metadata-template-suggest-fields)
folder_nameNoURL-safe workspace folder name (4-80 chars) (used by: update)
template_idNoMetadata template ID (e.g. mt_abc123) (used by: metadata-template-delete, metadata-template-details, metadata-template-update, metadata-template-clone, metadata-template-assign, metadata-set, metadata-extract, metadata-list-files)
accent_colorNoBrand accent color as JSON. Send "null" to clear. (used by: update)
check_org_idNoOrg ID for check-name — if provided and name is taken, suggests an org-prefixed alternative (optional for: check-name)
intelligenceNoEnable/disable AI features ("true"/"false"). ⚠️ Enabling COSTS CREDITS: 10 credits per page for every document — can consume the entire free plan budget quickly. Only enable when user explicitly requests RAG or AI search. Cannot re-enable once disabled. (used by: update)
user_contextNoOptional short hint describing the kind of view/template being created (1-64 chars, letters/numbers/spaces only; must contain at least one letter or digit). Omit to send no hint. Example: "photo collection" or "contract tracker". (used by: metadata-template-suggest-fields)
workspace_idNo19-digit numeric ID or custom name
name_to_checkNoWorkspace folder name to check availability (required for: check-name)
owner_definedNoCustom user-defined properties as JSON. Send "null" or empty to clear. (used by: update)
extract_fieldsNoOptional JSON-encoded array of field NAMES (e.g. `["vendor","amount"]`) to extract a subset of template fields rather than the full row. Omit (or pass `null`) for full-row extraction. Partial extractions with different field subsets coexist as independent jobs. (used by: metadata-extract)
template_filterNoFilter for metadata template list (used by: metadata-template-list)
metadata_filtersNoJSON-encoded filter criteria for listing files with metadata (used by: metadata-list-files)
background_color1NoBackground color 1 as JSON. Send "null" to clear. (used by: update)
background_color2NoBackground color 2 as JSON. Send "null" to clear. (used by: update)
perm_member_manageNoWho can manage members (used by: update)
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide readOnlyHint=false, destructiveHint=true, and openWorldHint=true. The description adds valuable context beyond annotations: it explicitly marks destructive actions (delete, quickshare-delete, metadata-template-delete, metadata-delete), warns about credit costs for intelligence enabling, explains async behavior for metadata-extract, and details constraints like note type restrictions and large-content handling. 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is excessively long and poorly structured—it reads like a parameter reference manual rather than a concise overview. While information-dense, it lacks front-loading of key concepts, making it hard to scan. Many details (e.g., specific error codes, versioning mechanics) could be trimmed or moved elsewhere.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's high complexity (38 parameters, multiple actions) and lack of output schema, the description attempts to cover many aspects but remains overwhelming. It includes behavioral notes, async patterns, and warnings, yet fails to provide a clear high-level summary or expected return formats, leaving gaps for agent comprehension.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the schema already documents all 38 parameters thoroughly. The description adds meaningful semantics by clarifying parameter usage per action (e.g., 'exactly one of content OR blob_id' for create-note, 'confirm [DESTRUCTIVE]' for delete), explaining interdependencies, and providing practical examples like blob handling for large notes.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with 'Workspace management' and lists specific operations (list, view details, update settings, etc.), clearly stating what the tool does. It distinguishes itself from sibling tools like 'storage' or 'share' by focusing on workspace-level operations, though it doesn't explicitly compare to siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides implied usage guidance through action-specific notes (e.g., 'use this for markdown you plan to edit incrementally from an agent' for create-note, warnings about destructive actions). However, it lacks explicit when-to-use vs. alternatives (e.g., when to use workspace vs. storage tools) or clear prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Discussions

No comments yet. Be the first to start the discussion!

Try in Browser

Your Connectors

Sign in to create a connector for this server.

Resources