# Fermat (remote · mcp.fermat.ai.phase.xyz)

OpenAI-compatible LLM gateway: pay per request with an API key, signed receipt for each call.

- Trust score: 63/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-10-22

## Components

- remote · `mcp.fermat.ai.phase.xyz`: 63/100 (this document), [markdown](https://verifymcp.io/servers/xyz-phase-ai-gateway/mcp.md), [page](https://verifymcp.io/servers/xyz-phase-ai-gateway/mcp)

## Channel facts

- Endpoint: `https://mcp.fermat.ai.phase.xyz/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `0.4.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-10-22.

- **Endpoint Security**: 57/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (session).
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 70/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 1246 tokens (~113/item across 11 items; 11 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 99/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 97% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 11 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 12 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

**Unverified: 1 category.** A category scored 0 because we could not verify it: authentication we do not have, an unreachable endpoint, or not enough scan history. We only credit what we can confirm.

## Install

### How do I install the Fermat MCP server?

Fermat is a hosted endpoint at https://mcp.fermat.ai.phase.xyz/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http xyz-phase-ai-gateway 'https://mcp.fermat.ai.phase.xyz/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "xyz-phase-ai-gateway": {
      "url": "https://mcp.fermat.ai.phase.xyz/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "xyz-phase-ai-gateway": {
      "type": "http",
      "url": "https://mcp.fermat.ai.phase.xyz/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.xyz-phase-ai-gateway]
url = "https://mcp.fermat.ai.phase.xyz/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "xyz-phase-ai-gateway": {
      "type": "remote",
      "url": "https://mcp.fermat.ai.phase.xyz/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add xyz-phase-ai-gateway --url 'https://mcp.fermat.ai.phase.xyz/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  xyz-phase-ai-gateway:
    url: "https://mcp.fermat.ai.phase.xyz/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "xyz-phase-ai-gateway": {
      "Transport": "http",
      "Url": "https://mcp.fermat.ai.phase.xyz/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add xyz-phase-ai-gateway -t streamable-http -u 'https://mcp.fermat.ai.phase.xyz/mcp'
```

### Other

```json
{
  "mcpServers": {
    "xyz-phase-ai-gateway": {
      "type": "http",
      "url": "https://mcp.fermat.ai.phase.xyz/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-10-22 (score 63)

First indexed and scored.

## MCP tools (11)

### `chat` (~186 tokens)

Run a chat completion on the Fermat gateway, paid from the Phase API key or the wallet this server uses (free models cost nothing). Returns the answer, actual price, task id for the receipt and usage.

Input parameters:

- `max_tokens` (integer): output cap; also bounds the price ceiling
- `messages` (null|array): full conversation; overrides prompt/system
- `model` (string, required): model id from list_models, or a class: auto | eco | premium | agentic
- `prompt` (string): single user message (use messages for multi-turn)
- `session` (string): saved session id (from the session tool or a /s/<id> link): the gateway prepends its history and appends this turn
- `system` (string): optional system prompt
- `temperature` (null|number): sampling temperature 0–2 (Claude ignores it)

Output parameters:

- `batch` (string): payment batch this call was charged to (settled with one transaction later)
- `ceiling_usd` (string)
- `elapsed_ms` (integer)
- `level` (string)
- `model` (string)
- `payment` (string)
- `price_usd` (string)
- `provider` (string)
- `receipt_url` (string)
- `routed_model` (string)
- `session` (string)
- `session_url` (string)
- `task_id` (string)
- `text` (string)
- `tx_hash` (string)
- `usage` (object)

### `compare` (~170 tokens)

Run one prompt on 2 to 4 Fermat models or classes at once and compare answer, price, tokens and speed; returns the cheapest, the most expensive and how many times more the expensive one cost. Spends credit for each model. Default models: the cheapest paid chat model, auto, and the most expensive open chat model.

Input parameters:

- `max_tokens` (integer): output cap for every model (default: none)
- `messages` (null|array): full conversation; overrides prompt/system
- `models` (null|array): 2 to 4 model ids or classes; default: the cheapest paid chat model, auto, and the most expensive open chat model
- `prompt` (string): single user message (use messages for multi-turn)
- `system` (string): optional system prompt

Output parameters:

- `cheapest` (string): model with the lowest price among the answers
- `most_expensive` (string): model with the highest price among the answers
- `ratio` (number): most expensive price divided by the cheapest, one decimal
- `results` (null|array)

### `docs` (~47 tokens)

Fermat documentation in short: connect, pricing (with the live price table), savings, mcp, byok, data, receipts, limits.

Input parameters:

- `topic` (string, required): what to explain

Output parameters:

- `text` (string)
- `topic` (string)

### `embed` (~44 tokens)

Compute embeddings on the Fermat gateway (paid from the Phase API key or the wallet).

Input parameters:

- `input` (null|array, required)
- `model` (string, required): embeddings model id

Output parameters:

- `payment` (string)
- `price_usd` (string)
- `vectors` (null|array)

### `key` (~26 tokens)

Balance, daily cap and spend of the Phase API key this server pays with (key mode).

Output parameters:

- `key` (object)

### `list_models` (~58 tokens)

List models of the Fermat gateway with prices (USD per 1M tokens, fee per call) and layer (flagship | open | class | free).

Input parameters:

- `layer` (string): optional filter: flagship | open | class | free

Output parameters:

- `gateway` (string)
- `models` (null|array)
- `wallet` (string)

### `quote` (~161 tokens)

Get the price ceiling for a chat request without paying (the gateway's 402 quote).

Input parameters:

- `max_tokens` (integer): output cap; also bounds the price ceiling
- `messages` (null|array): full conversation; overrides prompt/system
- `model` (string, required): model id from list_models, or a class: auto | eco | premium | agentic
- `prompt` (string): single user message (use messages for multi-turn)
- `session` (string): saved session id (from the session tool or a /s/<id> link): the gateway prepends its history and appends this turn
- `system` (string): optional system prompt
- `temperature` (null|number): sampling temperature 0–2 (Claude ignores it)

Output parameters:

- `ceiling_usd` (string)
- `free` (boolean)
- `input_tokens_estimate` (integer)
- `input_usd_per_1m` (string)
- `max_output_tokens_priced` (integer)
- `max_usd_per_call` (string): largest quote the wallet will sign (wallet mode only)
- `model` (string)
- `network` (string)
- `output_usd_per_1m` (string)
- `paid_by_key` (boolean): true when a Phase API key pays: its balance and daily cap apply, max_usd_per_call does not
- `per_call_usd` (string)
- `wallet_can_pay` (boolean)

### `receipt` (~67 tokens)

Fetch the public receipt of a paid request by task id (model, provider, tokens, price, settlement tx, request/response hashes, signatures) and its Merkle proof once the weekly epoch is closed.

Input parameters:

- `task_id` (string, required): task id from chat / embed (0x…)

Output parameters:

- `epoch_state` (string)
- `proof` (object)
- `receipt` (object)
- `url` (string)

### `route_explain` (~77 tokens)

Explain one Fermat request from its public receipt: the model or class it named, the complexity level, the model and provider that served it, the price, the price of the class baseline model and the saving in percent, and the providers tried.

Input parameters:

- `task_id` (string, required): task id from chat / embed (0x…)

Output parameters:

- `attempts` (integer): providers tried, the one that served included
- `baseline_usd` (string): price of the same usage on the class baseline model
- `explanation` (string)
- `failed_attempts` (null|array)
- `is_class` (boolean)
- `level` (string): complexity level the classifier gave the request
- `price_usd` (string)
- `provider` (string)
- `receipt_url` (string)
- `requested` (string): model or class the request named
- `routed_model` (string)
- `saved_usd` (string)
- `saving_percent` (number)
- `task_id` (string)

### `session` (~161 tokens)

Saved chat sessions on the Fermat gateway: create one (returns an id and a shareable /s/<id> link), read its thread, list the wallet's sessions (wallet mode only: signed with the wallet key, no transaction), or delete one. Pass the id as `session` to chat and the gateway carries the context between turns and visits.

Input parameters:

- `action` (string, required): create | get | list | delete
- `id` (string): session id (get, delete)
- `model` (string): create: model the session starts with (informational; each chat names its own)
- `system` (string): create: system prompt kept for every turn
- `title` (string): create: title (defaults to the first message)

Output parameters:

- `deleted` (boolean)
- `expires_at` (string)
- `id` (string)
- `messages` (null|array)
- `model` (string)
- `requests` (integer)
- `sessions` (null|array)
- `spent_usd` (string)
- `system` (string)
- `title` (string)
- `url` (string)

### `usage` (~81 tokens)

Spend and savings of the Fermat API key over the last N days (1 to 90, default 7): totals, per day and per model when the gateway has the history (source usage), otherwise the key's totals (source key). Key mode only.

Input parameters:

- `days` (integer): period in days, 1 to 90 (default 7)

Output parameters:

- `available_usd` (string)
- `daily_cap_usd` (string)
- `days` (integer)
- `per_day` (null|array)
- `per_model` (null|array)
- `requests` (integer)
- `saved_usd` (string)
- `source` (string): usage: per-day history from /v1/key/usage; key: totals only from /v1/key
- `spent_today_usd` (string)
- `spent_usd` (string)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/xyz-phase-ai-gateway/mcp#diagnostics

## Score history

- 2026-10-22: 63

## Common questions

### What is the Fermat MCP server?

Fermat is an MCP server listed in the public MCP registry as xyz.phase.ai/gateway. OpenAI-compatible LLM gateway: pay per request with an API key, signed receipt for each call. This page covers its hosted endpoint (https://mcp.fermat.ai.phase.xyz/mcp).

### Is the Fermat MCP server safe to use?

Fermat scores 63 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Fermat MCP server expose?

Fermat exposes 11 tools: chat, compare, docs, embed, key, and 6 more. Their descriptions and schemas cost roughly 1,078 tokens of context every time the server is loaded.

### Does the Fermat MCP server require authentication?

No. We connected to Fermat without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the Fermat MCP server still maintained?

Fermat is still listed as active in the MCP registry. We last reached this channel on 22 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://mcp.fermat.ai.phase.xyz/mcp
- Authorisation metadata: https://mcp.fermat.ai.phase.xyz/.well-known/oauth-protected-resource/mcp
- Website: https://fermat.ai.phase.xyz/
- Changelog RSS feed: https://verifymcp.io/servers/xyz-phase-ai-gateway/mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/xyz-phase-ai-gateway/mcp.json
- HTML version of this page: https://verifymcp.io/servers/xyz-phase-ai-gateway/mcp
