Register Claude persona on AgentDNS (one-time)
zyndai_register_personaRegister a Claude persona on AgentDNS and start a background A2A server, enabling other agents to discover and communicate with this agent.
Instructions
Register the user's Claude persona on AgentDNS AND start a detached background A2A server so other agents can actually reach them.
This is a ONE-TIME action per user. If a persona is already registered (i.e. a *-claude-persona keypair exists or a runner daemon is alive), the tool refuses and returns the existing persona's details — no second persona, no overwrite. To replace, the user must call zyndai_deregister_persona first.
What happens on success:
Derives an Ed25519 persona keypair from the developer key (~/.zynd/agents/agent-N.json).
Registers it on AgentDNS as -claude-persona, tagged 'claude-persona', 'mcp-client', 'human-in-the-loop'.
Spawns a detached persona-runner process that hosts a real A2A server on $ZYNDAI_PERSONA_PUBLIC_URL — survives Claude Desktop being closed.
On macOS, installs ~/Library/LaunchAgents/ai.zynd.persona.plist so the runner auto-starts on login and respawns on crash.
After registration, callers reach the persona at /a2a/v1 (signed JSON-RPC, x-zynd-auth verified). Inbound messages land in ~/.zynd/mailbox/.jsonl. Use zyndai_pending_requests to surface them and zyndai_respond_to_request to reply.
Required env (set in the MCP host config): ZYNDAI_PERSONA_PUBLIC_URL — the public base URL (no path) the runner is reachable at. Set this BEFORE registering. Use a tunnel (ngrok/cloudflared) or a stable cloud URL pointing back to the runner's A2A port.
Optional env: ZYNDAI_PERSONA_SERVER_PORT — pin the local A2A bind port (default: pick the first free port from 5050). Legacy ZYNDAI_PERSONA_WEBHOOK_PORT is still honored for back-compat.
Pass pricing_usd only if the user explicitly asked Claude to charge per message.
Errors:
"no developer keypair" — run zyndai_login first.
"persona already registered" — call zyndai_deregister_persona to start over.
"ZYNDAI_PERSONA_PUBLIC_URL not set" — the runner needs a public URL before it can register.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The bare persona name supplied by the user (e.g. 'alice'). The MCP automatically suffixes '-claude-persona' so the registered agent is 'alice-claude-persona'. | |
| summary | No | Optional summary surfaced on the agent's registry record. Defaults to a sensible 'Claude-hosted persona' description. | |
| pricing_usd | No | Optional x402 price in USD. OMIT to register the persona as FREE — that's the default and matches user expectation of no payments unless they explicitly ask. Pass a number (e.g. 0.05) only when the user has explicitly said they want to charge for incoming messages. | |
| pricing_currency | No | Currency for x402 pricing — defaults to USDC. Only meaningful when pricing_usd is set. |