System One Connector

Typed, probability-scored judgments from TypeSafe's Jev and other System One models

By Mostafa (individual) Go Local · stdio AI and ML

31 popularity score ★ 360

Connect your client

Local (from source)

Add in one click

Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.

Or add it by command or config

It needs TYPESAFE_API_KEY. Replace each <NAME> with your value.

FirstTerminal
go install github.com/itsmostafa/system-one-connector/cmd/evaluate@latest
Claude CodeTerminal
claude mcp add system-one-connector -e TYPESAFE_API_KEY=<TYPESAFE_API_KEY> -- '<ABSOLUTE_PATH_TO_EVALUATE>' mcp
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "system-one-connector": {
      "command": "<ABSOLUTE_PATH_TO_EVALUATE>",
      "args": [
        "mcp"
      ],
      "env": {
        "TYPESAFE_API_KEY": "<TYPESAFE_API_KEY>"
      }
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "system-one-connector": {
      "command": "<ABSOLUTE_PATH_TO_EVALUATE>",
      "args": [
        "mcp"
      ],
      "env": {
        "TYPESAFE_API_KEY": "<TYPESAFE_API_KEY>"
      }
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "system-one-connector": {
      "type": "stdio",
      "command": "<ABSOLUTE_PATH_TO_EVALUATE>",
      "args": [
        "mcp"
      ],
      "env": {
        "TYPESAFE_API_KEY": "<TYPESAFE_API_KEY>"
      }
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.system-one-connector]
command = "<ABSOLUTE_PATH_TO_EVALUATE>"
args = ["mcp"]

[mcp_servers.system-one-connector.env]
TYPESAFE_API_KEY = "<TYPESAFE_API_KEY>"
Gemini CLITerminal
gemini mcp add --scope user -e TYPESAFE_API_KEY=<TYPESAFE_API_KEY> system-one-connector '<ABSOLUTE_PATH_TO_EVALUATE>' -- mcp

Settings 7

TYPESAFE_API_KEY Required: Key for the TypeSafe route (or a Liquid AI key, or any value for a local host); OPENROUTER_API_KEY or an active profile can be used instead.
OPENROUTER_API_KEY Optional: Uses OpenRouter's Decisions endpoint instead; ignored if TYPESAFE_API_KEY is set.
TYPESAFE_BASE_URL Optional: Host serving POST /v1/systemone; default https://api.typesafe.ai.
TYPESAFE_MODEL Optional: Model on the TypeSafe route; default jev-latest.
TYPESAFE_PROFILE Optional: Pins this client to a named profile.
TYPESAFE_MAX_ITEMS Optional: Caps items per call, 1 to 500; default 500.
TYPESAFE_HEADERS Optional: JSON object of extra HTTP headers sent to the model endpoint.

What it does

System One Connector ships as a single Go binary named `evaluate`. Run as `evaluate mcp`, it is a stdio MCP server with one tool, also called `evaluate`, that passes a piece of state and a set of typed questions to a System One model and hands back structured answers instead of prose. There are three question types: `noul` (the probability that a yes/no condition holds), `choice` (one option from a set, with a probability per option) and `score` (a position on ordered levels). An agent can therefore branch on a number, for example routing a support ticket to a team or deciding whether something is urgent, and pass unsure answers back to a person.

By default it calls TypeSafe's Jev model (`jev-latest`) at api.typesafe.ai. With `OPENROUTER_API_KEY` it uses OpenRouter's Decisions endpoint instead, and with `TYPESAFE_BASE_URL` it can point at any host that serves `POST /v1/systemone`: Liquid AI's hosted d1, or a self-run CLM or Laya server. Named profiles (`evaluate profile add|use`) store a model, host and key so the model can be switched without editing client configs.

One call can also judge a batch: `items` takes up to 500 records and asks the same questions of each, eight requests at a time, reporting failed records separately. A per-question `min_confidence` lets an answer abstain, marking it `uncertain`. Its tool reference (docs/tool-reference.md) adds details the README leaves out: each request times out after 60 seconds, 429 and 529 responses are retried up to three times, and a batch whose responses exceed 16 MiB has its remaining results dropped into `errors`.

An `evaluate setup mcp` command registers the server with Claude Code, Claude Desktop, Codex and Hermes, copying `TYPESAFE_*` variables and `OPENROUTER_API_KEY` into each client's config; `evaluate setup pi` installs a pi extension instead.

What it needs

RuntimeGo

macOS or Linux on amd64 or arm64 for the install script's prebuilt binary, or Go to build it with `go install`. A model endpoint and its key: a TypeSafe API key (console.typesafe.ai), an OpenRouter key, a Liquid AI key for d1, or a self-hosted System One server such as CLM (which needs a GPU). Hosted model calls are paid per request on the provider's account.

Limits

Only one tool; it judges, it does not generate text. `items` accepts at most 500 records per call (lower with `TYPESAFE_MAX_ITEMS`), and every record is a separately billed request; the cap is per call, not a spending limit. `choice` allows at most 255 options and `score` at most 10 levels. On OpenRouter the model is always `~typesafe/jev-latest` unless a profile is used, and OpenRouter's Decisions endpoint is still on an `/api/alpha/` path that its docs say may move. Span-01 accepts only `noul` questions and text or conversation state. A profile change takes effect only after the client restarts the server.

Who it suits

Developers whose agents need quick, numeric judgment calls (classification, triage, yes/no checks over many records) that code can compare to a threshold, and who are willing to use TypeSafe, OpenRouter or Liquid AI accounts or host a System One model themselves. It is a poor fit for open-ended generation or for anyone who wants no outbound API calls and has no GPU for a local model. It is a third-party project, not published by TypeSafe; because its one tool is marked read-only, some clients run it without asking, so set `TYPESAFE_MAX_ITEMS` if batch costs matter.

Tools 1

evaluate
Sends state (or a batch of records) and typed noul, choice or score questions to a System One model and returns answers with probabilities.

Similar servers