Skip to main content
Glama

Register an Agent Passport (self-issue with a wallet signature)

onchain_agent_register_agent

USE WHEN an agent wants a public, machine-readable identity: an Agent Passport at satohub.ai/agents/ plus a manifest at /api/agents//manifest that another agent can read before deciding to work with it.

TWO STEPS. Call it with name and wallet_address and no signature, and it returns the exact challenge to sign (EIP-191 personal_sign) and the signed_at that goes with it — the same string GET /api/agents/challenge returns, deterministic, valid 15 minutes. Call it again with wallet_signature and signed_at plus the registration fields, and the passport issues immediately.

WITHOUT A SIGNATURE the registration is accepted and lands PENDING for human review; contact_email is required on that path. Signature verification is EVM-only for now — a Solana wallet can register, unsigned.

WHAT THE SIGNATURE PROVES: control of the key. Nothing else. verification_status is Self-Reported on every passport issued here and no input can change it. Declared standards, endpoints and stack are claims; the endpoint gets one live probe and the wallet one on-chain lookup, and both are reported as what was observed, not as approval.

LIMIT: 5 write calls an hour per caller. The challenge step counts, so fetch it once and sign it.

Returns (json): unsigned first call { challenge, signed_at, expires_in_seconds, next }; registration { ok, slug, sato_agent_id, status, wallet_verified, passport_url, manifest_url, note }.

Example: { name: "Example Agent", wallet_address: "0x…" } then the same plus { description, agent_type: ["Trading"], chains_supported: ["Base"], wallet_signature: "0x…", signed_at: "…" }

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYesThe agent's name. Bound into the signed challenge — changing it invalidates a signature.
stackNoDirectory slugs the agent is built from. Unknown slugs are an error, not silently dropped — the join is the point.
repo_urlNoThe agent's source repository, if public.
signed_atNoThe `signed_at` value returned with the challenge. Valid for 15 minutes.
standardsNoStandards the agent DECLARES support for. Declared, never verified.
agent_typeNoWhat kind of work it does. At least one is required to register.
descriptionNoWhat the agent does (20-1000 chars). Required to register; omit it only on the challenge step.
website_urlNoThe agent's public page.
endpoint_urlNoAn MCP or A2A endpoint the agent serves. Probed once on registration; a declaration is not a working service.
contact_emailNoRequired when registering without a signature — an unsigned registration goes to a human, who may need to ask something.
wallet_addressNoThe AGENT's own wallet: EVM (0x…) or a Solana-style base58 address. Required for the signature path — signature verification is EVM-only for now.
response_formatNoText format; structuredContent is JSON either way.markdown
chains_supportedNoChains it operates on, by display name. At least one is required to register.
wallet_signatureNoAn EIP-191 personal_sign signature over the exact challenge this tool returns when called without one. Present: the passport issues immediately.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  2. Changed1 schema field changed
    • changedInput schema / properties / response_format / description
      Previous value: -"Output format: 'markdown' (human-readable, default) or 'json' (machine-readable)."New value: +"Text format; structuredContent is JSON either way."
  3. Added

TDQS

Score is being calculated.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.