Skip to main content
Glama

Review publication candidate

publication_review

Prepares an expiring exact candidate for publication review; this does not publish.

Input Schema

NameRequiredDescriptionDefault
agent_idYesAgent ID from agents_list or agent_create.

Output Schema

NameRequiredDescriptionDefault
idYes
testsYes
pendingYes
expires_atYes
draft_revisionYes
source_versionsYes
first_publicationYes
candidate_snapshotYes
published_snapshotNo
publication_blockersNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedOutput schema / $defs / TestResult / properties / accepted_at
      Added value: +{
      +  "anyOf": [
      +    {
      +      "format": "date-time",
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Accepted At"
      +}
  2. Changed1 schema field changed
    • changedOutput schema / $defs / ConversationPolicy / description
      Previous value: -"Conversation-level rules, stored as JSONB on ``bot_configs.conversation_policy``.\n\nStored legacy keys, such as the retired Agent-wide ``mode``, are ignored on read.\nWho answers first is each channel's ``reply_mode``."New value: +"Conversation-level rules, stored as JSONB on ``bot_configs.conversation_policy``.\n\nWho answers first is each channel's ``reply_mode``."
  3. Changed1 schema field changed
    • addedInput schema / properties / agent_id / description
      Added value: +"Agent ID from agents_list or agent_create."
  4. Changed6 schema fields changed
    • addedOutput schema / $defs / PendingChanges / properties / sources_removed / items / $ref
      Added value: +"#/$defs/RemovedSource"
    • removedOutput schema / $defs / PendingChanges / properties / sources_removed / items / format
      Removed value: -"uuid"
    • removedOutput schema / $defs / PendingChanges / properties / sources_removed / items / type
      Removed value: -"string"
    • addedOutput schema / $defs / PublicationSnapshot / properties / avatar_url
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Avatar Url"
      +}
    • addedOutput schema / $defs / PublicationSnapshot / properties / knowledge_source_names
      Added value: +{
      +  "additionalProperties": {
      +    "type": "string"
      +  },
      +  "title": "Knowledge Source Names",
      +  "type": "object"
      +}
    • addedOutput schema / $defs / RemovedSource
      Added value: +{
      +  "description": "A source the next publication drops; name is None when no publication recorded it.",
      +  "properties": {
      +    "id": {
      +      "format": "uuid",
      +      "title": "Id",
      +      "type": "string"
      +    },
      +    "name": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Name"
      +    }
      +  },
      +  "required": [
      +    "id"
      +  ],
      +  "title": "RemovedSource",
      +  "type": "object"
      +}
  5. First observed

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, and non-idempotency, so the safety profile is partially covered. The description usefully clarifies that the operation only prepares and does not publish, but leaves unexplained what state is created, why the candidate 'expires', or whether the preparation can be discarded.

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?

A single compact sentence with the non-publishing constraint front-loaded, and no filler. It is efficient, though the dense undefined term 'expiring exact candidate' costs some clarity.

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

Completeness2/5

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

There is an output schema and 100% parameter coverage, which lowers the burden, but for a non-read-only preparation step in a crowded publication_* family the description never explains what preparation entails or how it connects to publication_publish and publication_history. An agent could not confidently sequence calls from this text alone.

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 agent_id parameter is documented inline as coming from agents_list or agent_create. The description adds no further meaning about the parameter, so the baseline 3 applies.

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

Purpose3/5

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

It states a verb (prepares) and a resource (publication candidate) and explicitly disclaims publishing, which separates it from publication_publish. However, the key noun phrase 'expiring exact candidate' is undefined jargon, so an agent cannot tell concretely what artifact is produced.

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 clause 'this does not publish' implicitly routes the agent to publication_publish for the actual publish step, which is useful. There is no explicit statement of when to call this versus publication_history, publication_restore, or publication_pause, so guidance remains inferential.

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