accueil / serveurs / Fichiers & Documents / space.aanet/aanet-mcp
space.aanet/aanet-mcp
serveur MCP (Model Context Protocol) · aanet
Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur.
Est-ce que space.aanet/aanet-mcp est sûr ?
Au dernier audit MCP Hub, le serveur MCP « space.aanet/aanet-mcp » est classé « Non encore testé ». Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur. Le verdict est réévalué en continu ; consultez la fiche pour l'état à jour.
Méthode : MCP Hub analyse la description de chaque outil (couche 1) et, pour le verdict fort, exécute le serveur dans une micro-VM isolée avec leurres et réseau bloqué (couche 2). On publie des noms et des compteurs, jamais le contenu brut renvoyé par un outil.
Les 31 outils
- aanet_acquire_lock≈ 647 tokens
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 not charged for losing a race). You do not hold the lock forever: once lease_seconds elapses, anyone can acquire it out from under you, even if you're still working. Call aanet_renew_lock periodically while still working, and aanet_release_lock the moment you're done so others don't wait out the full lease unnecessarily. fence is a monotonically increasing token (it grows with every successful acquire of this name, so a later holder always has a larger one). Pass it to aanet_write_file/ aanet_append_file/aanet_delete_file so the server rejects your write once someone else has taken the lock over - protection against a paused agent waking up after its lease expired.
Paramètres, retour & exemple (5)
Paramètresname· string · requis
Lock name identifying the unit of work, e.g. "process-batch-3".api_key· string · requis
Bearer credential for this workspace: either the owner_key returned once by aanet_create_workspace/aanet_create_trial_workspace, or a sub-key returned by aanet_mint_subkey. Sent under the hood as `Authorization: Bearer <api_key>`. Owner-only tools reject a sub-key with a 403.workspace_id· string · requis
The workspace_id from aanet_create_workspace or aanet_create_trial_workspace.lease_seconds· integer · requis
How long you hold the lock before it becomes reclaimable by anyone else, 1-3600 seconds.idempotency_key· ? · optionnel
Optional retry-safety token (any unique string, e.g. a UUID). If a call times out and you repeat it with the same key and the same arguments, the first successful result is returned again without charging a second time. Keys are remembered for 24 hours, per sub-key. Reusing a key with different arguments is an error (code=IDEMPOTENCY_KEY_REUSED).
Exemple d'appel{"name": "aanet_acquire_lock", "arguments": {"name": "texte", "api_key": "texte", "workspace_id": "texte", "lease_seconds": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - aanet_append_file≈ 728 tokens
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 success. Rejected with 413, before writing or charging, if the resulting file (existing content + this append) would exceed 1 MiB. Accepts the same fence guard as aanet_write_file. Returns {path, appended, etag}.
Paramètres, retour & exemple (9)
Paramètrespath· string · requis
Virtual file path within the workspace.fence· ? · optionnel
Fencing token returned by aanet_acquire_lock/aanet_renew_lock. If another sub-agent has acquired that lock since, the call is rejected with 409 STALE_FENCE (free) instead of writing as a stale holder. Omit for an unguarded write.stamp· boolean · optionnel
Same attribution-comment option as on aanet_write_file, applied to this appended entry.api_key· string · requis
Bearer credential for this workspace: either the owner_key returned once by aanet_create_workspace/aanet_create_trial_workspace, or a sub-key returned by aanet_mint_subkey. Sent under the hood as `Authorization: Bearer <api_key>`. Owner-only tools reject a sub-key with a 403.content· string · requis
Text to append as a new entry — the existing content is kept.if_match· ? · optionnel
The file's current etag, for the same conflict-detection purpose as on aanet_write_file.fence_lock· ? · optionnel
Name of the lock the fence belongs to; defaults to the file path itself. Needs fence.workspace_id· string · requis
The workspace_id from aanet_create_workspace or aanet_create_trial_workspace.idempotency_key· ? · optionnel
Optional retry-safety token (any unique string, e.g. a UUID). If a call times out and you repeat it with the same key and the same arguments, the first successful result is returned again without charging a second time. Keys are remembered for 24 hours, per sub-key. Reusing a key with different arguments is an error (code=IDEMPOTENCY_KEY_REUSED).
Exemple d'appel{"name": "aanet_append_file", "arguments": {"path": "texte", "api_key": "texte", "content": "texte", "workspace_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - aanet_create_trial_workspace≈ 297 tokens
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 a realistic multi-agent round, but NOT for a successful write of a file at the 1 MiB cap, which costs 1029 units; that is a known limit of the trial, not a bug. An oversize write is still rejected with 413 for free, so the cap itself is checkable) and expires exactly 24 hours after creation, regardless of remaining balance or activity — it is then deleted permanently along with everything in it. Returns the same shape as aanet_create_workspace plus trial_expires_at. aanet_deposit and aanet_request_refund both reject a trial workspace outright, since no real money ever entered it. If your task won't fit in 24 hours, create a real workspace instead.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "aanet_create_trial_workspace", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - aanet_create_workspace≈ 236 tokens
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 owner_key immediately: it is generated once, never stored in recoverable form, and there is no "forgot my key" recovery path — losing it means losing control of the workspace. The workspace starts with a balance of 0; fund it with aanet_deposit before any metered operation will succeed.
Paramètres, retour & exemple (1)
Paramètreslabel· string · requis
A display name for your own reference — free text, not required to be unique.
Exemple d'appel{"name": "aanet_create_workspace", "arguments": {"label": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - aanet_delete_file≈ 512 tokens
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 404 if the path doesn't exist, a 409 if it's a directory or if_match doesn't match the current etag. Returns {path, deleted}.
Paramètres, retour & exemple (6)
Paramètrespath· string · requis
Virtual file path within the workspace. Must point to a file, not a directory.fence· ? · optionnel
Fencing token returned by aanet_acquire_lock/aanet_renew_lock. If another sub-agent has acquired that lock since, the call is rejected with 409 STALE_FENCE (free) instead of writing as a stale holder. Omit for an unguarded write.api_key· string · requis
Bearer credential for this workspace: either the owner_key returned once by aanet_create_workspace/aanet_create_trial_workspace, or a sub-key returned by aanet_mint_subkey. Sent under the hood as `Authorization: Bearer <api_key>`. Owner-only tools reject a sub-key with a 403.if_match· ? · optionnel
The file's current etag, for the same conflict-detection purpose as on aanet_write_file.fence_lock· ? · optionnel
Name of the lock the fence belongs to; defaults to the file path itself. Needs fence.workspace_id· string · requis
The workspace_id from aanet_create_workspace or aanet_create_trial_workspace.
Exemple d'appel{"name": "aanet_delete_file", "arguments": {"path": "texte", "api_key": "texte", "workspace_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - aanet_delete_webhook≈ 285 tokens
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).
Paramètres, retour & exemple (3)
Paramètresapi_key· string · requis
Bearer credential for this workspace: either the owner_key returned once by aanet_create_workspace/aanet_create_trial_workspace, or a sub-key returned by aanet_mint_subkey. Sent under the hood as `Authorization: Bearer <api_key>`. Owner-only tools reject a sub-key with a 403.webhook_id· string · requis
The webhook_id from aanet_register_webhook or aanet_list_webhooks.workspace_id· string · requis
The workspace_id from aanet_create_workspace or aanet_create_trial_workspace.
Exemple d'appel{"name": "aanet_delete_webhook", "arguments": {"api_key": "texte", "webhook_id": "texte", "workspace_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - aanet_delete_workspace≈ 328 tokens
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 balance you want back, and wait for aanet_get_refund_status to show "paid" before deleting — once the workspace is gone, so is any way to claim what was left. Use this when a task is finished or permanently abandoned, not as a way to "reset" a workspace you plan to keep using.
Paramètres, retour & exemple (2)
Paramètresapi_key· string · requis
Bearer credential for this workspace: either the owner_key returned once by aanet_create_workspace/aanet_create_trial_workspace, or a sub-key returned by aanet_mint_subkey. Sent under the hood as `Authorization: Bearer <api_key>`. Owner-only tools reject a sub-key with a 403.workspace_id· string · requis
The workspace_id from aanet_create_workspace or aanet_create_trial_workspace.
Exemple d'appel{"name": "aanet_delete_workspace", "arguments": {"api_key": "texte", "workspace_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - aanet_deposit≈ 521 tokens
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 challenge offering USDC on Base, Polygon, Arbitrum, Avalanche, and Solana as payment options; nothing is charged yet. Step 2 — sign that challenge with your own wallet/x402 client (this tool cannot sign for you) and call again with the identical amount_usd plus the resulting proof as payment_signature; on success this verifies and settles against the facilitator and returns {workspace_id, deposited_units, tx_hash, network}. A failed or already-used signature raises an error rather than silently no-op'ing.
Paramètres, retour & exemple (4)
Paramètresapi_key· string · requis
Bearer credential for this workspace: either the owner_key returned once by aanet_create_workspace/aanet_create_trial_workspace, or a sub-key returned by aanet_mint_subkey. Sent under the hood as `Authorization: Bearer <api_key>`. Owner-only tools reject a sub-key with a 403.amount_usd· string · requis
Deposit amount in US dollars as a decimal string, e.g. "1.00". Minimum $0.25.workspace_id· string · requis
The workspace_id from aanet_create_workspace or aanet_create_trial_workspace.payment_signature· ? · optionnel
Leave unset on your first call to receive the payment challenge. Set this to the signed proof from your own x402-aware wallet client on the follow-up call with the same amount_usd, to actually settle the payment and credit the balance.
Exemple d'appel{"name": "aanet_deposit", "arguments": {"api_key": "texte", "amount_usd": "texte", "workspace_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - aanet_estimate_savings≈ 322 tokens
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 over an 8-round run: reads, appends, a lock cycle, a message and a poll) at $0.00001/unit. The relay side assumes ~9,600 tokens/round (re-injecting another agent's update into your prompt) at a blended $2-$10 per million token rate. This is a rough estimate, not a quote — real workloads vary; see aanet_get_activity on an actual workspace for your own measured cost once you're running for real.
Paramètres, retour & exemple (2)
Paramètresagents· integer · requis
Number of agents in the swarm you're planning.rounds_per_agent· integer · requis
Coordination rounds each agent will need (reads/writes/lock cycles).
Exemple d'appel{"name": "aanet_estimate_savings", "arguments": {"agents": 1, "rounds_per_agent": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - aanet_export_activity≈ 345 tokens
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, check the links and the head signature). Owner_key required; free.
Paramètres, retour & exemple (4)
Paramètreslimit· integer · optionnel
Max rows per page.api_key· string · requis
Bearer credential for this workspace: either the owner_key returned once by aanet_create_workspace/aanet_create_trial_workspace, or a sub-key returned by aanet_mint_subkey. Sent under the hood as `Authorization: Bearer <api_key>`. Owner-only tools reject a sub-key with a 403.since_seq· integer · optionnel
Return rows with chain_seq greater than this; 0 = from the start.workspace_id· string · requis
The workspace_id from aanet_create_workspace or aanet_create_trial_workspace.
Exemple d'appel{"name": "aanet_export_activity", "arguments": {"api_key": "texte", "workspace_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - aanet_get_activity≈ 643 tokens
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, path, cost_charged, status (e.g. OK, INSUFFICIENT_BALANCE, SCOPE_DENIED, CONFLICT), and a free-text detail. Use this to reconstruct what happened after the fact, or to check a sub-agent's spend pattern before adjusting its budget_cap via aanet_update_subkey.
Paramètres, retour & exemple (7)
Paramètreslimit· integer · optionnel
Maximum entries to return, newest first, up to 500.since· ? · optionnel
ISO timestamp — only return entries at or after this time.api_key· string · requis
Bearer credential for this workspace: either the owner_key returned once by aanet_create_workspace/aanet_create_trial_workspace, or a sub-key returned by aanet_mint_subkey. Sent under the hood as `Authorization: Bearer <api_key>`. Owner-only tools reject a sub-key with a 403.since_id· ? · optionnel
Entry id cursor: only entries with id > since_id (strictly exclusive). The recommended way to poll — pass the highest id you've already seen. Results are newest first.operation· ? · optionnel
Filter to one operation type, e.g. "PUT_FILE", "LOCK_ACQUIRE", "SEND_MESSAGE", "WEBHOOK_DELIVERY". Omit for all operation types.subkey_id· ? · optionnel
Filter to attempts by this sub-key only. Omit for all.workspace_id· string · requis
The workspace_id from aanet_create_workspace or aanet_create_trial_workspace.
Exemple d'appel{"name": "aanet_get_activity", "arguments": {"api_key": "texte", "workspace_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": []}} - aanet_get_activity_head≈ 310 tokens
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, it reveals no activity): if the operator later rewrote or deleted earlier rows, a fresh export no longer contains your saved entry_hash at that seq. Public key: GET https://aanet.space/.well-known/aanet-signing-key. Free.
Paramètres, retour & exemple (2)
Paramètresapi_key· string · requis
Bearer credential for this workspace: either the owner_key returned once by aanet_create_workspace/aanet_create_trial_workspace, or a sub-key returned by aanet_mint_subkey. Sent under the hood as `Authorization: Bearer <api_key>`. Owner-only tools reject a sub-key with a 403.workspace_id· string · requis
The workspace_id from aanet_create_workspace or aanet_create_trial_workspace.
Exemple d'appel{"name": "aanet_get_activity_head", "arguments": {"api_key": "texte", "workspace_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - aanet_get_activity_summary≈ 392 tokens
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.
Paramètres, retour & exemple (4)
Paramètressince· ? · optionnel
ISO timestamp — only count entries at or after this time.api_key· string · requis
Bearer credential for this workspace: either the owner_key returned once by aanet_create_workspace/aanet_create_trial_workspace, or a sub-key returned by aanet_mint_subkey. Sent under the hood as `Authorization: Bearer <api_key>`. Owner-only tools reject a sub-key with a 403.group_by· string · optionnel
How to group the totals: "subkey_operation" (default), "subkey" or "operation".workspace_id· string · requis
The workspace_id from aanet_create_workspace or aanet_create_trial_workspace.
Exemple d'appel{"name": "aanet_get_activity_summary", "arguments": {"api_key": "texte", "workspace_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": []}} - aanet_get_forecast≈ 324 tokens
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 over (measured_since, covered_seconds, shortened) — a young workspace gives a short span and so a large hourly figure. An estimate from the audit log, not a guarantee. Owner_key required; free. Pair it with a balance_low webhook (aanet_register_webhook) to be warned before a 402.
Paramètres, retour & exemple (2)
Paramètresapi_key· string · requis
Bearer credential for this workspace: either the owner_key returned once by aanet_create_workspace/aanet_create_trial_workspace, or a sub-key returned by aanet_mint_subkey. Sent under the hood as `Authorization: Bearer <api_key>`. Owner-only tools reject a sub-key with a 403.workspace_id· string · requis
The workspace_id from aanet_create_workspace or aanet_create_trial_workspace.
Exemple d'appel{"name": "aanet_get_forecast", "arguments": {"api_key": "texte", "workspace_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - aanet_get_lock_status≈ 370 tokens
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 now) | never_held, plus holder_subkey_id/lease_expires_at while held, last_holder_subkey_id, last_acquired_at, last_released_at, acquire_count and release_count. A release is a signal the holder finished with it, not proof the work succeeded — confirm via the result file. 1 unit; a name nobody ever acquired is a free miss.
Paramètres, retour & exemple (3)
Paramètresname· string · requis
Lock name to inspect, e.g. "process-batch-3".api_key· string · requis
Bearer credential for this workspace: either the owner_key returned once by aanet_create_workspace/aanet_create_trial_workspace, or a sub-key returned by aanet_mint_subkey. Sent under the hood as `Authorization: Bearer <api_key>`. Owner-only tools reject a sub-key with a 403.workspace_id· string · requis
The workspace_id from aanet_create_workspace or aanet_create_trial_workspace.
Exemple d'appel{"name": "aanet_get_lock_status", "arguments": {"name": "texte", "api_key": "texte", "workspace_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - aanet_get_messages≈ 748 tokens
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: pass since_id=<last id you saw>. Waiting is free; only a call that returns messages is charged (1 unit), and a timed-out empty one costs nothing. At most 3 waiting calls per key (and 16 service-wide) at once, otherwise 429. A sub-key only sees messages addressed to it plus broadcasts (to_subkey_id was left unset by the sender); the owner_key sees every message in the workspace, for oversight. There's no read/unread tracking server-side — track your own last-seen ts and pass it as `since` on the next call, the same pattern as aanet_get_activity.
Paramètres, retour & exemple (7)
Paramètreswait· integer · optionnel
Long poll: seconds (max 30) to wait for a matching message before returning. 0 = answer at once. Returns as soon as one arrives; an empty answer after the timeout is free.limit· integer · optionnel
Maximum messages to return, oldest first, up to 500.since· ? · optionnel
ISO timestamp — the ts of the last message you already saw. Inclusive (ts >= since): that last message comes back again, so dedupe by id.topic· ? · optionnel
Filter to messages sent with this exact topic. Omit for all topics.api_key· string · requis
Bearer credential for this workspace: either the owner_key returned once by aanet_create_workspace/aanet_create_trial_workspace, or a sub-key returned by aanet_mint_subkey. Sent under the hood as `Authorization: Bearer <api_key>`. Owner-only tools reject a sub-key with a 403.since_id· ? · optionnel
Message id cursor: only messages with id > since_id (strictly exclusive, so nothing comes back twice). The recommended polling cursor — pass the id of the last message you saw.workspace_id· string · requis
The workspace_id from aanet_create_workspace or aanet_create_trial_workspace.
Exemple d'appel{"name": "aanet_get_messages", "arguments": {"api_key": "texte", "workspace_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": []}} - aanet_get_pricing≈ 145 tokens
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 budget a swarm before creating a workspace (see also aanet_estimate_savings); the prices are exactly what is charged.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "aanet_get_pricing", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - aanet_get_refund_status≈ 353 tokens
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 treating the refund as confirmed and deleting the workspace. A "rejected" entry means the reserved amount was credited back to the workspace balance, not lost.
Paramètres, retour & exemple (2)
Paramètresapi_key· string · requis
Bearer credential for this workspace: either the owner_key returned once by aanet_create_workspace/aanet_create_trial_workspace, or a sub-key returned by aanet_mint_subkey. Sent under the hood as `Authorization: Bearer <api_key>`. Owner-only tools reject a sub-key with a 403.workspace_id· string · requis
The workspace_id from aanet_create_workspace or aanet_create_trial_workspace.
Exemple d'appel{"name": "aanet_get_refund_status", "arguments": {"api_key": "texte", "workspace_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": []}} - aanet_get_remaining_balance≈ 337 tokens
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 can actually spend: the lower of the two limits below), `key_budget_remaining` (this key's budget_cap minus what it has spent; null if the key has no cap), `key_window_remaining` (units left under the key's spend_limit_per_hour/day, whichever is tighter; null if it has neither) and `workspace_balance` (the shared workspace balance), all in raw integer units ($0.00001 each). `remaining` is the lowest of the three. Comparing them tells you which one runs out first.
Paramètres, retour & exemple (1)
Paramètresapi_key· string · requis
Bearer credential for this workspace: either the owner_key returned once by aanet_create_workspace/aanet_create_trial_workspace, or a sub-key returned by aanet_mint_subkey. Sent under the hood as `Authorization: Bearer <api_key>`. Owner-only tools reject a sub-key with a 403.
Exemple d'appel{"name": "aanet_get_remaining_balance", "arguments": {"api_key": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - aanet_get_webhook_deliveries≈ 444 tokens
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 completed, e.g. timeout or DNS failure), success, and skipped (true = nothing was sent because the workspace couldn't afford the delivery: not billed, not an endpoint failure).
Paramètres, retour & exemple (4)
Paramètreslimit· integer · optionnel
Maximum delivery records to return, newest first, up to 200.api_key· string · requis
Bearer credential for this workspace: either the owner_key returned once by aanet_create_workspace/aanet_create_trial_workspace, or a sub-key returned by aanet_mint_subkey. Sent under the hood as `Authorization: Bearer <api_key>`. Owner-only tools reject a sub-key with a 403.webhook_id· string · requis
The webhook_id from aanet_register_webhook or aanet_list_webhooks.workspace_id· string · requis
The workspace_id from aanet_create_workspace or aanet_create_trial_workspace.
Exemple d'appel{"name": "aanet_get_webhook_deliveries", "arguments": {"api_key": "texte", "webhook_id": "texte", "workspace_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": []}} - aanet_get_workspace≈ 321 tokens
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_at (null for a non-trial workspace) and blocked (true if the operator has manually suspended it, in which case every metered call returns 403 until unblocked). Call this before a batch of expensive operations to confirm you won't hit a 402 partway through.
Paramètres, retour & exemple (2)
Paramètresapi_key· string · requis
Bearer credential for this workspace: either the owner_key returned once by aanet_create_workspace/aanet_create_trial_workspace, or a sub-key returned by aanet_mint_subkey. Sent under the hood as `Authorization: Bearer <api_key>`. Owner-only tools reject a sub-key with a 403.workspace_id· string · requis
The workspace_id from aanet_create_workspace or aanet_create_trial_workspace.
Exemple d'appel{"name": "aanet_get_workspace", "arguments": {"api_key": "texte", "workspace_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - aanet_list_subkeys≈ 312 tokens
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 shown once at creation.
Paramètres, retour & exemple (2)
Paramètresapi_key· string · requis
Bearer credential for this workspace: either the owner_key returned once by aanet_create_workspace/aanet_create_trial_workspace, or a sub-key returned by aanet_mint_subkey. Sent under the hood as `Authorization: Bearer <api_key>`. Owner-only tools reject a sub-key with a 403.workspace_id· string · requis
The workspace_id from aanet_create_workspace or aanet_create_trial_workspace.
Exemple d'appel{"name": "aanet_list_subkeys", "arguments": {"api_key": "texte", "workspace_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": []}} - aanet_list_webhooks≈ 363 tokens
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 an empty balance don't count). Owner_key required. Secrets are never included (only shown once, at aanet_register_webhook time); use aanet_get_webhook_deliveries for per-attempt delivery history on one of these.
Paramètres, retour & exemple (2)
Paramètresapi_key· string · requis
Bearer credential for this workspace: either the owner_key returned once by aanet_create_workspace/aanet_create_trial_workspace, or a sub-key returned by aanet_mint_subkey. Sent under the hood as `Authorization: Bearer <api_key>`. Owner-only tools reject a sub-key with a 403.workspace_id· string · requis
The workspace_id from aanet_create_workspace or aanet_create_trial_workspace.
Exemple d'appel{"name": "aanet_list_webhooks", "arguments": {"api_key": "texte", "workspace_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": []}} - aanet_mint_subkey≈ 826 tokens
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-agent its own sub-key rather than sharing one across several — that's what makes aanet_get_activity attributable per sub-agent and what lets you revoke exactly one misbehaving sub-agent (aanet_revoke_subkey) without taking down the rest of the swarm. budget_cap bounds the key's total spend; the optional spend_limit_per_hour / spend_limit_per_day bound it per rolling window and rate_limit_per_minute bounds how often it may call at all — use them to contain a sub-agent stuck in a loop long before it spends its whole budget_cap.
Paramètres, retour & exemple (8)
Paramètreslabel· string · requis
Display name for this sub-key, e.g. the sub-agent's role or id.api_key· string · requis
Bearer credential for this workspace: either the owner_key returned once by aanet_create_workspace/aanet_create_trial_workspace, or a sub-key returned by aanet_mint_subkey. Sent under the hood as `Authorization: Bearer <api_key>`. Owner-only tools reject a sub-key with a 403.budget_cap· ? · optionnel
Cap this sub-key's own cumulative spend, in the same integer units as the workspace balance ($0.00001 each), even if the workspace has more left. Leave unset for no per-key cap beyond the shared workspace balance.workspace_id· string · requis
The workspace_id from aanet_create_workspace or aanet_create_trial_workspace.path_scope_prefix· ? · optionnel
Restrict this sub-key to file paths and lock names under this prefix only (least-privilege). Leave unset for unrestricted access to the whole workspace.spend_limit_per_day· ? · optionnel
Safety limit: most units this key may spend in any rolling 24 hours (same error as the hourly one). Unset = no limit.spend_limit_per_hour· ? · optionnel
Safety limit: most units this key may spend in any rolling hour. Over it, charged calls get 402 INSUFFICIENT_KEY_WINDOW_BUDGET until the window frees up. Unset = no limit.rate_limit_per_minute· ? · optionnel
Safety limit: most requests (of any kind, free ones included) this key may make per rolling minute; over it, 429 with Retry-After. Unset = no limit.
Exemple d'appel{"name": "aanet_mint_subkey", "arguments": {"label": "texte", "api_key": "texte", "workspace_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - aanet_read_file≈ 339 tokens
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 and entries lists child names, for a file it's the reverse. Save the returned etag if you plan to write back — pass it as if_match on aanet_write_file to avoid clobbering a newer write from another sub-agent.
Paramètres, retour & exemple (3)
Paramètrespath· string · requis
Virtual file path within the workspace, e.g. "notes/progress.md".api_key· string · requis
Bearer credential for this workspace: either the owner_key returned once by aanet_create_workspace/aanet_create_trial_workspace, or a sub-key returned by aanet_mint_subkey. Sent under the hood as `Authorization: Bearer <api_key>`. Owner-only tools reject a sub-key with a 403.workspace_id· string · requis
The workspace_id from aanet_create_workspace or aanet_create_trial_workspace.
Exemple d'appel{"name": "aanet_read_file", "arguments": {"path": "texte", "api_key": "texte", "workspace_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - aanet_register_webhook≈ 916 tokens
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 secret shown exactly once — every delivery includes an X-AANet-Signature header (HMAC-SHA256 of the raw body, keyed by that secret); verify it before trusting a payload as genuinely from us. You are billed 2 units for every delivery attempt that is actually made, whether or not your endpoint responds (visible in aanet_get_activity); an attempt the workspace can't afford is not made and not billed — it is listed as skipped, doesn't count as a failure and is retried every 15 minutes for up to 24 hours. A webhook that fails 10 delivery attempts in a row is auto-disabled (you get an aanet.system message and aanet_list_webhooks shows disabled_reason) — check aanet_get_webhook_deliveries if events stop arriving. Delivery comes from a durable outbox that survives a service restart and retries failures with exponential backoff (up to 8 attempts); it is at-least-once, so dedupe on the X-AANet-Delivery-Id header. Still treat a webhook as a faster way to learn something happened, not your only source of truth — confirm with the matching GET tool if it matters.
Paramètres, retour & exemple (5)
Paramètresurl· string · requis
Must be https:// and resolve to a public (non-private/loopback) address at registration time — checked once here, not re-checked on every delivery.events· array · requis
Subset of ["file_write", "file_delete", "lock_available", "message", "balance_low", "key_anomaly"] — file_write fires on any successful aanet_write_file/aanet_append_file, file_delete on aanet_delete_file, lock_available on an explicit aanet_release_lock (not on passive lease expiry), message on aanet_send_message, balance_low each time the workspace balance falls from >= a value in balance_thresholds to below it, key_anomaly when one key repeats the same operation on the same path 200 times within a minute (a likely runaway loop; data = subkey_id, operation, path, count, window_seconds; at most one per key per 10 minutes).api_key· string · requis
Bearer credential for this workspace: either the owner_key returned once by aanet_create_workspace/aanet_create_trial_workspace, or a sub-key returned by aanet_mint_subkey. Sent under the hood as `Authorization: Bearer <api_key>`. Owner-only tools reject a sub-key with a 403.workspace_id· string · requis
The workspace_id from aanet_create_workspace or aanet_create_trial_workspace.balance_thresholds· ? · optionnel
Required when events includes balance_low, otherwise omit. Up to 5 distinct positive workspace-balance values in units (e.g. [5000, 1000]). Each fires one balance_low delivery (2 units) when the balance falls through it; none fire for values the balance is already below at registration. Pick values with headroom — a threshold under ~10 units leaves almost no time to top up.
Exemple d'appel{"name": "aanet_register_webhook", "arguments": {"url": "texte", "events": [], "api_key": "texte", "workspace_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - aanet_release_lock≈ 335 tokens
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 you're not the current holder. Fires a lock_available webhook event on success (see aanet_register_webhook) so a waiting sub-agent can react immediately instead of polling aanet_acquire_lock in a loop.
Paramètres, retour & exemple (3)
Paramètresname· string · requis
Lock name — must match a lock you currently hold.api_key· string · requis
Bearer credential for this workspace: either the owner_key returned once by aanet_create_workspace/aanet_create_trial_workspace, or a sub-key returned by aanet_mint_subkey. Sent under the hood as `Authorization: Bearer <api_key>`. Owner-only tools reject a sub-key with a 403.workspace_id· string · requis
The workspace_id from aanet_create_workspace or aanet_create_trial_workspace.
Exemple d'appel{"name": "aanet_release_lock", "arguments": {"name": "texte", "api_key": "texte", "workspace_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - aanet_renew_lock≈ 461 tokens
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, fence}; fence is unchanged by a renew.
Paramètres, retour & exemple (5)
Paramètresname· string · requis
Lock name — must match a lock you currently hold.api_key· string · requis
Bearer credential for this workspace: either the owner_key returned once by aanet_create_workspace/aanet_create_trial_workspace, or a sub-key returned by aanet_mint_subkey. Sent under the hood as `Authorization: Bearer <api_key>`. Owner-only tools reject a sub-key with a 403.workspace_id· string · requis
The workspace_id from aanet_create_workspace or aanet_create_trial_workspace.lease_seconds· integer · requis
New lease duration from now, 1-3600 seconds.idempotency_key· ? · optionnel
Optional retry-safety token (any unique string, e.g. a UUID). If a call times out and you repeat it with the same key and the same arguments, the first successful result is returned again without charging a second time. Keys are remembered for 24 hours, per sub-key. Reusing a key with different arguments is an error (code=IDEMPOTENCY_KEY_REUSED).
Exemple d'appel{"name": "aanet_renew_lock", "arguments": {"name": "texte", "api_key": "texte", "workspace_id": "texte", "lease_seconds": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - aanet_request_refund≈ 462 tokens
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 second call with nothing left to refund fails rather than double-paying out. The real network fee for the payout is deducted from what you receive (net_payout_usd in the response = gross - fee); if the balance doesn't even cover the estimated fee, this call fails instead of reserving anything. Payout is processed manually by the operator, not instantly — poll aanet_get_refund_status for the outcome rather than assuming success once this call returns.
Paramètres, retour & exemple (4)
Paramètresapi_key· string · requis
Bearer credential for this workspace: either the owner_key returned once by aanet_create_workspace/aanet_create_trial_workspace, or a sub-key returned by aanet_mint_subkey. Sent under the hood as `Authorization: Bearer <api_key>`. Owner-only tools reject a sub-key with a 403.network· string · requis
Payout network: one of "base", "polygon", "arbitrum", "avalanche", "solana".workspace_id· string · requis
The workspace_id from aanet_create_workspace or aanet_create_trial_workspace.destination_address· string · requis
Your own wallet address on that network to receive the payout.
Exemple d'appel{"name": "aanet_request_refund", "arguments": {"api_key": "texte", "network": "texte", "workspace_id": "texte", "destination_address": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - aanet_revoke_subkey≈ 329 tokens
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 holding (as if it had called aanet_release_lock itself), so a revoked sub-agent can't accidentally block the rest of the swarm by holding a lock forever.
Paramètres, retour & exemple (3)
Paramètresapi_key· string · requis
Bearer credential for this workspace: either the owner_key returned once by aanet_create_workspace/aanet_create_trial_workspace, or a sub-key returned by aanet_mint_subkey. Sent under the hood as `Authorization: Bearer <api_key>`. Owner-only tools reject a sub-key with a 403.subkey_id· string · requis
The subkey_id from aanet_mint_subkey or aanet_list_subkeys.workspace_id· string · requis
The workspace_id from aanet_create_workspace or aanet_create_trial_workspace.
Exemple d'appel{"name": "aanet_revoke_subkey", "arguments": {"api_key": "texte", "subkey_id": "texte", "workspace_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - aanet_send_message≈ 574 tokens
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 and disposable, not a record of truth. Cheaper than a file write on purpose. Fires a message webhook event on success (see aanet_register_webhook) — pair the two instead of having the recipient poll aanet_get_messages in a loop. Returns {message_id, ts}.
Paramètres, retour & exemple (6)
Paramètresbody· string · requis
Message text.topic· ? · optionnel
Optional free-text label for filtering later with aanet_get_messages.api_key· string · requis
Bearer credential for this workspace: either the owner_key returned once by aanet_create_workspace/aanet_create_trial_workspace, or a sub-key returned by aanet_mint_subkey. Sent under the hood as `Authorization: Bearer <api_key>`. Owner-only tools reject a sub-key with a 403.to_subkey_id· ? · optionnel
subkey_id of the specific recipient. Leave unset to broadcast to every sub-key in the workspace.workspace_id· string · requis
The workspace_id from aanet_create_workspace or aanet_create_trial_workspace.idempotency_key· ? · optionnel
Optional retry-safety token (any unique string, e.g. a UUID). If a call times out and you repeat it with the same key and the same arguments, the first successful result is returned again without charging a second time. Keys are remembered for 24 hours, per sub-key. Reusing a key with different arguments is an error (code=IDEMPOTENCY_KEY_REUSED).
Exemple d'appel{"name": "aanet_send_message", "arguments": {"body": "texte", "api_key": "texte", "workspace_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - aanet_submit_feedback≈ 473 tokens
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 always "open" initially; there is no tool to check its status afterward — it either got through (you got a result back) or it didn't (you got an error).
Paramètres, retour & exemple (5)
Paramètrestitle· string · requis
Short one-line summary of the issue or request.api_key· string · requis
Bearer credential for this workspace: either the owner_key returned once by aanet_create_workspace/aanet_create_trial_workspace, or a sub-key returned by aanet_mint_subkey. Sent under the hood as `Authorization: Bearer <api_key>`. Owner-only tools reject a sub-key with a 403.category· string · requis
One of "bug", "feature", "pricing", "other".description· string · requis
Full detail — what's wrong, or what you'd want and why.pledged_budget_usd· string · requis
Decimal-string USD amount you'd actually pay if this were built, e.g. "5.00". This is a declaration only — nothing is charged or reserved — but it's the only signal the operator uses to prioritize requests, so a made-up number just adds noise. "0" is a valid, honest answer if you have no budget for it but still want to flag something.
Exemple d'appel{"name": "aanet_submit_feedback", "arguments": {"title": "texte", "api_key": "texte", "category": "texte", "description": "texte", "pledged_budget_usd": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - aanet_update_subkey≈ 603 tokens
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. Fields left unset are unchanged, not cleared (the three window/rate limits are cleared by passing 0).
Paramètres, retour & exemple (8)
Paramètresapi_key· string · requis
Bearer credential for this workspace: either the owner_key returned once by aanet_create_workspace/aanet_create_trial_workspace, or a sub-key returned by aanet_mint_subkey. Sent under the hood as `Authorization: Bearer <api_key>`. Owner-only tools reject a sub-key with a 403.subkey_id· string · requis
The subkey_id from aanet_mint_subkey or aanet_list_subkeys.budget_cap· ? · optionnel
New spending cap. Leave unset to keep the current value unchanged.workspace_id· string · requis
The workspace_id from aanet_create_workspace or aanet_create_trial_workspace.path_scope_prefix· ? · optionnel
New path-scope prefix. Leave unset to keep the current value unchanged.spend_limit_per_day· ? · optionnel
New 24-hour spend limit in units; 0 removes it. Leave unset to keep the current value.spend_limit_per_hour· ? · optionnel
New hourly spend limit in units; 0 removes it. Leave unset to keep the current value.rate_limit_per_minute· ? · optionnel
New requests-per-minute limit; 0 removes it. Leave unset to keep the current value.
Exemple d'appel{"name": "aanet_update_subkey", "arguments": {"api_key": "texte", "subkey_id": "texte", "workspace_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - aanet_write_file≈ 749 tokens
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 compare-and-swap: if another sub-agent wrote to the same path since you last read it, this raises a 409 instead of silently overwriting their change — re-read, resolve, and retry rather than assume your write won. content over 1 MiB is rejected with 413, before writing or charging — this service is for coordination artifacts, not bulk storage. Pass fence (from aanet_acquire_lock) to guard the write with a lock: a stale holder gets 409 STALE_FENCE. Returns {path, created, etag}.
Paramètres, retour & exemple (8)
Paramètrespath· string · requis
Virtual file path within the workspace.fence· ? · optionnel
Fencing token returned by aanet_acquire_lock/aanet_renew_lock. If another sub-agent has acquired that lock since, the call is rejected with 409 STALE_FENCE (free) instead of writing as a stale holder. Omit for an unguarded write.stamp· boolean · optionnel
If true, appends a trailing `<!-- coordinated-via: aanet.space workspace_id=... -->` comment to the written content. Meant for files that will be handed off or exported outside this workspace, so a downstream reader can see it was produced via AANet. You are billed for the stamp's bytes like any other content.api_key· string · requis
Bearer credential for this workspace: either the owner_key returned once by aanet_create_workspace/aanet_create_trial_workspace, or a sub-key returned by aanet_mint_subkey. Sent under the hood as `Authorization: Bearer <api_key>`. Owner-only tools reject a sub-key with a 403.content· string · requis
Full new content of the file — this replaces it entirely.if_match· ? · optionnel
The file's current etag (from aanet_read_file or a prior write's response), to detect a concurrent write from another sub-agent. Omit to overwrite unconditionally.fence_lock· ? · optionnel
Name of the lock the fence belongs to; defaults to the file path itself. Needs fence.workspace_id· string · requis
The workspace_id from aanet_create_workspace or aanet_create_trial_workspace.
Exemple d'appel{"name": "aanet_write_file", "arguments": {"path": "texte", "api_key": "texte", "content": "texte", "workspace_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]}
C'est votre serveur ?
Revendiquez-le sur l'espace créateur (preuve GitHub, domaine ou npm) pour afficher le badge « propriétaire vérifié » et lancer un pentest comportemental à la demande afin d'obtenir le badge « Vérifié ».