Skip to main content
Glama

Agent Handoff Task

agent_handoff_task

Hand off work with a required L1 brief and optional L2 artifact.

REVIEWING/HANDOFF require a structured brief with summary, key_metrics,
unverified_hypotheses and risk_flag (boolean). Agents must use REVIEWING;
DONE is human-only, and human_feedback is rejected for non-human callers.
Providing artifact_text stores the L2 body as a document and returns
artifact_uri (doc://...); artifact_text and artifact_uri are mutually
exclusive. The lease is released. REVIEWING enters the ping-pong circuit
breaker on rejection.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "task_key": "<task_key>",
      "next_status": "<next_status>"
    },
    "name": "agent_handoff_task"
  }
}

Input Schema

NameRequiredDescriptionDefault
agentNo
briefNo
task_keyYes
create_nextNo
lease_epochNo
next_statusYes
artifact_uriNodoc:// URI; mutually exclusive with artifact_text
artifact_textNoL2 artifact body; mutually exclusive with artifact_uri
fencing_tokenNo
human_feedbackNo
idempotency_keyNoOptional. Retries with the same key and arguments within 24 h replay the first result (replayed=true) without a second write; a different body with the same key is idempotency_key_reused.
output_artifactNo
expected_versionNo
session_batch_idNo

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A3.8/5.0
Behavior4/5

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

Goes well past the annotations (readOnlyHint=false, destructiveHint=false) by disclosing real side effects: the lease is released, artifact_text persists an L2 body and returns a doc:// artifact_uri, artifact_text and artifact_uri are mutually exclusive, and REVIEWING trips a ping-pong circuit breaker on rejection. It does not explain the concurrency/safety semantics of lease_epoch, fencing_token, or expected_version, which are the most behaviorally consequential undocumented parameters for a mutating handoff.

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?

Dense and front-loaded: artifact handling, then status rules, then side effects, with no filler sentences. The telegraphic style ('The lease is released.') trades some readability for compactness, but every sentence conveys a distinct constraint.

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

Completeness3/5

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

For a 14-parameter state-machine mutation with an output schema and 21% schema coverage, the description covers the brief, artifacts, lease release, and the REVIEWING/DONE rules but leaves several major pieces unaddressed: HANDOFF/AWAITING_HUMAN/FAILED semantics, create_next chaining, and the optimistic-concurrency parameters. It is enough to attempt a safe call in the common path but not enough to use the tool fully or correctly under contention.

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 only 21%, so the description must carry the load; it names the four required brief fields, crystallizes the artifact_text/artifact_uri mutual exclusion, and constrains human_feedback and next_status. However, roughly eight parameters — agent, task_key, create_next, output_artifact, lease_epoch, fencing_token, expected_version, session_batch_id — get no explanation anywhere, including the concurrency controls an agent most needs to get right.

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

Purpose4/5

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

States a specific action and resource: handing off work with a required L1 brief plus optional L2 artifact, and it makes clear the call is a status transition (next_status values REVIEWING/HANDOFF). It doesn't explicitly distinguish itself from close siblings like set_status, update_task, or request_human_review, so an agent must infer that this is the handoff-specific path rather than the generic status setter.

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?

Gives concrete when/when-not rules: agents must use REVIEWING, DONE is human-only, human_feedback is rejected for non-human callers, and REVIEWING/HANDOFF require a structured brief. What's missing is explicit routing to alternatives — it never says to use request_human_review or set_status instead for cases like AWAITING_HUMAN or FAILED, which are enum values that are named in the schema but never explained.

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.