MCP Server

Agent Anthill

com.agentanthill/agent-anthill

What this MCP does

Stores and transfers files or text between agents using tickets, relay codes, fair-exchange chambers, encrypted retrieval, and USDC-based payments.

anthill_chamber_deposit
Deposit into an Anthill Chamber
Deposit your side of an Anthill Chamber exchange, with your seat ticket from anthill_chamber_join (starts with 'chm_'). Deposits open once every seat has joined. Before depositing, check anthill_chamber_status: every seat joined with the names you expect, the deadline, any promised fingerprints and reserved seats. If another party says its invite didn't work, don't deposit. Your deposit is sealed: until every seat has deposited, nobody sees it (not even its size). Each seat takes exactly one deposit, and it can't be withdrawn, deleted or replaced, which is what makes the exchange fair. If the chamber fails, it's deleted unseen. Price: like anthill_store for the chamber's whole life, plus one collection for each other seat (so the others collect for free). Payment: profile_key, or x402 per request with no profile (plus a processing fee you pay, not the service). A reserved seat must be paid by its profile or wallet. Max 4 MB here; up to 100 MB via HTTP PUT https://agentanthill.com/v1/chambers/{seat_ticket}. For privacy, encrypt before depositing (set encrypted=true) and give the other parties the key ahead of time: the bytes stay sealed either way.
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['seat_ticket', 'content'], 'properties': {'label': {'type': 'string', 'maxLength': 200, 'description': 'Optional note the other parties see after release.'}, 'content': {'type': 'string', 'description': 'Text, or base64 if is_base64 is true.'}, 'encrypted': {'type': 'boolean', 'default': False, 'description': 'Declare that you encrypted the content yourself.'}, 'is_base64': {'type': 'boolean', 'default': False, 'description': 'True if content is base64-encoded binary.'}, 'profile_key': {'type': 'string', 'description': "Your profile's secret key (starts with 'anthill_sk_'). Optional if sent as an 'Authorization: Bearer' header."}, 'seat_ticket': {'type': 'string', 'minLength': 10, 'description': "Your seat ticket (starts with 'chm_')."}, 'content_type': {'type': 'string', 'maxLength': 100, 'description': "Optional MIME type, e.g. 'application/json'."}}}
anthill_chamber_join
Join an Anthill Chamber
Join an Anthill Chamber with the invite you were given (starts with 'chi_'). Free. Returns your private seat ticket (starts with 'chm_') and the chamber's terms. The invite then stops working, so nobody else who saw it, including whoever opened the chamber, can use your seat. If you're told the seat was already joined, someone else used your invite: don't deposit anything, and tell the other parties. Keep the seat ticket secret: you need it to deposit (anthill_chamber_deposit) and to collect (anthill_chamber_status).
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['invite'], 'properties': {'name': {'type': 'string', 'maxLength': 60, 'description': "Optional: what to call you, shown to the other seats (e.g. 'Acme buyer agent'). Not verified."}, 'invite': {'type': 'string', 'minLength': 10, 'description': "Your invite (starts with 'chi_')."}}}
anthill_chamber_open
Open an Anthill Chamber (fair exchange)
Open an Anthill Chamber: a fair exchange with Agent Anthill as the trusted middle party. Each party deposits into its own seat. NOTHING is released until every seat has deposited; then each party can collect all the others' deposits at once. If the deadline passes first, every deposit is deleted unseen. Use it when nobody wants to go first: trading a file for a file, a result for proof of payment, sealed bids or independent estimates that open together. Returns one invite per seat, shown once. Give each party exactly one, privately; each joins with anthill_chamber_join to get its own private seat ticket. Deposits open once every seat has joined. Optional protections, one entry per seat in seat order (null for none): promised_sha256 fixes what a seat must deliver (a different SHA-256 is refused); reserved_for lets only one profile (prf_...) or wallet (0x...) deposit in a seat. Use reserved_for when the parties don't already trust whoever opens the chamber. Opening costs $0.005 (50% off during launch). Payment: profile_key, or with no profile at all, x402 per request (USDC on Base; a processing fee you pay, not the service). Each party pays for its own deposit (anthill_chamber_deposit).
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'label': {'type': 'string', 'maxLength': 200, 'description': "Optional note every party sees, e.g. 'dataset for signed NDA'. Not secret."}, 'seats': {'type': 'integer', 'default': 2, 'maximum': 10, 'minimum': 2, 'description': 'How many parties, 2 to 10.'}, 'profile_key': {'type': 'string', 'description': "Your profile's secret key (starts with 'anthill_sk_'). Optional if sent as an 'Authorization: Bearer' header."}, 'reserved_for': {'type': 'array', 'items': {'type': ['string', 'null']}, 'maxItems': 10, 'description': 'Optional: the only profile ID (prf_...) or wallet address (0x...) that may deposit in each seat, one entry per seat; null for anyone holding the seat.'}, 'collect_hours': {'type': 'number', 'default': 72, 'maximum': 168, 'minimum': 1, 'description': 'How long deposits stay collectible after the deadline. Default 72.'}, 'deadline_hours': {'type': 'number', 'default': 24, 'maximum': 168, 'description': 'Every seat must join and deposit within this many hours, or the chamber fails and all deposits are deleted unseen. Default 24, max 168.', 'exclusiveMinimum': 0}, 'promised_sha256': {'type': 'array', 'items': {'type': ['string', 'null']}, 'maxItems': 10, 'description': 'Optional: the SHA-256 (64 hex characters) each seat must deliver, one entry per seat in seat order; null for no promise. For short secrets like a bid, add random padding, or others could guess it from the fingerprint.'}}}
anthill_chamber_status
Check an Anthill Chamber
See an Anthill Chamber through your seat ticket: the deadline, every seat (joined, name, reserved_for, promised fingerprint, deposited) and the state (waiting, released or failed). Free; no profile needed. Before release it never shows anything about the other deposits. Once released, it lists a ticket for each other seat's deposit: collect them with anthill_retrieve (free, already paid), or give a person the view_url. It also returns a signed release receipt listing every deposit's fingerprint: proof of exactly what was exchanged.
Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['seat_ticket'], 'properties': {'seat_ticket': {'type': 'string', 'minLength': 10, 'description': "Your seat ticket (starts with 'chm_'), from anthill_chamber_join."}}}
anthill_confirm_deposit
Confirm a deposit
After sending USDC, submit the transaction hash. We verify it on Base (needs 3 confirmations) and credit your balance. If it says 'pending', wait a few seconds and call again.
Open world Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['tx_hash'], 'properties': {'tx_hash': {'type': 'string', 'description': 'The Base transaction hash, 0x followed by 64 hex characters.'}, 'profile_key': {'type': 'string', 'description': "Your profile's secret key (starts with 'anthill_sk_'). Optional if sent as an 'Authorization: Bearer' header."}}}
anthill_create_profile
Create a profile
Create your Agent Anthill profile. Free. Returns a public profile_id and a secret_key. The secret key IS your profile: anyone holding it can spend your balance. Store it securely and never share it. There is no recovery if you lose it. Next step: fund it with anthill_deposit. Prices: see anthill_pricing. Creating a profile means agreeing to the Terms (https://agentanthill.com/terms) and Abuse policy (https://agentanthill.com/abuse).
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'name': {'type': 'string', 'maxLength': 80, 'description': "Optional display name, e.g. 'research-agent-7'."}}}
anthill_delete
Delete an item
Permanently delete an item and invalidate all its tickets. Free. Requires the owner_ticket. Cannot be undone. Returns a signed deletion receipt as proof.
Destructive Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['owner_ticket'], 'properties': {'owner_ticket': {'type': 'string', 'minLength': 10, 'description': 'The owner_ticket.'}}}
anthill_deposit
Start a deposit
Add credit to your profile with USDC on Base. Returns a wallet address and an EXACT amount to send (it includes a tiny unique tail that identifies your deposit; send exactly that amount). After sending, call anthill_confirm_deposit with the transaction hash. The deposit request expires in 60 minutes. Minimum $1. Deposits of $5+ get 20% bonus credit. A first deposit of $5+ claims the next founding-profile spot, if any remain.
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['amount_usd'], 'properties': {'amount_usd': {'type': 'number', 'description': 'Roughly how many dollars to deposit, e.g. 5.', 'exclusiveMinimum': 0}, 'profile_key': {'type': 'string', 'description': "Your profile's secret key (starts with 'anthill_sk_'). Optional if sent as an 'Authorization: Bearer' header."}}}
anthill_extend
Keep an item longer
Push an item's expiry later, billed as storage to the item's owner. Requires the owner_ticket. Max 720 hours from now.
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['owner_ticket', 'add_hours'], 'properties': {'add_hours': {'type': 'number', 'description': 'Hours to add.', 'exclusiveMinimum': 0}, 'owner_ticket': {'type': 'string', 'minLength': 10, 'description': 'The owner_ticket.'}}}
anthill_info
Check an item
Check an item's size, fingerprint, label, and expiry without downloading it. Free.
Read only Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['ticket'], 'properties': {'ticket': {'type': 'string', 'minLength': 10, 'description': 'Any ticket for the item.'}}}
anthill_pricing
Get prices
Current prices, launch discount, founding-profile tiers, and deposit rules. Free, no profile needed.
Read only Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
anthill_profile
Check your profile
See your balance, founding status, and the discount currently applied to you.
Read only Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'profile_key': {'type': 'string', 'description': "Your profile's secret key (starts with 'anthill_sk_'). Optional if sent as an 'Authorization: Bearer' header."}}}
anthill_receipts
Get an item's receipts
Signed receipts for an item you stored: when it was stored, every time it was collected (proof of delivery), and how it ended (deleted by you, expired, or removed under the abuse policy). Works after the item is gone, for 90 days. Free. Requires the owner_ticket. Receipts hold fingerprints and times, never content. Check one with the public key at https://agentanthill.com/receipts/key, or POST it to https://agentanthill.com/receipts/verify.
Read only Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['owner_ticket'], 'properties': {'owner_ticket': {'type': 'string', 'minLength': 10, 'description': "The owner_ticket (starts with 'own_')."}}}
anthill_relay
Relay to another AI with a short code
Hand text or a file to another AI app (or another session) with a short, speakable code like "amber-otter-mango-42", which is also a link: https://agentanthill.com/amber-otter-mango-42. Use it when a person is moving work between AI assistants (e.g. Claude, ChatGPT, a phone assistant): give them the say_this line. Any AI that can open a web page can fetch the link, even without Agent Anthill connected; agents with it connected can pass the code to anthill_retrieve. Short-lived on purpose: default 10 minutes (max 60) and 3 collections (max 10). Codes are short, so don't relay secrets; for sensitive data use anthill_store with encrypt=true instead. Payment: like anthill_store (profile_key, or x402 per request with no profile, where all collections are prepaid so the receiver pays nothing). Returns code, url, say_this, and an owner_ticket to delete it early or get its receipts.
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['content'], 'properties': {'uses': {'type': 'integer', 'default': 3, 'maximum': 10, 'minimum': 1, 'description': 'How many times it can be collected. Default 3 (link previews in chat apps can use one).'}, 'label': {'type': 'string', 'maxLength': 200, 'description': "Optional note shown to the receiver, e.g. 'Draft from ChatGPT session'."}, 'content': {'type': 'string', 'description': 'Text, or base64 if is_base64 is true.'}, 'minutes': {'type': 'number', 'default': 10, 'maximum': 60, 'description': 'How long the code works. Default 10, max 60.', 'exclusiveMinimum': 0}, 'is_base64': {'type': 'boolean', 'default': False, 'description': 'True if content is base64-encoded binary.'}, 'profile_key': {'type': 'string', 'description': "Your profile's secret key (starts with 'anthill_sk_'). Optional if sent as an 'Authorization: Bearer' header."}, 'content_type': {'type': 'string', 'maxLength': 100, 'description': 'Optional MIME type. Text is best for AI receivers.'}}}
anthill_retrieve
Retrieve an item
Pick up an item with a ticket, a link, or a relay code (e.g. "amber-otter-mango-42", typed any way). No profile needed: the item's owner pays. Returns the content (text, or base64 for binary) and its sha256 fingerprint for verification, plus a signed receipt proving the collection. Encrypted items: pass the key (from the sender, or the part after '#key=' in view_url) to get the content unlocked; we use it for this request only. Without it you get the locked bytes as content_base64. Large items return a download_url instead. If the owner is out of credit, pass your own profile_key to pay, or pay this one collection with x402 (USDC on Base; the price includes a payment-processing fee that you pay, not the service).
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['ticket'], 'properties': {'key': {'type': 'string', 'description': "The item's key, if it was stored with encrypt=true."}, 'ticket': {'type': 'string', 'minLength': 10, 'description': 'A ticket from anthill_store or anthill_share, a link to one, or a relay code.'}, 'profile_key': {'type': 'string', 'description': "Your profile's secret key (starts with 'anthill_sk_'). Optional if sent as an 'Authorization: Bearer' header."}}}
anthill_rotate_key
Replace your secret key
Issue a new secret key and immediately disable the old one. Use this if your key may have leaked. Balance and founding status are kept.
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'profile_key': {'type': 'string', 'description': "Your profile's secret key (starts with 'anthill_sk_'). Optional if sent as an 'Authorization: Bearer' header."}}}
anthill_share
Create a share ticket
Make an extra read ticket for an item you own, optionally single-use or shorter-lived. Requires the owner_ticket; billed to the item's owner.
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['owner_ticket'], 'properties': {'uses': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Number of retrievals allowed. Omit for unlimited.', 'exclusiveMinimum': 0}, 'ttl_hours': {'type': 'number', 'description': 'Expire the ticket sooner than the item.', 'exclusiveMinimum': 0}, 'owner_ticket': {'type': 'string', 'minLength': 10, 'description': "The owner_ticket (starts with 'own_')."}}}
anthill_store
Store an item
Drop off text or a file and get claim tickets back. Use it to hand data to another agent, or keep something beyond your session. Payment: from your profile balance (profile_key), or with no profile at all, pay per request with x402 (USDC on Base): call without profile_key and you get the exact price, itemized. The x402 price includes 3 prepaid collections (change with prepaid_collections) and a payment-processing fee that you pay, not the service. Prepaid profiles pay no processing fee. Returns an owner_ticket (keep private: it can share, extend, delete) and a read_ticket (give it to whoever should pick the item up; retrievals are billed to you, so the receiver needs no profile). For a human recipient, give them view_url: a web page where they can see what's waiting and download it. Default lifetime 24h, max 720h. Max 4 MB here; up to 100 MB via HTTP PUT https://agentanthill.com/v1/items. Privacy: set encrypt=true and we lock it with a fresh key as it arrives, store only the locked bytes, and give you the key (never kept by us). view_url then carries the key after '#', so a person's browser unlocks it. Or encrypt it yourself first (AES-256-GCM: 12-byte IV + ciphertext + 16-byte tag, see llms.txt) and set encrypted=true. You also get a signed receipt; anthill_receipts later shows every collection and how the item ended (deleted, expired or removed).
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['content'], 'properties': {'label': {'type': 'string', 'maxLength': 200, 'description': "Optional note, e.g. 'summary for agent B'. Not encrypted, so keep secrets out of it."}, 'content': {'type': 'string', 'description': 'Text, or base64 if is_base64 is true.'}, 'encrypt': {'type': 'boolean', 'default': False, 'description': 'Have Agent Anthill encrypt it for you. You get back a key; without it nobody, including us, can read the item.'}, 'encrypted': {'type': 'boolean', 'default': False, 'description': 'Declare that you already encrypted the content yourself.'}, 'is_base64': {'type': 'boolean', 'default': False, 'description': 'True if content is base64-encoded binary.'}, 'ttl_hours': {'type': 'number', 'description': 'Hours to keep it. Default 24.', 'exclusiveMinimum': 0}, 'profile_key': {'type': 'string', 'description': "Your profile's secret key (starts with 'anthill_sk_'). Optional if sent as an 'Authorization: Bearer' header."}, 'content_type': {'type': 'string', 'maxLength': 100, 'description': "Optional MIME type, e.g. 'application/json'."}, 'prepaid_collections': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'x402 only: how many collections to prepay so receivers pay nothing. Default 3.'}}}
Added
anthill_chamber_status
Oct. 5, 2026, 2:40 a.m.
Added
anthill_chamber_deposit
Oct. 5, 2026, 2:40 a.m.
Added
anthill_chamber_join
Oct. 5, 2026, 2:40 a.m.
Added
anthill_chamber_open
Oct. 5, 2026, 2:40 a.m.
Added
anthill_info
Oct. 5, 2026, 2:40 a.m.
Added
anthill_receipts
Oct. 5, 2026, 2:40 a.m.
Added
anthill_delete
Oct. 5, 2026, 2:40 a.m.
Added
anthill_extend
Oct. 5, 2026, 2:40 a.m.
Added
anthill_share
Oct. 5, 2026, 2:40 a.m.
Added
anthill_retrieve
Oct. 5, 2026, 2:40 a.m.
Added
anthill_relay
Oct. 5, 2026, 2:40 a.m.
Added
anthill_store
Oct. 5, 2026, 2:40 a.m.
Added
anthill_confirm_deposit
Oct. 5, 2026, 2:40 a.m.
Added
anthill_deposit
Oct. 5, 2026, 2:40 a.m.
Added
anthill_pricing
Oct. 5, 2026, 2:40 a.m.
Added
anthill_rotate_key
Oct. 5, 2026, 2:40 a.m.
Added
anthill_profile
Oct. 5, 2026, 2:40 a.m.
Added
anthill_create_profile
Oct. 5, 2026, 2:40 a.m.