Skip to content

ElliotBuild your connector. Make your product agent-ready.

Elliot turns any API or database into a connector your AI agents can call natively — with minimum tokens, clean error recovery, and full session observability. One file, one command, every agent.

Elliot
See it in action

Studio — a glass cockpit for every agent session.

Watch a connector come together: five data sources, typed tools, a built connector, and two agents calling it — every call traced, timed, and token-counted in real time.

localhost — Elliot Studio
Tools — verb-first, typed contracts your agents call
Tools — verb-first, typed contracts your agents call
Metrics — calls, error rate, latency, token efficiency
Metrics — calls, error rate, latency, token efficiency
Agent Console — a live trace of every session
Agent Console — a live trace of every session
Sources — REST, PostgreSQL, MySQL, and files
Sources — REST, PostgreSQL, MySQL, and files
The five principles

Designed for agents, not humans.

Every connector Elliot ships follows five rules. They are the difference between a connector an agent occasionally gets right and a connector it can reliably call in production.

01

Tool descriptions are contracts

Verb-first, unambiguous, typed. Agents pick the right tool every time — no guessing, no hallucinated parameters.

02

Results fit the context window

Pagination, projection, and aggregation by default. Agents see what they need, not raw 10MB JSON dumps.

03

Errors are actionable

Structured {code, message, details}. The agent knows whether to retry, narrow filters, or escalate to the user.

04

Every session is observable

Tokens, latency, errors, and tool args — all logged to NDJSON. Inspect any call in Studio, replay any session.

05

The platform itself is agentic

Agents build connectors through Elliot. discover-source → build → lint → eval → deploy, all callable as MCP tools.

How it works

From your API to an agent-ready connector in five steps.

One connector file, one CLI, one running stack. No SQL writing, no glue services, no bespoke wrappers for every API your agent has to reach.

Connect your sources

REST APIs, PostgreSQL, MySQL, CSV, JSON — all in one connector file.

elliot init --template rest-api-key

Build tools

Declare name, description, parameters, filters, return fields. Elliot writes the safe, parameterized SQL.

# define tools visually in Studio

Lint for agent-readiness

Every tool checked against the five principles before it ships.

elliot lint my.connector.json

Run eval cases

Deterministic tool-call assertions with a token estimate — pass / fail per case, no LLM in the loop.

elliot eval my.eval.yaml

Deploy & connect

Plugin + runtime + Studio come up with one command, ready for any MCP client.

make dev
Architecture

One connector. Three services. Any agent.

A lightweight plugin exposes your connector to agents, a runtime executes calls safely, and Studio gives you a glass cockpit for every session.

AGENTClaude CodeCursorOpenClawCodexany MCP clientMCP / HTTPELLIOTmcp-plugin FastMCP · :3000 · tool registry connector-runtime :3001 · safe SQL · session log studio React 19 · :5173 · observe & edit HTTP / SQLSOURCESREST APIsPostgreSQLMySQLCSV · JSONLocal filesyour existing data every call: tokens · latency · args · result · error → NDJSON audit log
One file. Many actions.

A connector is a declaration, not a service.

Describe your sources, the actions you want exposed, and the skills agents can chain. Elliot generates safe parameterised SQL, wires auth from env vars, and registers your connector with every agent automatically.

petstore.connector.json
{
  "name": "Pet Store API",
  "slug": "petstore",
  "version": "1.0.0",
  "sources": [
    {
      "id": "animals",
      "type": "rest",
      "url": "https://api.example.com/animals",
      "data_path": "items",
      "auth": {
        "type": "api_key",
        "secret_key": "PETSTORE_API_KEY",
        "header_name": "X-Api-Key"
      }
    }
  ],
  "tools": [
    {
      "id": "list_animals",
      "description": "Return all animals, optionally filtered by species.",
      "category": "READ",
      "sql": "SELECT * FROM animals WHERE (:species IS NULL OR species = :species)",
      "parameters": [
        { "name": "species", "type": "string", "required": false }
      ]
    }
  ]
}
Contract

Verb-first descriptions

Every tool starts with a verb. Categories (READ / WRITE / ACTION) tell the agent what side effects to expect.

Safety

Parameterised, never interpolated

Named parameters bind through SQLite / driver layers — agents can't forge SQL into your runtime, even if a prompt asks them to.

Secrets

Env vars, never strings

PETSTORE_API_KEY resolves at request time from your environment. Connector files are safe to commit.

Ready to make your product agent-ready?

Clone the repo, run make dev, and your first connector is live in under five minutes. Free, MIT-licensed, and runs anywhere you can run Python and Node.

Released under the MIT License.