Skip to main content
Glama

Issue Capability Sink Challenge

aps_capability_issue_challenge
Read-onlyIdempotent

Issue a signed canonical action statement and return its challenge hash so a gateway can bind later policy evaluation to the exact action the sink authored.

Instructions

v0.1 capability-token sink challenge (M1). Sink issues a signed canonical action statement. Returns the SinkChallenge and its challenge_hash. Used to bind the gateway's later policy evaluation to a specific action the sink authored. Search keywords: capability token, sink challenge, M1.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
actionYesCanonical action statement
sink_idYesDID of the sink issuing the challenge
subject_idYesDID of the subject the challenge is addressed to
sink_public_keyYesSink Ed25519 public key (hex)
sink_private_keyYesSink Ed25519 private key (hex)
validity_secondsNo
required_policy_freshnessNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed7 schema fields changedv4.0.0
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • removedInput schema / additionalProperties
      Removed value: -false
    • removedInput schema / properties / action / additionalProperties
      Removed value: -false
    • addedInput schema / properties / action / properties / parameters / propertyNames
      Added value: +{
      +  "type": "string"
      +}
    • removedInput schema / properties / required_policy_freshness / additionalProperties
      Removed value: -false
    • addedInput schema / properties / required_policy_freshness / properties / max_age_seconds / maximum
      Added value: +9007199254740991
    • addedInput schema / properties / validity_seconds / maximum
      Added value: +9007199254740991
  2. Addedv2.8.0

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description usefully adds the return payload (SinkChallenge + challenge_hash) and the binding role, but says nothing about the private-key handling, expiry semantics, or what happens on replay — notable for a tool that signs with a caller-supplied key.

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?

Four short sentences, front-loaded with the identity of the operation and then its return and role. The trailing 'Search keywords' line is padding but cheap, and nothing else is wasted.

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?

With no output schema, the description does the right thing by naming the returned SinkChallenge and challenge_hash, and it situates the call in a larger gateway evaluation flow. However, for a 7-parameter cryptographic tool with nested objects, it omits prerequisites (sink key possession, ordering relative to sign_effect/evaluate_authority) and any expiry/freshness context.

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

Parameters2/5

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

Schema coverage is 71% and the description contributes zero parameter meaning: validity_seconds and required_policy_freshness have no schema descriptions and nothing in the prose explains them, while 'canonical action statement' merely echoes the action field's own description. The description does not compensate for the coverage gap.

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?

The description gives a concrete verb and resource: the sink 'issues a signed canonical action statement' and returns a SinkChallenge with its challenge_hash. That is more than a restatement of the name, though the sibling tools in the aps_capability_* family (evaluate_authority, mint_receipt, sign_effect) are never named or differentiated.

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?

It states the downstream role ('bind the gateway's later policy evaluation to a specific action the sink authored'), which implies where this fits in a flow, but gives no explicit when-to-use, no prerequisites, and no alternatives. 'Search keywords' is retrieval metadata, not usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools