Skip to main content
Glama

Ratify a relation

ratify_relation

Confirm a legacy relation (state UNKNOWN, with no reliable start date or evidence) so it becomes CURRENT with a start date and evidence.

Only works on legacy relations that are still current; other relations
are rejected. If the legacy relation type is not in the vocabulary, pass
a core or extension type (see get_ontology) in relation_type, and set
invertir=True if source and target must be swapped. The original
predicate is kept in the evidence.

Args:
    relation_id: Relation id (from query_world_model with
        aspect="evidence").
    valid_from: ISO 8601 date from which the relation holds.
    evidence_ref: What verified it: a command and its output
        (measurement), a URL or person (source), or an existing episode
        id (episode).
    evidence_kind: 'measurement' (default), 'source' or 'episode'.
    relation_type: Vocabulary type to use if the legacy type is not one.
    invertir: Swap source and target.

Input Schema

NameRequiredDescriptionDefault
invertirNo
valid_fromYes
relation_idYes
evidence_refYes
evidence_kindNomeasurement
relation_typeNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.4/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false, idempotentHint=false, destructiveHint=false, but the description adds real behavioral context: the UNKNOWN->CURRENT state transition, the rejection of non-legacy relations, and that the original predicate is preserved in the evidence. It doesn't state permission requirements or whether re-running is safe, but it goes well beyond the annotation surface.

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

Conciseness4/5

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

Front-loads the state transition and constraints before the Args block, and every sentence carries information. It is somewhat long, but no sentence is filler given the 6 undocumented parameters it must explain.

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 non-idempotent mutation with no output schema and 0% schema coverage, the description covers preconditions, parameter meaning, and side effects well. Only minor gaps remain, such as the response shape and permission requirements.

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

Parameters5/5

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

Schema description coverage is 0%, so the description carries the full burden and does so: it explains relation_id's origin (query_world_model aspect=evidence), the ISO 8601 format for valid_from, three accepted forms of evidence_ref, the meaning of each evidence_kind enum value, and the fallback logic for relation_type plus invertir.

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 (confirm/ratify) and resource (relation) and describes the exact state transition UNKNOWN -> CURRENT with start date and evidence. This clearly distinguishes it from siblings like create_relation, end_relation, and relate_entities, which do different things to relations.

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?

States the precondition ('only works on legacy relations that are still current') and the rejection behavior ('other relations are rejected'), plus routes the agent to get_ontology and query_world_model for related inputs. It stops short of naming the alternative tool to use for non-legacy relations, so it isn't fully explicit about when to use something else.

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