Skip to main content
Glama

federation_node_catalog_sync

Push your node's vendor-catalog projection to the hub index (CO 492 Phase 2). NODE-SIGNED like report-in: the node signs the canonical envelope and replaces ONLY its own indexed entries — one node can never touch another's projection, because the sync is keyed by the authenticated node id. Push-not-pull: discovery reads the hub-local index and never reaches out to a node at search time, so a dark node adds zero latency and zero failure to search. Entries carry tenant_id/sku/name/price (USD, peg applied node-side) + optional category/description; wholesale replace; max 500 entries. Served to buyers only while the node's staleness rung is fresh or flagged (CO 490) — a withheld node's vendors vanish from discovery by construction. Returns: { ok: true, count, refused: [{ tenant_id, holder_node_id }] } or { error, code }. Example: call federation_node_catalog_sync with arguments {}.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
algYesSignature algorithm of the bound key.
nonceYesA fresh single-use nonce (part of the signed envelope).
entriesYesThe full current projection (wholesale replace; max 500). Each: tenant_id, sku, name, price (USD) + optional category/description.
node_idYesThe syncing node.
signatureYesbase64 signature over the canonical envelope, by the node bound key.
timestampYesISO timestamp within the skew window (part of the signed envelope).

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Added

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the sparse annotations (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=false) by disclosing: wholesale-replace semantics, node-keyed scoping so one node never touches another's projection, the 500-entry cap, the staleness-rung gating (CO 490), and the exact refusal/error return shapes. No contradiction with annotations — 'wholesale replace' is scoped to the node's own entries, consistent with destructiveHint=false.

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

Conciseness4/5

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

The description is long but every sentence earns its place for a tool with many behavioral nuances (signing, scoping, push model, staleness, limits, returns). It is front-loaded with the core purpose and ends with a concrete example call. Slightly dense, but the complexity justifies the length.

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

Completeness5/5

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

No output schema exists, so the description correctly carries the full burden of explaining the return format — it specifies both success ({ ok, count, refused }) and error ({ error, code }) shapes. Combined with 100% schema coverage of inputs and the rich behavioral detail, nothing an agent needs to call this 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 schema already documents all six parameters — baseline 3. The description adds real value on top: it specifies the entries structure (tenant_id/sku/name/price in USD, peg applied node-side, optional category/description), the wholesale-replace semantics, the max-500 limit, and the canonical-envelope signing that ties node_id/signature/timestamp/nonce together. This meaningfully exceeds the schema text.

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

Purpose5/5

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

States a specific verb and resource ('Push your node's vendor-catalog projection to the hub index') and anchors it to a named phase (CO 492 Phase 2). It also differentiates from siblings by name: it contrasts with report-in (signing style) and with search/discovery (push vs pull), so an agent can distinguish it from the many federation_* siblings without opening their 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?

Provides clear architectural context that implies when to use it: 'Push-not-pull: discovery reads the hub-local index and never reaches out to a node at search time' tells the agent this is the write-side counterpart to search tools. It names report-in as a signing precedent. It lacks an explicit 'use X instead of Y' exclusion, but the push/pull contrast is strong enough guidance for correct selection.

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.

Resources