> To find and run AgentRouter tools, connect to https://mcp.agentrouter.to/. To search this documentation, use https://docs.agentrouter.to/_mcp/server. Append .md to a page URL for Markdown. For the documentation index, see https://docs.agentrouter.to/llms.txt.

# Agent examples

These are the four launch use cases. Each was run end to end against the hosted flow with real providers on 2026-11-06; the charges below are what those runs cost at `price_multiplier` `"1"`. Prices change with providers and promotions, so an agent should read the current terms from `describe`, not from this page.

The agent does the planning and the judging. AgentRouter runs one provider call per `invoke` and reports exactly what happened; a `COMPLETED` run means the provider returned data, not that the data answers the question.

For prompts you can copy and links to the tools used at each step, open the [website tutorials](https://www.agentrouter.to/tutorial).

## Competitor research

**Task:** "Find companies selling pay-per-call API access to AI agents, read one pricing page, and collect what developers say about them."

1. `find` "companies that sell API access to AI agents" → `exa.company_search`.
2. `invoke exa.company_search` with `{"query": "API marketplaces that let AI agents pay per call", "numResults": 5}` → **\$0.007** (Exa search, up to 10 results).
3. `invoke search1api.search` for each competitor's pricing page → **\$0.001** per search (1 credit). Empty searches are not charged.
4. `invoke contextdev.scrape_markdown` with the pricing URL → \$0.003 when the page is returned. In our run the URL was a 404: the run `FAILED` with `provider_error` and was **not charged** (`waived_provider_error`).
5. `invoke anyapi.reddit.search` for developer discussion → **\$0.00035**.

**Limits:** pages behind logins or bot walls fail as provider errors (not charged). Search results are candidates; the agent must open and verify sources before citing them.

## Social analysis

**Task:** "Summarize what a company's X account posted this month and how people responded."

1. `invoke anyapi.twitter.profile` with `{"handle": "AnthropicAI"}` → **\$0.00022**.
2. `invoke anyapi.twitter.user_posts` with the handle → from \$0.00045 per page.
3. Long lists are paginated: when the run has `next_cursor`, a `NEXT_PAGE` hint says which input field takes it. Each page is a new, separately charged call — stop when you have enough.
4. `invoke anyapi.twitter.search` with `{"query": "to:AnthropicAI", "limit": 20}` for replies → \$0.0006 for a typical page.

**Limits:** an account with no posts returns an empty list; for these AnyAPI tools an empty result is still charged at the provider's reported cost, as `describe` states. Deleted or private posts are not returned.

## SEO

**Task:** "Show who ranks for 'agent tool marketplace' in the US and how much search volume related keywords have."

1. `invoke dataforseo.serp_google_organic` with `{"keyword": "agent tool marketplace", "location_code": 2840, "language_code": "en"}` → **\$0.002** per SERP of up to 10 results.
2. `invoke dataforseo.keyword_search_volume` with up to 1,000 keywords in one task → \$0.09 per task, so batch keywords instead of calling once per keyword.
3. `invoke dataforseo.ranked_keywords` or `dataforseo.backlinks_summary` for a competitor domain → $0.012–$0.024 per task plus a small amount per returned row; set `limit` to what the report needs.

**Limits:** location and language codes must match DataForSEO's lists (see the tool's schema). Volume data is monthly and may lag; new keywords can return no data, which is charged as a normal result.

## Sales leads

**Task:** "Find the growth lead at three developer-tool companies and verify their work emails."

1. `invoke exa.people_search` with `{"query": "head of growth at developer tool companies", "numResults": 5}` → \$0.007.
2. `invoke hunter.company_enrichment` with `{"domain": "stripe.com"}` → 0.2 Hunter credit when company data is returned (`describe` shows the current dollar price per credit).
3. `invoke hunter.email_finder` with the domain and full name → 1 credit when an email is found, nothing when not.
4. `invoke hunter.email_verifier` with the address → 0.5 credit. Verification can take a while; the run may return `RUNNING` first — fetch it by `run_id`.

In our run, steps 2 and 4 were charged **\$0** with reason `zero_base`: Hunter reported zero credits used (repeat lookups within its billing period are free), so AgentRouter charged nothing. The receipt always says why an amount is zero.

**Limits:** Hunter only returns public professional data it already knows; people without a public footprint return no email. Respect the user's outreach rules and applicable law before contacting anyone.

## What these four tasks cost

| Run                                     | Charge    | Reason                |
| --------------------------------------- | --------- | --------------------- |
| `exa.company_search`                    | \$0.007   | charged               |
| `search1api.search`                     | \$0.001   | charged               |
| `contextdev.scrape_markdown` (404 page) | \$0       | waived_provider_error |
| `anyapi.reddit.search`                  | \$0.00035 | charged               |
| `anyapi.twitter.profile`                | \$0.00022 | charged               |
| `dataforseo.serp_google_organic`        | \$0.002   | charged               |
| `hunter.company_enrichment`             | \$0       | zero_base             |
| `hunter.email_verifier`                 | \$0       | zero_base             |

Every one of these runs, with caller, provider, charge and reason, is listed in [Usage](https://www.agentrouter.to/settings/usages) and through `GET /v1/runs`.

## Guidance for agent authors

* Choose tools yourself within the user's task and spending rules; do not stop to ask the user to choose between providers.
* Use real `limit` values from the schema. Ask for what the report needs, not a round number.
* Reuse a `describe` result until a call returns `PRICING_CHANGED` or `TOOL_VERSION_CHANGED`; then describe again. A free promotion that ended never silently becomes a paid call.
* Keep large outputs out of the conversation: save `result.url` or export with `agentrouter runs get <run_id> --output file.json`.
* Tell apart a run that is still going, a provider error, a legal empty result and unavailable content. Check the original run before trying again.