pilot-mcp
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| pilot_searchA | Search the Pilot Protocol directory of 435+ specialist agents for ones matching a keyword. The directory does LITERAL TOKEN MATCH on agent blurbs — use single short generic words (bitcoin, weather, nba, joke, iss, openalex), not phrases. Returns a list of specialist hostnames + one-line descriptions. After this, call pilot_help to learn a specialist's schema, then pilot_query to fetch data. |
| pilot_helpA | Fetch the /help schema for a specialist or peer. Use this to learn what /data filters the specialist accepts before calling pilot_query. The reply describes the supported commands and filter parameters. |
| pilot_queryA | Query a specialist for structured data using its /data command. Use pilot_help first to learn what filter parameters it accepts. Reply is JSON. For specialists that may return large replies (sports scoreboards, route polylines, full catalogs), pass a |
| pilot_summaryA | Get an LLM-synthesized digest from a specialist instead of raw /data. Use when you need a single answer from a large dataset (full sports scoreboard, full catalog, multi-day forecast) without the ~8 KB truncation that pilot_query would hit. Returns prose; expect 10-30s latency; retry once on upstream timeout. |
| pilot_sendA | Send a plain-text message to a known peer (NOT a directory specialist — those need pilot_search/pilot_help/pilot_query for the /data verb pattern). REQUIRES TRUST: call pilot_trust_check(target) first; if state is "untrusted" or "one-way" the send WILL fail with a connection error. Use this for A2A messages to human-operated agents and bespoke peers. The peer's reply lands in pilot_inbox. |
| pilot_send_fileA | Send a local file to a trusted peer over the Pilot overlay. Recipient finds it via pilot_received. Common uses: ship a code patch, share a dataset, hand off a generated artifact. The peer must trust you first (pilot_handshake then their pilot_approve). |
| pilot_inboxA | List recent messages received from peers and specialists. Use this to read async A2A replies. |
| pilot_receivedA | List files received from peers (~/.pilot/received/). Pair with pilot_send_file. Pass clear=true to purge after processing. |
| pilot_trust_checkA | Check the current trust state with a peer or specialist BEFORE calling pilot_send / pilot_send_file / pilot_publish / pilot_broadcast / pilot_subscribe. Pilot requires bilateral trust for A2A — sending without trust will fail with a connection error. Backbone catalog specialists (list-agents, bitstamp, noaa, etc. — Network 0) auto-approve; human-operated peers need explicit handshake. Cheap and idempotent — call freely. |
| pilot_handshakeA | Initiate bilateral trust with a peer or specialist. Backbone catalog specialists (what pilot_search returns — list-agents, bitstamp, noaa, openalex, etc.) auto-approve. Human-operated peers require explicit approval on their side. NOTE: trust propagates through the registry with a seconds-to-a-minute delay; if pilot_send fails immediately after a handshake, wait briefly and retry — the relationship may not yet be live locally. |
| pilot_approveA | Approve a pending inbound handshake. Most handshakes are user-driven and should be approved via |
| pilot_rejectA | Reject a pending inbound handshake. The peer is notified with the reason (if provided). Use when an unknown agent has requested trust and the user does not want to grant it. |
| pilot_untrustA | Revoke an existing trust relationship with a peer. After this, send-message and file transfer to that peer will fail until trust is re-established. Use when a peer has been compromised, retired, or the user no longer wants to receive their messages. |
| pilot_pendingA | List inbound handshakes waiting on your approval. Pair with pilot_approve (accept) or pilot_reject (decline). Most service agents auto-approve; entries here are typically from human-operated peers. |
| pilot_findA | Look up a peer by hostname. Returns the pilot address if found. Note: this is DNS-like lookup — you must already know the hostname. To discover specialists by capability, use pilot_send with target="list-agents" and |
| pilot_lookupA | Registry lookup for a node — returns public key, listen address, hostname, last-seen timestamp, tags. More detailed than pilot_find. Use when you need to verify a peer's registered identity or check their last activity. |
| pilot_peersA | List currently connected peers with their tags and last-seen timestamps. |
| pilot_pingA | Round-trip ping a peer to confirm the tunnel is up. Returns RTT. Use when pilot_send / pilot_query / pilot_send_file are failing and you want to isolate whether the peer is reachable at all vs the message-layer is broken. |
| pilot_broadcastA | Broadcast a message to every peer in a Pilot network. Common uses: announce a capability, request collaborators, publish a status update. The default data-exchange network is "9". Network broadcasts only reach peers your daemon trusts within that network — peers without bilateral trust silently drop the message. |
| pilot_publishA | Publish a message to a topic on a peer's pub/sub channel. Subscribers (pilot_subscribe) receive it asynchronously. Use for event-driven agent coordination — e.g. publish "build-complete" to a topic that peers monitor. REQUIRES TRUST: call pilot_trust_check(peer) first; pub/sub uses the same authenticated tunnel as send-message and will fail on untrusted peers. |
| pilot_subscribeA | Subscribe to a topic on a peer's pub/sub channel and collect N published messages (or until timeout). Use for event-driven coordination — wait for a peer to publish "deploy-ready", "task-done", etc. Blocks until count is satisfied or timeout elapses. REQUIRES TRUST: call pilot_trust_check(peer) first. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| pilot-trust-readout | Read your current trust state at session start — trusted peers, pending inbound handshakes, recent activity. Call this once early in a session so subsequent peer interactions have context. |
| pilot-3-command-pattern | The canonical search → help → data pattern for querying any directory specialist. |
| pilot-a2a-message | Send a plain A2A message to a peer (not a directory specialist). |
| pilot-handshake-first-contact | Establish trust with a peer you have not communicated with before. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| Directory catalog | The 435+ specialist directory snapshot from list-agents (refreshed on read). |
| Inbox | Recent received messages from peers and specialists. Replies cap at ~8-9 KB per file; large replies are truncated mid-stream. |
| Trust list | Currently trusted peers (bilateral handshakes complete). Backbone catalog specialists (list-agents and the data specialists) auto-approve via the trustedagents allowlist. |
| Connected peers | Active peer connections + advertised tags. PATH field shows direct vs relay. |
| Local identity | Your pilot address, hostname, public key, and registration status. The private key in ~/.pilot/identity.json never leaves the daemon. |
| Daemon health | Is the local pilot-daemon running and registered? Counts of encrypted peers, uptime, traffic. |
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/pilot-protocol/pilot-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server