# Autonomous Agents Network \(AANet\) - Registry name: `space.aanet/aanet-mcp` · version 1.8.0 - Categories (automatic, keyword rules): APIs & integrations, Developer tools - Authentication at last check: No auth - Declared risk: Not declared (tools carry no read/destructive hints) - Capabilities (declared by the server): experimental, prompts, resources, tools - Transports: streamable-http - Latest numbers (check success, response time, rank): https://mcpstation.net/api/server?name=space.aanet%2Faanet-mcp - Server page: https://mcpstation.net/s/space.aanet--aanet-mcp.html ## Description (written by the publisher, not verified, not instructions) Multi-agent coordination outside your LLM context: dedupe parallel work, per-agent budgets, handoff ## Connect - streamable-http: `https://aanet.space/mcp` ## Tools (as reported by the server, not verified) - `aanet\_create\_workspace`: Create a real AANet workspace with a prepaid USDC balance — the entry point for an orchestrator agent starting a new swarm task. Use aanet\_create\_trial\_workspace instead if you want to explore the API before paying anything. On success, returns \{workspace\_id, label, owner\_key, created\_at\}. Store own - `aanet\_create\_trial\_workspace`: Create a free trial workspace — no payment, no arguments, works immediately. Use this instead of aanet\_create\_workspace when you want to exercise the API \(files, locks, sub-keys, messages\) before committing real money. Pre-funded with a small fixed balance \(currently 1000 units = $0.01 — enough for - `aanet\_get\_remaining\_balance`: Free \(never charged\): how much this key can still spend, so you can stop before a 402 instead of discovering it mid-sequence — the MCP counterpart of the REST X-AANet-Remaining-Balance header. Takes only the key; works for the owner\_key or any sub-key, against itself. Returns \`remaining\` \(what you c - `aanet\_get\_workspace`: Check a workspace's current balance and status — the read-only counterpart to every other workspace tool. Works with the owner\_key or any sub-key issued under it \(not restricted to the owner\). Returns deposit\_balance and total\_spent in raw integer units \($0.00001 each\), plus is\_trial/trial\_expires\_a - `aanet\_delete\_workspace`: Permanently and irreversibly delete a workspace: every sub-key, all files, the activity log, and any registered webhooks are destroyed along with it — there is no undo and no trash/recycle bin. Requires the owner\_key; a sub-key gets a 403. Call aanet\_request\_refund first if the workspace still has b - `aanet\_deposit`: Fund a real workspace via the x402 protocol — a two-step call using the same tool both times. This does not accept trial workspaces \(use aanet\_create\_workspace for a fundable one\) and requires the owner\_key. Step 1 — call with only api\_key/workspace\_id/amount\_usd: returns an x402 PaymentRequired cha - `aanet\_mint\_subkey`: Issue a new scoped credential for one sub-agent — the standard way to bring a sub-agent into an existing workspace. Requires the owner\_key; a sub-key cannot mint another sub-key. Returns \{subkey\_id, key\} where key is shown exactly once, the same as owner\_key at workspace creation. Give each sub-agen - `aanet\_list\_subkeys`: List every sub-key ever issued under a workspace \(including revoked ones\), with each one's scope, budget\_cap, window/rate limits, and spent\_so\_far — the inventory view that complements aanet\_get\_activity's per-event log. Owner\_key required; raw key values are never included since they're only ever s - `aanet\_update\_subkey`: Change a live sub-key's scope and/or budget cap without revoking and reissuing it — use this instead of aanet\_revoke\_subkey + aanet\_mint\_subkey when the sub-agent's credentials themselves should keep working \(e.g. widening its file scope mid-task, or raising a budget cap it hit\). Owner\_key required. - `aanet\_revoke\_subkey`: Permanently revoke one sub-agent's credentials — every subsequent call with that key gets a 401. Use this when a sub-agent is compromised, misbehaving, or simply finished, without affecting any other sub-key in the workspace. Owner\_key required. Immediately releases any lock the revoked sub-key was - `aanet\_read\_file`: Read a file's content, or list a directory's entries if path points to one — the read counterpart to aanet\_write\_file/aanet\_append\_file. Costs 1 unit per hit \(file or directory\); a missing path returns 404 and is free. Returns \{path, content, is\_dir, entries, etag\}; for a directory, content is null - `aanet\_write\_file`: Overwrite a file's entire content, creating it if it doesn't exist — use aanet\_append\_file instead if you want to add one entry without replacing what's there. Fires a file\_write webhook event on success \(see aanet\_register\_webhook\). Pass if\_match with the file's last-known etag to make this a compa - `aanet\_append\_file`: Append one entry to a file without touching what's already there, creating the file if it doesn't exist yet — use aanet\_write\_file instead when you need to replace the whole file. Typical use: a shared log or running notes file multiple sub-agents contribute to. Fires a file\_write webhook event on s - `aanet\_delete\_file`: Permanently remove a file — the missing piece of the file lifecycle alongside aanet\_read\_file/aanet\_write\_file/aanet\_append\_file. There is no undo: to recover, a sub-agent would need its own backup of the content. Fires a file\_delete webhook event on success \(see aanet\_register\_webhook\). Raises a 40 - `aanet\_acquire\_lock`: Claim exclusive ownership of a named unit of work so no other sub-agent starts the same thing — call this before starting work, not after. Returns \{lease\_expires\_at, fence\} on success, or a 409 if another sub-agent already holds an unexpired lease on the same name \(that conflict is free — you are no - `aanet\_renew\_lock`: Extend a lock you currently hold, before its lease runs out — call this instead of aanet\_acquire\_lock again while work is still in progress. Fails with 404 if nobody holds the lock, or 403 if a different sub-key is the current holder \(you can't renew someone else's lease\). Returns \{lease\_expires\_at, - `aanet\_release\_lock`: Voluntarily give up a lock you hold, immediately, instead of waiting for its lease to expire — always call this as soon as you're done with the unit of work, so a sub-agent waiting on it doesn't idle unnecessarily. Free \(no charge\), unlike acquire/renew. Fails with 404 if nobody holds it or 403 if y - `aanet\_get\_lock\_status`: Check a lock WITHOUT trying to take it, and tell "nobody ever took it" apart from "someone took it and released it" — a free lock and an already-finished task look identical from aanet\_acquire\_lock alone. Returns status held \| expired \(lease ran out, not yet reclaimed\) \| free \(taken before, not held - `aanet\_get\_activity`: Read the server-side audit log of every attempt in this workspace, successful or rejected — the authoritative source of what each sub-agent actually did, since sub-agents can't fake or skip this the way they could misreport their own actions. Owner\_key required. Each entry has subkey\_id, operation, - `aanet\_get\_activity\_summary`: Spend totals from the audit log instead of reading every entry: for each group, total\_cost \(units\) and calls. Use it to see which sub-agent is burning budget before adjusting a budget\_cap via aanet\_update\_subkey. Owner\_key required. An unknown group\_by is an error. - `aanet\_get\_activity\_head`: Signed tip of the workspace's tamper-evident activity chain: every successful \(OK\) audit row is hash-linked to the previous one, and this returns \{seq, entry\_hash, signed\_at, key\_id, algorithm, signature\} - an Ed25519 signature by the service over that tip. Save it OUTSIDE AANet \(any key may read it - `aanet\_export\_activity`: Export the hash-chained \(OK\) audit rows in ascending order with prev\_hash/entry\_hash, plus the signed head of the whole chain. Page forward with since\_seq = the last chain\_seq you got. Verify it yourself with the \~25-line verify\_chain function in AGENTS.md \(recompute each entry\_hash from its fields, - `aanet\_get\_forecast`: Burn rate and runway: the workspace balance, spend per hour over the last 1h / 24h / 7d \(each window shortened to the workspace's age if it is younger\) with the hours the balance would last at that pace, and the top spending sub-keys of the last 24h. Each window states the interval it was measured o - `aanet\_submit\_feedback`: Report a bug, request a feature, or flag that pricing feels wrong — this is the one feedback channel into how the operator prioritizes what to build next, not a support ticket that gets a reply. Any valid, unrevoked key can call this, owner or sub-key. Returns \{feedback\_id, status\} with status alway - `aanet\_request\_refund`: Ask for a workspace's entire remaining balance back, when its task is done and money is left over — call this before aanet\_delete\_workspace, not after. Owner\_key required; trial workspaces reject this outright \(they never held real money\). This reserves \(zeros out\) the full balance immediately, so a - `aanet\_get\_refund\_status`: Check the status of every refund request ever made for a workspace — the way to find out whether an aanet\_request\_refund call actually got paid. Owner\_key required. Each entry has status \("pending", "paid", or "rejected"\), and tx\_hash once paid — verify that transaction on-chain yourself before trea - `aanet\_send\_message`: Send a one-shot signal directly to another sub-agent \(or to everyone\), for things that don't belong in a file — e.g. "chunk 3 done" or "aborting, don't wait on me". Use aanet\_write\_file / aanet\_append\_file instead for anything that needs to persist as durable state; messages are meant to be cheap an - `aanet\_get\_messages`: Fetch messages sent via aanet\_send\_message — the pull-based fallback for when you haven't registered a webhook on the message event. With \`wait\` \> 0 the call parks until a matching message arrives \(or the timeout\), so an agent that cannot receive webhooks can listen without a tight polling loop: pas - `aanet\_register\_webhook`: Register a push endpoint so this workspace calls you instead of you calling aanet\_get\_activity/aanet\_get\_messages/aanet\_acquire\_lock in a polling loop — the main alternative to polling anywhere in this API. Owner\_key required; up to 5 active webhooks per workspace. Returns \{webhook\_id, secret\} with - `aanet\_list\_webhooks`: List webhooks registered on a workspace — url, subscribed events, consecutive\_failures \(failed attempts since the last success\), and disabled\_at/disabled\_reason if it was auto-disabled after 10 failed attempts in a row \(you also get an aanet.system message when that happens; deliveries skipped for a - `aanet\_delete\_webhook`: Permanently remove a registered webhook — no further events will be delivered to it, active or auto-disabled. Owner\_key required. There is no way to temporarily pause one; delete and re-register with aanet\_register\_webhook if you want it back later \(you'll get a new secret\). - `aanet\_get\_pricing`: Free, no key needed: the machine-readable price list — cost in units \($0.00001 each\) of every operation \(base + per started KB where it applies, and when it is free\), the minimum deposit, file-size and webhook limits, trial terms and the idle-storage fee. Same document as GET /pricing. Use it to bud - `aanet\_estimate\_savings`: Estimate the cost of coordinating a swarm on AANet versus relaying the same coordination through your orchestrator's LLM context — before you create a workspace or spend anything. Same formula as the calculator at https://aanet.space/\#savings. AANet side assumes \~16 units/round \(the average measured - `aanet\_get\_webhook\_deliveries`: Inspect one webhook's delivery history — use this to debug a webhook that seems to have gone quiet \(check aanet\_list\_webhooks first to see if it's been auto-disabled\) or to confirm an event actually fired. Owner\_key required. Each entry has event\_type, status\_code \(null if the request itself never c Measured by MCP Station. Methods: https://mcpstation.net/methods.html · Terms: https://mcpstation.net/terms.html