Skip to main content
Glama

Synthex Forge — x402 Paid Agent Services

Issue Agent Credential

issue_agent_credential
Destructive

Issue ONE scoped, expiring capability credential. use it rather than verify_agent_credential for agent credential specifically; an object with 22 fields including credential_id, credential_token. $0.05 USDC.

Input Schema

NameRequiredDescriptionDefault
scopesNoThe scopes to grant. Every scope must be in the documented vocabulary; an unknown scope is a 400 with the vocabulary in the body. A wildcard is refused.
subjectYesWho the credential is for, e.g. 'did:agent:abc'.
max_usesNoHow many uses the credential is granted (1..100000).
issued_forNoWho the credential was issued to, for the record.
policy_refNoThe policy the credential is issued under. Its SHA-256 is carried in the credential.
ttl_secondsNoHow long the credential is valid, in seconds (1..2592000).

Output Schema

NameRequiredDescriptionDefault
kindNoThe `kind` field of the response.
errorNoThe machine-readable error code, when the operation failed.
key_idNoThe `key_id` field of the response.
scopesNoThe `scopes` field of the response.
subjectNoThe `subject` field of the response.
max_usesNoThe `max_uses` field of the response.
issued_atNoThe `issued_at` field of the response.
signatureYesThe Ed25519 signature over the evidence core, base64-encoded.
disclaimerNoThe `disclaimer` field of the response.
expires_atNoThe `expires_at` field of the response.
issued_forNoThe `issued_for` field of the response.
policy_refNoThe `policy_ref` field of the response.
scopes_csvNoThe `scopes_csv` field of the response.
signed_formNoThe `signed_form` field of the response.
x402VersionNoThe `x402Version` field of the response.
error_reasonNoThe human-readable error explanation.
publicKeyHexNoThe `publicKeyHex` field of the response.
token_formatNoThe `token_format` field of the response.
credential_idNoThe `credential_id` field of the response.
error_messageNoThe `error_message` field of the response.
policy_sha256NoThe `policy_sha256` field of the response.
credential_tokenNoThe `credential_token` field of the response.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed24 schema fields changed
    • addedOutput schema / properties / credential_id
      Added value: +{
      +  "description": "The `credential_id` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / credential_token
      Added value: +{
      +  "description": "The `credential_token` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / disclaimer
      Added value: +{
      +  "description": "The `disclaimer` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / error
      Added value: +{
      +  "description": "The machine-readable error code, when the operation failed.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / error_message
      Added value: +{
      +  "description": "The `error_message` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / error_reason
      Added value: +{
      +  "description": "The human-readable error explanation.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / expires_at
      Added value: +{
      +  "description": "The `expires_at` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / issued_at
      Added value: +{
      +  "description": "The `issued_at` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / issued_for
      Added value: +{
      +  "description": "The `issued_for` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / key_id
      Added value: +{
      +  "description": "The `key_id` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / kind
      Added value: +{
      +  "description": "The `kind` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / max_uses
      Added value: +{
      +  "description": "The `max_uses` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / policy_ref
      Added value: +{
      +  "description": "The `policy_ref` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / policy_sha256
      Added value: +{
      +  "description": "The `policy_sha256` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / publicKeyHex
      Added value: +{
      +  "description": "The `publicKeyHex` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / scopes
      Added value: +{
      +  "description": "The `scopes` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / scopes_csv
      Added value: +{
      +  "description": "The `scopes_csv` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / signature
      Added value: +{
      +  "description": "The Ed25519 signature over the evidence core, base64-encoded.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / signed_form
      Added value: +{
      +  "description": "The `signed_form` field of the response.",
      +  "type": "object"
      +}
    • removedOutput schema / properties / status
      Removed value: -{
      -  "type": "string"
      -}
    • addedOutput schema / properties / subject
      Added value: +{
      +  "description": "The `subject` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / token_format
      Added value: +{
      +  "description": "The `token_format` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / x402Version
      Added value: +{
      +  "description": "The `x402Version` field of the response.",
      +  "type": "object"
      +}
    • addedOutput schema / required
      Added value: +[
      +  "signature"
      +]
  2. Added

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and non-idempotent, so the safety profile is covered; the description adds genuine extra context by disclosing the exact price ($0.05 USDC) and the fact that the credential is scoped and expiring. It does not explain the consequence of destructiveness for this tool — that the returned token is shown once and cannot be re-read — which is the single most operationally important behavioral fact here.

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

Conciseness3/5

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

Purpose is correctly front-loaded in three short sentences with no filler. However, the middle sentence is grammatically tangled and reads as a half-formed routing rule, and the third sentence enumerates return fields ('22 fields including credential_id, credential_token') that duplicate the output schema, so it does not fully earn its place.

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?

An output schema exists so return values need not be explained, and the schema fully covers all six parameters. What is missing for a paid, destructive, non-idempotent issuance call is the irreversibility/one-time-reveal semantics and any notion of which subject or caller authority is valid — the description acknowledges cost but not consequence.

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%, so scopes vocabulary enforcement, wildcard refusal, ttl range and max_uses bounds are all already documented in the schema. The description adds nothing parameter-level beyond the words 'scoped' and 'expiring', so baseline 3 applies.

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 ('Issue ONE scoped, expiring capability credential'), including the scope and expiry qualifiers that define what kind of credential it is. It also names the sibling `verify_agent_credential` as the contrasting operation, so an agent can separate issuance from verification without opening either schema.

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?

There is a routing hint ('use it rather than `verify_agent_credential`'), which names an alternative, but the qualifying clause 'for agent credential specifically' is circular and adds no actionable condition. No prerequisites are stated: nothing about required authority to issue, cost-account approval, or when NOT to issue (e.g., delegating instead via `verify_agent_delegation`).

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.