# MCP server

> A hosted Model Context Protocol server for Corpo API. Connect Claude, Cursor or ChatGPT and let an agent search and verify companies with the same API key.

Canonical: https://corpoapi.com/mcp

Corpo API runs a hosted Model Context Protocol server. Point any MCP client at one URL and it can search registers, fetch company profiles, list officers and verify a business, with the same key and the same pricing as the REST API.

## The hosted endpoint

One URL, Streamable HTTP, no package to install.

```text
https://mcp.corpoapi.com/mcp
```

## Connect a client

Replace the placeholder key with a live key from your dashboard. Keep the client's approve-before-running setting on, because tool calls run real, metered API calls.

### Claude Code

```bash
claude mcp add --transport http corpoapi https://mcp.corpoapi.com/mcp \
  --header "Authorization: Bearer ck_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
```

### Cursor (mcp.json)

```json
{
  "mcpServers": {
    "corpoapi": {
      "url": "https://mcp.corpoapi.com/mcp",
      "headers": { "Authorization": "Bearer ck_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" }
    }
  }
}
```

### ChatGPT connector

```text
Settings > Connectors > Add custom connector
Name: Corpo API
URL: https://mcp.corpoapi.com/mcp
Header: Authorization: Bearer ck_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
```

## Tools

8 tools, one per operation. Each maps to a documented endpoint, so a tool result looks like the REST response for the same call.

| Tool | What it does | Endpoint |

| --- | --- | --- |

| `search_companies` | Find a company by name or registration number in a jurisdiction. | `GET /v1/search` |

| `get_company` | Fetch one company profile: name, status, address, identifiers and activity. | `GET /v1/companies/{jurisdiction}/{company_number}` |

| `list_officers` | List the officers a register publishes, with roles and dates. | `GET /v1/companies/{jurisdiction}/{company_number}/officers` |

| `verify_company` | Check one company against the register and return a verdict. | `POST /v1/verify` |

| `verify_companies_batch` | Verify up to 10,000 companies in one call. | `POST /v1/verify/batch` |

| `check_vat` | Check an EU VAT number against official registers. | `GET /v1/vat/{vat_number}` |

| `list_coverage` | List the served jurisdictions, revisions and tables. | `GET /v1/coverage` |

| `get_usage` | Read usage and charges for the calling key. | `GET /v1/usage` |

## Authentication

Send your API key as `Authorization: Bearer ck_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`. The server forwards it to the gateway on every call, so auth, rate limits and billing are unchanged. Listing tools is free; a call without a valid key returns the gateway's 401. Test keys (ck_test_) return fixtures and are never billed.

## FAQ

### Do I need a separate key for the MCP server?

No. It uses the same API key as the REST API, created in the dashboard, sent as a bearer header.

### Does an MCP call cost the same as a REST call?

Yes. One tool call is one API call, metered and rate-limited identically.

### Is the MCP server open source?

The adapter is in the public repository at https://github.com/jeanhdev/corpoapi (api/mcp).
