← Registry

Developer Tools

arbiterqa.com

Provides tools to search, retrieve, recommend, and compare validation checks and assembled validation documents.

2 endpoints22 known toolsFirst detected October 6, 2026Last detected October 18, 2026

ENDPOINT 1

https://api.arbiterqa.com/mcp/claude

Auth required

Known tools 0

No tool metadata was available in the registry cache.

CONNECT WITH APPROVAL

Client installation

Review this server and its permissions before adding it. Secret placeholders must be set locally.

Codex

~/.codex/config.toml

[mcp_servers.arbiterqa-com]
url = "https://api.arbiterqa.com/mcp/claude"
enabled = true
bearer_token_env_var = "MCP_BEARER_TOKEN"

Authentication is required. Replace the placeholder locally and never commit a secret.

Claude Code

.mcp.json

{
  "mcpServers": {
    "arbiterqa-com": {
      "type": "http",
      "url": "https://api.arbiterqa.com/mcp/claude",
      "headers": {
        "Authorization": "Bearer YOUR_BEARER_TOKEN"
      }
    }
  }
}

Authentication is required. Replace the placeholder locally and never commit a secret.

Claude Desktop

Settings → Connectors → Add custom connector

Name: arbiterqa-com
Remote MCP URL: https://api.arbiterqa.com/mcp/claude

Add the URL as a custom connector, then complete its supported authorization flow. Claude Desktop remote connectors are configured in the UI.

Cursor

.cursor/mcp.json

{
  "mcpServers": {
    "arbiterqa-com": {
      "url": "https://api.arbiterqa.com/mcp/claude",
      "headers": {
        "Authorization": "Bearer YOUR_BEARER_TOKEN"
      }
    }
  }
}

Authentication is required. Replace the placeholder locally and never commit a secret.

Visual Studio Code

.vscode/mcp.json

{
  "servers": {
    "arbiterqa-com": {
      "type": "http",
      "url": "https://api.arbiterqa.com/mcp/claude",
      "headers": {
        "Authorization": "Bearer ${input:mcp-token}"
      }
    }
  },
  "inputs": [
    {
      "type": "promptString",
      "id": "mcp-token",
      "description": "arbiterqa-com bearer token",
      "password": true
    }
  ]
}

Authentication is required. Replace the placeholder locally and never commit a secret.

Generic MCP

Client-specific MCP configuration

{
  "name": "arbiterqa-com",
  "transport": "streamable-http",
  "url": "https://api.arbiterqa.com/mcp/claude",
  "headers": {
    "Authorization": "Bearer YOUR_BEARER_TOKEN"
  }
}

Authentication is required. Replace the placeholder locally and never commit a secret.

MCP Inspector

Run the official MCP Inspector locally and enter the indexed Streamable HTTP endpoint.

ENDPOINT 2

https://api.arbiterqa.com/mcp

No auth detected

MCP server metadata

Name
arbiterqa
Version
0.5.2
Capabilities
tools.listChangedresources.listChangedprompts.listChanged
Server instructions

# ArbiterQA ArbiterQA is a headless QA agent for **webpages and emails**. You send a subject, pick validations (or a Validation Set), and get back **pass / fail / error** per check — with evidence. Prefer the **MCP server**; use HTTP only when MCP is unavailable. ## Connect | Where you are | Endpoint | Sign-in | | --- | --- | --- | | Claude (claude.ai, Desktop, mobile) | Connector `https://api.arbiterqa.com/mcp/claude` | Claude runs ArbiterQA sign-in | | Claude Code | Plugin: `/plugin marketplace add rbtr-qa/arbiterqa`, then `/plugin install arbiterqa@arbiterqa` | Sign-in on first tool call | | Cursor, CI, other MCP hosts | `https://api.arbiterqa.com/mcp` | `Authorization: Bearer <key>` | | Plain HTTP | `https://api.arbiterqa.com` | `Authorization: Bearer <key>` | Both MCP endpoints serve the same tools. On `/mcp` the discovery tools and `create_account` need **no key**; `/mcp/claude` asks for sign-in before anything. Get a key for header use: ```sh npx @rbtrqa/cli login # browser device flow; creates account if needed npx @rbtrqa/cli print-key # emit the stored API key ``` **No browser available?** Sign yourself up: MCP `create_account` (public on `/mcp`), or `POST /api/signup` with `{ "email": "you@example.com" }` → `{ apiKey, keyId, customerId, orgCode, email }`. Same free account a human gets. **Store `apiKey` immediately — it is shown once.** Use an address your user controls: signing in with it later claims the account. An address that already has one is refused (`ACCOUNT_EXISTS`) — sign in and mint a key instead. Never commit a key. ## Tools | Tool | Auth on `/mcp` | Use for | | --- | --- | --- | | `search_validations`, `list_validations`, `get_validation` | no | Discover checks | | `recommend_checks`, `compare_checks`, `list_validation_sets`, `get_validation_set` | no | Choose a set | | `describe_job_request`, `check_job_request`, `explain_error` | no | Shape / debug requests | | `create_account` | no | Get a key with no browser (shown once) | | `estimate_job`, `run_job`, `get_job`, `await_job` | Bearer | Quote and execute | | `fetch_capture`, `list_email_clients` | Bearer / mixed | Artifacts & clients | | `get_credits`, `list_keys`, `get_org` | Bearer | Account | Do **not** invent HTTP when these tools exist. Act on structured fields: `results`, `validationSets`, `skipped_validations`, and (with `detail=verbose`) `results[].references` / `results[].note`. Do not expect a generated markdown repair brief — agents act on those structured fields only. ## Invariants agents get wrong 1. **One subject per job.** A second subject is `400 JOB_ACCEPTS_ONE_SUBJECT`. Batch = N jobs. 2. **Credits.** With billing on, the quote is charged before work; undelivered work is refunded. `402 INSUFFICIENT_CREDITS` means top up — do not retry the same body hoping it becomes free. 3. **Every job is async.** `run_job` (and `POST /api/jobs`) returns the job `pending` at once, for every subject; call `await_job` (or poll `get_job`) until it is `completed`, `failed` or `expired`. A webpage job takes about a minute. An email job also returns `emailCapture.testEmail` — the human sends one message there first. `expired` = nothing ran, charge refunded. Any ended job may carry `interruption` — a capture that did not arrive or a run that stopped: `cause` says why, `affectedValidationIds` names the checks it cost (refunded). `subject_unreachable` means the page itself would not load — fix the URL or the page, not the check. 4. **Unified request shape only.** Top-level `type` (`url` | `email`); a `url` job may supply `html` to render instead of fetching. Legacy line-array bodies are refused (`LEGACY_REQUEST_SHAPE`). See `references/api.md`. 5. **Skipped ≠ failed.** Plan trims, a Custom-only parameter you did not supply, and a mail client that gave a check nothing to examine appear in `skipped_validations`; they are not ERROR rows. Plan trims and missing values are never charged; a check the mail client gave nothing to examine is refunded. 6. **A check declares where it can run.** Each catalog entry's `capture.offered` lists the viewports (and, where restricted, the surfaces) it is able to judge — an empty one means it reads the message source and renders nothing. Send `validations[].capture` to choose within that; outside it is `400 CAPTURE_PROHIBITED_HERE`, which is a fact about the check and not a plan limit, so do not answer it by suggesting an upgrade. ## Typical flow 1. Discover: `search_validations` / `recommend_checks` (or `list_validation_sets` / `get_validation_set`). Jobs name `validations[]` and/or `validationSetId`. 2. `estimate_job` with the same body you will run. 3. `run_job`, then `await_job` with its `jobId`. For email, tell the user the `testEmail` first. 4. Summarize from `results` / `validationSets`; cite fail `references` when present. To gate a pull request or a deploy on the checks, use `npx @rbtrqa/cli run` or the GitHub Action `rbtr-qa/arbiterqa@v1`: see "Run in CI" in `references/api.md`. ## HTTP fallback Base URL: `https://api.arbiterqa.com`. Full shapes: `references/api.md`. Front door: `https://api.arbiterqa.com/llms.txt`.

Known tools 22

search_validations

Keyword / situation search over name, description, set names, and judgment content.

Inferred read-only
get_validation

Full assembled validation document by id or slug (judgment + params + standards + price).

Inferred read-only
recommend_checks

Subject type + situation → ordered checks with why, pairs, and when-not-to.

Inferred read-only
compare_checks

Side-by-side assembled docs for two validation ids/slugs.

Inferred read-only
list_validations

Catalog summaries (assembled).

Inferred read-only
list_validation_sets

Published Validation Sets (id, subject type, membership).

Inferred read-only
get_validation_set

One published Validation Set by id.

Inferred read-only
describe_job_request

Static description of the unified POST /api/jobs body for url | email.

Potential side effects
create_account

Provision a new ArbiterQA account for an email address and return its API key (shown once).

Potential side effects
explain_error

Explain an API error code, or list every code the API can return to you when called with no arguments.

Inferred read-only
check_job_request

Full door validation (normalize + guards) without charging or running.

Inferred read-only
estimate_job

Quote credits for a job body without running it.

Inferred read-only
run_job

Create a validation job.

Potential side effects
get_job

List jobs for the Bearer tenant (with timing — median and p90 seconds per subject), or one job when jobId is set.

Inferred read-only
await_job

Wait for a job of any subject to leave pending, up to timeoutMs (default 60s, max 30 min).

Inferred read-only
fetch_capture

Return the authenticated API path for a screenshot (does not dump binary).

Inferred read-only
report_verdict

Say what a validation's result on one of your jobs SHOULD have been (pass | fail | error).

Inferred read-only
list_email_clients

Selectable (formFactor, client) pairs with plan inclusion.

Inferred read-only
get_email_inbox

This organization's private Rbtr capture inbox (paid plans).

Inferred read-only
get_credits

Balance, plan, cycle totals, and recent movements for the Bearer tenant.

Inferred read-only
list_keys

Metadata for API keys belonging to the Bearer key holder (no secrets).

Inferred read-only
get_org

Organization overview for the Bearer key org.

Inferred read-only

CONNECT WITH APPROVAL

Client installation

Review this server and its permissions before adding it. Secret placeholders must be set locally.

Codex

~/.codex/config.toml

[mcp_servers.arbiterqa]
url = "https://api.arbiterqa.com/mcp"
enabled = true
Claude Code

.mcp.json

{
  "mcpServers": {
    "arbiterqa": {
      "type": "http",
      "url": "https://api.arbiterqa.com/mcp"
    }
  }
}
Claude Desktop

Settings → Connectors → Add custom connector

Name: arbiterqa
Remote MCP URL: https://api.arbiterqa.com/mcp

Add this remote URL as a custom connector in Claude Desktop. Availability depends on the user plan and workspace policy.

Cursor

.cursor/mcp.json

{
  "mcpServers": {
    "arbiterqa": {
      "url": "https://api.arbiterqa.com/mcp"
    }
  }
}
Visual Studio Code

.vscode/mcp.json

Add to Visual Studio Code
{
  "servers": {
    "arbiterqa": {
      "type": "http",
      "url": "https://api.arbiterqa.com/mcp"
    }
  }
}
Generic MCP

Client-specific MCP configuration

{
  "name": "arbiterqa",
  "transport": "streamable-http",
  "url": "https://api.arbiterqa.com/mcp"
}
MCP Inspector

Run the official MCP Inspector locally and enter the indexed Streamable HTTP endpoint.

TRUST AND VERIFICATION EVIDENCE

Loading Trust v2 evidence…

Checking the associated registrable domain. The BuiltWith key remains server-side.

Indexed

Evidence is source-attributed and does not guarantee that a third-party server is safe. Risk labels are conservative metadata heuristics.