Skip to main content
Glama

anchor_document

Adds an ADDITIONAL attachment between a document and a block — without touching the document's existing attachments or those of the block. A document's single attachment (the common case) is REPLACED with update_document({cellId}); anchor_document is for when a document must appear on SEVERAL blocks at once.

Input Schema

NameRequiredDescriptionDefault
cellIdYesThe block to attach THIS document to, IN ADDITION to its existing attachments — not a replacement. A document's single attachment is REPLACED with update_document({cellId}).
documentIdYesIdentifier of the document to attach (obtained via list_documents/create_document).
expectedProjectIdNoUUID of the project targeted by THIS call. ACTUALLY targets this project instead of the session project. Refused without changing anything if access is not granted.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • changedInput schema / properties / cellId / description
      Previous value: -"Le bloc auquel ancrer CE document, EN PLUS de ses ancres existantes — jamais un remplacement. L’ancre unique d’un document se REMPLACE par update_document({cellId})."New value: +"The block to attach THIS document to, IN ADDITION to its existing attachments — not a replacement. A document's single attachment is REPLACED with update_document({cellId})."
    • changedInput schema / properties / documentId / description
      Previous value: -"Identifiant du document à ancrer (obtenu via list_documents/create_document)."New value: +"Identifier of the document to attach (obtained via list_documents/create_document)."
    • changedInput schema / properties / expectedProjectId / description
      Previous value: -"UUID du projet visé par CET appel. Cible RÉELLEMENT ce projet au lieu du projet de session. Refusé sans rien modifier si l'accès n'est pas accordé."New value: +"UUID of the project targeted by THIS call. ACTUALLY targets this project instead of the session project. Refused without changing anything if access is not granted."
  2. Changed1 schema field changed
    • changedInput schema / properties / cellId / description
      Previous value: -"Le bloc auquel ancrer CE document, EN PLUS de ses ancres existantes — jamais un remplacement. Pour REMPLACER l’ancre unique d’un document, préfère update_document({cellId})."New value: +"Le bloc auquel ancrer CE document, EN PLUS de ses ancres existantes — jamais un remplacement. L’ancre unique d’un document se REMPLACE par update_document({cellId})."
  3. First observed

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false and destructiveHint=false; the description goes further by explaining what that non-destructiveness means concretely — existing attachments on neither side are touched, making the operation purely additive. It still omits auth/permission requirements and return behavior, so it is not exhaustive, but it adds real semantic value over 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 sentences, front-loaded with the additive-vs-replace distinction and the alternative tool. Every clause earns its place; nothing is padding.

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 3-param mutation tool with full schema coverage and safety annotations, the description covers purpose, the replacement alternative, and the additive guarantee. Only the result/return behavior is unaddressed, which is minor given no output schema exists.

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

Parameters3/5

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

Schema coverage is 100% and the cellId description already carries the 'in addition to existing attachments, not a replacement' wording, so the description largely restates structured data. It frames the parameters usefully but adds no syntax or format meaning beyond the schema.

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

Purpose5/5

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

States a precise verb (adds an ADDITIONAL attachment) and the exact resource pair (document↔block), and explicitly distinguishes its behavior from update_document's replacement semantics. An agent can tell it apart from update_document, unanchor_document, and add_content_block without opening any schema.

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

Usage Guidelines5/5

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

Names the selecting condition ('when a document must appear on SEVERAL blocks at once') and the excluded common case, routing it to update_document({cellId}) explicitly. Both when-to-use and when-not-to-use are spelled out.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.