Skip to main content
Glama

Server Details

Cloud or self-hosted knowledge for AI agents: hybrid search, reranking, GraphRAG, scoped MCP tools.

Ownership verified
Status
Healthy
Uptime
47.7% over 42 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
HiAi-gg/docsmint
GitHub Stars
55
Server Listing
DocsMint

TDQS

A4/5.0

Scored across 22 tools

Disambiguation4/5

Most tools have distinct resource+action purposes, and descriptions explicitly cross-reference the batch_documents alternative to steer selection. However, batch_documents overlaps functionally with several single-document tools (trash, restore, tag, refresh, move), and delete_document/permanently_delete_document plus the two restore_* tools require careful reading to separate, so a few boundaries are only clarified by prose rather than by name.

Naming Consistency4/5

Nearly all tools follow a clean snake_case verb_noun convention (delete_folder, save_tag, read_document, list_trash). Minor deviations: batch_documents uses a noun-ish verb, permanently_delete_document stacks an adverb before the verb, and the save_* create-or-update pattern differs from the delete_*/list_* verbs, but overall the scheme is predictable.

Tool Count4/5

22 tools is on the heavy side of the ideal 3–15 band, but the domain (documents, folders, categories, tags, trash, versions, indexing, graph) genuinely justifies the breadth. Each tool maps to a distinct operation rather than padding, so it is slightly over-scoped but reasonable.

Completeness4/5

The surface covers the full lifecycle: create/read/update/delete for documents, folders, categories, and tags, plus trash, restore, versioning/snapshots, index status/refresh, graph exploration, and batch operations. Minor gaps exist (no dedicated move/duplicate document tool outside save_document update or batch move, no comment or sharing tools), but core workflows have no dead ends.

Available Tools

22 tools
batch_documentsA
Destructive
Inspect

Use for multiple explicitly selected documents that need the same action; for one document prefer the matching single-document tool. Accepts 1–25 IDs for automation compatibility. Supports move, set_category, add_tag, remove_tag, trash, restore, or refresh_index. Processes sequentially through the existing API with a permission check per document and a per-ID result; partial success is possible. Stops after authentication or rate-limit failure. Never expands a search result or permanently purges documents; version restore is separate.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
totalYes
actionYes
failedYes
abortedYes
resultsYes
succeededYes

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: sequential processing, a permission check per document, per-ID results, partial success, and a hard stop on auth or rate-limit failure. It also explicitly states it never permanently purges and never expands a search result, which clarifies the destructiveHint=true boundary. This is exactly the operational detail annotations cannot carry.

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?

Dense but front-loaded: the primary selection rule comes first, then capabilities, then failure semantics, then non-goals. Every clause carries information, though the semicolon-chained sentences are slightly heavy to parse.

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-shape detail is unnecessary, and the description covers selection scope, action set, ordering, failure mode, and explicit non-goals. An agent has everything needed to invoke this correctly across all seven action variants.

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% and the schema itself documents each action's const and the documentIds range, so the baseline is 3. The description adds value by listing the action vocabulary in one place and stating the 1–25 ID limit and the no-search-expansion rule, letting an agent choose the right oneOf branch without reading every variant.

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 precise scope statement — batch operations for multiple explicitly selected documents sharing one action — and immediately contrasts it with the single-document siblings. It enumerates the supported actions (move, set_category, add_tag, remove_tag, trash, restore, refresh_index), so an agent knows exactly 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 Guidelines5/5

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

Explicit routing: 'for one document prefer the matching single-document tool,' plus the constraint that it never expands a search result and that version restore is a separate tool. The 1–25 ID bound is called out for automation compatibility. When-to-use and when-not-to-use are both stated.

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

create_snapshotAInspect

Save a named snapshot of an existing document before a planned change. The snapshot can later be restored with restore_document_version.

ParametersJSON Schema
NameRequiredDescriptionDefault
labelYesSnapshot label, from 1 to 200 characters.
documentIdYesUUID returned by the corresponding list or read operation.
descriptionNoOptional snapshot note, at most 1000 characters.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
labelNo
contentYes
createdAtYes
createdByYes
documentIdYes
isSnapshotNo
contentJsonNo
descriptionNo
restoredFromNo

TDQS

A4/5.0
Behavior3/5

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

The description adds that the snapshot is restorable, which is useful context beyond the annotations. However, the annotations declare idempotentHint=false, meaning repeated calls create additional snapshots, and the description never warns that calling this twice produces duplicate snapshots or what happens on label collisions.

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?

Two tight sentences, front-loaded with the action and its purpose. Every clause earns its place with no redundancy.

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-value explanation is unnecessary, and the operation is simple enough that little else is required. A brief note on duplicate labels or snapshot retention behavior would make it complete.

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 documentId, label, and description are already fully documented in the schema. The description adds no parameter-level detail (e.g., label uniqueness or naming conventions) beyond what the schema provides. 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+resource ('Save a named snapshot of an existing document') with the timing rationale ('before a planned change'). It clearly distinguishes itself from siblings like save_document and restore_document_version.

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?

Gives explicit context for when to use it (prior to a planned change) and names the counterpart tool restore_document_version for the reverse operation. No explicit when-not guidance, 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.

delete_categoryA
Destructive
Inspect

Delete a workspace category and detach its documents without deleting them. Requires full workspace write access; category-scoped credentials are denied.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesUUID returned by the corresponding list or read operation.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
deletedYes

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already flag destructiveHint=true and idempotentHint=false, but the description adds the critical qualifier that documents are only detached and preserved — the single most important fact for an agent deciding whether this destructive op is safe. It also discloses the authorization boundary that category-scoped credentials will fail.

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?

Two tight sentences with zero filler; the scope-defining side effect (documents preserved) is front-loaded, and the authorization constraint follows as a secondary condition.

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 no explanation, and the description covers side effects, auth scope, and a single fully-documented parameter. It stops short of stating whether the deletion is recoverable or requires confirmation, which matters for a destructive, non-idempotent operation.

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?

Only one parameter, and schema coverage is 100% with the schema itself explaining that the UUID comes from a preceding list/read operation. The description adds no syntax, format, or sourcing detail beyond what the schema already provides, so the baseline of 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?

Names a specific verb (Delete) plus resource (workspace category) and immediately states the distinguishing side effect (documents are detached, not deleted). This separates it cleanly from siblings like delete_document, delete_folder, and delete_tag, whose cascade semantics differ.

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?

Gives an explicit prerequisite and a negative condition: full workspace write access is required and category-scoped credentials are denied. It does not, however, name an alternative tool or say when to prefer this over e.g. delete_tag or delete_folder in ambiguous cases.

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

delete_documentA
Destructive
Inspect

Move one document to trash without purging content or versions. Use batch_documents(action=trash) for multiple explicit IDs. Requires write access and an explicit delete request; permanently_delete_document is a separate irreversible action.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesUUID returned by the corresponding list or read operation.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
deletedYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and readOnlyHint=false, but the description adds meaningful context: the operation is a reversible trash move rather than a purge, and it requires write access plus an explicit delete request. It does not discuss error behavior or restore paths, but the recoverability framing is genuinely additive.

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 that front-load the core action, then alternatives, then prerequisites and the dangerous look-alike. 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 return values need no explanation, and the description covers the recoverability semantics, alternatives, and access requirement an agent needs to invoke this destructive-looking but non-purging tool 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?

Only one parameter and schema coverage is 100%, with the schema already explaining that id is the UUID from a list/read operation. The description adds no syntax or format detail beyond the schema, 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 and resource (move one document to trash) plus the crucial scope detail that content and versions are not purged. It is immediately distinguishable from batch_documents and permanently_delete_document.

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 single-ID use here versus batch_documents(action=trash) for multiple IDs, and names permanently_delete_document as the separate irreversible alternative. When-to-use and when-not-to-use are both covered.

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

delete_folderA
Destructive
Inspect

Delete a folder while preserving its documents; child folders and documents are detached under the API rules. Requires write access.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesUUID returned by the corresponding list or read operation.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
deletedYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true, but the description adds genuine value beyond them: it discloses that documents survive, that child folders/documents are detached, and that write access is required. This is the kind of mutation-behavior detail annotations cannot convey.

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?

Two tight clauses with zero waste; the core action and its key consequence are front-loaded before the permission requirement.

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 single-param destructive tool with an output schema and full annotation coverage, the description is essentially complete: it covers the mutation effect, side effects, and permission need. Only explicit alternative-routing 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 the single 'id' parameter (UUID from a list/read operation) is already fully documented. The description adds no syntax or format detail, so baseline 3 applies.

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 states a specific verb+resource ('Delete a folder') and clarifies the scope semantically ('while preserving its documents'), which meaningfully differentiates it from delete_document and delete_category. It stops just short of naming the sibling alternatives, but the operation 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 Guidelines3/5

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

Usage is implied by the behavioral note that documents are preserved and children detached, which suggests when this tool is preferred over a hard delete. However, it never states when to use this versus delete_document or permanently_delete_document, nor any exclusions.

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

delete_tagA
Destructive
Inspect

Delete a workspace tag and remove its document assignments. Full workspace write access is required; documents themselves remain.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesUUID returned by the corresponding list or read operation.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
deletedYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the mutation profile is covered. The description adds real value beyond that: it names the required permission level (full workspace write access) and clarifies the blast radius (tag assignments removed, documents preserved).

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?

Two short sentences, zero filler, with the destructive scope and permission requirement front-loaded ahead of the reassurance about documents.

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, and the annotations plus description cover permissions and side effects. It stops short of stating whether the deletion is recoverable or whether tags must be unassigned first, a minor gap for a destructive operation.

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?

Single id parameter with 100% schema description coverage, so the schema fully documents syntax and origin. The description adds no parameter-level detail, which is the expected baseline when the schema does the work.

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 (delete) plus resource (workspace tag) and its side effect (removing document assignments) in one front-loaded clause. This clearly differentiates it from siblings like delete_document, delete_folder, and delete_category.

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?

No explicit when-to-use or when-not-to-use guidance relative to alternatives such as delete_category or set_document_tag. However, 'documents themselves remain' implicitly signals this is not a document-deletion path, which is useful disambiguation.

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

explore_graphA
Read-onlyIdempotent
Inspect

Explore graph relations from readable seed documents. mode=neighbors traverses one document without a query; mode=search ranks relations from one or more seed IDs with optional query text.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description's added value is the conceptual difference between a query-free traversal and a query-ranked search, but it says nothing about result volume, limits, or authorization beyond what the schema states.

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?

Two tightly packed sentences with zero filler; the mode contrast is front-loaded after the core purpose statement. Every clause carries distinct information.

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 both union branches of the input are explained at a conceptual level. It is nearly complete; only limit/pagination behavior and any authorization prerequisites are left implicit in the schema.

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 every parameter already carries documentation (mode consts, limit bounds, UUID formats, docIds 1-50, query max length). The description merely restates the mode/query relationship, adding no syntax or format detail beyond the schema, which is the expected baseline of 3.

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?

States a specific verb (explore) and resource (graph relations) plus the origin of the data (readable seed documents). The two operating modes are named and contrasted, which makes the tool easy to tell apart from the CRUD-oriented siblings, though it never explicitly notes that it is the only graph tool among them.

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?

Gives clear mode-selection conditions: neighbors for a single document with no query, search for one or more seed IDs with optional query text. It does not address when to prefer this tool over read_document or find_documents, so it stops short of full alternative routing.

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

find_documentsA
Read-onlyIdempotent
Inspect

Find readable documents in the active scope. Use mode=list for paginated browsing by folder or tag UUID; use mode=search for hybrid text and semantic retrieval with tag names.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

Annotations already cover readOnly, idempotent, openWorld=false and destructive=false, so the safety profile is established. The description adds real context beyond that: results are limited to 'readable' documents, are scoped to the 'active scope', and search is hybrid text-plus-semantic rather than plain substring matching.

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?

Two sentences, zero filler, with the core purpose front-loaded and the mode branches laid out in parallel clauses. Every clause earns its place by driving a distinct invocation path.

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?

With a full output schema, rich annotations, and 100% schema description coverage, the description only needs to supply mode-selection intent, which it does. Minor gaps remain on pagination semantics, but those are adequately carried by the schema.

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 baseline is 3. The description's 'by folder or tag UUID' vs 'with tag names' phrasing mirrors the type distinction the schema already encodes, adding little beyond it, and it says nothing about page/limit behavior.

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?

States a specific verb and resource ('Find readable documents in the active scope') and immediately disambiguates its two operating modes. However, it never distinguishes itself from nearby siblings such as read_document or list_trash, so an agent must rely on names alone to route among them.

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 prescribes when to pick each mode: list for 'paginated browsing by folder or tag UUID' and search for 'hybrid text and semantic retrieval with tag names'. There is no guidance on when not to use this tool versus read_document, but the internal when-to-use routing is clear.

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

get_document_index_statusA
Read-onlyIdempotent
Inspect

Read current indexing and pipeline status for one document without starting work. Use refresh_document_index only when an explicit retry is intended.

ParametersJSON Schema
NameRequiredDescriptionDefault
documentIdYesUUID returned by the corresponding list or read operation.

Output Schema

ParametersJSON Schema
NameRequiredDescription
pipelineYes
documentIdYes
searchableYes
embeddingStatusYes
embeddingProfileYes
activeGenerationIdYes
embeddingErrorCodeYes
embeddingUpdatedAtYes
pendingGenerationIdYes

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 meaningful context beyond them: this call does not start indexing work, and retry behavior belongs to a separate tool. It does not discuss returns, but an output schema exists.

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?

Two sentences, front-loaded with the tool's purpose and followed by the key alternative-tool condition. There is no wasted wording.

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 single-parameter read-only status tool with rich annotations and an output schema, the description supplies the missing behavioral context: it does not trigger work and should not be confused with an explicit retry. Nothing essential for correct invocation 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?

The single documentId parameter has 100% schema description coverage and is already well documented in the schema as a UUID from a list or read operation. The description adds no additional parameter semantics, 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 states a specific verb+resource+scope: reading indexing and pipeline status for one document, without starting work. It also explicitly distinguishes itself from the sibling refresh_document_index, so an agent can route correctly without opening the schemas.

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 gives an explicit when-to-use condition and names the alternative sibling: use this to read status, and use refresh_document_index only for an intentional retry. That is clear routing guidance with a when-not condition.

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

get_workspace_itemA
Read-onlyIdempotent
Inspect

Read one visible folder, category, or tag by UUID. Folder uses its direct API getter; category and tag lookup uses the complete permission-filtered lists. An absent or out-of-scope ID is reported as not found. Use list_workspace_structure to discover IDs first.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesUUID of an item visible to the active API key.
kindYesThe workspace resource type to read by ID.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare read-only, idempotent, non-destructive behavior, but the description adds substantial context beyond them: folder uses a direct API getter, category and tag lookups use complete permission-filtered lists, and absent or out-of-scope IDs are reported as not found. These details materially help an agent understand runtime behavior.

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 front-loaded with the core operation, followed by three succinct sentences that each add useful context. There is no redundant or filler content.

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 simple read operation, annotations covering safety, a full schema with 100% description coverage, and an output schema, the description provides all remaining context an agent needs: discovery guidance and error behavior. Nothing material 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 (id and kind) are fully described in the schema. The description confirms the kind values and UUID lookup, but adds no additional semantic detail beyond what the schema already provides, so the baseline of 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?

States a specific verb (read) and resource (one visible folder, category, or tag by UUID), and distinguishes itself from list_workspace_structure. An agent can identify the exact operation without needing to open 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?

Explicitly directs the agent to use list_workspace_structure to discover IDs first, providing clear context for when this tool is appropriate. It does not include exclusions for other read alternatives, but the guidance is sufficient for a lookup tool.

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

list_trashA
Read-onlyIdempotent
Inspect

List soft-deleted documents visible to the active workspace or category scope. Requires read access and does not restore or purge anything.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
foldersYes
documentsYes

TDQS

A4.4/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, so the description need not restate safety. It still adds two pieces of value beyond the structured data: the read-access requirement and the explicit guarantee that no restore or purge occurs, which is exactly the concern an agent has for a trash-listing call.

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?

Two short sentences, front-loaded with what is listed and then scoped, with the disclaimer last. Every clause carries information: resource, visibility scope, access requirement, and disposition guarantee.

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 zero-parameter read tool with an output schema and rich annotations, the description covers the essentials; return values need not be explained. The one residual gap is that 'category scope' is ambient rather than parameterized, leaving the mechanism by which an agent selects a category scope unstated.

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 takes zero parameters, so there is no parameter semantics for the description to clarify; the baseline for a parameterless tool is 4. Schema coverage is 100% and additionalProperties is false, leaving nothing ambiguous to compensate for.

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 soft-deleted documents') plus a scope qualifier ('visible to the active workspace or category scope'). It also distinguishes itself from the destructive siblings (restore_trashed_document, permanently_delete_document) by explicitly disclaiming restore/purge behavior, so an agent can separate it from them 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 Guidelines4/5

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

The scope clause establishes when this tool applies, and 'does not restore or purge anything' functions as a when-not signal that steers the agent toward restore_trashed_document or permanently_delete_document for those actions. However, no sibling is named explicitly, so the routing still requires inference.

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

list_workspace_structureA
Read-onlyIdempotent
Inspect

List visible folders, categories, or tags in the active workspace or category scope. Set kind=folders to inspect root folders or children of parentId.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already fully cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is low. The description adds the 'visible' qualifier, hinting results are permission-filtered, but says nothing about ordering, pagination, or depth behavior.

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?

Two sentences, zero padding, with the core purpose front-loaded and the kind=folders usage hint second. Every clause earns its place.

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?

With a rich output schema, complete annotations, and full schema coverage, the description only needs to convey purpose and the discriminator usage, which it does. The only gap is the undefined meaning of 'visible'/scope filtering.

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% and each discriminator field is documented inline, so the baseline is 3. The description reinforces that parentId drives child listing, but adds no format or constraint detail beyond the schema.

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?

States a specific verb (List) and the resources it returns (visible folders, categories, or tags) with explicit scope (active workspace or category scope). The resource set cleanly distinguishes it from siblings like list_trash or read_document, though no sibling is named directly.

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?

It gives one concrete usage cue – 'Set kind=folders to inspect root folders or children of parentId' – which tells the agent when the folders branch applies. However it offers no guidance on choosing between categories and tags, nor any exclusions or named alternatives.

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

permanently_delete_documentA
Destructive
Inspect

Irreversibly purge a document already in trash, including its version history. Use only on an explicit user request after checking list_trash.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesUUID returned by the corresponding list or read operation.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
deletedYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true and idempotentHint=false, so the safety profile is covered structurally. The description goes beyond them by disclosing that version history is destroyed too and that the document must already be in trash, which is exactly the kind of consequence an agent needs to warn about.

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?

Two sentences, zero filler, with the irreversible scope stated first and the precondition second. Every clause earns its place.

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 so return values need not be explained, and the description covers the destructive scope, irreversibility, and the gating precondition. Nothing an agent needs to invoke this safely 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% and the single 'id' parameter is fully documented as a UUID from a list or read operation. The description adds no further meaning (no note that the id must reference a trashed item), 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 ('purge'), resource ('document'), and scope ('already in trash, including its version history'), which cleanly distinguishes it from the sibling delete_document (soft delete) and restore_trashed_document. 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 Guidelines4/5

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

Explicitly constrains usage to an explicit user request and sequences it after list_trash, which is strong guidance. It stops short of naming delete_document as the softer alternative to prefer when the user has not asked for permanent removal.

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

read_documentA
Read-onlyIdempotent
Inspect

Read one document by UUID. Choose detail for content and metadata, markdown for portable export, or versions for saved revisions and snapshots. All views are read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/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 the safety profile is covered; the closing 'All views are read-only' reinforces rather than adds. The per-view behavioral distinction (what each branch returns) is the real added value beyond structured data.

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: purpose first, option semantics second, safety note last. No filler, no repetition, and the front-loaded sentence carries the identity of the tool.

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 described, and both parameters plus the modal branches are covered. Nothing essential to invoking 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 100%, so the baseline is 3. The schema's own view descriptions are circular ('Select the detail operation explicitly'), so the description genuinely adds meaning by explaining what detail, markdown and versions actually yield; onlySnapshots remains schema-documented only.

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?

States a specific verb (read), resource (one document) and lookup key (UUID), and enumerates the three view modes, which is more than a restatement of the name. It does not, however, distinguish itself from sibling read-ish tools such as find_documents or get_document_index_status, so the agent must infer the boundary.

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?

Gives explicit selection criteria for each mode: detail = content and metadata, markdown = portable export, versions = saved revisions and snapshots. That is genuine when-to-use guidance for the tool's own branches, though it offers no guidance on when to prefer this tool over sibling readers.

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

refresh_document_indexAInspect

Queue an explicit asynchronous reindex for one document; use batch_documents(action=refresh_index) for multiple explicit IDs. Routine content and placement changes already schedule indexing; check get_document_index_status first.

ParametersJSON Schema
NameRequiredDescriptionDefault
documentIdYesUUID returned by the corresponding list or read operation.

Output Schema

ParametersJSON Schema
NameRequiredDescription
documentIdYes
deduplicatedYes
generationIdYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare the safety profile (destructiveHint=false, idempotentHint=false), so the description's job is to add what they can't. It discloses the asynchronous queueing model, that routine edits auto-schedule indexing, and that a status check should precede the call — real behavioral context. It stops short of describing throttling, latency, or what the returned job handle looks like, so not a full 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?

Two clauses, zero filler, and the primary action is front-loaded ahead of the routing alternative and the prerequisite caveat. Every sentence carries information an agent needs to act correctly.

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 single-parameter async operation with full schema coverage, existing annotations, and an output schema defining the return, the description covers the remaining burdens: the async model, the sibling alternative, the auto-indexing caveat, and the prerequisite status check. Nothing necessary 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% and there is only one parameter, with the schema already documenting the UUID format and its origin. The description adds no syntax, format, or constraint detail beyond what the schema provides, 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 and resource ('Queue an explicit asynchronous reindex for one document') and immediately distinguishes itself by naming the sibling alternative for the multi-document case, batch_documents(action=refresh_index). An agent can route between the two without opening either 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-to-use (single explicit ID), the alternative for multiple IDs (batch_documents), and a when-not-to-bother condition: routine content and placement changes already schedule indexing. It also names a prerequisite step, checking get_document_index_status first, which is named exactly as a sibling tool.

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

restore_document_versionA
Destructive
Inspect

Restore content from a version or snapshot listed by read_document(view=versions). This changes current content and queues indexing; it does not restore a trashed document.

ParametersJSON Schema
NameRequiredDescriptionDefault
versionIdYesUUID returned by the corresponding list or read operation.
documentIdYesUUID returned by the corresponding list or read operation.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
tagsNo
titleYes
contentYes
ownerIdYes
folderIdYes
metadataNo
createdAtYes
updatedAtYes
categoryIdYes
folderNameNo
visibilityYes
contentJsonNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and non-idempotent, but the description adds valuable behavior beyond them: the operation mutates current content and queues re-indexing, and it explicitly excludes trashed-document restoration. It stops short of stating reversibility (whether the restored state can itself be rolled back), which is the one gap for a destructive write.

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?

Two sentences, no filler, with the primary action front-loaded and the scope exclusion placed at the end where it reads as a guardrail. Every clause carries 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?

For a two-param destructive restore with an output schema and full annotation coverage, nothing essential is missing: the source of the version, the mutation effect, the indexing side effect, and the trashed-document exclusion are all 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 description coverage is 100%, so the baseline is 3. The description adds meaning by pointing to read_document(view=versions) as the origin of the versionId, which is more actionable than the generic schema text 'UUID returned by the corresponding list or read operation.'

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 ('Restore content from a version or snapshot') and immediately scopes it by naming the source of the version. The final clause distinguishes it from restore_trashed_document, so the agent can separate the two without opening either 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?

Gives explicit when-to-use context -- restore from a version listed by read_document(view=versions) -- and an explicit exclusion ('does not restore a trashed document'). It would be a 5 if it named restore_trashed_document as the alternative for that excluded case, but the condition itself is unambiguous.

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

restore_trashed_documentAInspect

Return one document from trash to the active library; use batch_documents(action=restore) for multiple explicit IDs. This restores the document itself, unlike restore_document_version which changes content.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesUUID returned by the corresponding list or read operation.

Output Schema

ParametersJSON Schema
NameRequiredDescription
successYes

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, and openWorldHint=false, so safety is structured. The description adds meaningful semantics about what is restored ('the document itself, unlike restore_document_version which changes content'), but does not cover permissions, side effects, or reversibility beyond that.

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?

Two compact sentences with no wasted words. The core action is front-loaded, and the alternatives are appended 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?

An output schema exists, so return values need not be explained, and annotations cover safety. The description covers purpose, alternatives, and the semantic distinction from restore_document_version. It could mention the prerequisite that the document must currently be in trash, but this is strongly implied.

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% and there is only one parameter (id), whose format and meaning are fully documented in the schema. The description adds no parameter-level detail beyond what the schema already provides, 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 uses a specific verb and resource ('Return one document from trash to the active library') and explicitly distinguishes itself from two siblings: batch_documents for multiple IDs and restore_document_version for content changes. An agent can select this tool without opening schemas.

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 names the alternative for multiple explicit IDs (batch_documents(action=restore)) and contrasts with restore_document_version, giving clear positive routing. It lacks an explicit when-not condition (e.g., permanently deleted items, already-active documents), so it stops short of a 5.

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

save_categoryA
Destructive
Inspect

Create or update a workspace category. Full workspace write access is required; category-scoped credentials cannot manage categories.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=false, and readOnlyHint=false, so the safety profile is covered structurally. The description adds genuine value beyond that by disclosing the credential scope requirement, a failure mode the annotations do not capture. It stops short of saying what an update overwrites or that the operation is not idempotent, so it is not 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?

Two tightly written sentences with the action stated first and the constraint second. No filler, no restating of the title, nothing that fails to earn its place.

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?

With an output schema present and annotations covering the safety profile, the description only needs to add purpose and any non-obvious constraints, both of which it does. The one gap is that it does not clarify partial-update behavior for the update branch, but for a tool of this complexity that is a minor omission.

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%, and the oneOf branches document action, name, id, and order with their own descriptions, so the schema does the heavy lifting. The description only refers generically to 'create or update' and adds no format, ordering, or partial-update semantics beyond that.

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?

States a specific verb pair and resource ('Create or update a workspace category'), which is clear enough to distinguish it from delete_category and save_tag/save_folder. It does not, however, explicitly call out that it is the only category-writing sibling, so sibling routing is inferential.

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 gives a real prerequisite (full workspace write access; category-scoped credentials cannot manage categories), which is useful context for when the call will succeed. It never names alternatives or states when to prefer this tool over delete_category or save_tag, so usage guidance is implied rather than explicit.

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

save_documentA
Destructive
Inspect

Create or update one document. Use action=create for a new document or action=update for an existing one; batch_documents handles the same placement change across multiple existing documents. Creation requires write access; content edits require edit access, and placement changes may require write access. Content or placement changes queue normal indexing.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=false; the description adds real value beyond them by stating the access level required per operation (write for creation/placement, edit for content) and that content or placement changes queue normal indexing. It does not, however, warn that update can clear content or placement, which is the main reason the tool is flagged destructive.

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?

Three dense sentences with the core purpose front-loaded and no filler; the semicolon-clause on permissions is slightly compressed but every clause carries distinct information.

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 no explanation, and the description covers modes, alternatives, permissions, and indexing side effects. The one gap is not surfacing that update with empty content/null placement clears existing data, a material behavior for a destructive-annotated tool.

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 baseline is 3. The description goes beyond the schema by explaining the action discriminator as the branch selector and by contrasting the placement-change case with batch_documents, which helps an agent pick parameters correctly rather than just reading field docs.

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 ("Create or update one document") and immediately differentiates the two modes and the sibling that handles the multi-document case, batch_documents. An agent can distinguish it from save_folder/save_category/save_tag 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?

Explicitly states action=create for new documents and action=update for existing ones, names batch_documents as the alternative for the same placement change across multiple existing documents, and lists the permission prerequisites per operation type. When-to-use, when-not, and alternatives are all present.

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

save_folderA
Destructive
Inspect

Create or update a folder. action=update can rename or move an existing folder; the API enforces category boundaries and queues affected documents for reindexing.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=false, and readOnlyHint=false, so the mutation profile is covered structurally. The description adds genuinely new behavior: the API enforces category boundaries and queues affected documents for reindexing, which goes beyond what annotations convey.

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?

Two tight sentences with the core capability front-loaded and the side-effect detail second. No filler, no redundancy with the title or 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?

An output schema exists, so return values need not be explained, and annotations carry the safety profile. The description covers the two operations and the reindexing side effect, leaving only minor gaps like whether category assignment is required or how moves across boundaries fail.

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 name, id, parentId, categoryId, order, and the action discriminators. The description only names the two actions and the rename/move intent; it adds no syntax or format detail beyond the schema, making the baseline 3 appropriate.

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 states a specific verb+resource ('Create or update a folder') and elaborates the two modes, distinguishing action=create from action=update (rename/move). It is clear on its own, though it does not explicitly contrast with siblings such as save_category or delete_folder.

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?

It implies when each action applies ('action=update can rename or move an existing folder'), giving some routing guidance, but never states when to prefer this tool over siblings (e.g., delete_folder, list_workspace_structure) or any prerequisites for calling it.

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

save_tagA
Destructive
Inspect

Create or update a workspace tag. Full workspace write access is required; renaming or recoloring a tag causes affected documents to be reindexed.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so safety is covered. The description adds genuinely new behavioral context: the permission requirement and the side effect that renaming or recoloring reindexes affected documents, which the agent could not infer from 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.

Conciseness5/5

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

Two tightly written sentences with the core action front-loaded and the operational caveats second. No redundant restatement of the title or 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?

With an output schema present and full parameter coverage, the description only needs to carry the behavioral and permission context, which it does. It stops just short of routing guidance to sibling tools, which is the only real gap.

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 create/update oneOf branches, name, color and id constraints are all documented in the schema itself. The description adds no parameter-level detail, so baseline 3 applies.

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?

States a specific verb+resource ('Create or update a workspace tag'), clearly distinguishing it from the delete_tag sibling by its save semantics. It does not explicitly contrast with save_category or save_folder, but the resource noun makes the target unambiguous.

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?

Gives one precondition (full workspace write access required) and one consequence (renaming/recoloring triggers reindexing), which implies when it is appropriate. However, it never says when to prefer delete_tag, set_document_tag, or the create vs. update action branches beyond what the schema enforces.

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

set_document_tagA
Destructive
Inspect

Add or remove an existing tag assignment on one document. Use batch_documents for the same tag action across multiple explicit IDs. Requires edit access to each document; action=remove preserves the tag itself.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagIdYesUUID returned by the corresponding list or read operation.
actionYesAdd or remove exactly one tag assignment.
documentIdYesUUID returned by the corresponding list or read operation.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and non-idempotent, but the description adds two things they don't: an authorization prerequisite ('requires edit access to each document') and a critical nuance that action=remove unlinks the assignment without deleting the tag itself, which reframes what 'destructive' means here. Missing detail on failure behavior for duplicate adds keeps it from 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?

Three short sentences, front-loaded with the core action, then routing guidance, then the caveat. No filler or restated schema text.

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 no explanation, and annotations carry the safety profile. For a single-target mutation with an explicit alternative and an auth prerequisite, an agent has everything needed to invoke 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% and all three parameters are already documented in the schema, including the enum meaning for action. The description's 'Add or remove' phrasing mirrors the schema text rather than adding format or constraint detail, so baseline 3 is correct.

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 pair and resource ('add or remove an existing tag assignment') plus the scope constraint 'on one document', which immediately separates it from batch_documents. An agent can classify the 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?

Explicitly names the alternative (batch_documents) and the condition that selects it ('for the same tag action across multiple explicit IDs'). It also enumerates both modes of operation (add vs remove), leaving nothing to inference.

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
    • Addedbatch_documents
    • Addedget_workspace_item
  2. 34 tool updates
    • Removedcreate_category
    • Removedcreate_document
    • Removedcreate_folder
    • Changedcreate_snapshot4 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / description / description
        Previous value: -"Optional snapshot note up to 1,000 characters; omit if not needed."New value: +"Optional snapshot note, at most 1000 characters."
      • changedInput schema / properties / documentId / description
        Previous value: -"UUID of the existing document, obtained from search_documents or list_documents and visible in the active scope."New value: +"UUID returned by the corresponding list or read operation."
      • changedInput schema / properties / label / description
        Previous value: -"Non-empty snapshot label up to 200 characters, for example 'v1.0-release'."New value: +"Snapshot label, from 1 to 200 characters."
    • Changeddelete_category2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / id / description
        Previous value: -"UUID of the category to delete; obtain it from list_categories using a workspace-scoped credential."New value: +"UUID returned by the corresponding list or read operation."
    • Changeddelete_document2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / id / description
        Previous value: -"UUID of the document to move to trash; obtain it from search_documents, list_documents, or get_document."New value: +"UUID returned by the corresponding list or read operation."
    • Changeddelete_folder2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / id / description
        Previous value: -"UUID of the folder to delete; obtain it from list_folders. This detaches, but does not delete, the documents inside it."New value: +"UUID returned by the corresponding list or read operation."
    • Addeddelete_tag
    • Addedexplore_graph
    • Removedexport_document
    • Addedfind_documents
    • Removedget_document
    • Changedget_document_index_status2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / documentId / description
        Previous value: -"UUID of a document returned by search_documents or list_documents; it must be readable in the active scope."New value: +"UUID returned by the corresponding list or read operation."
    • Removedget_related_documents
    • Removedget_version_history
    • Removedlist_categories
    • Removedlist_documents
    • Removedlist_folders
    • Removedlist_tags
    • Addedlist_trash
    • Addedlist_workspace_structure
    • Addedpermanently_delete_document
    • Addedread_document
    • Changedrefresh_document_index2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / documentId / description
        Previous value: -"UUID of the document to refresh, obtained from search_documents or list_documents and visible in the active scope."New value: +"UUID returned by the corresponding list or read operation."
    • Changedrestore_document_version3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / documentId / description
        Previous value: -"UUID of the document whose content should be restored; it must be visible in the active workspace or category."New value: +"UUID returned by the corresponding list or read operation."
      • changedInput schema / properties / versionId / description
        Previous value: -"UUID of a version belonging to this document, from get_version_history. Use the version ID, not a snapshot label."New value: +"UUID returned by the corresponding list or read operation."
    • Addedrestore_trashed_document
    • Addedsave_category
    • Addedsave_document
    • Addedsave_folder
    • Addedsave_tag
    • Removedsearch_documents
    • Removedsearch_knowledge_graph
    • Addedset_document_tag
    • Removedupdate_document
  3. 21 tool updates
    • Changedcreate_category4 fields changed
      • removedInput schema / properties / description
        Removed value: -{
        -  "description": "Optional plain-text explanation of the category purpose; omit if not needed.",
        -  "type": "string"
        -}
      • changedInput schema / properties / name / description
        Previous value: -"Non-empty display name for the new category, for example Project notes."New value: +"Non-empty display name, up to 255 characters, for example Project notes."
      • addedInput schema / properties / name / maxLength
        Added value: +255
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "apiMode": {
        +      "enum": [
        +        "unavailable",
        +        "global",
        +        "category"
        +      ],
        +      "type": "string"
        +    },
        +    "apiPermissionEdit": {
        +      "type": "boolean"
        +    },
        +    "apiPermissionRead": {
        +      "type": "boolean"
        +    },
        +    "apiPermissionWrite": {
        +      "type": "boolean"
        +    },
        +    "createdAt": {
        +      "type": "string"
        +    },
        +    "documentCount": {
        +      "type": "number"
        +    },
        +    "folderCount": {
        +      "type": "number"
        +    },
        +    "id": {
        +      "type": "string"
        +    },
        +    "name": {
        +      "type": "string"
        +    },
        +    "order": {
        +      "type": "number"
        +    },
        +    "updatedAt": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "name",
        +    "order",
        +    "createdAt",
        +    "updatedAt",
        +    "apiMode",
        +    "apiPermissionRead",
        +    "apiPermissionEdit",
        +    "apiPermissionWrite"
        +  ],
        +  "type": "object"
        +}
    • Changedcreate_document12 fields changed
      • addedInput schema / properties / categoryId / anyOf
        Added value: +[
        +  {
        +    "format": "uuid",
        +    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / categoryId / description
        Previous value: -"Optional category ID. Category keys are always rebound to their configured category."New value: +"Optional category UUID from list_categories; omit or pass null to leave the explicit category unset. A categorized folder still supplies the document’s effective category; without one the document remains uncategorized. Category-scoped credentials stay bound to their configured category."
      • removedInput schema / properties / categoryId / type
        Removed value: -"string"
      • changedInput schema / properties / content / description
        Previous value: -"Initial markdown content for the document."New value: +"Optional initial Markdown content; omit to create an empty document."
      • changedInput schema / properties / folderId / description
        Previous value: -"Optional folder ID to place the document in."New value: +"Optional folder UUID from list_folders; the folder must be writable in the active workspace or category."
      • addedInput schema / properties / folderId / format
        Added value: +"uuid"
      • addedInput schema / properties / folderId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      • changedInput schema / properties / title / description
        Previous value: -"Document title."New value: +"Optional title from 1 to 500 characters; omit to use the API default “Untitled”."
      • addedInput schema / properties / title / maxLength
        Added value: +500
      • addedInput schema / properties / title / minLength
        Added value: +1
      • removedInput schema / required
        Removed value: -[
        -  "title"
        -]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "categoryId": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "content": {
        +      "type": "string"
        +    },
        +    "contentJson": {},
        +    "createdAt": {
        +      "type": "string"
        +    },
        +    "folderId": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "folderName": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "id": {
        +      "type": "string"
        +    },
        +    "metadata": {},
        +    "ownerId": {
        +      "type": "string"
        +    },
        +    "tags": {
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "color": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "createdAt": {
        +            "type": "string"
        +          },
        +          "documentCount": {
        +            "type": "number"
        +          },
        +          "id": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "name",
        +          "color"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "updatedAt": {
        +      "type": "string"
        +    },
        +    "visibility": {
        +      "enum": [
        +        "private",
        +        "shared",
        +        "public"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "ownerId",
        +    "folderId",
        +    "categoryId",
        +    "title",
        +    "content",
        +    "visibility",
        +    "createdAt",
        +    "updatedAt"
        +  ],
        +  "type": "object"
        +}
    • Changedcreate_folder10 fields changed
      • addedInput schema / properties / categoryId / anyOf
        Added value: +[
        +  {
        +    "format": "uuid",
        +    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / categoryId / description
        Previous value: -"Optional category ID. Category keys are always rebound to their configured category."New value: +"Optional category UUID from list_categories for a root-level folder. A nested folder inherits its parent category; category-scoped credentials cannot escape their configured category."
      • removedInput schema / properties / categoryId / type
        Removed value: -"string"
      • changedInput schema / properties / name / description
        Previous value: -"Folder name."New value: +"Non-empty folder name up to 255 characters."
      • addedInput schema / properties / name / maxLength
        Added value: +255
      • addedInput schema / properties / name / minLength
        Added value: +1
      • addedInput schema / properties / parentId / anyOf
        Added value: +[
        +  {
        +    "format": "uuid",
        +    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / parentId / description
        Previous value: -"Optional parent folder ID for nesting."New value: +"Optional parent folder UUID from list_folders; omit or pass null to create a root-level folder."
      • removedInput schema / properties / parentId / type
        Removed value: -"string"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "categoryId": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "children": {
        +      "items": {
        +        "$ref": "#"
        +      },
        +      "type": "array"
        +    },
        +    "createdAt": {
        +      "type": "string"
        +    },
        +    "documentCount": {
        +      "type": "number"
        +    },
        +    "documents": {
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "categoryId": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "categoryName": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "content": {
        +            "type": "string"
        +          },
        +          "createdAt": {
        +            "type": "string"
        +          },
        +          "folderId": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "folderName": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "id": {
        +            "type": "string"
        +          },
        +          "tags": {
        +            "items": {
        +              "additionalProperties": {},
        +              "properties": {
        +                "color": {
        +                  "anyOf": [
        +                    {
        +                      "type": "string"
        +                    },
        +                    {
        +                      "type": "null"
        +                    }
        +                  ]
        +                },
        +                "createdAt": {
        +                  "type": "string"
        +                },
        +                "documentCount": {
        +                  "type": "number"
        +                },
        +                "id": {
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "id",
        +                "name",
        +                "color"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "title": {
        +            "type": "string"
        +          },
        +          "updatedAt": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "title",
        +          "content",
        +          "folderId",
        +          "folderName",
        +          "categoryId",
        +          "categoryName",
        +          "createdAt",
        +          "updatedAt",
        +          "tags"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "id": {
        +      "type": "string"
        +    },
        +    "name": {
        +      "type": "string"
        +    },
        +    "order": {
        +      "type": "number"
        +    },
        +    "ownerId": {
        +      "type": "string"
        +    },
        +    "parentId": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "subfolderCount": {
        +      "type": "number"
        +    },
        +    "updatedAt": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "ownerId",
        +    "parentId",
        +    "name",
        +    "createdAt",
        +    "updatedAt"
        +  ],
        +  "type": "object"
        +}
    • Changedcreate_snapshot9 fields changed
      • changedInput schema / properties / description / description
        Previous value: -"Optional longer description of the snapshot."New value: +"Optional snapshot note up to 1,000 characters; omit if not needed."
      • addedInput schema / properties / description / maxLength
        Added value: +1000
      • changedInput schema / properties / documentId / description
        Previous value: -"Document ID to snapshot."New value: +"UUID of the existing document, obtained from search_documents or list_documents and visible in the active scope."
      • addedInput schema / properties / documentId / format
        Added value: +"uuid"
      • addedInput schema / properties / documentId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      • changedInput schema / properties / label / description
        Previous value: -"Short label for the snapshot (e.g. 'v1.0-release')."New value: +"Non-empty snapshot label up to 200 characters, for example 'v1.0-release'."
      • addedInput schema / properties / label / maxLength
        Added value: +200
      • addedInput schema / properties / label / minLength
        Added value: +1
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "content": {
        +      "type": "string"
        +    },
        +    "contentJson": {},
        +    "createdAt": {
        +      "type": "string"
        +    },
        +    "createdBy": {
        +      "type": "string"
        +    },
        +    "description": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "documentId": {
        +      "type": "string"
        +    },
        +    "id": {
        +      "type": "string"
        +    },
        +    "isSnapshot": {
        +      "type": "boolean"
        +    },
        +    "label": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "restoredFrom": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "documentId",
        +    "content",
        +    "createdBy",
        +    "createdAt"
        +  ],
        +  "type": "object"
        +}
    • Changeddelete_category2 fields changed
      • changedInput schema / properties / id / description
        Previous value: -"UUID of the category to delete; obtain it from list_categories using a workspace key."New value: +"UUID of the category to delete; obtain it from list_categories using a workspace-scoped credential."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "deleted": {
        +      "const": true,
        +      "type": "boolean"
        +    },
        +    "id": {
        +      "format": "uuid",
        +      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "deleted"
        +  ],
        +  "type": "object"
        +}
    • Changeddelete_document1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "deleted": {
        +      "const": true,
        +      "type": "boolean"
        +    },
        +    "id": {
        +      "format": "uuid",
        +      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "deleted"
        +  ],
        +  "type": "object"
        +}
    • Changeddelete_folder2 fields changed
      • changedInput schema / properties / id / description
        Previous value: -"UUID of the folder to delete; obtain it from list_folders. This does not delete the documents inside it."New value: +"UUID of the folder to delete; obtain it from list_folders. This detaches, but does not delete, the documents inside it."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "deleted": {
        +      "const": true,
        +      "type": "boolean"
        +    },
        +    "id": {
        +      "format": "uuid",
        +      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "deleted"
        +  ],
        +  "type": "object"
        +}
    • Changedexport_document4 fields changed
      • changedInput schema / properties / id / description
        Previous value: -"Document ID to export."New value: +"UUID of the readable document to export, obtained from search_documents or list_documents."
      • addedInput schema / properties / id / format
        Added value: +"uuid"
      • addedInput schema / properties / id / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "filename": {
        +      "type": "string"
        +    },
        +    "markdown": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "markdown"
        +  ],
        +  "type": "object"
        +}
    • Changedget_document4 fields changed
      • changedInput schema / properties / id / description
        Previous value: -"Document ID."New value: +"UUID of the document, obtained from search_documents or list_documents, and visible in the active scope."
      • addedInput schema / properties / id / format
        Added value: +"uuid"
      • addedInput schema / properties / id / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "categoryId": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "content": {
        +      "type": "string"
        +    },
        +    "contentJson": {},
        +    "createdAt": {
        +      "type": "string"
        +    },
        +    "folderId": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "folderName": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "id": {
        +      "type": "string"
        +    },
        +    "metadata": {},
        +    "ownerId": {
        +      "type": "string"
        +    },
        +    "tags": {
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "color": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "createdAt": {
        +            "type": "string"
        +          },
        +          "documentCount": {
        +            "type": "number"
        +          },
        +          "id": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "name",
        +          "color"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "updatedAt": {
        +      "type": "string"
        +    },
        +    "visibility": {
        +      "enum": [
        +        "private",
        +        "shared",
        +        "public"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "ownerId",
        +    "folderId",
        +    "categoryId",
        +    "title",
        +    "content",
        +    "visibility",
        +    "createdAt",
        +    "updatedAt"
        +  ],
        +  "type": "object"
        +}
    • Changedget_document_index_status5 fields changed
      • changedInput schema / properties / documentId / description
        Previous value: -"Document UUID returned by search_documents or list_documents; must be readable in the active scope."New value: +"UUID of a document returned by search_documents or list_documents; it must be readable in the active scope."
      • addedInput schema / properties / documentId / format
        Added value: +"uuid"
      • removedInput schema / properties / documentId / minLength
        Removed value: -1
      • addedInput schema / properties / documentId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "activeGenerationId": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "documentId": {
        +      "type": "string"
        +    },
        +    "embeddingErrorCode": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "embeddingProfile": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "embeddingStatus": {
        +      "enum": [
        +        "pending",
        +        "processing",
        +        "ready",
        +        "failed",
        +        "stale"
        +      ],
        +      "type": "string"
        +    },
        +    "embeddingUpdatedAt": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "pendingGenerationId": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "pipeline": {
        +      "anyOf": [
        +        {
        +          "additionalProperties": {},
        +          "properties": {
        +            "batches": {
        +              "additionalProperties": {},
        +              "properties": {
        +                "completed": {
        +                  "type": "number"
        +                },
        +                "failed": {
        +                  "type": "number"
        +                },
        +                "total": {
        +                  "type": "number"
        +                }
        +              },
        +              "required": [
        +                "total",
        +                "completed",
        +                "failed"
        +              ],
        +              "type": "object"
        +            },
        +            "documentId": {
        +              "type": "string"
        +            },
        +            "generationId": {
        +              "type": "string"
        +            },
        +            "revision": {
        +              "type": "string"
        +            },
        +            "stages": {
        +              "additionalProperties": {},
        +              "properties": {
        +                "embed": {
        +                  "enum": [
        +                    "pending",
        +                    "processing",
        +                    "ready",
        +                    "retrying",
        +                    "failed",
        +                    "ready_with_warnings",
        +                    "skipped",
        +                    "cancelled"
        +                  ],
        +                  "type": "string"
        +                },
        +                "finalize": {
        +                  "enum": [
        +                    "pending",
        +                    "processing",
        +                    "ready",
        +                    "retrying",
        +                    "failed",
        +                    "ready_with_warnings",
        +                    "skipped",
        +                    "cancelled"
        +                  ],
        +                  "type": "string"
        +                },
        +                "graph": {
        +                  "enum": [
        +                    "pending",
        +                    "processing",
        +                    "ready",
        +                    "retrying",
        +                    "failed",
        +                    "ready_with_warnings",
        +                    "skipped",
        +                    "cancelled"
        +                  ],
        +                  "type": "string"
        +                },
        +                "prepare": {
        +                  "enum": [
        +                    "pending",
        +                    "processing",
        +                    "ready",
        +                    "retrying",
        +                    "failed",
        +                    "ready_with_warnings",
        +                    "skipped",
        +                    "cancelled"
        +                  ],
        +                  "type": "string"
        +                },
        +                "summarize": {
        +                  "enum": [
        +                    "pending",
        +                    "processing",
        +                    "ready",
        +                    "retrying",
        +                    "failed",
        +                    "ready_with_warnings",
        +                    "skipped",
        +                    "cancelled"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "prepare",
        +                "embed",
        +                "graph",
        +                "summarize",
        +                "finalize"
        +              ],
        +              "type": "object"
        +            },
        +            "status": {
        +              "enum": [
        +                "pending",
        +                "processing",
        +                "ready",
        +                "retrying",
        +                "failed",
        +                "ready_with_warnings",
        +                "skipped",
        +                "cancelled"
        +              ],
        +              "type": "string"
        +            },
        +            "updatedAt": {
        +              "type": "string"
        +            },
        +            "warnings": {
        +              "items": {
        +                "additionalProperties": {},
        +                "properties": {
        +                  "code": {
        +                    "type": "string"
        +                  },
        +                  "retryable": {
        +                    "type": "boolean"
        +                  },
        +                  "stage": {
        +                    "enum": [
        +                      "graph",
        +                      "summarize"
        +                    ],
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "stage",
        +                  "code",
        +                  "retryable"
        +                ],
        +                "type": "object"
        +              },
        +              "type": "array"
        +            }
        +          },
        +          "required": [
        +            "documentId",
        +            "generationId",
        +            "status",
        +            "revision",
        +            "stages",
        +            "batches",
        +            "warnings",
        +            "updatedAt"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "searchable": {
        +      "type": "boolean"
        +    }
        +  },
        +  "required": [
        +    "documentId",
        +    "embeddingStatus",
        +    "activeGenerationId",
        +    "pendingGenerationId",
        +    "embeddingProfile",
        +    "embeddingErrorCode",
        +    "embeddingUpdatedAt",
        +    "searchable",
        +    "pipeline"
        +  ],
        +  "type": "object"
        +}
    • Changedget_related_documents4 fields changed
      • changedInput schema / properties / documentId / description
        Previous value: -"Document UUID returned by search_documents or list_documents; must be readable in the active scope."New value: +"Document ID returned by search_documents or list_documents; it must be readable in the active scope."
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum related documents to return, from 1 to 50. Omit to use the server default."New value: +"Maximum related documents to return, from 1 to 100. Omit to use the server default."
      • changedInput schema / properties / limit / maximum
        Previous value: -50New value: +100
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "related": {
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "docId": {
        +            "type": "string"
        +          },
        +          "hopDistance": {
        +            "type": "number"
        +          },
        +          "relationType": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "docId",
        +          "relationType",
        +          "hopDistance"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "related"
        +  ],
        +  "type": "object"
        +}
    • Changedget_version_history5 fields changed
      • changedInput schema / properties / documentId / description
        Previous value: -"Document ID whose versions should be listed."New value: +"UUID of the readable document whose version history you need; obtain it from search_documents or list_documents."
      • addedInput schema / properties / documentId / format
        Added value: +"uuid"
      • addedInput schema / properties / documentId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      • changedInput schema / properties / onlySnapshots / description
        Previous value: -"When true, only return named snapshots (skip auto-saved revisions)."New value: +"When true, return only named snapshots and omit auto-saved revisions; omit or use false for the full history."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "properties": {
        +    "result": {
        +      "$schema": "https://json-schema.org/draft/2020-12/schema",
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "content": {
        +            "type": "string"
        +          },
        +          "contentJson": {},
        +          "createdAt": {
        +            "type": "string"
        +          },
        +          "createdBy": {
        +            "type": "string"
        +          },
        +          "description": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "documentId": {
        +            "type": "string"
        +          },
        +          "id": {
        +            "type": "string"
        +          },
        +          "isSnapshot": {
        +            "type": "boolean"
        +          },
        +          "label": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "restoredFrom": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "documentId",
        +          "content",
        +          "createdBy",
        +          "createdAt"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "type": "object"
        +}
    • Changedlist_categories1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "properties": {
        +    "result": {
        +      "$schema": "https://json-schema.org/draft/2020-12/schema",
        +      "items": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": {},
        +            "properties": {
        +              "apiMode": {
        +                "enum": [
        +                  "unavailable",
        +                  "global",
        +                  "category"
        +                ],
        +                "type": "string"
        +              },
        +              "apiPermissionEdit": {
        +                "type": "boolean"
        +              },
        +              "apiPermissionRead": {
        +                "type": "boolean"
        +              },
        +              "apiPermissionWrite": {
        +                "type": "boolean"
        +              },
        +              "createdAt": {
        +                "type": "string"
        +              },
        +              "documentCount": {
        +                "type": "number"
        +              },
        +              "folderCount": {
        +                "type": "number"
        +              },
        +              "id": {
        +                "type": "string"
        +              },
        +              "name": {
        +                "type": "string"
        +              },
        +              "order": {
        +                "type": "number"
        +              },
        +              "updatedAt": {
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "id",
        +              "name",
        +              "order",
        +              "createdAt",
        +              "updatedAt",
        +              "apiMode",
        +              "apiPermissionRead",
        +              "apiPermissionEdit",
        +              "apiPermissionWrite"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "additionalProperties": {},
        +            "properties": {
        +              "createdAt": {
        +                "type": "string"
        +              },
        +              "documentCount": {
        +                "type": "number"
        +              },
        +              "folderCount": {
        +                "type": "number"
        +              },
        +              "id": {
        +                "type": "string"
        +              },
        +              "name": {
        +                "type": "string"
        +              },
        +              "order": {
        +                "type": "number"
        +              },
        +              "updatedAt": {
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "id",
        +              "name",
        +              "order",
        +              "createdAt",
        +              "updatedAt"
        +            ],
        +            "type": "object"
        +          }
        +        ]
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "type": "object"
        +}
    • Changedlist_documents14 fields changed
      • changedInput schema / properties / folderId / description
        Previous value: -"Optional folder ID to filter by."New value: +"Optional folder UUID from list_folders to limit the listing."
      • addedInput schema / properties / folderId / format
        Added value: +"uuid"
      • addedInput schema / properties / folderId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      • changedInput schema / properties / limit / description
        Previous value: -"Items per page (default 20, max 100)."New value: +"Number of documents per page, from 1 to 1,000; defaults to 20."
      • removedInput schema / properties / limit / exclusiveMinimum
        Removed value: -0
      • changedInput schema / properties / limit / maximum
        Previous value: -100New value: +1000
      • addedInput schema / properties / limit / minimum
        Added value: +1
      • changedInput schema / properties / page / description
        Previous value: -"Page number (1-indexed, default 1)."New value: +"1-indexed result page; defaults to 1."
      • removedInput schema / properties / page / exclusiveMinimum
        Removed value: -0
      • addedInput schema / properties / page / minimum
        Added value: +1
      • changedInput schema / properties / tag / description
        Previous value: -"Optional tag ID to filter by."New value: +"Optional tag UUID from list_tags to filter the documents."
      • addedInput schema / properties / tag / format
        Added value: +"uuid"
      • addedInput schema / properties / tag / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "items": {
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "categoryId": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "categoryName": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "content": {
        +            "type": "string"
        +          },
        +          "createdAt": {
        +            "type": "string"
        +          },
        +          "folderId": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "folderName": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "id": {
        +            "type": "string"
        +          },
        +          "tags": {
        +            "items": {
        +              "additionalProperties": {},
        +              "properties": {
        +                "color": {
        +                  "anyOf": [
        +                    {
        +                      "type": "string"
        +                    },
        +                    {
        +                      "type": "null"
        +                    }
        +                  ]
        +                },
        +                "createdAt": {
        +                  "type": "string"
        +                },
        +                "documentCount": {
        +                  "type": "number"
        +                },
        +                "id": {
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "id",
        +                "name",
        +                "color"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "title": {
        +            "type": "string"
        +          },
        +          "updatedAt": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "title",
        +          "content",
        +          "folderId",
        +          "folderName",
        +          "categoryId",
        +          "categoryName",
        +          "createdAt",
        +          "updatedAt",
        +          "tags"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "limit": {
        +      "type": "number"
        +    },
        +    "page": {
        +      "type": "number"
        +    },
        +    "total": {
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "items",
        +    "total",
        +    "page",
        +    "limit"
        +  ],
        +  "type": "object"
        +}
    • Changedlist_folders4 fields changed
      • changedInput schema / properties / parentId / description
        Previous value: -"Optional parent folder ID. Omit to list top-level (root) folders."New value: +"Optional parent folder UUID from list_folders; omit to list root folders."
      • addedInput schema / properties / parentId / format
        Added value: +"uuid"
      • addedInput schema / properties / parentId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "properties": {
        +    "result": {
        +      "$defs": {
        +        "__schema0": {
        +          "additionalProperties": {},
        +          "properties": {
        +            "categoryId": {
        +              "anyOf": [
        +                {
        +                  "type": "string"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "children": {
        +              "items": {
        +                "$ref": "#/properties/result/$defs/__schema0"
        +              },
        +              "type": "array"
        +            },
        +            "createdAt": {
        +              "type": "string"
        +            },
        +            "documentCount": {
        +              "type": "number"
        +            },
        +            "documents": {
        +              "items": {
        +                "additionalProperties": {},
        +                "properties": {
        +                  "categoryId": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "categoryName": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "content": {
        +                    "type": "string"
        +                  },
        +                  "createdAt": {
        +                    "type": "string"
        +                  },
        +                  "folderId": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "folderName": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "id": {
        +                    "type": "string"
        +                  },
        +                  "tags": {
        +                    "items": {
        +                      "additionalProperties": {},
        +                      "properties": {
        +                        "color": {
        +                          "anyOf": [
        +                            {
        +                              "type": "string"
        +                            },
        +                            {
        +                              "type": "null"
        +                            }
        +                          ]
        +                        },
        +                        "createdAt": {
        +                          "type": "string"
        +                        },
        +                        "documentCount": {
        +                          "type": "number"
        +                        },
        +                        "id": {
        +                          "type": "string"
        +                        },
        +                        "name": {
        +                          "type": "string"
        +                        }
        +                      },
        +                      "required": [
        +                        "id",
        +                        "name",
        +                        "color"
        +                      ],
        +                      "type": "object"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "title": {
        +                    "type": "string"
        +                  },
        +                  "updatedAt": {
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "id",
        +                  "title",
        +                  "content",
        +                  "folderId",
        +                  "folderName",
        +                  "categoryId",
        +                  "categoryName",
        +                  "createdAt",
        +                  "updatedAt",
        +                  "tags"
        +                ],
        +                "type": "object"
        +              },
        +              "type": "array"
        +            },
        +            "id": {
        +              "type": "string"
        +            },
        +            "name": {
        +              "type": "string"
        +            },
        +            "order": {
        +              "type": "number"
        +            },
        +            "ownerId": {
        +              "type": "string"
        +            },
        +            "parentId": {
        +              "anyOf": [
        +                {
        +                  "type": "string"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "subfolderCount": {
        +              "type": "number"
        +            },
        +            "updatedAt": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "ownerId",
        +            "parentId",
        +            "name",
        +            "createdAt",
        +            "updatedAt"
        +          ],
        +          "type": "object"
        +        }
        +      },
        +      "$schema": "https://json-schema.org/draft/2020-12/schema",
        +      "items": {
        +        "$ref": "#/properties/result/$defs/__schema0"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "type": "object"
        +}
    • Changedlist_tags1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "properties": {
        +    "result": {
        +      "$schema": "https://json-schema.org/draft/2020-12/schema",
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "color": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "createdAt": {
        +            "type": "string"
        +          },
        +          "documentCount": {
        +            "type": "number"
        +          },
        +          "id": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "name",
        +          "color"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "type": "object"
        +}
    • Changedrefresh_document_index5 fields changed
      • changedInput schema / properties / documentId / description
        Previous value: -"Document UUID returned by search_documents or list_documents; must be readable in the active scope."New value: +"UUID of the document to refresh, obtained from search_documents or list_documents and visible in the active scope."
      • addedInput schema / properties / documentId / format
        Added value: +"uuid"
      • removedInput schema / properties / documentId / minLength
        Removed value: -1
      • addedInput schema / properties / documentId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "deduplicated": {
        +      "type": "boolean"
        +    },
        +    "documentId": {
        +      "type": "string"
        +    },
        +    "generationId": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "documentId",
        +    "generationId",
        +    "deduplicated"
        +  ],
        +  "type": "object"
        +}
    • Changedrestore_document_version1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "categoryId": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "content": {
        +      "type": "string"
        +    },
        +    "contentJson": {},
        +    "createdAt": {
        +      "type": "string"
        +    },
        +    "folderId": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "folderName": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "id": {
        +      "type": "string"
        +    },
        +    "metadata": {},
        +    "ownerId": {
        +      "type": "string"
        +    },
        +    "tags": {
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "color": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "createdAt": {
        +            "type": "string"
        +          },
        +          "documentCount": {
        +            "type": "number"
        +          },
        +          "id": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "name",
        +          "color"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "updatedAt": {
        +      "type": "string"
        +    },
        +    "visibility": {
        +      "enum": [
        +        "private",
        +        "shared",
        +        "public"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "ownerId",
        +    "folderId",
        +    "categoryId",
        +    "title",
        +    "content",
        +    "visibility",
        +    "createdAt",
        +    "updatedAt"
        +  ],
        +  "type": "object"
        +}
    • Changedsearch_documents6 fields changed
      • changedInput schema / properties / folder / description
        Previous value: -"Optional folder ID to scope the search to."New value: +"Optional folder UUID from list_folders to scope retrieval."
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum number of results to return (default 20)."New value: +"Maximum result count, from 1 to 100; defaults to 20."
      • changedInput schema / properties / limit / maximum
        Previous value: -9007199254740991New value: +100
      • changedInput schema / properties / query / description
        Previous value: -"Search query string."New value: +"Text to search for; preserve the language and terms relevant to the user request."
      • changedInput schema / properties / tags / description
        Previous value: -"Optional tag IDs to filter by."New value: +"Optional tag names as shown by list_tags; documents match when they have any supplied tag name."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "diagnostics": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "graphAttempted": {
        +          "type": "boolean"
        +        },
        +        "graphContribution": {
        +          "type": "boolean"
        +        },
        +        "graphFailed": {
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "graphAttempted",
        +        "graphFailed",
        +        "graphContribution"
        +      ],
        +      "type": "object"
        +    },
        +    "items": {
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "chunks": {
        +            "items": {
        +              "additionalProperties": {},
        +              "properties": {
        +                "charEnd": {
        +                  "type": "number"
        +                },
        +                "charStart": {
        +                  "type": "number"
        +                },
        +                "chunkIndex": {
        +                  "type": "number"
        +                },
        +                "chunkText": {
        +                  "type": "string"
        +                },
        +                "score": {
        +                  "type": "number"
        +                }
        +              },
        +              "required": [
        +                "chunkIndex",
        +                "chunkText",
        +                "charStart",
        +                "charEnd",
        +                "score"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "created_at": {
        +            "type": "string"
        +          },
        +          "folder_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "folder_name": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "id": {
        +            "type": "string"
        +          },
        +          "score": {
        +            "type": "number"
        +          },
        +          "snippet": {
        +            "type": "string"
        +          },
        +          "tags": {
        +            "items": {
        +              "additionalProperties": {},
        +              "properties": {
        +                "color": {
        +                  "anyOf": [
        +                    {
        +                      "type": "string"
        +                    },
        +                    {
        +                      "type": "null"
        +                    }
        +                  ]
        +                },
        +                "createdAt": {
        +                  "type": "string"
        +                },
        +                "documentCount": {
        +                  "type": "number"
        +                },
        +                "id": {
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "id",
        +                "name",
        +                "color"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "title": {
        +            "type": "string"
        +          },
        +          "updated_at": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "title",
        +          "snippet",
        +          "score",
        +          "folder_id",
        +          "folder_name",
        +          "created_at",
        +          "updated_at"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "limit": {
        +      "type": "number"
        +    },
        +    "page": {
        +      "type": "number"
        +    },
        +    "total": {
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "items",
        +    "total",
        +    "page",
        +    "limit"
        +  ],
        +  "type": "object"
        +}
    • Changedsearch_knowledge_graph8 fields changed
      • changedInput schema / properties / docIds / description
        Previous value: -"Between 1 and 50 authorized document UUIDs from search_documents or list_documents to use as graph traversal seeds."New value: +"Between 1 and 50 document IDs returned by search_documents or list_documents; each seed must be readable in the active scope."
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum related documents to return, from 1 to 50. Omit to use the server default."New value: +"Maximum related documents to return, from 1 to 100. Omit to use the server default."
      • changedInput schema / properties / limit / maximum
        Previous value: -50New value: +100
      • changedInput schema / properties / query / description
        Previous value: -"Search text used to filter and rank graph-related documents. Preserve the original query language."New value: +"Optional search text up to 2,000 characters to filter and rank graph-related documents; omit it to inspect relations without query filtering."
      • changedInput schema / properties / query / maxLength
        Previous value: -1000New value: +2000
      • removedInput schema / properties / query / minLength
        Removed value: -1
      • changedInput schema / required
        Previous value: -[
        -  "query",
        -  "docIds"
        -]New value: +[
        +  "docIds"
        +]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "entities": {
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "name": {
        +            "type": "string"
        +          },
        +          "type": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "type"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "query": {
        +      "type": "string"
        +    },
        +    "relatedDocs": {
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "docId": {
        +            "type": "string"
        +          },
        +          "hopDistance": {
        +            "type": "number"
        +          },
        +          "relationType": {
        +            "type": "string"
        +          },
        +          "snippet": {
        +            "type": "string"
        +          },
        +          "title": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "docId",
        +          "relationType",
        +          "hopDistance",
        +          "title",
        +          "snippet"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "entities",
        +    "relatedDocs"
        +  ],
        +  "type": "object"
        +}
    • Changedupdate_document11 fields changed
      • changedInput schema / properties / categoryId / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "format": "uuid",
        +    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / categoryId / description
        Previous value: -"Move the document to a category. Category keys cannot escape their configured category."New value: +"Optional destination category UUID from list_categories; omit to keep the explicit category or pass null to clear it. A categorized folder may still supply the effective category. Category-scoped credentials cannot move outside their configured category."
      • changedInput schema / properties / folderId / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "format": "uuid",
        +    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / folderId / description
        Previous value: -"Move the document to a folder."New value: +"Optional destination folder UUID from list_folders; omit to keep current placement or pass null to remove folder placement."
      • changedInput schema / properties / id / description
        Previous value: -"Document ID to update."New value: +"UUID of the existing document, obtained from search_documents, list_documents, or get_document."
      • addedInput schema / properties / id / format
        Added value: +"uuid"
      • addedInput schema / properties / id / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      • changedInput schema / properties / title / description
        Previous value: -"New title for the document."New value: +"Optional replacement title, 1 to 500 characters; omit to leave the current title unchanged."
      • addedInput schema / properties / title / maxLength
        Added value: +500
      • addedInput schema / properties / title / minLength
        Added value: +1
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "categoryId": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "content": {
        +      "type": "string"
        +    },
        +    "contentJson": {},
        +    "createdAt": {
        +      "type": "string"
        +    },
        +    "folderId": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "folderName": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "id": {
        +      "type": "string"
        +    },
        +    "metadata": {},
        +    "ownerId": {
        +      "type": "string"
        +    },
        +    "tags": {
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "color": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "createdAt": {
        +            "type": "string"
        +          },
        +          "documentCount": {
        +            "type": "number"
        +          },
        +          "id": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "name",
        +          "color"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "updatedAt": {
        +      "type": "string"
        +    },
        +    "visibility": {
        +      "enum": [
        +        "private",
        +        "shared",
        +        "public"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "ownerId",
        +    "folderId",
        +    "categoryId",
        +    "title",
        +    "content",
        +    "visibility",
        +    "createdAt",
        +    "updatedAt"
        +  ],
        +  "type": "object"
        +}
  4. 9 tool updates
    • Changedcreate_category2 fields changed
      • addedInput schema / properties / description / description
        Added value: +"Optional plain-text explanation of the category purpose; omit if not needed."
      • addedInput schema / properties / name / description
        Added value: +"Non-empty display name for the new category, for example Project notes."
    • Addeddelete_category
    • Addeddelete_document
    • Addeddelete_folder
    • Changedget_document_index_status1 field changed
      • addedInput schema / properties / documentId / description
        Added value: +"Document UUID returned by search_documents or list_documents; must be readable in the active scope."
    • Changedget_related_documents2 fields changed
      • addedInput schema / properties / documentId / description
        Added value: +"Document UUID returned by search_documents or list_documents; must be readable in the active scope."
      • addedInput schema / properties / limit / description
        Added value: +"Maximum related documents to return, from 1 to 50. Omit to use the server default."
    • Changedrefresh_document_index1 field changed
      • addedInput schema / properties / documentId / description
        Added value: +"Document UUID returned by search_documents or list_documents; must be readable in the active scope."
    • Addedrestore_document_version
    • Changedsearch_knowledge_graph4 fields changed
      • addedInput schema / properties / docIds / description
        Added value: +"Between 1 and 50 authorized document UUIDs from search_documents or list_documents to use as graph traversal seeds."
      • addedInput schema / properties / docIds / maxItems
        Added value: +50
      • addedInput schema / properties / limit / description
        Added value: +"Maximum related documents to return, from 1 to 50. Omit to use the server default."
      • addedInput schema / properties / query / description
        Added value: +"Search text used to filter and rank graph-related documents. Preserve the original query language."
  5. 17 tool updates
    • First observedcreate_category
    • First observedcreate_document
    • First observedcreate_folder
    • First observedcreate_snapshot
    • First observedexport_document
    • First observedget_document
    • First observedget_document_index_status
    • First observedget_related_documents
    • First observedget_version_history
    • First observedlist_categories
    • First observedlist_documents
    • First observedlist_folders
    • First observedlist_tags
    • First observedrefresh_document_index
    • First observedsearch_documents
    • First observedsearch_knowledge_graph
    • First observedupdate_document

Publisher details

Operator
Not applicable
Operator website
https://docsmint.com
Vendor relationship
Not applicable
Trust center
Not applicable
Restrictions
Not applicable

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Self-hosted knowledge backend for AI agents. Provides 11 MCP tools for hybrid vector + keyword search, container-isolated knowledge bases, and 4 storage connectors (S3, Azure Blob, MinIO, filesystem). Built with .NET, runs via Docker.
    11
    18
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    A modular RAG framework exposing knowledge retrieval tools via MCP, enabling AI assistants to perform hybrid search, reranking, and multimodal document queries with full observability and evaluation.
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Durable hybrid memory for AI agents. Combines vector search, BM25, temporal retrieval, and optional Memgraph knowledge graph via reciprocal rank fusion. 6 MCP tools: health, search, answer, feedback, graph_query, graph_add_triple. Self-hosted with Qdrant backend.
    7
    182 PyPI
    7
    Apache 2.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to store, search, and link typed knowledge entities such as memories, people, projects, tasks, and documents over a Streamable HTTP MCP endpoint. Combines hybrid BM25 and vector search with a knowledge graph, and separates short-lived session context from durable memory that future agents can trust.
    9
    AGPL 3.0
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.