quillm
Your agents build dashboards, trackers and docs in Quillm and keep them current, run after run.
Что умеет
- Get Guide: Returns the complete how-to for Quillm: the view code contract, a working template, the libraries you can import, styling rules, and dataset conventions. Read this once per session before y
- Get Workspace: START HERE. Returns everything that exists in the user's Quillm workspace in one compact overview: every view (slug, purpose, datasets it reads, URL, who last changed it), every dataset
- Get View: Returns one view in full: metadata, agent notes, revision history, the schema of every dataset it reads, and its React source code. Always call this before update_view so your edits match th
Какие данные видит
Нужен ли аккаунт
Не нужен: сервер работает без входа
Your agents build dashboards, trackers and docs in Quillm and keep them current, run after run. Your team reads them at one address, no AI account needed.
Как подключить
Как подключить quillm к Claude
Адрес сервера, который нужно вставить в настройках Claude:
https://quillm--quillm.run.tools
- Откройте Claude (сайт claude.ai или приложение для компьютера).
- Перейдите в Настройки → Коннекторы (в английском интерфейсе: Settings → Connectors).
- Нажмите Добавить пользовательский коннектор (Add custom connector).
- Вставьте адрес сервера, скопированный ниже, в поле URL удалённого MCP-сервера и нажмите Добавить.
- В чате нажмите + → Коннекторы и включите новый коннектор.
Пользовательские коннекторы доступны на тарифах Free, Pro, Max, Team и Enterprise. На Free можно добавить только один. В Team и Enterprise коннектор сначала добавляет владелец организации в Настройки организации → Коннекторы.
Авторизация
После нажатия Добавить откроется окно входа в сервис. Войдите под своим аккаунтом и подтвердите доступ. Пароль Claude не видит.
Как подключить quillm к ChatGPT
Адрес сервера, который нужно вставить в настройках ChatGPT:
https://quillm--quillm.run.tools
- Откройте ChatGPT в браузере (chatgpt.com). Нужен тариф Plus, Pro, Business, Enterprise или Edu.
- Один раз включите режим разработчика: Настройки → Приложения → Дополнительные настройки → Режим разработчика (Settings → Apps → Advanced settings → Developer mode).
- Откройте Настройки → Коннекторы и нажмите Создать (Create).
- Заполните форму: Название (любое), Описание (одна фраза, что делает сервис), URL MCP-сервера (скопируйте ниже).
- В поле Аутентификация выберите OAuth, если сервис требует вход, иначе Нет. Нажмите Создать.
- В новом чате откройте + → Приложения/Коннекторы и включите коннектор.
Название раздела у OpenAI менялось (Connectors → Apps/Plugins). Если пункт называется иначе, ищите «режим разработчика» в настройках. В рабочих пространствах Business/Enterprise администратор должен разрешить пользовательские коннекторы.
Авторизация
При первом использовании ChatGPT откроет окно входа в сервис. Войдите и подтвердите доступ.
Как подключить quillm к Cursor
Адрес сервера, который нужно вставить в настройках Cursor:
https://quillm--quillm.run.tools
Быстрый способ: нажмите кнопку Открыть в Cursor ниже, Cursor сам предложит добавить сервер.
Вручную:
- В Cursor откройте Settings → Cursor Settings → MCP и нажмите Add new global MCP server.
- Вставьте JSON, скопированный ниже, в открывшийся файл
~/.cursor/mcp.json(для одного проекта:.cursor/mcp.jsonв корне проекта). - Сохраните файл. Сервер появится в списке MCP; при необходимости пройдите авторизацию по кнопке рядом с ним.
Авторизация
Если сервис требует вход, рядом с сервером в списке MCP появится кнопка авторизации.
Список инструментов сервера (17)
Технические названия из tools/list. Нужны только разработчикам.
| get_guide | Returns the complete how-to for Quillm: the view code contract, a working template, the libraries you can import, styling rules, and dataset conventions. Read this once per session before you call create_view or update_view. It is short. |
| get_workspace | START HERE. Returns everything that exists in the user's Quillm workspace in one compact overview: every view (slug, purpose, datasets it reads, URL, who last changed it), every dataset (columns, key, row count, freshness), workspace notes left by agents, and recent changes. Call this at the start of every task so you extend what exists instead of duplicating it. |
| get_view | Returns one view in full: metadata, agent notes, revision history, the schema of every dataset it reads, and its React source code. Always call this before update_view so your edits match the current source exactly. |
| create_view | Creates a new view: a live page at a stable URL in the user's dashboard app. `source` is ONE file of React (JSX/TSX) that default-exports a component and reads its data with useDataset("dataset_name") from "quillm". Do not embed data in the source; create the dataset first (create_dataset), then the view. Pass the `brief`: the user's request in their words, and what you asked them and what they answered. If the request does not say who reads the page, what for, and which number matters most, ask the user first; a brief that is too thin is refused once with the questions to ask. Decide the `questions` next: what the user asked for is the scope, and a small request gets a small page. The view is compiled, test-rendered in a real browser and reviewed immediately: the response tells you whether it rendered, lists errors, and lists what a reader would still be missing, so read it and fix problems with update_view. The checks use two outside services unless the workspace turned them off: TypeSafe reads the brief, and OpenAI reads a screenshot and the page's text. Call get_guide first for the template and available libraries. Check get_workspace first: if a suitable view already exists, use update_view instead. |
| update_view | Changes an existing view's code or metadata. Pass `expected_revision` (the revision get_view showed you) so you never overwrite a change another agent made in the meantime. Prefer `edits` (exact string replacements, like a find-and-replace; each old_string must match the current source exactly and be unique) for targeted changes such as adding a chart. Use `source` only for a full rewrite, or `restore_revision` to roll back. Every call creates a new revision, is test-rendered and reviewed; a revision that fails its render check is NOT published (readers keep the last working one) and your next edits apply to it. The review sends a screenshot and the page's text to OpenAI, unless the workspace turned checks off. When a follow-up request replaces an earlier approach (a better burn figure, a new default), replace the old blocks instead of keeping both: revisions make removal safe. Call get_view first to get the current source. To change only the numbers a view shows, do NOT use this tool: use upsert_rows on the dataset. |
| open_page | Shows the user a page inside the chat, live, with today's data, in apps that display pages (ChatGPT, Claude); elsewhere it returns the page's link. Call it once, last, when you have finished creating or changing a page or its data (after the review is clean), and when the user asks to see, open or show a page. create_view, update_view and upsert_rows show nothing in the chat themselves. Without a slug, lists every page. |
| check_view | Test-renders a view in a real headless browser, reviews it, and reports render errors, console errors, which datasets it loaded, and what a reader would still be missing. The review sends a screenshot and the page's text to OpenAI, unless the workspace turned checks off. Set screenshot=true to also get an image so you can judge the layout yourself. create_view and update_view already run this automatically; use this tool when you want the screenshot, after changing a dataset, or to confirm the review is clean before you tell the user it is done. |
| delete_view | Permanently removes a view from the user's workspace. Only do this when the user asked for it. |
| share_view | Changes who can open a page: "collection" (people with access to its collection, the default), "workspace" (everyone in the workspace) or "link" (anyone with the link, no account needed, read-only; embeddable in Notion or a wiki). Use it when the user asks you to share a page or to give them a link to send. Returns the link. Only when the user asked: a link makes the page and the data it shows readable by whoever has it. |
| create_dataset | Creates a named table that views read with useDataset(name). Define typed columns and a `key`: the column(s) that uniquely identify a row (e.g. ["month"], or ["date","campaign"]). The key makes updates idempotent: pushing a row with an existing key updates it instead of duplicating it. You can pass initial `rows` in the same call. Prefer tidy, raw-ish data (one row per month/day/entity with numeric columns) over pre-aggregated text; views compute totals and deltas themselves. Check get_workspace first: if a dataset with this data already exists, add to it with upsert_rows. |
| upsert_rows | Adds or updates rows in a dataset. This is how you "add new data" or "correct a number": every view reading the dataset shows the change immediately, with no view edit needed. Rows are matched on the dataset's key columns: a new key inserts, an existing key is merged (only the columns you send are overwritten). Safe to re-run. Values must match the column types (number columns take JSON numbers, not strings like "$1,200"; date columns take ISO strings like "2026-03-01" or "2026-03"). Unknown or not applicable is null, never "" or 0. It writes only to this Quillm workspace and calls no other service. |
| delete_rows | Deletes rows from a dataset by key, e.g. keys: [{"month": "2026-01"}], or every row with all=true (use before re-loading a dataset from scratch). |
| query_dataset | Reads rows from a dataset so you can inspect or analyse what is stored (e.g. to see the latest month before adding the next one). Supports simple filters, ordering and paging. The response includes the total row count. |
| update_dataset | Changes a dataset's schema or metadata: add columns, remove columns, fix a column's description or type (update_columns), change the description or update cadence. Keep descriptions true: when you start storing a new category or scenario, update the column description that lists them. Existing rows keep their values; new columns are null until you upsert values. The key cannot be changed; create a new dataset for that. |
| delete_dataset | Permanently deletes a dataset and all its rows. Refuses if any view still reads it, unless force=true. Only do this when the user asked for it. |
| write_notes | Saves durable notes for future agents (including yourself in a later session, with no memory of this one). Use it to record what is NOT obvious from the code: where the data comes from and how to refresh it (queries, API calls, file paths), definitions ("MRR excludes one-off invoices"), and user preferences ("Kev wants EUR, weekly granularity"). Notes attach to a view, a dataset, or the whole workspace, and are shown in get_workspace / get_view. Replaces the previous notes for that target, so include what should be kept. |
| report_feedback | Files a note for Quillm's maintainer that Quillm itself fell short, so it can be improved. The note goes to Quillm's maintainer, a person outside the user's workspace, so include nothing private from the user's data. Call it when: you could not do what the user asked because Quillm lacks a capability; you had to use a workaround (if you changed a column type, reshaped data, or dropped something the user asked for to get past an error, that is a workaround); an error message or the guide was confusing or wrong; or a library/feature you needed is missing. One call per distinct problem, filed as soon as you recognise it (before asking the user a follow-up question, not at the end: the conversation may never get there). Still finish the task as well as you can and tell the user about the limitation. Do NOT use it for problems with the user's data or request, for your own coding mistakes that the render check caught, or for praise. |