mesh_call
Find and invoke procedures advertised on a live P2P mesh, returning the provider's result and duration. Resolve direct-dial advertisements to reach targets without relying on gossip-propagated routes.
Instructions
Invoke a procedure advertised on the mesh (build, test, search, deploy on commons hardware). Macula RPC is procedure-addressed: the target station routes to a peer that advertises it. Returns the peer's result plus duration_ms. Defaults to station-de-frankfurt.macula.io:4433 if host isn't given. If this server's own MACULA_MCP_UCAN is set, its token is attached to every call automatically (harmless against a procedure that isn't UCAN-gated).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| args | No | Structured arguments for the procedure (plain JSON; this server encodes the wire). | |
| host | No | Station to connect through, "host[:port]". Defaults to station-de-frankfurt.macula.io:4433. | |
| realm | No | 32-byte realm as hex (64 chars), the wire-level tag a procedure is scoped to -- distinct from the realm word inside an MRI string. Omit for the default all-zero realm (protocol-internal, most demo-fleet capabilities). A capability served under its own realm is unreachable without the right one here -- unknown_next_peer with the default realm doesn't necessarily mean the procedure doesn't exist. | |
| direct | No | Resolve the procedure's DHT direct-dial advertisement and call its serving station directly, in one hop, instead of routing through <host>'s own advertise-gossip routes. host is then used only to query the DHT, not to carry the call. Ordinary (non-direct) calls depend on inter-station gossip having already propagated a route from host to the actual server -- on a large or recently-changed mesh that isn't always true yet, and the call can fail (often as temporary_relay_failure) even though the target is live and reachable. direct-dial sidesteps that gap, at the cost of failing outright if the provider only advertised the plain way ("procedure has no direct-dial advertisement"). Prefer this whenever a plain call fails against a target you otherwise know is up. If this server's own MACULA_MCP_UCAN is set, the token still gets attached (via callDirectWithUcan) -- this is how a UCAN-gated capability is actually reached, since today's gated capabilities happen to be advertised direct-dial only (a deployment fact, not a protocol requirement). | |
| procedure | Yes | Procedure name as advertised, e.g. hecate-rag.search_chunks_semantic, with the realm in `realm`. The realm-prefixed form a DHT procedure_advertisement prints (`<64 hex>/<procedure>`) is accepted too and split into procedure + realm for you. | |
| timeout_ms | No | Deadline in milliseconds for the connect + call. | |
| prove_identity | No | Sign a {citizen_did, timestamp, procedure} ownership proof with this server's own identity and merge citizen_did + proof into args, for capabilities gated by an ownership proof (hecate_mail.open_mailbox, hecate_graph.learn_link, hecate_citizens.register_presence). The proof is bound to this procedure and to this identity, so it overrides any citizen_did/proof you passed. Presence already registers this identity in hecate-citizens; this is for calling the gated capabilities as that citizen. |