Your API account starts with one-time starter API Credit based on your Visor plan: Free $1, Plus weekly $5, Plus monthly $10, Plus annual $50, or Plus lifetime $100. Looking up what’s available is free — you’re only charged when the agent pulls actual data, and that costs a fraction of a cent per request.
Pick your app
Claude
Claude desktop app or claude.ai
ChatGPT
ChatGPT with developer mode
Claude Code
Anthropic’s coding agent
Codex
OpenAI’s coding agent
OpenClaw
OpenClaw AI agent
Hermes
Nous Research’s agent
Another MCP client
OpenCode and generic clients
Your own code
OpenAI and Claude APIs
Chat apps
Claude Desktop and web
Open Connectors
In Claude — the desktop app or claude.ai — go to Settings → Connectors.
Add a custom connector
Click Add custom connector and paste the Visor server URL:
https://mcp.visor.vin/mcp. Click Add.Ask Claude: “Use the Visor tools to find the median price of a Toyota RAV4 in California.” If it comes back with numbers, you’re connected.
On Team or Enterprise, an owner adds the connector once under organization connector settings. Members then connect it from their own Settings → Connectors and complete the Visor sign-in.
ChatGPT
Custom connectors need developer mode, available on ChatGPT Plus, Pro, Team, Enterprise, and Edu plans.Create the connector
Go back to Settings → Connectors and click Create. Name it
Visor and paste the server URL: https://mcp.visor.vin/mcp.Ask ChatGPT: “Use the Visor tools to find median Toyota RAV4 prices in California.”
Coding agents
Claude Code
The fastest path is sign-in (OAuth):/mcp in Claude Code and complete the browser sign-in.
Prefer a token — for example, in a headless or CI environment?
Codex
Sign-in (OAuth):~/.codex/config.toml:
OpenClaw
Sign-in (OAuth) is the cleanest path — OpenClaw stores the credential for you:openclaw.json directly? Add Visor under mcp.servers:
auth and add a header (keep this file private):
Hermes
Add Visor undermcp_servers in ~/.hermes/config.yaml. Hermes runs the full OAuth flow for you:
headers instead of auth (keep this file private):
/reload-mcp in Hermes to load the server.
Other MCP clients
Most clients accept either an OAuth server URL or a JSON config with a bearer header. OpenCode — add the remote server undermcp in your local config. Keep this in user-local config or another ignored file if you use a literal token.
headers and let it discover auth from the server.
Use it from your own code
These paths use a dashboard API token. See Authentication and scopes to create one.OpenAI Responses API
Pass the token as the MCP tool authorization value:Claude Messages API
Pass the token as the MCP server authorization token:What your agent can do
You don’t need to learn any commands. Once connected, just ask in plain language:- “What’s the median price of a used Honda Civic near 98101?”
- “Show me the 10 newest Toyota RAV4 listings in California with prices and dealers.”
- “Which Ford F-150 trims have the biggest discounts from MSRP right now?”
How the tools work (for developers)
The server exposes two tools that map to the public/v1 API contract:
| Tool | Use it for |
|---|---|
search | Find the right SDK method, endpoint, filters, and examples before calling the API. |
execute | Run sandboxed JavaScript against the SDK-shaped visor interface. |
search query:
execute code:
/v1 API. Listing and dealer collections return rows in response.data and totals in response.pagination.total. Facet totals are in response.data.total, categorical buckets are in response.data.facets.<facet>, numeric buckets are in response.data.range_facets.<facet>, and numeric stats are in response.data.stats.<facet>. Detail endpoints return one record at response.data.
Authentication and scopes
There are two ways to authenticate, and most apps use the first.- Sign in (OAuth) — the default for Claude, ChatGPT, and any client that supports remote MCP OAuth. Add the server URL, sign in to Visor, pick your API account, and approve. Visor creates a revocable credential for that client. Nothing to copy.
- Bearer token — for clients and agent harnesses where you set HTTP headers or a token environment variable.
Scopes map to what the agent can read:
| Scope | Unlocks |
|---|---|
inventory.read | Listing search, facets, and VIN lookup |
dealers.read | Dealer search and detail |
usage.read | Your account’s usage summary (/v1/usage, not billable) |
OAuth metadata endpoints (for client implementers)
OAuth metadata endpoints (for client implementers)
The server supports remote MCP OAuth discovery, dynamic client registration, and revocation:
Limits and billing
- One
executeworkflow can make up to 50 underlying public API requests. - Underlying requests count against your account Usage Tier rate limits and normal metering, the same as the
/v1endpoints they map to. - The server serializes requests, paces them from observed rate-limit headers, and retries bounded
429responses whenRetry-Afterfits inside the execute budget. ConcurrentPromise.allcalls inside oneexecuteworkflow do not increase Public API throughput. If more waiting is required,executereturns structured pause guidance withretry_after_secondsinstead of sleeping indefinitely. - The sandbox cannot call arbitrary
fetch(). - Large responses and tool outputs are capped. Narrow the query, lower
limit, or return fewer fields when output is truncated. - Each billable request made through MCP is metered the same way as the underlying
/v1endpoint. The/v1/usageoperation is never billable and requiresusage.read.
Troubleshooting
Most connection problems come down to sign-in or scopes.| Symptom | Fix |
|---|---|
| The agent says it has no Visor tools | Refresh the MCP app or connector in the host, or remove and re-add the server. |
mcp_oauth_required | Use the client’s sign-in flow, or configure an Authorization: Bearer ... header. |
missing_api_key | The client connected without OAuth and without a bearer token. Add a dashboard token or run the OAuth login flow. |
invalid_mcp_oauth_token | Reconnect the client or run its MCP logout/login flow. The credential may be expired or revoked. |
missing_scope | Create or approve a credential with the required scope: inventory.read, dealers.read, or usage.read. |
insufficient_credits | Add prepaid API credits, or use an account in good standing. |
query_string_api_key_rejected | Remove api_key, apiKey, key, or access_token from tool code and use host auth configuration. |
