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.

mcp.json
{
  "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.

claude_desktop_config.json
{
  "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.

.mcp.json
{
  "mcpServers": {
    "wpaq": {
      "type": "http",
      "url": "https://wpaq.com/mcp",
      "headers": {
        "Authorization": "Bearer wpaq_..."
      }
    }
  }
}

Or register it from the terminal:

claude mcp add
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.

Connection
URL: https://wpaq.com/mcp
Authorization: Bearer wpaq_...
Transport: Streamable HTTP

A 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.

  1. Call start_site_audit, start_ai_visibility_audit, start_conversion_audit, or start_quality_audit.
  2. Read id and status from the JSON text the tool returns.
  3. Call the matching get_* tool until status is completed, completed_with_warnings, or failed. Wait a few seconds between calls.
  4. 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.

ToolArgumentsReturnsCredits
start_site_auditurl, crawl_mode (bfs | sitemap_only | url_list, default bfs), url_listQueued Site Audit. Poll get_site_audit.Site Audit quota. Unverified cap: 25 pages (Pro), 100 (Business).
get_site_auditaudit_idStatus, scores, and page counts. Poll until completed, completed_with_warnings, or failed.None
get_site_audit_progressaudit_idProgress, pages discovered, and pages scanned.None
list_site_audit_findingsaudit_idFindings for that Site Audit.None
get_site_audit_findingaudit_id, finding_idOne finding, including evidence and the recommendation.None
create_site_audit_shareaudit_idshare_url at /share/{token}. The audit must be finished.None
revoke_site_audit_shareaudit_id{ ok: true }. Safe when no link exists.None
start_ai_visibility_auditurlQueued AI Visibility Audit. Poll get_ai_visibility_audit.10 verified / 20 unverified
get_ai_visibility_auditaudit_idStatus and, once finished, the report.None
create_ai_visibility_shareaudit_idshare_url at /share/visibility-audit/{token}.None
revoke_ai_visibility_shareaudit_id{ shared: false }. Safe when no link exists.None
get_conversion_questionnairenoneQuestion list. Pass answers to start_conversion_audit.None
start_conversion_auditurl, answers (optional object of { selected, other })Queued Conversion Audit. Poll get_conversion_audit.10 verified / 20 unverified
get_conversion_auditaudit_idStatus and, once finished, the report.None
create_conversion_shareaudit_idshare_url at /share/conversion-audit/{token}.None
revoke_conversion_shareaudit_id{ shared: false }. Safe when no link exists.None
start_quality_auditurlQueued Content Quality Audit. Poll get_quality_audit.10 verified / 20 unverified
get_quality_auditaudit_idStatus and, once finished, the report.None
create_quality_shareaudit_idshare_url at /share/quality-audit/{token}.None
revoke_quality_shareaudit_id{ shared: false }. Safe when no link exists.None
list_websitesnoneWebsites on the key owner's account.None
get_websitewebsite_idOne website, including DNS verification instructions.None
create_websiteurl, name (optional), client_tag (optional)The saved website.None
verify_websitewebsite_idVerification result after the DNS TXT record is found.None
get_quotasnonePlan, Site Audit quota, and AI credit allowance.None
get_ai_usagewebsite_id (optional)Remaining credits and recent credit events.None
list_auditsaudit_type (scan | visibility | convert | quality, optional), website_id, limit (default 20), offset (default 0)The key owner's audit history.None
export_site_auditaudit_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_auditaudit_id, format (pdf | xlsx | md, default md)Signed download URL, or Markdown inline at or under 32 KiB.None
export_conversion_auditaudit_id, format (pdf | xlsx | md, default md)Signed download URL, or Markdown inline at or under 32 KiB.None
export_quality_auditaudit_id, format (pdf | xlsx | md, default md)Signed download URL, or Markdown inline at or under 32 KiB.None
list_webhooksnoneWebhook endpoints. Secrets are omitted. Business only.None
create_webhookurl, events (optional)The endpoint and the signing secret, once. Business only.None
delete_webhookwebhook_id{ ok: true }. Business only.None
test_webhookwebhook_idOne 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.

You
Run a Site Audit on https://example.com and tell me the score when it finishes.
Agent calls start_site_audit
{
  "url": "https://example.com",
  "crawl_mode": "bfs"
}
Tool result (example)
{
  "id": "aud_example",
  "url": "https://example.com",
  "status": "queued",
  "scan_type": "full"
}
Agent calls get_site_audit until it finishes
{ "audit_id": "aud_example" }
Later tool result (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.

MCP server · Support · WPAQ.com