Skip to main content
Glama
zyndai

zyndai-mcp-server

by zyndai

Register Claude persona on AgentDNS (one-time)

zyndai_register_persona
Idempotent

Register 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:

  1. Derives an Ed25519 persona keypair from the developer key (~/.zynd/agents/agent-N.json).

  2. Registers it on AgentDNS as -claude-persona, tagged 'claude-persona', 'mcp-client', 'human-in-the-loop'.

  3. Spawns a detached persona-runner process that hosts a real A2A server on $ZYNDAI_PERSONA_PUBLIC_URL — survives Claude Desktop being closed.

  4. 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

TableJSON Schema
NameRequiredDescriptionDefault
nameYesThe bare persona name supplied by the user (e.g. 'alice'). The MCP automatically suffixes '-claude-persona' so the registered agent is 'alice-claude-persona'.
summaryNoOptional summary surfaced on the agent's registry record. Defaults to a sensible 'Claude-hosted persona' description.
pricing_usdNoOptional 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_currencyNoCurrency for x402 pricing — defaults to USDC. Only meaningful when pricing_usd is set.
Behavior5/5

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

The description thoroughly explains side effects: keypair derivation, DNS registration, spawning background process, and installing launch agent. It also documents errors and refusal conditions. Annotations indicate idempotentHint true, which is consistent with the description that subsequent calls return existing details without duplication. No contradiction.

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

Conciseness5/5

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

The description is well-structured with bullet points and sections. Every sentence adds value, and it is front-loaded with the core action and critical warnings. No redundancy.

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?

Despite no output schema, the description details success steps, resulting API endpoint, mailbox location, and references sibling tools for further actions. The agent can fully understand the outcome and next steps.

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

Parameters5/5

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

Schema coverage is 100% and the description adds significant context: name auto-suffixes '-claude-persona', summary defaults, pricing_usd defaults to free, pricing_currency defaults to USDC. It also clarifies when and how to set each parameter.

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?

The description clearly states that the tool registers a Claude persona on AgentDNS and starts a background A2A server. It distinguishes this one-time action from sibling tools like zyndai_deregister_persona and zyndai_update_persona.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use (one-time per user), what to do if already registered (call deregister), and prerequisites (env variables, login). It also guides on when to set pricing_usd only if user explicitly asks to charge.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/zyndai/mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server