MCP server
Give Cursor, Claude, or another agent the same Pro or Business API key. Tools call the REST API and return as soon as a job is queued.
Overview
One remote server. The client speaks Streamable HTTP. You only configure the URL and the API key.
- Endpoint
https://wpaq.com/mcp- Header
Authorization: Bearer wpaq_…- Plan
- Pro or Business, checked on every request. A downgrade returns
403. The key stays on the account. - REST reference
- Tool results match the REST API. Create a key under Dashboard → Integrations.
Cursor
Add this to Cursor MCP settings (mcp.json). Replace the key with the one shown once at creation.
{
"mcpServers": {
"wpaq": {
"url": "https://wpaq.com/mcp",
"headers": {
"Authorization": "Bearer wpaq_..."
}
}
}
}Claude Desktop
The same shape goes in Claude Desktop's config (claude_desktop_config.json). Restart Claude after saving.
{
"mcpServers": {
"wpaq": {
"url": "https://wpaq.com/mcp",
"headers": {
"Authorization": "Bearer wpaq_..."
}
}
}
}Claude Code
Project or user .mcp.json uses type: http for a remote Streamable HTTP server.
{
"mcpServers": {
"wpaq": {
"type": "http",
"url": "https://wpaq.com/mcp",
"headers": {
"Authorization": "Bearer wpaq_..."
}
}
}
}Or register it from the terminal:
claude mcp add --transport http wpaq https://wpaq.com/mcp \
--header "Authorization: Bearer wpaq_..."Other Streamable HTTP clients
Any client that speaks MCP Streamable HTTP can use the same URL and header. The client sends the protocol framing. You do not hand-write JSON-RPC.
URL: https://wpaq.com/mcp
Authorization: Bearer wpaq_...
Transport: Streamable HTTPA missing or invalid key is 401 with {"detail":"Invalid API key"}. An account that is not Pro or Business is 403. Tool failures inside a call come back as 401: …, 402: …, 403: …, 404: …, or 429: … followed by the same message the REST API uses. See Errors.
Start, then poll
Audit tools return as soon as the job is queued. Do not ask the client to wait inside the start tool.
- Call
start_site_audit,start_ai_visibility_audit,start_conversion_audit, orstart_quality_audit. - Read
idandstatusfrom the JSON text the tool returns. - Call the matching
get_*tool untilstatusiscompleted,completed_with_warnings, orfailed. Wait a few seconds between calls. - Read findings, the report, or a share link only after the run has finished. A share on an unfinished Site Audit returns
409.
AI Visibility, Conversion, and Content Quality charge 10 credits on a DNS-verified site and 20 otherwise, including third-party hosts. Site Audit uses the monthly page quota, with an unverified cap of 25 pages on Pro and 100 on Business. start_site_audit is limited to 40 starts per hour per account and 8 per hour per IP. The three AI start tools are limited to 300 per hour on a paid plan. Polling is not on those limiters. A 429 means back off.
Tools
Arguments below are what you pass. The client also receives a request context. It is not an argument you set. Results are JSON text with the same fields as the matching REST route.
| Tool | Arguments | Returns | Credits |
|---|---|---|---|
start_site_audit | url, crawl_mode (bfs | sitemap_only | url_list, default bfs), url_list | Queued Site Audit. Poll get_site_audit. | Site Audit quota. Unverified cap: 25 pages (Pro), 100 (Business). |
get_site_audit | audit_id | Status, scores, and page counts. Poll until completed, completed_with_warnings, or failed. | None |
get_site_audit_progress | audit_id | Progress, pages discovered, and pages scanned. | None |
list_site_audit_findings | audit_id | Findings for that Site Audit. | None |
get_site_audit_finding | audit_id, finding_id | One finding, including evidence and the recommendation. | None |
create_site_audit_share | audit_id | share_url at /share/{token}. The audit must be finished. | None |
revoke_site_audit_share | audit_id | { ok: true }. Safe when no link exists. | None |
start_ai_visibility_audit | url | Queued AI Visibility Audit. Poll get_ai_visibility_audit. | 10 verified / 20 unverified |
get_ai_visibility_audit | audit_id | Status and, once finished, the report. | None |
create_ai_visibility_share | audit_id | share_url at /share/visibility-audit/{token}. | None |
revoke_ai_visibility_share | audit_id | { shared: false }. Safe when no link exists. | None |
get_conversion_questionnaire | none | Question list. Pass answers to start_conversion_audit. | None |
start_conversion_audit | url, answers (optional object of { selected, other }) | Queued Conversion Audit. Poll get_conversion_audit. | 10 verified / 20 unverified |
get_conversion_audit | audit_id | Status and, once finished, the report. | None |
create_conversion_share | audit_id | share_url at /share/conversion-audit/{token}. | None |
revoke_conversion_share | audit_id | { shared: false }. Safe when no link exists. | None |
start_quality_audit | url | Queued Content Quality Audit. Poll get_quality_audit. | 10 verified / 20 unverified |
get_quality_audit | audit_id | Status and, once finished, the report. | None |
create_quality_share | audit_id | share_url at /share/quality-audit/{token}. | None |
revoke_quality_share | audit_id | { shared: false }. Safe when no link exists. | None |
list_websites | none | Websites on the key owner's account. | None |
get_website | website_id | One website, including DNS verification instructions. | None |
create_website | url, name (optional), client_tag (optional) | The saved website. | None |
verify_website | website_id | Verification result after the DNS TXT record is found. | None |
get_quotas | none | Plan, Site Audit quota, and AI credit allowance. | None |
get_ai_usage | website_id (optional) | Remaining credits and recent credit events. | None |
list_audits | audit_type (scan | visibility | convert | quality, optional), website_id, limit (default 20), offset (default 0) | The key owner's audit history. | None |
export_site_audit | audit_id, format (pdf | xlsx | md | csv, default md) | Signed download URL (about 15 minutes). Markdown is inline at or under 32 KiB. | None |
export_ai_visibility_audit | audit_id, format (pdf | xlsx | md, default md) | Signed download URL, or Markdown inline at or under 32 KiB. | None |
export_conversion_audit | audit_id, format (pdf | xlsx | md, default md) | Signed download URL, or Markdown inline at or under 32 KiB. | None |
export_quality_audit | audit_id, format (pdf | xlsx | md, default md) | Signed download URL, or Markdown inline at or under 32 KiB. | None |
list_webhooks | none | Webhook endpoints. Secrets are omitted. Business only. | None |
create_webhook | url, events (optional) | The endpoint and the signing secret, once. Business only. | None |
delete_webhook | webhook_id | { ok: true }. Business only. | None |
test_webhook | webhook_id | One signed sample delivery. Business only. | None |
Example conversation
You ask the agent to audit a site. It starts the job, polls, then summarizes. The JSON below is an example.
Run a Site Audit on https://example.com and tell me the score when it finishes.{
"url": "https://example.com",
"crawl_mode": "bfs"
}{
"id": "aud_example",
"url": "https://example.com",
"status": "queued",
"scan_type": "full"
}{ "audit_id": "aud_example" }{
"id": "aud_example",
"status": "completed",
"scores": { "overall": 86 }
}The agent then says the example.com Site Audit finished with an overall score of 86. For an AI Visibility, Conversion, or Content Quality run, swap in the matching start and get tools. Call get_conversion_questionnaire first when you want to pass answers.