
Can an AI agent use this software? Levels from real agent test drives: sign-up, keys, use, pay.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Ranks the products AgentDrives has test-driven for a task given in plain words (e.g. 'send an invoice'). Each result: the agent level (0-5: 0 Read-only, 1 Needs a person, 2 Gets in, 3 Does the work, 4 Runs on its own, 5 Autonomous); gets_in_alone (our agent signed up and got a key without a person); task: the closest task in the product's capability map and what happened when our agent tried it (result: done, partial, plan_gated, failed, blocked, not_tried, unknown; via: the route, e.g. api, mcp, cli, browser); match (strong or partial); can_do (up to three things our agent did there); stop (where it stopped, and why); work_done (share of the core tasks done, 0-100); the drive date; origin (editorial, or owner with disclosure "Owner-paid drive"); and the page URL. Order: strong matches first, then the ones where our agent did the task, then level, then work done. A task that names a capability in full (e.g. 'send a transactional email') also brings the products where our agent did that capability (capability: the one it came by). self_signup: true keeps only products our agent got into on its own. Up to limit results (default 10, at most 25). Or by capability instead of task, by its id (cap_ and 8 characters; AgentDrives's GET /api/capabilities lists them by domain) or its name; the answer lists every product whose latest drive has a task of it (match: capability; tasks: the product's own tasks behind it; evidence: the page section that shows it), done first, then level. Words that fit several capabilities are an error that lists them. Send task or capability. Once the directory opens: directory.note says why a product is listed, and a product outside it comes only when the task names it (match: name, directory.state: none). get_tool returns one product in full. Every field: https://agentdrives.com/openapi.json.
The task in plain words, e.g. 'send an invoice' or 'create a contact'. Send this or capability
the most results to return
Only this category: an id or name from list_categories (e.g. 'invoicing')
only products at this agent level or higher (0-5)
A capability of the shared vocabulary instead of task: its id (e.g. from GET /api/capabilities) or its name, e.g. 'Send a transactional email'
true: only products our agent signed up for and got a key on its own
Tool list last changed Oct 23, 2026.
Ranks the products AgentDrives has test-driven for a task given in plain words (e.g. 'send an invoice'). Each result: the agent level (0-5: 0 Read-only, 1 Needs a person, 2 Gets in, 3 Does the work, 4 Runs on its own, 5 Autonomous); gets_in_alone (our agent signed up and got a key without a person); task: the closest task in the product's capability map and what happened when our agent tried it (result: done, partial, plan_gated, failed, blocked, not_tried, unknown; via: the route, e.g. api, mcp, cli, browser); match (strong or partial); can_do (up to three things our agent did there); stop (where it stopped, and why); work_done (share of the core tasks done, 0-100); the drive date; origin (editorial, or owner with disclosure "Owner-paid drive"); and the page URL. Order: strong matches first, then the ones where our agent did the task, then level, then work done. A task that names a capability in full (e.g. 'send a transactional email') also brings the products where our agent did that capability (capability: the one it came by). self_signup: true keeps only products our agent got into on its own. Up to limit results (default 10, at most 25). Or by capability instead of task, by its id (cap_ and 8 characters; AgentDrives's GET /api/capabilities lists them by domain) or its name; the answer lists every product whose latest drive has a task of it (match: capability; tasks: the product's own tasks behind it; evidence: the page section that shows it), done first, then level. Words that fit several capabilities are an error that lists them. Send task or capability. Once the directory opens: directory.note says why a product is listed, and a product outside it comes only when the task names it (match: name, directory.state: none). get_tool returns one product in full. Every field: https://agentdrives.com/openapi.json.
| Argument | Type | Description |
|---|---|---|
| task | string | The task in plain words, e.g. 'send an invoice' or 'create a contact'. Send this or capability |
| limit | integer | the most results to return |
| category | string | Only this category: an id or name from list_categories (e.g. 'invoicing') |
| min_level | integer | only products at this agent level or higher (0-5) |
| capability | string | A capability of the shared vocabulary instead of task: its id (e.g. from GET /api/capabilities) or its name, e.g. 'Send a transactional email' |
| self_signup | boolean | true: only products our agent signed up for and got a key on its own |
{
"type": "object",
"properties": {
"task": {
"type": "string",
"description": "The task in plain words, e.g. 'send an invoice' or 'create a contact'. Send this or capability"
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 25,
"minimum": 1,
"description": "the most results to return"
},
"category": {
"type": "string",
"description": "Only this category: an id or name from list_categories (e.g. 'invoicing')"
},
"min_level": {
"type": "integer",
"maximum": 5,
"minimum": 0,
"description": "only products at this agent level or higher (0-5)"
},
"capability": {
"type": "string",
"description": "A capability of the shared vocabulary instead of task: its id (e.g. from GET /api/capabilities) or its name, e.g. 'Send a transactional email'"
},
"self_signup": {
"type": "boolean",
"description": "true: only products our agent signed up for and got a key on its own"
}
}
}Returns any product we drove (once the directory opens, with directory.state: audited, in_audit; none: its basic record): its full test-drive result (20 to 70 KB; brief: true for the headline in about 3 KB): how far an agent gets with it and where it stops. slug: its directory slug from search_tools, or its name or domain; an unknown one is an error that names the closest. The full result: the agent level, the five outcomes (find, shown as Learn; access, use, pay, leave, by any way in the product offers; stages: the four that decide the level, under their older keys), how an agent gets in (access, with the core tasks done on each way), the part scores, the nine checkpoints from docs to delete, what an agent can and cannot do, tips for agents, pay_options (the ways to pay it offers an agent, the payment our side proved with its transaction, and what the owner could add), the bot check that stopped our agent on a way in (agent_check: vendor, step, type network or challenge, the owner's fix), after_wall and works_assisted (what it did once a person helped: data only, not counted), robots (a robots.txt rule on the way in; held: the level is from the last drive past it), same_level_drives, the level history with why each move happened (product; agent: our agent or its drive changed; rules; noise), rules_date (the rules the level was set by), audited: its certificate, if any. Since 12 Oct 2026 also routes (every way in and what happened on each), checkout (how far the walk to the last click went), docs (read and judged) and claims (the documented ways to do the core work, tried once each: held, broken, worked but undocumented). newer_drives (drives after the listed one, not listed yet); attempts_count; the attempt log with its evidence is detail.url, for the product's verified owner. Every field: https://agentdrives.com/openapi.json (Tool).
| Argument | Type | Description |
|---|---|---|
| slug* | string | The product's directory slug from search_tools (e.g. 'attio'), or its name or domain |
Lists every category in the directory: its id (for search_tools' category filter), its name, the number of products listed in it and the best agent level in it (0-5); once the directory opens, how many are Audited and In Audit (directory, with note: why they are listed).
No arguments.
{
"type": "object",
"properties": {}
}Searches AgentDrives' tested products by name, domain or what they do. Filters: category, minimum agent level (0-5: 0 Read-only, 1 Needs a person, 2 Gets in, 3 Does the work, 4 Runs on its own, 5 Autonomous), how an agent gets in (access: pay per call, no key, a key by API, its own sign-up…), agent-native payment (proven, or the rails it offers) and whether an agent leaves on its own. Returns the level and its name, how an agent gets in (access) and the five outcomes (find, shown as Learn; access, use, pay, leave: each yes, part (partway: pay part means it reached the checkout but couldn't finish paying; access part, it got in on some drives only), no, unreached (it never got that far) or na), the part scores (holds_up, docs_match: 0-100, null = not measured), where it stopped, the agent-native ways to pay it (pays_with) and whether we made a real payment over one (paid), the bot check that stopped our agent on a way in and its wall_type (network: It judged where our agent connects from and its browser, not a person. An agent that works on its own from a data center doesn't get through unless the owner lets signed agents in. How agents in a person's own browser fare isn't measured yet. challenge: It asks every visitor to prove they are human. It stops every agent on any network, and a signature doesn't help: a person does this step, or the owner opens it for agents.), who paid for the drive (origin: editorial, or owner with disclosure "Owner-paid drive") and the page URL. Sorted by level, then work done, then minutes to the first call. Up to limit results (default 25, at most 100) from offset; total counts every match, next_offset and more give the rest; with none, try says what next. Once the directory opens: directory.state audited or in_audit; one outside it (none) only when the query names it, last. get_tool gives one product in full by its slug; list_categories gives the category ids. Every field: https://agentdrives.com/openapi.json (ToolSummary).
| Argument | Type | Description |
|---|---|---|
| limit | integer | the most results to return |
What changed in the directory in the last days (default 7, at most 31): level_moves, each product's level going up or down between two of its drives, with the date, the cause in words (our agent changed, not confirmed by a second drive yet, sign-up varies from drive to drive) and the level listed now (level_now); net, each product once from its first level in the span to its last (up, down, back); confirmed, the changes the next drive confirmed (the change feed's items); and moves of where it stopped or how it gets in (listed for one product or category, else counted). Newest first. category or slug narrows it.
| Argument | Type | Description |
|---|---|---|
| days | integer | How many days back |
| slug | string | Only this product: its slug from search_tools |
| category | string | Only this category: an id or name from list_categories |
{
"type": "object",
"properties": {
"days": {
"type": "integer",
"default": 7,
"maximum": 31,
"minimum": 1,
"description": "How many days back"
},
"slug": {
"type": "string",
"description": "Only this product: its slug from search_tools"
},
"category": {
"type": "string",
"description": "Only this category: an id or name from list_categories"
}
}
}| brief |
| boolean |
| true: only the headline: level, where it stopped (with its evidence), the main wall it met, the five outcomes, how an agent gets in, what it can and can't do, tips for agents, the level's history and the page |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "The product's directory slug from search_tools (e.g. 'attio'), or its name or domain"
},
"brief": {
"type": "boolean",
"description": "true: only the headline: level, where it stopped (with its evidence), the main wall it met, the five outcomes, how an agent gets in, what it can and can't do, tips for agents, the level's history and the page"
}
}
}| query |
| string |
| Name, domain or what the tool does, e.g. 'invoicing', 'stripe.com' or 'postgres'; every word must match (the same search as the directory page) |
| access | string | only products an agent gets into this way: keyless (no key needed), local (runs locally), try_first (try first, claim later), pay_per_call, key_by_api, mcp_signin (our agent signed in to the product's own MCP server, by OAuth, and got in that way), email_signup, browser_signup, by_name (with a GitHub, Google or platform account), person (a person had to set it up: not counted) |
| offset | integer | skip this many matches first: the next page starts at the previous answer's next_offset |
| category | string | A category id or name from list_categories (e.g. 'crm'); an unknown one is an error that says so |
| min_level | integer | only products at this agent level or higher (0-5) |
| pays_with | string | only products that offer this agent-native way to pay (seen or paid), e.g. x402, mpp, l402, stripe-projects, acp, ucp, ap2, mcp-payment |
| agent_can_buy | boolean | only products an agent paid through an agent-native rail, proven from our side |
| agent_can_leave | boolean | only products an agent leaves on its own |
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"default": 25,
"maximum": 100,
"minimum": 1,
"description": "the most results to return"
},
"query": {
"type": "string",
"description": "Name, domain or what the tool does, e.g. 'invoicing', 'stripe.com' or 'postgres'; every word must match (the same search as the directory page)"
},
"access": {
"enum": [
"keyless",
"local",
"try_first",
"no_account",
"pay_per_call",
"key_by_api",
"mcp_signin",
"email_signup",
"browser_signup",
"by_name",
"person"
],
"type": "string",
"description": "only products an agent gets into this way: keyless (no key needed), local (runs locally), try_first (try first, claim later), pay_per_call, key_by_api, mcp_signin (our agent signed in to the product's own MCP server, by OAuth, and got in that way), email_signup, browser_signup, by_name (with a GitHub, Google or platform account), person (a person had to set it up: not counted)"
},
"offset": {
"type": "integer",
"default": 0,
"minimum": 0,
"description": "skip this many matches first: the next page starts at the previous answer's next_offset"
},
"category": {
"type": "string",
"description": "A category id or name from list_categories (e.g. 'crm'); an unknown one is an error that says so"
},
"min_level": {
"type": "integer",
"maximum": 5,
"minimum": 0,
"description": "only products at this agent level or higher (0-5)"
},
"pays_with": {
"type": "string",
"description": "only products that offer this agent-native way to pay (seen or paid), e.g. x402, mpp, l402, stripe-projects, acp, ucp, ap2, mcp-payment"
},
"agent_can_buy": {
"type": "boolean",
"description": "only products an agent paid through an agent-native rail, proven from our side"
},
"agent_can_leave": {
"type": "boolean",
"description": "only products an agent leaves on its own"
}
}
}