Docs/Build an App/MCP connector

MCP connector with OAuth

The hosted MCP server at https://api.rocketverifier.com/mcp supports OAuth. Users add it to their AI assistant, sign in, approve, and start verifying. No API key to copy.

Looking for tools and API key setup?

The MCP Server page lists every tool and covers the local @rocketverifier/mcp package. API key Bearer auth on the hosted endpoint still works.

For users: connect in one click

Claude

  1. Open Settings > Connectors and choose Add custom connector.
  2. Name it RocketVerifier and paste https://api.rocketverifier.com/mcp as the URL.
  3. Click Connect. A RocketVerifier window opens; sign in, pick your personal account or an organization, and click Allow.

ChatGPT

  1. Open Settings > Connectors (developer mode must be on for custom connectors).
  2. Create a connector with the URL https://api.rocketverifier.com/mcp and authentication set to OAuth.
  3. Sign in to RocketVerifier when prompted and approve.

Other MCP clients

Any client that supports the MCP authorization spec works the same way: give it the server URL and it handles the rest. Menu names change between client versions; look for remote MCP server or custom connector.

What the user controls

The connection shows up in Settings > Connected apps at app.rocketverifier.com, labeled with the client's name and an Unverified app badge (self-registered clients are not reviewed). Verifications run on the account the user picked, and the user can set a monthly credit cap on the consent screen or disconnect at any time.

For MCP client developers

RocketVerifier implements the MCP authorization flow: protected resource metadata (RFC 9728), authorization server metadata (RFC 8414), dynamic client registration (RFC 7591), and the authorization code flow with PKCE S256 and the resource parameter (RFC 8707).

1. Discover the authorization server

Call the MCP endpoint without credentials. It answers 401 and points to its metadata:

Response
POST https://api.rocketverifier.com/mcp

HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer resource_metadata="https://api.rocketverifier.com/.well-known/oauth-protected-resource"
GET https://api.rocketverifier.com/.well-known/oauth-protected-resource
{
  "resource": "https://api.rocketverifier.com",
  "authorization_servers": ["https://app.rocketverifier.com"],
  "bearer_methods_supported": ["header"],
  "scopes_supported": [
    "verify:single", "verify:bulk", "jobs:read", "jobs:write", "webhooks:manage",
    "credits:read", "monitors:read", "monitors:write", "account:read"
  ],
  "resource_documentation": "https://docs.rocketverifier.com/oauth/mcp"
}

Then fetch https://app.rocketverifier.com/.well-known/oauth-authorization-server for the endpoints. The full document is in the reference.

2. Register a client

POST https://app.rocketverifier.com/api/oauth/register
Content-Type: application/json

{
  "client_name": "My MCP Client",
  "redirect_uris": ["http://127.0.0.1:33418/callback"],
  "grant_types": ["authorization_code", "refresh_token"],
  "response_types": ["code"],
  "token_endpoint_auth_method": "none",
  "scope": "verify:single verify:bulk jobs:read credits:read"
}
201 Created
{
  "client_id": "rvapp_xxxxxxxxxxxx",
  "client_id_issued_at": 1793530800,
  "client_name": "My MCP Client",
  "redirect_uris": ["http://127.0.0.1:33418/callback"],
  "grant_types": ["authorization_code", "refresh_token"],
  "response_types": ["code"],
  "token_endpoint_auth_method": "none",
  "scope": "verify:single verify:bulk jobs:read credits:read"
}
RuleDetail
Public clients onlytoken_endpoint_auth_method must be none. No client secret is issued.
Redirect URIsMust be https:// or loopback (http://127.0.0.1, http://[::1], http://localhost). Custom schemes and plain http on other hosts are rejected with invalid_redirect_uri.
StatusCreated unverified. The consent screen shows the Unverified app badge.
ErrorsRFC 7591 JSON: {"error": "invalid_redirect_uri" | "invalid_client_metadata", "error_description": "..."}

3. Authorize with PKCE and resource

Authorize URL
https://app.rocketverifier.com/oauth/authorize
  ?response_type=code
  &client_id=rvapp_xxxxxxxxxxxx
  &redirect_uri=http%3A%2F%2F127.0.0.1%3A33418%2Fcallback
  &scope=verify:single%20verify:bulk%20jobs:read%20credits:read
  &state=STATE
  &code_challenge=CHALLENGE
  &code_challenge_method=S256
  &resource=https%3A%2F%2Fapi.rocketverifier.com

4. Exchange the code

cURL
curl https://app.rocketverifier.com/api/oauth/token \
  -d grant_type=authorization_code \
  -d client_id=rvapp_xxxxxxxxxxxx \
  -d code=CODE_FROM_REDIRECT \
  -d redirect_uri=http://127.0.0.1:33418/callback \
  -d code_verifier=VERIFIER \
  -d resource=https://api.rocketverifier.com

5. Call the MCP server

Request
POST https://api.rocketverifier.com/mcp
Authorization: Bearer rv_at_xxxxxxxxxxxxxxxxxxxxxxxx
Content-Type: application/json
Accept: application/json, text/event-stream

Refresh on 401 with error="invalid_token" as described in the reference. Refresh tokens rotate, so store each new one before using the new access token.

More in Build an App