MCP

Frontière AI for your AI agents, over MCP

One URL connects Model Context Protocol clients — Claude Code, Cursor, Cline — to the Frontière AI API: model catalog, inference (EU-sovereign on the models labeled so), embeddings, account balance and live web search. Stateless JSON-RPC 2.0 over HTTP: no SDK to install, same prepaid balance as the REST API.

One endpoint for your agent

POST /api/mcp speaks JSON-RPC 2.0 over the Streamable HTTP transport, in its stateless form: one JSON-RPC message per POST, answered with plain JSON, notifications acknowledged with HTTP 202 — no session and no server-sent stream (GET answers 405), which suits serverless runtimes. Protocol errors come back as JSON-RPC errors; a tool that fails (provider down, balance at zero) returns a result flagged isError that the agent can read and retry. The catalog tools work without a key; inference, embeddings, balance and web tools authenticate with your sk-front-… key on the Authorization header of each request.

Endpoint

POST /api/mcp
curl https://getfrontiereai.eu/api/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

No key needed for this call — catalog tools are public.

Eight tools

Three are public catalog lookups, five are authenticated. chat_completion and create_embedding go through the same gateway as /api/v1 and are billed the same way, per token, on your prepaid balance. For chat, the same routing rules apply: your key's data-sensitivity setting and the X-Data-Sensitivity header of the MCP connection are honored, a model labeled EU sovereign stays on sovereign providers unless you opt in, and a fallback only uses the routes those rules allow.

ToolWhat it doesAPI key
list_modelsList the model catalog with pricing, sovereignty labels and, where verified, context windowsnone
get_modelFull details for one model by slug — license, compliance, tool calling, notesnone
search_modelsFind models by keyword across name, vendor, modality and providernone
chat_completionChat completion, with the routing rules and per-token billing of POST /api/v1/chat/completions. Returns the complete answer (no streaming) and names the provider that served itrequired
create_embeddingEmbeddings, billed per token like POST /api/v1/embeddings. Returns the full vectors; a batch too large for one reply is refused before any charge — split it, or send it to POST /api/v1/embeddings with base64 encoding, the only form the same limit does not apply torequired
check_balanceCurrent prepaid credit balancerequired
web_searchLive web search through Linkup — up to 8 results with the page text of each. Needs a positive balance; each successful search is billed €0.00756required
web_fetchRead one page as clean markdown, through Linkup. Same conditions as web_searchrequired

Web search for your agent

web_search and web_fetch call Linkup, a web search API with offices in Paris and New York, on our own Linkup key — the same engine as the web console. Linkup's website states zero data retention and SOC 2 Type II: those are Linkup's claims, which we have not audited. Queries and URLs also transit our application host (Vercel, a US company, Paris region), which stores no prompt or response.

01

web_search returns up to 8 results with the page text of each — not just snippets, long pages truncated — so the model can often answer from the first call.

02

web_fetch reads any page as clean markdown: follow up on a result URL when the search text is not enough.

03

Both tools need an API key and a positive balance, as in the web console. Each successful call is billed to the key that made it: €0.00756 per search and €0.001512 per page read, VAT included — the same prices as in the console and the agent.

Connect a client

The endpoint needs a client that supports remote MCP servers over Streamable HTTP and lets you set a request header: point it at /api/mcp and send your API key as the Authorization header. Each client has its own config format — the ones below follow each client's documentation, checked on 23 September 2026.

Claude Code — one command

claude mcp add --transport http frontiere https://getfrontiereai.eu/api/mcp \
  --header "Authorization: Bearer sk-front-YOUR_KEY"

Claude Code — .mcp.json

{
  "mcpServers": {
    "frontiere": {
      "type": "http",
      "url": "https://getfrontiereai.eu/api/mcp",
      "headers": {
        "Authorization": "Bearer sk-front-YOUR_KEY"
      }
    }
  }
}

Cursor — .cursor/mcp.json

{
  "mcpServers": {
    "frontiere": {
      "url": "https://getfrontiereai.eu/api/mcp",
      "headers": {
        "Authorization": "Bearer sk-front-YOUR_KEY"
      }
    }
  }
}

Cline — cline_mcp_settings.json

{
  "mcpServers": {
    "frontiere": {
      "type": "streamableHttp",
      "url": "https://getfrontiereai.eu/api/mcp",
      "headers": {
        "Authorization": "Bearer sk-front-YOUR_KEY"
      }
    }
  }
}

Or call it raw — one JSON-RPC request per HTTP POST

curl https://getfrontiereai.eu/api/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

FAQ

Which clients can connect?

Clients that support remote MCP servers over Streamable HTTP and let you set a request header — for example Claude Code, Cursor and Cline, whose config formats are shown above — or your own integration against the JSON-RPC protocol. No Frontière-specific SDK.

Do all tools require an API key?

No. list_models, get_model and search_models are public, so an agent can discover the catalog first. chat_completion, create_embedding, check_balance, web_search and web_fetch require your sk-front-… key on the Authorization header — and all of them except check_balance also need a positive balance.

Does MCP follow my key's sovereignty setting?

Yes. chat_completion routes like /api/v1: a key restricted to sovereign providers in the dashboard, or the X-Data-Sensitivity: sensitive header on the MCP connection, limits it to EU sovereign providers, and a model labeled EU sovereign never leaves sovereign providers unless you opt in. The tool result names the provider that served the call.

Is billing different from the REST API?

No. chat_completion and create_embedding are billed like /api/v1: same per-token prices, same prepaid balance, same usage logs. A call that fails at the provider is not billed. Calls are refused once your balance is at or below zero; calls already in flight can take it slightly below zero, and the difference comes off your next top-up.

Where does web search go?

To Linkup, a web search API with offices in Paris and New York. Zero data retention and SOC 2 Type II are claims made on Linkup's website, not facts we have audited. The searches run on our Linkup key and need a positive balance; each successful call is billed to you at a fixed price (€0.00756 per search, €0.001512 per page read), on top of the inference you run.

Is state kept between calls?

No. The endpoint is stateless: each POST carries one JSON-RPC request and gets a synchronous JSON response, with no session ID. That is deliberate — it keeps the endpoint safe on serverless runtimes where connections are short-lived.

Give your agent sovereign models

Create an account, grab a key, paste the URL — your agent gets the whole catalog, labeled by jurisdiction, in minutes.

Create an account