Your data, inside any agent
Calliope Data speaks CLI and MCP. Plug your business data into Claude, ChatGPT, Gemini, Cursor or your own harness — natural-language answers with cited sources, and business rules your agent cannot bypass.
brew install Calliope-AI/tap/calliope
calliope auth login --api-key <key>
calliope orgs use acme
calliope ask "how are sales this quarter?"
Or skip the install entirely — add this MCP server to your agent: https://mcp.calliope.so/mcp
Works with the agents you already use
Anything that speaks MCP over HTTP, or that can run a binary on your PATH.
- Claude Code
- Claude Desktop
- ChatGPT
- Gemini
- Cursor
- ElevenLabs
- Your own harness
Command line
Calliope in your terminal
Twenty-two commands: sixteen in six groups — auth, orgs, config, docs, concepts, rules — plus ask, query, schema, doctor, skill and version. Every command returns the same envelope, and the breadcrumbs tell you what to run next.
- Readable in a terminal, JSON in a pipe — automatically
--json,--quiet,--md,--jq '<expr>'— the filter runs inside the binary, so nojqneeded — and--csvoncalliope query- Stable exit codes:
0ok ·1error ·2usage ·3unauthorized ·4not found ·5limit exceeded - Layered config — flags,
CALLIOPE_*env, project and global files.calliope config listshows which layer each value came from
{"ok": true, "data": [...], "summary": "12 documents",
"breadcrumbs": [{"action": "show",
"cmd": "calliope docs show <id>"}]}
Coding agents
The skill ships inside the binary
calliope skill prints the full SKILL.md — invariants, command catalogue and recipes — exactly as the installed version packaged it. A test compares its command catalogue against the real command tree and fails the build if the two drift, so it cannot fall out of step with the binary your agent is actually calling.
- A Claude Code plugin that installs the skill and a
/calliopecommand - It warns at session start when the binary or the credential is missing
- Domain skills are plain Markdown composing commands — no Go required
calliope doctordiagnoses install, credential and connectivity
calliope skill
Model Context Protocol
Calliope as a remote MCP server
Point your agent at the hosted server. Two ways in, both live today.
Server URL: https://mcp.calliope.so/mcp
OAuth 2.1
Clients like Claude, ChatGPT and Gemini: paste the URL, sign in, pick your organization. Dynamic client registration and PKCE S256. The organization comes from the token, never from a header.
API key
Servers and voice agents such as ElevenLabs send their own key. Calliope stores no credentials — it only relays them. Create a key in the Calliope Data UI, under API keys.
X-Calliope-Api-Key: <your key>
X-Calliope-Org: <org name>
| Tool | What it does |
|---|---|
| ask_calliope | Natural-language questions over data and documentation. Returns an answer, cited sources and aggregated data. No SQL. |
| search_documentation | Semantic search across documentation, with document, page and section for every fragment. |
| list_documents | Lists available documents, filterable by text or tag. |
| get_document | Document metadata by id. |
| list_concepts | Business concepts in the ontology — what data exists. |
| describe_concept | Description and attributes of one concept. |
| list_business_rules | The organization's shared business rules. |
- Streamable HTTP for remote clients, stdio for local development
- Three explicit scopes:
calliope:catalog:read,calliope:data:read,calliope:query:execute orgNameis never a tool argument — it is resolved server-side from the request credentials
Governance
Your MCP agents never write SQL
Access without a blank cheque. Over MCP, the seven tools take questions, not queries — an agent cannot reach past them. The CLI keeps query and schema for people who want raw SQL, and its own skill tells agents to reach for ask first.
No SQL over MCP
The MCP tools take natural language and return answers with cited sources. No tool accepts a query, so an agent connected this way cannot write one.
Rules enforced at query time
Business rules are first-class objects applied when the query runs — not suggestions in a prompt. Resistant to prompt injection and conversational drift.
Isolated per organization
The tenant is resolved on the server, from the credential — never from an argument the agent controls.
Every answer cites its sources
Document, page and section, returned alongside the answer.