Skip to main content
Glama

Server Details

Connect AI agents to ProductNow's context engine to search, create, review, and act.

Ownership verified
Status
Healthy
Uptime
11.6% over 75 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
ProductNowAI/productnow-mcp
GitHub Stars
0
Server Listing
ProductNow MCP Server

TDQS

A4.1/5.0

Scored across 19 tools

Disambiguation4/5

The set clearly separates document CRUD, folders, search, comments, versions, lifecycle status, actions, and media, with descriptions that explicitly cross-reference when not to use a tool. Minor overlap remains around persisting knowledge (remember vs. create_document/edit_document) and document creation (create_document vs. create_help_document), but the boundaries are mostly workable.

Naming Consistency4/5

Most tools use predictable snake_case action-oriented names such as create_document, edit_document, fetch_folder, list_actions, and update_document_status. A few single-word verbs (archive, move, rename, fetch, search, remember) are minor deviations but remain readable and clear.

Tool Count3/5

The 19-tool surface covers a broad domain with many distinct operations, but it sits in the borderline-heavy range where the set starts to feel large for an agent to navigate. Each tool has a plausible role, yet some consolidation or clearer grouping could reduce the surface.

Completeness4/5

The surface covers core document and folder lifecycle operations, search, fetching, versioning, comments, status changes, actions, and media upload. Minor gaps remain around delete/restore, sharing/permissions, and explicit comment-thread management beyond replying, but agents can work around them for the main workflows.

Available Tools

19 tools
archiveA
DestructiveIdempotent
Inspect

Put documents or folders away, including several at once. Pass ids, a mix of document ids and folder ids. Archiving a folder also archives the contents that user can manage. Archived items leave listings and search; nothing is deleted. Not move, and not a content edit — use edit_document to change content. Ids that are not a document or folder here come back in unresolvedIds. Ids the user cannot archive come back in permissionDeniedIds; the rest are still archived.

NameRequiredDescriptionDefault
idsYesDocument ids and folder ids to archive, mixed together. Use fetch for a document and fetch_folder for a folder.

Output Schema

NameRequiredDescription
unresolvedIdsYes
archivedFolderIdsYes
archivedDocumentIdsYes
permissionDeniedIdsYes

TDQS

A4.9/5.0
Behavior5/5

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

With annotations declaring destructiveHint=true and idempotentHint=true, the description goes well beyond them: it discloses the effect ('leave listings and search; nothing is deleted'), the cascade rule ('archiving a folder also archives the contents that user can manage'), and partial-failure semantics via unresolvedIds and permissionDeniedIds with 'the rest are still archived.' This is exactly the extra behavioral context structured fields cannot express.

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?

Five short sentences, each earning its place, with the core action and scope front-loaded before the exclusions and error behavior. No filler or restatement of the tool name.

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?

An output schema exists so return values need not be detailed, yet the description still covers the ambiguous outcomes (unresolvedIds, permissionDeniedIds, partial success) and the cascade behavior. Everything an agent needs to call this safely on a batch of mixed ids is present.

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 coverage is 100% for the single `ids` parameter, so the baseline is 3. The description still adds meaning: ids may be a mix of document and folder ids, non-document/folder ids surface in unresolvedIds, and unauthorized ids surface in permissionDeniedIds without blocking the rest. That is useful semantics beyond the schema text.

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?

States a specific verb+resource ('Put documents or folders away') with batch scope ('including several at once'), and explicitly names the siblings it is not: 'Not move, and not a content edit — use edit_document to change content.' An agent can distinguish this from move, rename, and edit_document without opening any schema.

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?

Gives explicit when-not guidance ('Not move, and not a content edit') plus the correct alternative for content changes ('use edit_document'). The schema and description also point to fetch/fetch_folder for obtaining ids, so routing between siblings is fully covered.

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

comment_on_documentAInspect

Leave feedback on a document that is in review. Not an edit — use edit_document to change the document, and reply_to_thread to answer an existing comment. Pass documentId; this comments on the current review version and says so when there is none. Posted as the user's personal agent.

NameRequiredDescriptionDefault
commentYesThe comment text to post on the document
documentIdYesThe document to comment on. The server uses its current review version.
quotedTextNoOptional document text or exact custom-node HTML to anchor the comment to. Use one target, not both text and custom-node HTML.

Output Schema

NameRequiredDescription
statusYes
threadIdYes
documentVersionIdYesThe review version the comment was posted on

TDQS

A4.5/5.0
Behavior4/5

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

Annotations declare the safety profile (readOnlyHint=false, idempotentHint=false, destructiveHint=false), so the description's added value is the identity/attribution detail ("Posted as the user's personal agent") and the disclosed failure mode when the document has no current review version. That is meaningful context beyond the annotations, though return shape and permission requirements are left to the output schema.

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?

Three tight sentences, front-loaded with the core action, then exclusions, then invocation detail. No filler and nothing repeated from the schema verbatim.

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?

An output schema exists, so return values need not be explained. The description covers purpose, sibling alternatives, the required identifier, the review-version targeting rule, the empty-state behavior, and the posting identity — everything needed to call it correctly.

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 all three parameters are already documented, including documentId's server-side resolution to the current review version. The description restates documentId behavior but adds nothing about quotedText anchoring semantics. Baseline 3 applies 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?

States a specific verb and resource ("Leave feedback on a document") plus the scope qualifier "that is in review". It then names two siblings it is not — edit_document and reply_to_thread — so an agent can distinguish it without opening any schema.

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?

Explicitly sets the boundary: not an edit (route to edit_document) and not a reply (route to reply_to_thread). It also states the invocation prerequisite ("Pass documentId") and the conditional behavior when no review version exists.

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

create_documentAInspect

Create a NEW ProductNow document and generate its content with AI. Use this to persist knowledge the user wants remembered or shared across sessions and teammates — decisions, specs, RFCs, plans, meeting outcomes. Search with search first so you don't duplicate an existing document; to change an existing document use edit_document instead. File the document in an existing folder. Search results include each document's folderId; pass the folderId of the closest related document. If search does not show a fit, fetch_folder the root and walk folders until you have a folderId. Leave folderId off only when the user explicitly asked for the warehouse root. If no folder fits, call create_folder under the closest existing folder and pass that new folderId. Content is generated from prompt (the full outline: numbered sections, their titles, and what each should say) and context (verbatim source material the user supplied or explicitly authorized for this ProductNow document). Generation paraphrases: if exact wording must survive, put it in context and say so in prompt. Pass templateId only when you already have one. Returns the documentId and URL; generation continues after the call returns.

NameRequiredDescriptionDefault
nameYesDocument title (e.g., 'RFC: API Key Generation')
promptYesGeneration instruction for the document, including a full document outline (with numbered sections, each with a title and content)
contextNoSupporting material supplied by the user or explicitly authorized for this document. ProductNow attaches it as a .txt file for generation.
folderIdNoFolder to file the document in. Find it with search and fetch_folder before this call. Omit only when the user explicitly asked to create the document at the warehouse root.
templateIdNoTemplate ID — pass when applying a specific template

Output Schema

NameRequiredDescription
urlYes
documentIdYes

TDQS

A4.8/5.0
Behavior5/5

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

With annotations declaring readOnlyHint=false, idempotentHint=false, and destructiveHint=false, the description adds substantial behavioral context beyond the structured data. It explains that generation paraphrases content and that exact wording should be placed in `context` with an instruction in `prompt`; it also notes that the call returns a documentId and URL while generation continues asynchronously. This goes well beyond what annotations provide and helps the agent understand side effects and lifecycle.

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 front-loaded with the core purpose and then structured logically: when to use, folder filing workflow, content generation mechanics, and return behavior. Every sentence contributes actionable information, but the overall length is substantial and slightly dense for a tool description, which prevents a perfect score despite the absence of filler.

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 complexity of an AI-generated document tool with five parameters, folder-discovery prerequisites, and an output schema, the description is complete. It covers the full workflow from searching for duplicates to filing the document, explains how generation uses `prompt` and `context`, and notes the asynchronous nature of the result. Nothing an agent needs to call the tool correctly is missing.

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, but the description adds meaningful semantics: it explains that `prompt` is 'the full outline: numbered sections, their titles, and what each should say' and that `context` is 'verbatim source material' used for generation, including the paraphrasing behavior. It also clarifies when to pass `templateId` ('only when you already have one') and provides a detailed procedure for obtaining `folderId`. These additions go beyond 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 opens with a specific verb and resource: 'Create a NEW ProductNow document and generate its content with AI.' It then explicitly distinguishes this tool from siblings by telling the agent to use `search` first to avoid duplicates and `edit_document` to change an existing document. An agent can immediately tell what this tool does and how it differs from related 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 when-to-use guidance ('persist knowledge the user wants remembered or shared across sessions and teammates — decisions, specs, RFCs, plans, meeting outcomes'), when-not-to-use alternatives (`search` for discovery, `edit_document` for changes), and a detailed prerequisite workflow for finding a `folderId` via `search`, `fetch_folder`, or `create_folder`. It leaves no ambiguity about the recommended sequence of operations.

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

create_folderAInspect

Create a NEW folder only when no existing folder fits. Search with search and resultType folders first so you don't duplicate a folder; if that is not enough, fetch_folder the root and walk until you find the closest related folder. Nest under that folder by passing its id as parentFolderId. Omit parentFolderId only when the user explicitly asked for a root-level folder. Returns the new folder's id and name.

NameRequiredDescriptionDefault
nameYesThe display name of the new folder
parentFolderIdNoFolder to nest under. Search with resultType folders, or walk with fetch_folder, and pass the closest related folder's id. Omit only when the user explicitly asked for a root-level folder.

Output Schema

NameRequiredDescription
nameYes
folderIdYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false, destructiveHint=false, and idempotentHint=false; the description reinforces non-idempotent behavior by emphasizing 'NEW' and duplicate-avoidance workflow. It adds nesting semantics and the root-level condition, though it does not mention permissions or failure modes.

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?

Four sentences, all purposeful and ordered from decision logic to parameter guidance to return value. Slightly verbose in re-explaining the parentFolderId workflow that the schema also covers.

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?

An output schema exists, so return values need not be detailed, and the description still names them briefly. Decision workflow, nesting, and the root-level edge case are all covered for a two-parameter tool.

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 coverage is 100%, so both parameters are already documented with descriptions that closely mirror the tool text. The description adds little beyond restating the parentFolderId workflow, so baseline 3 applies.

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?

States a specific verb ('Create') and resource ('folder') with an explicit condition ('only when no existing folder fits') that distinguishes it from search and fetch_folder. An agent can immediately tell what this does and when it applies.

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?

Explicitly routes the agent: search with resultType folders first, fall back to fetch_folder and walk from root if needed, and reserve create for when no folder fits. Also gives the root-level exception for omitting parentFolderId. Covers when-to-use, alternatives, and exclusions.

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

create_help_documentAInspect

Create a new blank ProductNow help document. Only available to ProductNow users. Returns the document ID, help page publication ID, and a URL to the document editor where content can be added.

NameRequiredDescriptionDefault
categoryNoHelp page category — one of: GETTING_STARTED, CONTENT_CREATION, COLLABORATION, ADMINISTRATION, OTHER. Defaults to OTHER if omitted.

Output Schema

NameRequiredDescription
urlYes
documentIdYes
helpPagePublicationIdYes

TDQS

A4/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false and destructiveHint=false, which are sparse; they don't indicate mutation or destructive behavior clearly. The description adds substantial behavioral context: it states it creates a new blank document, is only for ProductNow users, and returns specific identifiers (document ID, help page publication ID, and editor URL). This goes beyond annotations and helps the agent understand the side effects and output.

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 a single, well-structured paragraph that front-loads the purpose ('Create a new blank ProductNow help document'), followed by audience restriction, and then the return value. Every sentence adds value; there is no fluff. It is concise and informative.

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?

The description covers the action, audience, and return values. It lacks explicit instructions on prerequisites beyond 'ProductNow users' (e.g., authentication or specific permissions), and it doesn't specify what 'blank' means for the help document (e.g., does it have any default content?). However, the output schema (which is not shown but indicated) likely details the return structure, so the description is sufficient for basic invocation. It is complete enough for an agent to understand the essential steps.

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 schema already describes the 'category' parameter with an enum and default, and the description's coverage is 100%. However, the description adds no additional semantic meaning for the parameter itself . But since the schema is exhaustive and the parameter is optional with a clear default, the description doesn't need to add much. The score is high because the schema covers it fully, and the baseline for high coverage is 3, but the description's mention of 'new blank' hints that category might influence the document type, adding slight value. I'll give 4 for the alignment.

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 verb ('Create'), the resource ('new blank ProductNow help document'), and the audience restriction ('Only available to ProductNow users'). It distinguishes this from siblings like 'create_document' by specifying 'help document' and the editor URL, which implies it's a special kind of document. The purpose is unambiguous.

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 mentions availability to ProductNow users, which is a prerequisite, but it does not explicitly state when to use this versus siblings like 'create_document' or 'import_prototype'. It doesn't provide exclusions or alternatives. The agent must infer the use case from the name and description.

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

edit_documentA
Destructive
Inspect

Edit an existing ProductNow document. This is the only tool that changes a document's content. It does not apply your edit directly: it hands message to the document's own editing agent, which reads the document and makes the change. Write message as instructions to that agent, not as the new document text. Name the section, say exactly what to add, replace, or remove, and quote text verbatim when the wording must be preserved. Include everything the agent needs, since it cannot see this conversation and will not ask follow-up questions. Returns before the edit finishes; poll get_status until status is idle (it stays running while any edit you sent is queued or in progress), then read the document to confirm the result. Do not use create_document — that creates a new document. Do not use rename — that only changes a name. Do not use reply_to_thread — that only adds discussion and never changes content.

NameRequiredDescriptionDefault
messageYesInstructions for the document's editing agent. Name the section and the change, and include any context the agent needs (e.g., 'In Executive Summary, replace the second paragraph with: …').
documentIdYesThe ID of the document to edit. Resolve it with search or fetch first.

Output Schema

NameRequiredDescription
statusYes

TDQS

A4.9/5.0
Behavior5/5

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

Annotations only flag destructive/not-readOnly; the description goes far beyond by disclosing the async delegation model (hands `message` to the document's own editing agent), that it returns before the edit finishes, that get_status stays 'running' while edits are queued, and that the agent cannot see the conversation or ask follow-ups.

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?

Long but dense with no filler: identity, mechanism, message-authoring rules, async/polling contract, and sibling exclusions are all front-loaded in logical order. Each sentence carries unique operational information.

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?

Despite an output schema existing, the description supplies the async lifecycle and confirmation procedure an agent critically needs, plus the boundary against three write-capable siblings. Nothing needed to invoke this tool correctly is missing.

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 coverage is already 100%, so the baseline is 3, but the description adds real semantic value: `message` must be written as instructions to the editing agent, not as replacement document text, with guidance to name sections and quote verbatim. This reframes how the parameter must be authored rather than restating 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?

States a specific verb and resource ('Edit an existing ProductNow document') and immediately establishes unique positioning: 'the only tool that changes a document's content.' An agent can distinguish it from all siblings on that basis alone.

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?

Explicit when-to-use (content changes) plus three named exclusions with reasons: create_document creates new, rename changes only a name, reply_to_thread never changes content. It also prescribes the post-call workflow (poll get_status until idle, then re-read).

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

fetchA
Read-onlyIdempotent
Inspect

Read one document you already have an id for. Pass documentId. The result includes the document's id, title, url, and full text, plus its sections, comment threads, and each comment's id. When the document is filed in a folder, the result includes that folder's folderId and folderName. Omit documentVersionId to read the latest draft; pass one to read that version and its comments. Version ids come from list_document_versions. Not a search — use search for a question or a topic. Not a folder listing — use fetch_folder to list a folder or the warehouse root.

NameRequiredDescriptionDefault
documentIdYesThe document to read. Use search to find document ids.
documentVersionIdNoReads that version and its comments. Omit to read the latest draft. Use list_document_versions to find version ids.

Output Schema

NameRequiredDescription
idYesDocument ID. Same as documentId.
urlYesCanonical URL of the document, for citations
nameYesThe document name.
textYesFull document text: every section joined in order.
titleYesDocument name. Same as name.
statusYes
threadsYes
folderIdNoThe folder this document is filed in. Omitted when the document is at the warehouse root.
sectionsYes
documentIdYes
folderNameNoThe name of the folder this document is filed in. Omitted when the document is at the warehouse root.
folderPathNo
resultTypeYes
versionNumberYes
documentVersionIdYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the description correctly focuses on behavior: what the read returns (full text, sections, comment threads, folderId/folderName) and the version semantics (omit versionId = latest draft, pass one = that version plus its comments). It stops short of pagination/size limits, which would matter for full-text reads.

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?

Front-loaded with the core action, then return shape, then version rules, then exclusions. Every sentence carries information, though the return-shape sentence partially duplicates the output schema and the version guidance echoes the schema.

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 two-parameter read with an output schema present, the description is complete enough: purpose, routing, version behavior, and result contents are all covered. Only operational details (pagination, truncation of full text) are absent.

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 both parameters, and the description's version guidance largely restates the documentVersionId schema text. The one added nuance is the emphasis that omitting the version reads the latest draft versus a pinned version, but that is also already 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?

Opens with a specific verb+resource and a precondition ('Read one document you already have an id for'), which immediately separates it from search. It further distinguishes itself from search and fetch_folder by name in the closing sentences.

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?

Explicit when-to-use ('you already have an id'), explicit when-not ('Not a search — use search for a question or a topic. Not a folder listing — use fetch_folder'), and it names the tool to obtain version ids (list_document_versions). Routing is unambiguous.

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

fetch_folderA
Read-onlyIdempotent
Inspect

List a folder you already have an id for, or the warehouse root. Pass folderId to list that folder's name, an optional parentFolderId to fetch and go up, and its direct contents. Each child folder and document includes its id, name, updatedAt, createdBy, and isPrivate. Each folder also includes contentCount, its direct documents plus subfolders, and subfolderCount, its direct child folders. Each document also includes its status: DRAFT, REVIEW, or PUBLISHED. A child folder also includes parentFolderId when it is nested, including a shared folder that shows up in the root listing but lives somewhere else; parentFolderId is omitted for a true top-level folder. Pass deep true with a folderId to return that folder and every nested folder as a tree, up to 15 levels, with each folder's documents inside it. deep is rejected for the warehouse root. Omit folderId to list the root one level: the top-level folders plus shared folders this user can see, not the whole warehouse and not other people's private folders. Not a search — use search to find a folder by name. Not a document read — use fetch to read a document.

NameRequiredDescriptionDefault
deepNoWith folderId, return that folder and every nested folder as a tree of names and ids, up to 15 levels. Omit or pass false to list only direct children. Rejected when listing the warehouse root.
folderIdNoThe folder to list. Pass deep true to return this folder and every nested folder. Omit deep to list only direct children. Omit to list the warehouse root one level.

Output Schema

NameRequiredDescription
nameNoThe folder name. Omitted when listing the root.
foldersYesChild folders. Without deep, each entry is identity plus updatedAt, createdBy, isPrivate, and parentFolderId when nested. With deep, each entry also nests its own documents and folders.
folderIdNoThe folder you fetched. Omitted when listing the root.
documentsYes
resultTypeYes
parentFolderIdNoThe parent folder. Fetch it to go up. Omitted at the root and for a top-level folder.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the description is free to add operational context instead of repeating it. It does: the 15-level depth cap, that deep is rejected for the root, and that parentFolderId is omitted for true top-level folders while appearing for nested/shared ones. This is genuine behavioral disclosure beyond the 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 listing semantics are front-loaded, then the return-field inventory, then the exclusions. It is long, and the enumeration of child fields (id, name, updatedAt, createdBy, isPrivate, contentCount, status, etc.) partly duplicates the output schema, but each sentence still carries usable scoping information.

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?

An output schema exists, so return values need not be re-explained, yet the description still clarifies field semantics (contentCount = direct docs + subfolders, status enum values, parentFolderId nesting behavior). Root vs folder vs deep modes are all covered, and sibling routing is handled.

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 coverage is 100% and both parameters are already documented in the schema, so the baseline is 3. The description restates the folderId/deep interaction ('Pass deep true with a folderId', 'deep is rejected for the warehouse root') which is largely duplicative of the schema descriptions rather than adding new syntax or edge-case detail.

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 opens with a specific verb+resource ('List a folder') and immediately scopes it ('you already have an id for, or the warehouse root'). It also explicitly distinguishes itself from two siblings ('Not a search — use search', 'Not a document read — use fetch'), so an agent can route correctly without opening any schema.

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?

Explicit when-to-use is given for each mode: pass folderId to list a folder, omit it to list the root, add deep=true for a recursive tree. Explicit when-not-to-use is stated via the search and fetch exclusions, plus the constraint that deep is rejected for the warehouse root.

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

get_statusA
Read-onlyIdempotent
Inspect

After edit_document or create_document, check whether the document is still being edited or the edits have finished. Pass documentId. Returns running or idle, and a short note of what the draft agent last did. Use it to poll: after sending one or more edits to the same document, call get_status until status is idle, then fetch the document to confirm the result. Edits queue behind each other, so idle means every edit sent so far has finished, not just the latest one. running means at least one edit is still queued or in progress. Not the chat transcript, and not a way to edit — use edit_document to change the document.

NameRequiredDescriptionDefault
documentIdYesThe document whose draft edit to check. Use the documentId returned by edit_document or create_document.

Output Schema

NameRequiredDescription
noteYesA short note of what the draft agent last did.
statusYesrunning while any edit is queued or in progress. idle once every edit sent so far has finished, so it is safe to fetch the document.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered; the description adds genuinely new behavioral context: the queueing semantics that 'idle' means every prior edit drained, not just the latest, and that a short note of the draft agent's last action is returned. That is non-obvious operational behavior beyond structured fields.

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 critical polling instruction is front-loaded and the negative scoping lands last, which is well ordered. It is slightly longer than needed because 'running means at least one edit is still queued or in progress' largely restates the idle definition from the opposite direction.

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?

With an output schema present, return values need not be re-explained, and the description covers the missing semantic layer (running vs idle meaning, queueing). Nothing an agent needs to poll correctly is absent.

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 coverage is 100% and the single parameter is fully described there as the documentId returned by edit_document or create_document. The description only restates 'Pass documentId' without adding format, sourcing, or edge-case detail, so the baseline 3 applies 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 states a specific verb and resource (check whether a document is still being edited) and explicitly scopes it to the post-edit/create lifecycle. It distinguishes itself from siblings by stating what it is not ('not the chat transcript, and not a way to edit'). An agent can identify this as a status/polling tool without opening the schema.

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?

It names the exact triggering conditions (after edit_document or create_document), the polling loop (call until status is idle, then fetch), and the alternative to use for mutation (edit_document). This is explicit when-to-use, when-to-stop, and what-not-to-use guidance.

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

list_actionsA
Read-onlyIdempotent
Inspect

List the installed ProductNow actions this user can view. Call this before starting an action, so you know each action's id and whether it needs runtime input. Webhook actions include runtimeInputSchema, the JSON Schema of the object to supply. Schedule and event actions set runtimeInputSchema to null and take no runtime input. A paused action is still listed. This does not start a run.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
actionsYesAccessible actions, in the same order listActions returns them.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, and closed-world behavior. The description adds useful context beyond annotations: webhook actions expose runtimeInputSchema, schedule/event actions set it to null, paused actions remain listed, and it does not start a run. Permissions are implied by 'this user can view', though auth/rate-limit details are not stated.

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 first sentence front-loads the resource and scope, and each subsequent sentence adds actionable behavior: pre-run use, runtimeInputSchema rules, paused-action edge case, and the fact that it does not start a run. There is no filler.

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?

An output schema exists, so the description need not detail return values, and annotations cover safety traits. It supplies the pre-call workflow, runtime-input distinctions, and paused caveat, which is complete enough for an agent to invoke it correctly.

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 tool has zero input parameters and an empty schema, so the baseline is 4. The description explains runtimeInputSchema as an output field for action configuration, but there are no input parameters needing clarification.

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?

States a specific verb ('List') and resource ('installed ProductNow actions this user can view'), including the user-viewable scope. The final sentence distinguishes it from run_action by clarifying that it does not start a run.

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?

Explicitly instructs to call this before starting an action so the agent knows each action's id and runtime-input needs, which ties it to run_action. It lacks a direct 'do not use if...' exclusion or named alternative, but the usage context is clear.

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

list_document_versionsA
Read-onlyIdempotent
Inspect

List every version of a document when the user asks what changed, or you need an older version before calling fetch. Pass documentId. Returns each version's id, version number, status, and when it was created, newest first. Pass a returned documentVersionId to fetch with the documentId to read that version and its comments. Omit it and fetch reads the latest draft.

NameRequiredDescriptionDefault
statusNoFilter by version status: DRAFT, REVIEW, PUBLISHED, SNAPSHOT, OUTDATED, or ARCHIVED. Omit to return every version. These are statuses, not the snapshot, review, and publish action verbs accepted by update_document_status.
documentIdYesThe ID of the document whose versions to list

Output Schema

NameRequiredDescription
versionsYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered. The description adds genuine context beyond them: the ordering of results (newest first), the fields returned per version, and the follow-up fetch contract. A minor gap is that filtering by status is only surfaced in the schema, not the prose.

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?

Front-loads purpose, then return shape, then the fetch workflow, with no filler sentences. It runs slightly long for a two-parameter list tool, but the fetch chaining information justifies the extra length.

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?

An output schema exists and return values would not need restating, yet the description still supplies ordering and the downstream fetch contract. Combined with the schema's status enum documentation, an agent has everything needed to call it and use its results correctly.

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 coverage is 100%, so both documentId and the status enum are fully documented in the schema itself. The description only repeats "Pass documentId" and adds no syntax or semantic detail beyond it, which is the baseline case 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?

States a specific verb and resource ("List every version of a document") and implicitly separates itself from siblings like fetch and update_document_status. An agent can identify this as the version-listing tool without opening the schema.

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?

Gives explicit triggers ("when the user asks what changed, or you need an older version before calling fetch") and names the complementary tool fetch, including the exact contract (pass returned documentVersionId to fetch, omit it for the latest draft). Both when-to-use and how it chains to alternatives are spelled out.

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

moveA
Destructive
Inspect

Move documents or folders into another folder, including several at once. Pass ids, a mix of document ids and folder ids, plus one parentFolderId. Omit parentFolderId to file everything at the root. Does not change document content — use edit_document for that. Moves every id it can. Ids the user cannot move come back in permissionDeniedIds. A folder moved into itself or into one of its descendants comes back in refusedIds and stays where it is. Ids that are not a document or folder here come back in unresolvedIds. The rest are still moved.

NameRequiredDescriptionDefault
idsYesDocument ids and folder ids to move, mixed together. Use fetch for a document and fetch_folder for a folder.
parentFolderIdNoThe folder to move every id into. Omit to move them all to the root.

Output Schema

NameRequiredDescription
refusedIdsYesFolder ids left in place because the destination is the folder itself or one of its descendants.
unresolvedIdsYes
movedFolderIdsYes
movedDocumentIdsYes
permissionDeniedIdsYes

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already flag destructive/mutating behavior, and the description goes well beyond them by disclosing partial-failure semantics: it moves every id it can, and reports permissionDeniedIds, refusedIds (self/descendant folder loops), and unresolvedIds while still moving the rest. This is exactly the failure-mode context an agent needs for a destructive batch operation.

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 core action and its key constraint are front-loaded, and every following sentence carries non-redundant information about partial success and per-id failure buckets. No filler.

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?

Output schema exists, yet the description still helpfully names the failure result fields; annotations cover the safety profile. For a two-parameter destructive batch tool, nothing needed to invoke it correctly is missing.

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 coverage is 100% and both parameters are already documented in the schema, including the root-filing behavior of omitting parentFolderId. The description restates the same semantics ('a mix of document ids and folder ids', 'Omit parentFolderId to file everything at the root') without adding syntax or format detail beyond the schema, so baseline 3 applies.

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?

Specific verb and resources ('Move documents or folders into another folder'), plus explicit scope detail (multiple ids, mixed document/folder ids). It distinguishes itself from the sibling edit_document by stating it does not change content, so an agent can route correctly without opening a schema.

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?

Covers when to use (moving one or many items), how to target the root (omit parentFolderId), and when to use an alternative tool ('Does not change document content — use edit_document for that'). The only unstated alternative is archive, which is a minor omission.

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

rememberA
Destructive
Inspect

Store one piece of information in ProductNow when the user says 'remember this', 'save this', or 'note that…' about their company, product, customers, or team. Pass the fact as content; ProductNow decides where it belongs — it searches the warehouse, edits the existing document that covers the topic, or creates a new one in the right folder. ProductNow handles search, folder selection, and document choice within the background job, so separate search, fetch, or placement is not needed. Returns success immediately; a success response means the job was queued and processing continues in the background. Polling is not supported. Use edit_document or create_document instead only when the user already named the exact document or outlined a whole new document.

NameRequiredDescriptionDefault
hintNoOptional placement hint: a document or folder name, or a topic the user named. Omit it rather than passing a blank string.
contentYesThe information to remember, verbatim. Include the context needed to understand it on its own (who, what, when). Cannot be blank.

Output Schema

NameRequiredDescription
statusYes

TDQS

A4.8/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing the async contract: an immediate success response only means the job was queued, and polling is not supported. It also explains the internal placement behavior (search warehouse, edit existing doc, or create new) that justifies destructiveHint=true, and confirms no extra search/fetch steps are required.

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?

Front-loads the trigger phrases and the core action, then layers async semantics and alternatives. Four sentences with minimal waste, though the alternative-tool sentence is slightly dense.

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 an output schema exists and annotations cover the safety profile, the description fills the remaining gaps: async/background semantics, lack of polling, and routing to edit_document/create_document. Nothing material is missing.

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 coverage is 100%, so the baseline is 3, but the description adds real meaning: content is 'the fact' to store and the hint is unnecessary when ProductNow chooses placement itself. It does not, however, elaborate on the verbatim/context requirements already captured 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?

States a specific verb and resource (store one piece of information in ProductNow) plus the triggering user phrases. It distinguishes itself from edit_document, create_document, and search by explicitly declining their roles.

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?

Gives explicit when-to-use triggers ('remember this', 'save this', 'note that…'), what not to do (no separate search/fetch/placement needed), and names the alternatives (edit_document, create_document) with the precise condition that selects them.

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

renameA
DestructiveIdempotent
Inspect

Change a document or folder's name. Pass one id — a document id or a folder id — and name. Changes the name only. Does not change document content; that is edit_document. One item per call, because each item gets its own name.

NameRequiredDescriptionDefault
idYesThe document id or folder id to rename. Use fetch for a document and fetch_folder for a folder.
nameYesThe new name.

Output Schema

NameRequiredDescription
idYes
kindYesdocument or folder
nameYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so safety/idempotency are covered. The description adds meaningful scope context beyond them: only the name changes, content is untouched, and each call touches exactly one item. It does not describe permission requirements or failure behavior, keeping it short of a 5.

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?

Four short sentences, front-loaded with the action and scope; each sentence carries distinct information (what changes, what doesn't, the sibling for content edits, the one-item constraint). No filler.

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?

For a two-parameter mutation tool with an output schema and full schema coverage, the description supplies the remaining essentials: scope of the change, the batching constraint, and the boundary against edit_document. Nothing an agent needs to call it correctly is missing.

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 both parameters are already documented in the schema, including the id/folder-id distinction and the fetch pointers. The description's 'Pass one id' adds only marginal emphasis, so the baseline 3 applies.

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?

States a specific verb+resource ('Change a document or folder's name') and immediately scopes it against the nearest sibling by ruling out content changes ('that is edit_document'). An agent can distinguish rename from edit_document, move, and archive without opening any schema.

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?

Explicitly names the alternative for content changes and states the batching constraint ('One item per call'). It stops short of clarifying when to prefer rename over move or archive for reorganizing items, so it is clear context rather than full when/when-not coverage.

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

reply_to_threadAInspect

Reply to an existing comment thread on a document, posted as the user's personal agent. Not an edit — use edit_document to change the document's content. Pass threadId from a document fetch.

NameRequiredDescriptionDefault
messageYesThe reply message to post in the thread
threadIdYesThe ID of the comment thread to reply to.

Output Schema

NameRequiredDescription
statusYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=false. The description adds genuinely new context: the reply is posted as the user's personal agent, which tells the agent the authorship identity and implies a visible write side effect.

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?

Three short sentences, no filler, with the core action stated first, the exclusion second, and the parameter hint last.

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?

An output schema exists so return values need not be described, and the two required params are covered. Everything needed to select and call the tool correctly is present.

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 coverage is 100% so the baseline is 3, but the description adds provenance for threadId ("from a document fetch"), which the schema itself does not explain — a real, useful addition to a required parameter.

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?

States a specific verb (reply) and resource (existing comment thread on a document) plus the acting identity. It is immediately distinguishable from document-mutating siblings like edit_document.

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?

Explicitly excludes the wrong tool ("Not an edit — use edit_document") and tells the agent where the threadId comes from. It does not, however, clarify when to reply to an existing thread versus starting one with comment_on_document.

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

run_actionA
Destructive
Inspect

Start an installed ProductNow action and return immediately. Call list_actions first and pass its actionId. When runtimeInputSchema is null, pass runtimeInput as null. When it is an object, pass runtimeInput that matches that schema. An empty object is valid when the schema has no required fields. A paused action can still be started. The run continues after this returns.

NameRequiredDescriptionDefault
actionIdYesInstalled action to start. Use an actionId from list_actions.
runtimeInputYesRuntime input for an action. Pass null when runtimeInputSchema is null. An empty object is valid when the schema has no required fields.

Output Schema

NameRequiredDescription
urlYesWorkspace URL that opens this run.
actionRunIdYesThe run that was queued.

TDQS

A4.2/5.0
Behavior4/5

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

The description adds behavior beyond the annotations by disclosing the asynchronous contract ("return immediately", "the run continues after this returns") and the non-obvious rule that a paused action can still be started. It stops short of warning that the annotations mark this as destructive and open-world, so the agent gets no signal about side effects outside ProductNow.

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?

Six short sentences, front-loaded with the verb and the async behavior, then prerequisites, then parameter edge cases. Nothing is padded and each sentence carries a distinct instruction.

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?

An output schema exists, so return values need not be described, and the async and paused-action semantics fill the main behavioral gap. Slightly incomplete because it never mentions failure modes, retry behavior, or the destructive side effects flagged in annotations.

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 explains actionId provenance and the null/empty-object rules for runtimeInput. The description restates those same null-versus-object rules with no added syntax, format, or example, so this is baseline territory.

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?

"Start an installed ProductNow action and return immediately" names a specific verb and resource, and the immediate-return qualifier instantly separates it from siblings like list_actions or get_status. An agent can tell what the tool does without opening the schema.

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?

It explicitly requires calling list_actions first to obtain the actionId, which is the key prerequisite. It does not, however, state when an agent should avoid this tool or what the alternatives are for monitoring or retrying a run.

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

update_document_statusA
Destructive
Inspect

Change a document's lifecycle when the user wants a snapshot, a review, or to publish. Pass documentId and status as an action verb — snapshot, review, or publish — not a version status. snapshot saves a read-only copy of the current draft, review opens that draft for comments, and publish makes it the published version. Each one leaves a fresh draft for later edits. Returns previousStatus and status as version statuses such as DRAFT, SNAPSHOT, REVIEW, or PUBLISHED, the same values list_document_versions filters on. Not move, which files documents and folders into a folder, and not a way to check whether an edit is still running.

NameRequiredDescriptionDefault
statusYesAction verb, not a version status. snapshot saves a read-only copy of the current draft. review opens that draft for comments. publish makes it the published version. Do not pass DRAFT, REVIEW, PUBLISHED, or SNAPSHOT — those are the statuses list_document_versions returns and filters on.
documentIdYesThe document whose current draft should change status.

Output Schema

NameRequiredDescription
statusYesVersion status after the change, such as SNAPSHOT, REVIEW, or PUBLISHED. Not an action verb.
documentIdYes
previousStatusYesVersion status before the change, such as DRAFT. Not an action verb.
documentVersionIdYes
newDraftDocumentVersionIdNo

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnly=false, destructive=true, and non-idempotent, so the safety profile is covered. The description adds genuine behavioral context beyond that: the side effect that each action leaves a fresh draft for later edits, and the return contract (previousStatus/status). It does not discuss reversibility or permissions, but with annotations carrying the destructive signal this is a solid contribution.

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?

Front-loaded with purpose, then verb semantics, then return values, then exclusions, so the agent can stop reading early. Slightly redundant because the verb-to-effect mapping is repeated verbatim in the schema, but the description remains dense and purposeful.

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?

For a two-parameter mutation tool with an output schema and full annotation coverage, the description supplies everything needed: when to call it, what each enum does, what it returns, and what it is not. No material gap remains.

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 coverage is 100%, so the baseline is 3. The description goes further by framing 'status' as an action verb, warning against passing version statuses, and mapping each enum value to its effect and its resulting return values, which helps the agent avoid a common invocation error.

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 states a specific verb and resource (change a document's lifecycle) and enumerates the exact operations (snapshot, review, publish) with what each does. It actively differentiates from siblings by naming 'move' as the wrong tool and distinguishing the action verbs from version statuses.

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?

Explicit triggering condition is given ('when the user wants a snapshot, a review, or to publish'), alternatives are ruled out ('Not move, which files documents and folders into a folder'), and a mistaken usage is precluded ('not a way to check whether an edit is still running').

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

upload_mediaAInspect

Upload a media file (image or video) to ProductNow storage. Returns a signed backend uploadUrl valid for 5 minutes for transfer of the user-selected file. Also returns a url and htmlText you can embed in documents immediately.

NameRequiredDescriptionDefault
fileNameYesOriginal file name including extension (e.g. 'screenshot.png', 'recording.mp4')
mimeTypeYesMIME type of the file. Allowed: image/png, image/jpeg, image/gif, image/webp, video/mp4, video/webm, video/quicktime

Output Schema

NameRequiredDescription
urlYes
htmlTextYes
uploadUrlYes
storageObjectIdYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare the write/openWorld/non-idempotent profile, and the description adds real value on top: a two-step flow where the returned signed `uploadUrl` is valid only 5 minutes and the actual transfer happens afterwards. That timeout and flow detail is not derivable from the annotations or schema.

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?

Three sentences, zero filler, and the core action is front-loaded before the return-value details. Every sentence carries a distinct fact.

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?

An output schema exists, so return values need not be explained, but the description usefully clarifies the two-step upload semantics and the 5-minute expiry. It stops short of stating auth requirements or what happens if the signed URL expires mid-transfer.

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% with both parameters documented including allowed MIME types, so the baseline is 3. The description adds no parameter-level detail beyond what the schema already provides.

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?

States a specific verb and resource: 'Upload a media file (image or video) to ProductNow storage.' The parenthetical even scopes the accepted file categories, so an agent can identify the operation without opening the schema.

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?

Usage is implied rather than stated: the agent can infer this is the tool for getting a file into storage, but there is no explicit when-to-use, no prerequisites (e.g. auth/workspace requirement), and no mention of alternatives. No sibling upload tool exists to route against, which softens the gap.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updates
    • Addedlist_actions
    • Addedrun_action
  2. 1 tool update
    • Changedcreate_document1 field changed
      • changedInput schema / properties / context / description
        Previous value: -"Supporting context or notes to attach as a .txt file — read from a referenced file if the user names one"New value: +"Supporting material supplied by the user or explicitly authorized for this document. ProductNow attaches it as a .txt file for generation."
  3. 29 tool updates
    • Addedarchive
    • Addedcomment_on_document
    • Changedcreate_document1 field changed
      • changedInput schema / properties / folderId / description
        Previous value: -"Folder ID to place the document in — use list_folders to find the target folder"New value: +"Folder to file the document in. Find it with search and fetch_folder before this call. Omit only when the user explicitly asked to create the document at the warehouse root."
    • Removedcreate_document_comment
    • Changedcreate_folder1 field changed
      • changedInput schema / properties / parentFolderId / description
        Previous value: -"The ID of the parent folder to nest the new folder inside. Omit to create a root-level folder."New value: +"Folder to nest under. Search with resultType folders, or walk with fetch_folder, and pass the closest related folder's id. Omit only when the user explicitly asked for a root-level folder."
    • Addededit_document
    • Addedfetch
    • Addedfetch_folder
    • Removedget_document
    • Removedget_document_chat
    • Removedget_document_feedback
    • Removedget_document_threads
    • Addedget_status
    • Removedget_thread_messages
    • Removedimport_prototype
    • Changedlist_document_versions1 field changed
      • changedInput schema / properties / status / description
        Previous value: -"Filter versions by status. Omit to return all versions regardless of status."New value: +"Filter by version status: DRAFT, REVIEW, PUBLISHED, SNAPSHOT, OUTDATED, or ARCHIVED. Omit to return every version. These are statuses, not the snapshot, review, and publish action verbs accepted by update_document_status."
    • Removedlist_folders
    • Removedlist_help_documents
    • Addedmove
    • Removedmove_document_to_review
    • Removedpost_document_chat_message
    • Addedremember
    • Addedrename
    • Changedreply_to_thread1 field changed
      • changedInput schema / properties / threadId / description
        Previous value: -"The ID of the comment thread to reply to. Use get_document_threads to find thread IDs."New value: +"The ID of the comment thread to reply to."
    • Addedsearch
    • Removedsearch_folders
    • Removedsearch_knowledge_warehouse
    • Removedswitch_document_chat_edit_mode
    • Addedupdate_document_status
  4. 1 tool update
    • Changedcreate_document2 fields changed
      • addedInput schema / properties / templateId
        Added value: +{
        +  "description": "Template ID — pass when applying a specific template",
        +  "type": "string"
        +}
      • removedInput schema / properties / templateVersionId
        Removed value: -{
        -  "description": "Template version ID — pass when applying a specific template",
        -  "type": "string"
        -}
  5. 1 tool update
    • Changedpost_document_chat_message2 fields changed
      • removedInput schema / properties / documentVersionId
        Removed value: -{
        -  "description": "The ID of the document version to post a chat message to",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "documentId",
        -  "documentVersionId",
        -  "message"
        -]New value: +[
        +  "documentId",
        +  "message"
        +]
  6. 20 tool updates
    • First observedcreate_document
    • First observedcreate_document_comment
    • First observedcreate_folder
    • First observedcreate_help_document
    • First observedget_document
    • First observedget_document_chat
    • First observedget_document_feedback
    • First observedget_document_threads
    • First observedget_thread_messages
    • First observedimport_prototype
    • First observedlist_document_versions
    • First observedlist_folders
    • First observedlist_help_documents
    • First observedmove_document_to_review
    • First observedpost_document_chat_message
    • First observedreply_to_thread
    • First observedsearch_folders
    • First observedsearch_knowledge_warehouse
    • First observedswitch_document_chat_edit_mode
    • First observedupload_media

Publisher details

Operator
ProductNow
Operator website
https://productnow.ai/
Vendor relationship
First-party
Restrictions
Not applicable

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables coding agents to access structured product context (decisions, goals, evidence) from meetings and tools, ensuring they build from actual product decisions.
    0
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Connects AI coding tools to an Atono workspace, offering 41 tools to read and write stories, bugs, epics, subtasks, acceptance criteria, timeboxes, glossary, and AI context so agents work with real product knowledge.
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI coding agents to access persistent, structured product context (personas, journeys, specs, decisions, domain rules) on demand, eliminating the need to re-explain product knowledge each session.
    9 npm
    1
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.