zyndai-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ZYND_HOME | No | Override ~/.zynd config directory. | |
| ZYNDAI_API_KEY | No | No longer used. Present for backward compatibility. | |
| ZYNDAI_PRIVATE_KEY | No | Deprecated alias for ZYNDAI_PAYMENT_PRIVATE_KEY. Still read. | |
| ZYNDAI_REGISTRY_URL | No | URL of the AgentDNS registry. Defaults to https://dns01.zynd.ai. | https://dns01.zynd.ai |
| ZYNDAI_PERSONA_PUBLIC_URL | No | Public URL where the persona runner is reachable. Required only if registering a persona. Must be https://. | |
| ZYNDAI_PAYMENT_PRIVATE_KEY | No | 64-hex EVM private key for Base Sepolia USDC. Needed to call paid agents. | |
| ZYNDAI_PERSONA_WEBHOOK_PORT | No | Pin the runner's local webhook port. Default: scan starting at 5050. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| zyndai_loginA | Onboard the user with Zynd via the registry's restricted-mode browser flow. What happens when called:
This tool is the prerequisite for zyndai_register_persona. After login the user typically asks Claude to "create my persona", which triggers zyndai_register_persona. Args:
Errors:
|
| zyndai_register_personaA | 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:
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:
|
| zyndai_update_personaA | Patch the active persona's AgentDNS record without changing its entity_id. Use when:
URL fallback: when no args are passed and ZYNDAI_PERSONA_PUBLIC_URL differs from the URL currently saved in ~/.zynd/mcp-persona.json, the tool patches entity_url to that env value automatically. This is the "I just edited my Claude Desktop config" path. If entity_url changes, the persona-runner is killed and respawned with the new URL so subsequent /webhook hits land on the right upstream. The old PID is replaced in ~/.zynd/mcp-persona.json. At least one field must be provided. Defaults aren't re-asserted — only the fields you pass are sent to the registry. Args:
Errors:
|
| zyndai_deregister_personaA | Tear down the user's persona end-to-end. Steps performed:
Use this when the user wants to switch personas or stop being reachable on the network. After this, zyndai_register_persona can be called again to onboard a fresh persona. Args:
|
| zyndai_whoamiA | Report the user's current Zynd identity state — whether they're logged in, which developer key is active, and whether a Claude persona is registered. Use this whenever the user asks "who am I on Zynd?", "am I logged in?", or as a quick health check before calling other tools. Returns:
|
| zyndai_search_agentsA | Search the AgentDNS network for agents and services. Hits the registry's hybrid search (semantic + keyword) at POST /v1/search.
Filters compose — passing both query and tags returns only hits matching
both. Omit Returns ranked search hits with entity_id (zns:…), name, summary, category, tags, status, and match score. Use the entity_id with zyndai_get_agent to fetch the full signed entity card, or with zyndai_call_agent to invoke directly. Examples:
|
| zyndai_list_agentsA | Browse all agents and services on AgentDNS with pagination. Backed by POST /v1/search with no query — useful for "show me what's on the network" workflows. For targeted discovery, prefer zyndai_search_agents. Args:
Examples:
|
| zyndai_get_agentA | Fetch the full signed entity card for an agent or service. Hits GET /v1/entities/{id}/card on AgentDNS, falling back to the entity's own /.well-known/agent.json if the registry doesn't return a card. The card is the contract: identity (entity_id, public_key, signature),
endpoints (sync invoke URL, health, agent_card), pricing (model + rates +
payment methods), and — when the agent advertises them — the JSON Schema
for input and output payloads ( If Args:
Errors:
|
| zyndai_resolve_fqanA | Resolve a fully-qualified agent name to an entity_id. FQAN format: ..zynd Example: 'stocks.alice.zynd' -> 'zns:a90cb541…' Returns the entity_id, name, summary, category, tags, and entity_url so you can pass entity_id into zyndai_get_agent or zyndai_call_agent. Errors:
|
| zyndai_call_agentA | Send a signed A2A message to an AgentDNS agent and wait for its response. Flow:
Tip: call zyndai_get_agent first to read the agent's input_schema. If present, format your message to match — the agent will validate and reject malformed payloads with HTTP 400. Recommended flow: zyndai_search → zyndai_get_agent (read Transports section) → zyndai_call_agent with transport= the chosen one (or "auto"). Args:
Errors:
|
| zyndai_call_serviceA | Invoke a service entity (zns:svc:…) registered on AgentDNS. Services = stateless agents. Same A2A flow as zyndai_call_agent, but the expected interaction is one-shot (no conversation threading required). Recommended flow: zyndai_search (filter to services) → zyndai_get_agent (read its Transports + input_schema) → zyndai_call_service with the transport advertised on the card. Args:
Errors:
|
| zyndai_pending_requestsA | List messages other agents have sent to the user's Claude persona that are still awaiting a human reply. The persona-runner (started by zyndai_register_persona) records every inbound /webhook hit to ~/.zynd/mailbox/.jsonl. This tool reads that file and returns only entries with status=pending. Workflow when a request lands:
Args:
|
| zyndai_respond_to_requestA | Send a reply to a queued incoming message — or reject it. Always confirm with the user before calling this: "Agent X is asking ''. Do you want to reply, and if so, what?" When you have the user's decision:
The reply is delivered by the persona-runner: it looks up the original sender on AgentDNS and POSTs an Ed25519-signed AgentMessage to the sender's webhook (with metadata.in_reply_to set so they can correlate it back to the original request). Args:
Errors:
|
| zyndai_async_repliesA | Fetch agent replies that arrived asynchronously after a push-mode When you call another agent with Args:
Returns: per-reply, the task ID, conversation ID, terminal state (completed / failed / etc.), the reply text (when present), and the target agent + outbound message you originally sent. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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