# MCP server The hosted MCP server puts Misata inside an AI assistant. The division of labour is the point: - **The assistant** understands what you need and designs the tables: names, columns, how they connect, the business rules. - **Misata** makes the numbers true (every key, every date order, every stated total, rate and share) and returns what it checked, with the SQL that proves it. Server URL: `https://api.misata.studio/mcp` ## Connect **Claude (claude.ai or Claude Desktop):** Settings → Connectors → Add custom connector, paste the server URL, save. The first time you ask for data, Claude asks you to sign in to Misata; there is no key to copy. **Claude Code:** ```bash claude mcp add --transport http misata https://api.misata.studio/mcp ``` **Cursor** (`~/.cursor/mcp.json`): ```json { "mcpServers": { "misata": { "url": "https://api.misata.studio/mcp" } } } ``` **VS Code** (`.vscode/mcp.json`): ```json { "servers": { "misata": { "type": "http", "url": "https://api.misata.studio/mcp" } } } ``` **Signed in or not.** It works without an account, up to 25,000 rows a dataset. Signed in (through the client's sign-in, or a header `Authorization: Bearer msk_...` with a key from Studio's Settings), a dataset can reach 100,000 rows, the hourly limit is higher, and any model key saved in Studio is used for requests written in plain English, so no key is ever pasted into the assistant. `whoami` says which one the connection is. ## The tools | Tool | What it does | |---|---| | `plan_dataset` | Shows the tables, sizes, relationships and stated numbers before any rows exist. Free. | | `generate_dataset` | Makes the dataset from a schema, CREATE TABLE statements, a blueprint, or a built-in shape with a story. Returns a `dataset_id`, `passed`, and `verification`: what was checked, what held, and anything open. | | `start_generation`, `get_status`, `cancel_generation` | The same build as a background job, for large datasets. | | `get_certificate` | Every stated number against what the rows show, with the SQL that reads it. | | `check_answers` | The answer key as an eval: questions drawn from it, and any answer, series or query graded against it, a wrong one named as the mistake it is. | | `query_dataset` | One read-only SQL query over the dataset, so the assistant can check a total or a join itself. | | `export_dataset` | Files to download (CSV, Parquet, SQL for your database, the demo pack for Postgres or ClickHouse), as a link. | | `blueprint_guide`, `validate_blueprint` | For data that must behave like a real process (readings around a nominal, drift and reset, wear, ledgers). The guide teaches the engine's design language chapter by chapter; validation runs a small preview first. | | `find_ready_dataset` | Lists ready-made datasets (free, and premium ones with a full answer key) before building one. | A dataset is kept for two hours under its `dataset_id`, long enough to plan, build, query, check and export in one conversation. Export what you want to keep. ## Prompts to try > Make a B2B SaaS dataset for our dashboard demo: accounts, subscriptions on three plans, invoices. MRR grows from > $50,000 to $200,000 over the last two years, with 2% monthly churn that spikes to 5% in Q3 2025. Show me the > verification, then export it for Postgres. > Here is our schema (pasted DDL). Fill it with a year of data where revenue from completed orders grows from $40k to > $95k a month and 6% of orders are cancelled. Then check this query against the answer key: (pasted SQL). > Build a support desk dataset and give me ten questions from its answer key. I'll answer them with our agent; grade > each answer. ## Getting good results from an assistant - **Ask it to show `verification`.** It lists every number held and anything not held. An assistant should never present data as clean when `passed` is false. - **State numbers, not adjectives.** "Churn 2% a month" is held; "low churn" is a guess. - **Let the assistant design, and let Misata check.** A schema the assistant writes, with `numbers` and a `window`, is the most reliable route: no model call on Misata's side, done in seconds. - **Check before you trust a number.** `query_dataset` and `check_answers` run on the data itself. ## Limits - Free text requests ("make me a dataset about bakeries") need a model on Misata's side. Signed in with a model key saved in Studio, they work; otherwise the assistant is asked to design the schema itself, which works without one. - Datasets are capped at 25,000 rows unsigned and 100,000 signed in. Studio and the platform API build larger ones. - The server never holds a database credential. To load a database, export `sql` and run it, or use the platform API's load.