Agent-ready, by design
Every connector is linted against the five AX principles before it ships — verb-first descriptions, typed parameters, context-sized results.
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.
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.




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.
Verb-first, unambiguous, typed. Agents pick the right tool every time — no guessing, no hallucinated parameters.
Pagination, projection, and aggregation by default. Agents see what they need, not raw 10MB JSON dumps.
Structured {code, message, details}. The agent knows whether to retry, narrow filters, or escalate to the user.
Tokens, latency, errors, and tool args — all logged to NDJSON. Inspect any call in Studio, replay any session.
Agents build connectors through Elliot. discover-source → build → lint → eval → deploy, all callable as MCP tools.
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.
REST APIs, PostgreSQL, MySQL, CSV, JSON — all in one connector file.
elliot init --template rest-api-keyDeclare name, description, parameters, filters, return fields. Elliot writes the safe, parameterized SQL.
# define tools visually in StudioEvery tool checked against the five principles before it ships.
elliot lint my.connector.jsonDeterministic tool-call assertions with a token estimate — pass / fail per case, no LLM in the loop.
elliot eval my.eval.yamlPlugin + runtime + Studio come up with one command, ready for any MCP client.
make devA lightweight plugin exposes your connector to agents, a runtime executes calls safely, and Studio gives you a glass cockpit for every session.
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.
{ "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 } ] } ] }
Every tool starts with a verb. Categories (READ / WRITE / ACTION) tell the agent what side effects to expect.
Named parameters bind through SQLite / driver layers — agents can't forge SQL into your runtime, even if a prompt asks them to.
PETSTORE_API_KEY resolves at request time from your environment. Connector files are safe to commit.
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.