Agent Conversion
Run evidence-backed website conversion audits with an AI browsing agent.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"agent-conversion": {
"url": "https://agent-conversion-coral.vercel.app/api/mcp"
}
}
}Remote endpoints
https://agent-conversion-coral.vercel.app/api/mcpstreamable-httpWhat it can do
Tool inventory
Tools (2)
🟢test_conversion(url, task, locale)
Start a real Agent Conversion audit: an autonomous browsing agent opens the given website and tries to complete the task, then the run is scored 0-100 with problems and recommendations. Use this when someone wants to know whether an AI agent can find something or complete a commercial step on a specific website, e.g. "Can an agent find the Pro plan's monthly price on example.com?" or "Can an agent start the self-service signup on example.com?". Returns immediately with an audit_id and status "pending" — it does NOT wait for the result. Call get_conversion_report with the audit_id to get the result. Rules: url must be a public http(s) URL (no localhost, private IPs, credentials or custom ports). task must be 10-1000 characters and describe the goal in plain language; phrase purchase-like goals as "reach checkout without buying". Each call costs a real browser run and is rate limited: do not call it repeatedly for the same url+task — poll get_conversion_report instead. Error codes rate_limited, daily_limit and at_capacity mean try again later.
Input Schema
{
"type": "object",
"properties": {
"url": {
"type": "string",
"maxLength": 2048,
"description": "Public website URL to test, including https://, e.g. https://www.example.com or https://www.example.com/pricing."
},
"task": {
"type": "string",
"description": "The commercial task in plain language, e.g. \"Find the monthly price of the Pro plan\" or \"Start the free trial signup and stop before entering payment details\"."
},
"locale": {
"description": "Language for the generated summary and recommendations: \"en\" (default) or \"es\".",
"type": "string",
"enum": [
"en",
"es"
]
}
},
"required": [
"url",
"task"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"ok": {
"type": "boolean",
"const": true
},
"audit_id": {
"type": "string",
"description": "Pass this to get_conversion_report."
},
"status": {
"type": "string",
"const": "pending"
},
"url": {
"type": "string"
},
"domain": {
"type": "string"
},
"task": {
"type": "string"
},
"locale": {
"type": "string",
"enum": [
"en",
"es"
]
},
"submitted_at": {
"type": "string"
},
"report_url": {
"type": "string",
"description": "Human-readable report; available once the audit completes (404 before)."
},
"retry_after_seconds": {
"type": "number"
},
"next_step": {
"type": "string"
}
},
"required": [
"ok",
"audit_id",
"status",
"url",
"domain",
"task",
"locale",
"submitted_at",
"report_url",
"retry_after_seconds",
"next_step"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢get_conversion_report(audit_id)
Get the status and, once finished, the result of an audit started with test_conversion. Pass the audit_id returned by test_conversion (a report URL also works). status is "pending" while the agent is still running: wait retry_after_seconds and call again. If stale is true, the audit will never finish; start a new one. When status is "completed", result contains: task_completed (did the agent reach the goal), score (0-100 Agent Conversion Score, or null when score_withheld because the run did not finish measuring), summary, successes, frictions and recommendations; evidence.steps lists what the agent did. failure_classification explains a non-clean run: "blocked" (safety boundary or site-side access refusal such as a bot challenge — a real finding about the site), "run_did_not_finish", "infrastructure_failure" or "pipeline_error" (Agent Conversion's own problem, not the site's). report_url is a human-readable report to share. status "failed" means no report will be produced. Calling this tool is free and safe to repeat.
Input Schema
{
"type": "object",
"properties": {
"audit_id": {
"type": "string",
"description": "The audit_id returned by test_conversion, or the report URL."
}
},
"required": [
"audit_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"ok": {
"type": "boolean",
"const": true
},
"audit_id": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"pending",
"running",
"completed",
"failed"
]
},
"execution_status": {
"anyOf": [
{
"type": "string",
"enum": [
"completed",
"incomplete",
"blocked_by_safety",
"timeout",
"infrastructure_error"
]
},
{
"type": "null"
}
]
},
"failure_classification": {
"anyOf": [
{
"type": "string",
"enum": [
"blocked",
"run_did_not_finish",
"infrastructure_failure",
"pipeline_error"
]
},
{
"type": "null"
}
]
},
"url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"domain": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"task": {
"type": "string"
},
"locale": {
"type": "string"
},
"created_at": {
"type": "string"
},
"updated_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"report_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"stale": {
"type": "boolean"
},
"retry_after_seconds": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"message": {
"type": "string"
},
"result": {
"anyOf": [
{
"type": "object",
"properties": {
"task_completed": {
"type": "boolean"
},
"score": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"score_withheld": {
"type": "boolean"
},
"summary": {
"type": "string"
},
"successes": {
"type": "array",
"items": {
"type": "string"
}
},
"frictions": {
"type": "array",
"items": {
"type": "string"
}
},
"recommendations": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"task_completed",
"score",
"score_withheld",
"summary",
"successes",
"frictions",
"recommendations"
],
"additionalProperties": false
},
{
"type": "null"
}
]
},
"evidence": {
"anyOf": [
{
"type": "object",
"properties": {
"steps": {
"type": "array",
"items": {
"type": "object",
"properties": {
"index": {
"type": "number"
},
"outcome": {
"type": "string",
"enum": [
"success",
"friction",
"failure",
"blocked"
]
},
"text": {
"type": "string"
}
},
"required": [
"index",
"outcome",
"text"
],
"additionalProperties": false
}
},
"started_at": {
"type": "string"
},
"finished_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"latency_ms": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"verification_status": {
"type": "string"
},
"is_mock": {
"type": "boolean"
}
},
"required": [
"steps",
"started_at",
"finished_at",
"latency_ms",
"verification_status",
"is_mock"
],
"additionalProperties": false
},
{
"type": "null"
}
]
},
"is_benchmark": {
"type": "boolean"
}
},
"required": [
"ok",
"audit_id",
"status",
"execution_status",
"failure_classification",
"url",
"domain",
"task",
"locale",
"created_at",
"updated_at",
"report_url",
"stale",
"retry_after_seconds",
"message",
"result",
"evidence",
"is_benchmark"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}Community
Evidence