Apache 2.0 · one Go binary · self-hosted

Claude gets one URL. You decide what is behind it.

The control plane for every account your agents touch: approval gates, response guardrails, and a context budget you can see. Two Notion workspaces, work and personal Linear, a GitHub token — one endpoint, prefixed so nothing collides.

Run it yourselfSee how it works

No account. No hosted tier. Your tokens stay on your box.

81%Fewer tool tokens per request2.1k on a curated connector against 11.2k on the raw aggregate
1Connector URL in ClaudeHowever many accounts sit behind it
0Credentials leave your hostAES-256-GCM at rest, key held by you
How it works

One process sits between Claude and everything you have.

01

Add your accounts

OAuth providers run the full client dance in your browser. Token providers take a PAT. Add the same provider twice for two accounts.

02

Curate what is exposed

Per account, disable the tools you never use. Mark an account read-only and only read-shaped tools register.

03

Publish connectors

Name a subset, get a URL. Add that to Claude instead of the raw endpoint and it reads a fraction of the context.

Without Synaxis
notion-work.mcpnotion-home.mcplinear.mcpgithub.mcp
Four connectors in Claude. Four consent flows. No shared audit.
With Synaxis
https://synaxis.you.dev/mcp
  • One consent flow
  • Prefixed tools, no collisions
  • One audit log
  • One place to revoke
Control

Aggregation is the easy part. Deciding what Claude may do is the product.

Publish curated endpoints on top of the aggregate. Each one is a named subset of tools at its own URL, with its own rules.

Virtual connectors

A named subset of tools at its own URL. Deleting one revokes every token issued for its path, permanently.

/mcp/writing · /mcp/research

Ask-first tools

Mark a tool and its calls park. The engine pings your webhook and blocks until you approve or deny in the console.

Default 180 s window

Response guardrails

Redaction patterns, size caps, and prompt-injection flagging run on the way back from the upstream, before Claude reads a byte.

redact → cap → scan → audit

Flight recorder

Opt in per connector to record arguments and results. Click any call to inspect it, then replay it through the live path and diff.

32 KB per side, encrypted

Health and alerts

Every upstream is probed with a real tools/list round trip. Down and recovered transitions post to Slack or Discord.

Probed every 45 s

Refresh ahead

Tokens refresh before they expire, serialized per account so a rotating refresh token is never double-spent.

30 min watch loop
Security

Your tokens never leave your infrastructure.

There is no Synaxis cloud to trust. You run the binary, you hold the encryption key, and the audit log is yours.

Encrypted at rest

Access, refresh, and bearer tokens plus recorded payloads, AES-256-GCM with your key.

Audience-bound tokens

A token authorized for one connector path cannot call another, or the raw endpoint.

SSRF guarded

HTTPS only, and the dialer refuses loopback, private, and link-local addresses after resolving.

Everything audited

Account, tool, outcome, latency, and guard markers on every call, fire and forget.

Self-host

Up in one command.

The engine and the console come up together, no external database. Accounts persist in a named volume. Point Claude at port 8080 and you are done.

  • Docker, or Go 1.25 and Node if you prefer to build it
  • A public HTTPS hostname so claude.ai can reach the endpoint
  • Postgres optional. Without it, accounts live in a JSON file
synaxis-engine
$ docker compose up --build

engine   listening on :8080
console  listening on :3000
store    postgres, encryption on

aggregate  47 tools from 5 accounts
ready    http://localhost:8080/mcp