Codex
The Synthient plugin for Codex: the MCP server for data, and six skills for the judgment the tools cannot carry.
It carries the same six skills as the Claude Code plugin and bundles the same MCP server. The two differ only where the hosts do: Codex names skills synthient-<name> and invokes them with $, and it relies on the CLI's own credential chain rather than prompting for a key.
The plugin is open source at github.com/synthient/plugins. It needs the CLI on your PATH, since the MCP server ships inside it: brew install synthient/tap/synthient.
Install
Add the repository as a marketplace, then install the plugin:
codex plugin marketplace add synthient/plugins
codex plugin add synthient@synthient
Installing Synthient from the /plugins browser in Codex does the same thing. Either way, start a new session afterwards: bundled skills and MCP servers are picked up at session start.
Credentials
Codex forwards SYNTHIENT_API_KEY to the server through env_vars, but the OS keychain is the reliable path. An MCP server's working directory is wherever Codex launched it, so a .env lookup may not land where you expect:
synthient auth
Get a key from the dashboard at synthient.com, then run $synthient-doctor to confirm the CLI, the credentials, the granted scopes, the remaining credits, and the MCP tools are all in place.
Skills
| Skill | Purpose |
|---|---|
$synthient | API reference: auth, response shape, field vocabularies, credits, rate limits, errors |
$synthient-integrate | Wire Synthient into the current codebase, with fail-open handling and the benign-automation guard |
$synthient-migrate | Move off Spur, IPQualityScore, or another vendor: audit, map, report, rewrite, verify |
$synthient-triage | Investigate an address, a list, or a domain and return a reasoned verdict |
$synthient-feeds | Parquet snapshots, filtered stream capture, CSV export, local analysis |
$synthient-doctor | Diagnose credentials, scopes, credits, and MCP connectivity |
Codex also loads a skill on its own when a task matches its description; naming one is for when you want it specifically.
Migrating from another vendor
$synthient-migrate spur
Also takes ipqs, or any other vendor name. It audits every call site, maps the fields, and shows the report before changing anything.
The report leads with semantic changes rather than renamed fields, because those are what break quietly: a ported fraud_score threshold that shifts who gets blocked, a client.count that now counts distinct device signatures rather than concurrent clients, an operator-name string comparison that stops matching and so returns clean for everything.
See Migrating from Spur and Migrating from IPQualityScore for the mappings it works from.