Skip to main content
Glama

Agent-to-Agent Handoff Pack

wever_agent-to-agent-handoff-pack
Destructive

Paid URL: 0.10 USDC per call on Base; 10 signed-wallet free calls shared over rolling 30 days. Read the backend 402 body for x402 terms. Build and verify durable signed task handoff packs with authenticated sender, recipient, context, declared permissions and checkpoint state. Operating boundary: Build and verify durable signed task handoff packs with authenticated sender, recipient, context, declared permissions and checkpoint state. The sender builds a pack, the recipient verifies it and applies the declared permissions, and a human reviews the context and next step. Sign wallet ownership proof for each request. POST /api/agent-to-agent-handoff-pack. Existing product credentials, signed mandates, and single-use action grants remain required where applicable. This adapter grants no authority and never supplies server credentials. Wallet-authenticated durable trust service. Signed records attest only to the stated evidence and permission scope. See /api/trust-contract for the public verification key and bounded contract.

Input Schema

NameRequiredDescriptionDefault
modeYes
taskNo
stateNo
usageNo
permissionsNo
handoff_packNo
idempotency_keyNo
recipient_walletNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed17 schema fields changed
    • changedInput schema / additionalProperties
      Previous value: -trueNew value: +false
    • removedInput schema / description
      Removed value: -"The existing product POST body. Supply its documented mode, arguments, and required signed authority or grant. The product validates its full contract."
    • removedInput schema / maxProperties
      Removed value: -64
    • removedInput schema / minProperties
      Removed value: -1
    • addedInput schema / oneOf
      Added value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "idempotency_key": {
      +        "pattern": "^[a-zA-Z0-9_-]{1,96}(?![\\s\\S])",
      +        "type": "string"
      +      },
      +      "mode": {
      +        "const": "build"
      +      },
      +      "permissions": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "allowed_actions": {
      +            "items": {
      +              "maxLength": 160,
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "maxItems": 16,
      +            "type": "array",
      +            "uniqueItems": true
      +          },
      +          "expires_at": {
      +            "maximum": 4102444800,
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "may_redelegate": {
      +            "const": false
      +          },
      +          "resources": {
      +            "items": {
      +              "maxLength": 512,
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "maxItems": 16,
      +            "type": "array",
      +            "uniqueItems": true
      +          }
      +        },
      +        "required": [
      +          "allowed_actions",
      +          "resources",
      +          "expires_at",
      +          "may_redelegate"
      +        ],
      +        "type": "object"
      +      },
      +      "recipient_wallet": {
      +        "pattern": "^0x(?!0{40})[a-fA-F0-9]{40}(?![\\s\\S])",
      +        "type": "string"
      +      },
      +      "state": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "checkpoint": {
      +            "maxLength": 4000,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "evidence_sha256": {
      +            "items": {
      +              "pattern": "^[a-f0-9]{64}(?![\\s\\S])",
      +              "type": "string"
      +            },
      +            "maxItems": 16,
      +            "type": "array",
      +            "uniqueItems": true
      +          },
      +          "status": {
      +            "enum": [
      +              "pending",
      +              "in_progress",
      +              "blocked",
      +              "completed"
      +            ]
      +          }
      +        },
      +        "required": [
      +          "status",
      +          "checkpoint",
      +          "evidence_sha256"
      +        ],
      +        "type": "object"
      +      },
      +      "task": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "context": {
      +            "maxLength": 4000,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "objective": {
      +            "maxLength": 2000,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "task_id": {
      +            "pattern": "^[a-zA-Z0-9_-]{1,96}(?![\\s\\S])",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "task_id",
      +          "objective",
      +          "context"
      +        ],
      +        "type": "object"
      +      },
      +      "usage": {
      +        "enum": [
      +          "synthetic",
      +          "operational"
      +        ]
      +      }
      +    },
      +    "required": [
      +      "mode",
      +      "idempotency_key",
      +      "recipient_wallet",
      +      "task",
      +      "permissions",
      +      "state",
      +      "usage"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "handoff_pack": {
      +        "maxLength": 24000,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "mode": {
      +        "const": "verify"
      +      }
      +    },
      +    "required": [
      +      "mode",
      +      "handoff_pack"
      +    ],
      +    "type": "object"
      +  }
      +]
    • addedInput schema / properties / handoff_pack
      Added value: +{
      +  "maxLength": 24000,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / idempotency_key
      Added value: +{
      +  "pattern": "^[a-zA-Z0-9_-]{1,96}(?![\\s\\S])",
      +  "type": "string"
      +}
    • addedInput schema / properties / mode / enum
      Added value: +[
      +  "build",
      +  "verify"
      +]
    • removedInput schema / properties / mode / maxLength
      Removed value: -128
    • removedInput schema / properties / mode / minLength
      Removed value: -1
    • removedInput schema / properties / mode / type
      Removed value: -"string"
    • addedInput schema / properties / permissions
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "allowed_actions": {
      +      "items": {
      +        "maxLength": 160,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "maxItems": 16,
      +      "type": "array",
      +      "uniqueItems": true
      +    },
      +    "expires_at": {
      +      "maximum": 4102444800,
      +      "minimum": 1,
      +      "type": "integer"
      +    },
      +    "may_redelegate": {
      +      "const": false
      +    },
      +    "resources": {
      +      "items": {
      +        "maxLength": 512,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "maxItems": 16,
      +      "type": "array",
      +      "uniqueItems": true
      +    }
      +  },
      +  "required": [
      +    "allowed_actions",
      +    "resources",
      +    "expires_at",
      +    "may_redelegate"
      +  ],
      +  "type": "object"
      +}
    • addedInput schema / properties / recipient_wallet
      Added value: +{
      +  "pattern": "^0x(?!0{40})[a-fA-F0-9]{40}(?![\\s\\S])",
      +  "type": "string"
      +}
    • addedInput schema / properties / state
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "checkpoint": {
      +      "maxLength": 4000,
      +      "minLength": 1,
      +      "type": "string"
      +    },
      +    "evidence_sha256": {
      +      "items": {
      +        "pattern": "^[a-f0-9]{64}(?![\\s\\S])",
      +        "type": "string"
      +      },
      +      "maxItems": 16,
      +      "type": "array",
      +      "uniqueItems": true
      +    },
      +    "status": {
      +      "enum": [
      +        "pending",
      +        "in_progress",
      +        "blocked",
      +        "completed"
      +      ]
      +    }
      +  },
      +  "required": [
      +    "status",
      +    "checkpoint",
      +    "evidence_sha256"
      +  ],
      +  "type": "object"
      +}
    • addedInput schema / properties / task
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "context": {
      +      "maxLength": 4000,
      +      "minLength": 1,
      +      "type": "string"
      +    },
      +    "objective": {
      +      "maxLength": 2000,
      +      "minLength": 1,
      +      "type": "string"
      +    },
      +    "task_id": {
      +      "pattern": "^[a-zA-Z0-9_-]{1,96}(?![\\s\\S])",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "task_id",
      +    "objective",
      +    "context"
      +  ],
      +  "type": "object"
      +}
    • addedInput schema / properties / usage
      Added value: +{
      +  "enum": [
      +    "synthetic",
      +    "operational"
      +  ]
      +}
    • addedInput schema / required
      Added value: +[
      +  "mode"
      +]
  2. First observed

TDQS

B3.1/5.0
Behavior4/5

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

Beyond the annotations, the description discloses pricing and free-call limits, x402 payment terms, wallet-proof signing, credential requirements, and the fact that the adapter supplies no server credentials and grants no authority. The main gap is that despite destructiveHint=true, it never explains what is destructive or what changes irreversibly in build/verify operations.

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

Conciseness2/5

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

The description opens with payment boilerplate and then repeats the core purpose sentence nearly verbatim under 'Operating boundary.' This duplication and the dense auth/trust boilerplate make it less front-loaded and harder to scan than a concise tool definition should be.

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?

This is a complex tool with two modes, nested objects, oneOf branching, 8 parameters, no output schema, and destructive/open-world annotations. The description provides useful auth and commercial context, but it does not explain mode-specific behavior, output or verification results, idempotency, usage types, evidence hashes, permission expiry, or error handling.

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 description coverage is 0%, so the description must carry parameter meaning. It surfaces recipient, context, permissions, and checkpoint state, but it leaves key parameters such as mode selection, idempotency_key, usage enum, evidence_sha256, expires_at, may_redelegate, and handoff_pack format unexplained.

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 clearly states a specific verb and resource: build and verify durable signed task handoff packs with authenticated sender, recipient, context, permissions, and checkpoint state. It is more specific than the title alone, but it does not distinguish this tool from close siblings such as proof-relay, work-order-exchange, or delegated-authority.

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 description implies usage through the workflow: the sender builds a pack, the recipient verifies it, and a human reviews it. It also states auth prerequisites such as signing a wallet ownership proof and needing existing credentials or mandates. However, it gives no explicit when-to-use/when-not-to-use guidance or alternatives to choose among the many sibling trust and work-order tools.

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.