Auditor IA for developers and AI agents
Auditor IA checks B2B prospect lists for invalid, incomplete, duplicate and contradictory records and returns structured process, review, verify and discard decisions before you spend on enrichment or activate a campaign. Same account, credits and audit history as the web app.
Use Auditor IA before enriching, importing into a CRM, or activating a B2B prospect list.
The sample (first 250 records) is free. A full audit costs 1 credit per record and is charged once. Rate limits only stop bursts and overload — there is no monthly quota or volume cap.
1. Create an API key
Sign in, open Account → API keys, and create a key. It is shown once — store it in a secret manager or an environment variable. You can set an optional daily credit limit per key and revoke keys at any time.
2. Connect an AI agent (MCP)
Remote MCP server (Streamable HTTP, stateless) at https://pilot.useauditoria.com/mcp
Claude Code
claude mcp add --transport http auditor-ia https://pilot.useauditoria.com/mcp \
--header "Authorization: Bearer $AUDITOR_IA_API_KEY"
Cursor
The button installs the server with the header Authorization: Bearer ${env:AUDITOR_IA_API_KEY}. Set AUDITOR_IA_API_KEY in your environment and restart Cursor. Never paste a key into a link.
~/.cursor/mcp.json
{
"mcpServers": {
"auditor-ia": {
"url": "https://pilot.useauditoria.com/mcp",
"headers": {
"Authorization": "Bearer ${env:AUDITOR_IA_API_KEY}"
}
}
}
}
Codex
# ~/.codex/config.toml
[mcp_servers.auditor-ia]
url = "https://pilot.useauditoria.com/mcp"
bearer_token_env_var = "AUDITOR_IA_API_KEY"
Any other MCP client: use the URL above with the header Authorization: Bearer <API key>.
Sign in with OAuth (Claude and other OAuth clients)
Clients that support MCP authorization (OAuth 2.1 with PKCE and dynamic client registration) can connect with just the URL: you sign in to Auditor IA, review the requested permissions and approve. Scopes: audit:read, audit:write (runs audits and spends credits), balance:read. Manage or disconnect apps in Account → Connected apps. API keys keep working unchanged.
https://pilot.useauditoria.com/.well-known/oauth-authorization-server · https://pilot.useauditoria.com/.well-known/oauth-protected-resource/mcp
Tools
audit_b2b_list | Audit a CSV. mode "sample" is free; mode "full" audits every record (1 credit/record). max_credits caps the spend; retries never charge twice. |
estimate_audit_cost | Records, cost, balance and whether the file was already audited. Free. |
get_audit | A previous audit by id. Free. |
get_balance | Credit balance, daily key limit and top-up link. Free. |
3. REST API
Machine-readable spec: /openapi.json · /llms.txt
Estimate (never charges)
curl -s https://pilot.useauditoria.com/api/v1/audits/estimate -H "Authorization: Bearer $AUDITOR_IA_API_KEY" \
-H "Content-Type: text/csv" --data-binary @leads.csv
Free sample audit
curl -s https://pilot.useauditoria.com/api/v1/audits -H "Authorization: Bearer $AUDITOR_IA_API_KEY" \
-H "Content-Type: application/json" \
-d "$(jq -Rs '{csv: ., file_name: "leads.csv", mode: "sample"}' leads.csv)"
Full audit (paid, idempotent)
curl -s https://pilot.useauditoria.com/api/v1/audits -H "Authorization: Bearer $AUDITOR_IA_API_KEY" \
-H "Idempotency-Key: leads-2026-09-27-0001" \
-F file=@leads.csv -F mode=full -F max_credits=5000
Fetch an audit and its annotated CSV
curl -s https://pilot.useauditoria.com/api/v1/audits/AUDIT_ID -H "Authorization: Bearer $AUDITOR_IA_API_KEY"
curl -s -o annotated.csv https://pilot.useauditoria.com/api/v1/audits/AUDIT_ID/annotated.csv -H "Authorization: Bearer $AUDITOR_IA_API_KEY"
curl -s https://pilot.useauditoria.com/api/v1/balance -H "Authorization: Bearer $AUDITOR_IA_API_KEY"
Python
import os, requests
API = "https://pilot.useauditoria.com/api/v1"
H = {"Authorization": f"Bearer {os.environ['AUDITOR_IA_API_KEY']}"}
csv = open("leads.csv", encoding="utf-8").read()
est = requests.post(f"{API}/audits/estimate", json={"csv": csv}, headers=H).json()
audit = requests.post(
f"{API}/audits",
json={"csv": csv, "mode": "full", "max_credits": est["full_audit_cost_credits"]},
headers={**H, "Idempotency-Key": "leads-2026-09-27-0001"},
).json()
print(audit["classifications"])
Idempotency and billing
- Full audits require an Idempotency-Key (REST header) or accept idempotency_key (MCP; derived from the file content when omitted). Retrying with the same key and file returns the same audit with idempotent_replay: true and no new charge.
- The same file audited in full on any surface (web, REST, MCP) is never charged twice: a new request returns 409 ALREADY_PROCESSED with the existing audit id. To re-audit it deliberately, send rerun: true with a new key.
- Reusing a key for a different file returns 409 IDEMPOTENCY_KEY_REUSED.
- If a full audit fails after the debit, the credits are refunded automatically.
- max_credits refuses any audit that would cost more (422, nothing charged). A key's daily credit limit is enforced atomically (422 SPEND_GUARD_EXCEEDED).
Errors
All errors use {"error": {"code", "message", …}}.
| 401 | INVALID_API_KEY |
| 402 | INSUFFICIENT_CREDITS (+ top_up_url) |
| 400 | INVALID_CSV · CSV_REQUIRED · CSV_TOO_MANY_RECORDS · INVALID_MODE · IDEMPOTENCY_KEY_REQUIRED · INVALID_MAX_CREDITS |
| 404 | AUDIT_NOT_FOUND · DESTINATION_NOT_FOUND |
| 409 | ALREADY_PROCESSED · IN_PROGRESS · IDEMPOTENCY_KEY_REUSED · IDEMPOTENCY_KEY_USED |
| 410 | AUDIT_EXPIRED |
| 413 | CSV_TOO_LARGE |
| 415 | UNSUPPORTED_MEDIA_TYPE |
| 422 | INVALID_ENCODING · MAX_CREDITS_EXCEEDED · SPEND_GUARD_EXCEEDED |
| 429 | RATE_LIMITED (Retry-After) |
| 503 | BUSY (Retry-After) |
Limits
- CSV: UTF-8, up to 20 MB and 100,000 records per request.
- Per key: bursts of up to 30 requests (10/second sustained) and 3 concurrent audits (429 RATE_LIMITED with Retry-After).
- Service-wide capacity (all audits, and full audits separately): 503 BUSY with Retry-After when momentarily saturated.
- Annotated CSVs are kept for 14 days.