Skip to main content
Glama

Link translation

link_translation
Idempotent

Declare that two articles are the same article in two languages. The link is symmetric and shared: both ends carry one cluster id, so linking B to A is the same call as linking A to B, and a third language joins the same cluster. Both articles must already declare their own language with upsert_post; the workspace profile language does not count here. Refused (degraded reason) when both are written in the same language (same-language: those are two takes on one topic, not translations), when the cluster already covers the incoming language (language-taken: unlink the other side first), when either article has no language (language-unknown), or when one is archived (archived). Each returned translation carries sharesSlug: the public blog pairs translations by slug, so a pair on two different slugs is linked here and will still advertise no hreflang once delivered.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idYes
alternateIdYes
workspaceIdNoThe workspace this call acts on, as listed by list_workspaces. Left out, the call uses the workspace the account is in right now.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / workspaceId
      Added value: +{
      +  "description": "The workspace this call acts on, as listed by list_workspaces. Left out, the call uses the workspace the account is in right now.",
      +  "type": "string"
      +}
  2. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only tell the agent this is a non-destructive, idempotent write. The description goes well beyond that: it discloses the symmetry invariant ('linking B to A is the same call as linking A to B'), the shared cluster-id model, the exact degraded-reason taxonomy for refusals, and the `sharesSlug` return semantics with the hreflang caveat. This is exactly the behavioral context 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?

The core purpose and symmetry rule are front-loaded, and each sentence carries real information (prerequisites, refusals, return field). It is dense to the point of being a single long paragraph, and the closing hreflang/slug detail is useful but slightly tangential.

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 no output schema present, the description correctly supplies the return-value detail that would otherwise be missing (`sharesSlug` and its delivery implications). For a write tool with four distinct refusal paths and cross-tool prerequisites, the coverage is thorough.

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 only 33% (only workspaceId is documented), so the description must compensate. It does so partially by establishing that the call takes two articles (id/alternateId) and that order is irrelevant ('linking B to A is the same call as linking A to B'), but it never explicitly maps id vs alternateId, leaving the agent to infer the roles.

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 ('Declare that two articles are the same article in two languages') and immediately explains the resulting model: a symmetric, shared cluster id. It is clearly distinguishable from its sibling unlink_translation, which it even references implicitly ('unlink the other side first').

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 prerequisites are given ('Both articles must already declare their own `language` with upsert_post; the workspace profile language does not count'), plus four named refusal conditions with reason codes (same-language, language-taken, language-unknown, archived) and the corrective action for language-taken. This is a near-complete when/when-not map for an agent.

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