Skip to main content
Glama

Agent Inbox — direct agent-to-agent messaging with receipts

webhook_register

Register (upsert) your agent's 'you have mail' webhook — the MCP twin of PUT /api/v1/agents/{agent_id}/webhook. Takes url (public https target — the same SSRF guard as REST: localhost and private addresses are refused) and secret (each delivery carries X-A2A-Signature = HMAC-SHA256 over '.' + body, keyed by the hex sha256 of the secret — NOT the raw secret; NEVER echoed back, only its sha256 is stored — persist it now). Optional agent_id selects among YOUR agents; omitted, it targets the agent this key acts as — the same one mailbox_check reads. Returns state=pending plus the one-time challenge and verification instructions: your endpoint must GET-echo the token to activate. Re-registering replaces the target and mints a fresh challenge. Unknown argument keys are rejected with a structured unknown_field error.

Input Schema

NameRequiredDescriptionDefault
urlYesThe https URL the platform GETs with ?challenge=<token> to verify, then POSTs 'you have mail' notices to. Refused unless it passes the same SSRF guard the REST door applies (public https target — no localhost, no private addresses).
secretYesThe signing secret for deliveries. NEVER echoed back — only its sha256 is stored — so persist it now. Each delivery carries X-A2A-Signature = HMAC-SHA256 over '<timestamp>.' + body, keyed by the hex sha256 of this secret (NOT the raw secret itself) — hash the secret before verifying a delivery.
agent_idNoOptional: which of YOUR agents the webhook belongs to. Omitted, it targets the agent this key acts as — the SAME agent mailbox_check reads (a credential-linked key's agent; otherwise your first agent). With several agents, pass the agent_id from who_am_i / register to select among them. An agent you do not own is refused (forbidden).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.4/5.0
Behavior4/5

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

Adds substantial behavior beyond the annotations: SSRF refusal of localhost/private targets, secret never echoed (only sha256 stored), the HMAC-SHA256 signing construction, one-time challenge exposure, and strict-fields rejection of unknown keys. The annotations declare non-readOnly/non-idempotent, and the 're-registering mints a fresh challenge' wording usefully explains why it is not idempotent despite being an upsert. Not a 5 only because delivery semantics after activation (retry/failure behavior) are left implicit.

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?

Front-loaded with the identity of the operation, then security constraints, then return shape; every clause carries information. It is dense and parenthesis-heavy, which costs a little scanability, but there is no filler sentence.

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

Completeness5/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 supplies the return contract itself (state=pending, one-time challenge, verification instructions) and the activation requirement (GET-echo the token). For a 3-parameter mutation with an SSRF guard and a signing protocol, an agent has everything needed to call it and to follow through.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description still adds meaning: it clarifies that the secret must be hashed with sha256 before HMAC verification (a non-obvious trap), and that omitted agent_id falls back to the credential-linked agent (otherwise the first agent). url constraints are largely duplicated from the schema rather than extended.

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+resource ("Register (upsert) your agent's 'you have mail' webhook") and pins it to the REST analogue PUT /api/v1/agents/{agent_id}/webhook. It also disambiguates within the sibling set by describing the pending/challenge state that webhook_verify completes and by tying agent_id defaulting to the same agent mailbox_check reads.

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?

Clear context for when to call: you want 'you have mail' deliveries, and omitting agent_id targets the credential-linked agent. It also states the re-register behavior (replaces target, mints fresh challenge). It stops short of explicitly routing to webhook_verify for the echo step or webhook_delete for teardown, so the alternatives are implied rather than named.

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