One key.Every tool your agent needs.
Models, media, web data, SEO, social networks, Google, domain names and app hosting. One API key, one MCP server, one prepaid wallet. Your agent searches, reads the price, calls.
Nine capability families behind a single key
Stop collecting keys.
Start calling tools.
Every family lives in one catalog, with the same call shape and the same wallet.
Models
OpenAI-compatible chat on /v1, text generation with public model aliases, and structured AI judgement.
/v1/chat/completions · text.generate · ai.judgeMedia
Images, video, voice and talking avatars. Search a model by name, read its schema, generate.
image.generate · video.generate · audio.generate · avatar.animateWeb data
Search results, clean page extracts, screenshots, structured data, whole-site crawls.
web.scrape · web.search · web.crawl · web.structuredSEO
Search results, keyword volumes, backlinks and AI-search mentions, as jobs you can poll.
seo.backlinks · seo.bing.serp.organic · seo.job-statusSocial
Public profiles, posts, comments and transcripts, plus the accounts you connect and publish to.
public.tiktok.search-creators · social.send · social.inboxConnect Analytics and Search Console once, then query reports with the selected property.
ga.connect · gsc.url-inspectionCommunities
Read and post in Slack, follow public Telegram channels and their comments.
community.slack.message.send · community.telegram.*Domains
Search, register, renew and manage DNS for domain names, paid from the wallet.
domain.search · domain.register · domain.dns.setHosting
Deploy a site, an edge function or a container and serve it on your own domain.
app.deploy · app.domain.attach · app.logsThree moves.
Every capability.
Whatever the tool does, it works the same way over HTTP and over MCP.
Discover
Search the catalog in plain words. Read the exact input, the method and the price before anything runs. Discovery is free.
GET /catalog/search?q=scrape a pageCall
One endpoint for every capability. Paid calls carry an Idempotency-Key, and writes need confirmed: true.
POST /call/web.scrapeFollow
Long jobs answer 202 with a call id. Poll it until the status is final, with the settled cost attached.
GET /calls/Plug in any agent.
One MCP server.
Claude, Cursor or your own agent: paste this config and the whole catalog is one tool call away.
{
"mcpServers": {
"ao-router": {
"type": "http",
"url": "https://apis.ao.me/mcp",
"headers": { "Authorization": "Bearer <your API key>" }
}
}
}Five tools reach everything.
No per-capability plugins. The agent searches, reads the price, calls and follows.
catalog_searchfind capabilities and modelscatalog_getexact schema and pricecallrun one, with an idempotency keycall_statusfollow a job to its final statusconnections_listaccounts this key may use
One wallet.
No surprise invoice.
Top up once. Each call is debited at the price shown when it started, and a price never moves afterwards.
The catalog shows the price before the call; the response returns the actual cost.
An empty wallet stops paid calls with 402 instead of running a tab.
Jobs are followed, never resubmitted, so nothing is paid twice.
Every amount reads the same everywhere: 1.80 USD.
Buy the domain.
Ship the app.
The same key takes a project from an idea to a live address, billed to the same wallet.
Domain names
Search availability and yearly prices, register with a price cap, manage DNS, renew automatically.
domain.searchavailability and price per yeardomain.registercapped by max_price_usddomain.dns.setrecords, nameservers, contactdomain.renewor auto-renew 30 days before expiry
App hosting
Send a built site, an edge function or a Dockerfile. It goes live at a generated address; attach your domain for HTTPS on your own name.
app.uploadthen curl -T project.zipapp.deploylive at k3f9x2m7qa4b.ao.pageapp.domain.attachautomatic HTTPSapp.secrets.setlogs, rollback, delete
Before you plug in your agent.
Do I need a separate account for each tool?
No. One AO Router key reaches every capability your account has enabled, over REST or MCP. You never manage vendor keys or dashboards.
How do I know what a call costs?
Every capability shows its price in the catalog before you call it, and each response returns its actual cost in the X-Router-Cost-USD header. Amounts are always written like 1.80 USD.
What happens when my wallet runs out?
Paid calls stop with 402 insufficient_balance and hosted apps pause until you top up. Your balance never goes below zero, so there is no surprise invoice.
Can my agent learn the platform by itself?
Yes. Point it at apis.ao.me/llms.txt: one document that explains every rule, tool and operation.