Skip to content

An MCP server that answers from the books, and says where the answer came from.

Point Claude, Cursor or any MCP client at Gatlas and ask across every company in the portfolio in plain language. The agent reads documented views rather than raw tables, so it answers in the few rows that matter, and every figure it returns traces back to a row someone can open.

A question, and its basis

Consolidated Q2 2026 revenue was DKK 14.2M, up 8% quarter on quarter. The five largest entities carried most of it; the split is below.
Saved. Three headline numbers and the by-entity chart, read from the same view. The share link works for anyone who has it.

Q2 revenue by entity

Consolidated revenue
14.2
Growth, quarter on quarter
8
Entities in scope
7
Revenue by entity, five largest
Bar chart, 5 points, use arrow keys

What the agent sees

Curated datasets over the synced tables, each carrying its own context and column notes. The default way an agent gets a number, with filters applied server-side. Raw SQL exists, and is the last resort.
Curated markdown kept current by scheduled syntheses over the raw files, with the raw files reachable underneath when no document covers the question.
Which source feeds which company, how fresh it is, and what a stale connection looks like. A connection that may manage syncs can run one.
Dashboards, documents and decks composed from published views, with a share link. An agent builds one from a closed set of components, so it cannot draw a figure the views do not hold.

What it will not do

  • A connection is scoped to the companies you name. To the agent, a company outside that scope does not exist.
  • A missing value is returned as missing, never as zero. A page of results says when it is one page of many, so an agent cannot sum a truncation as though it were the whole.
  • A tool that changes state says so in its name and its description, and the one that issues a credential-bearing link needs a human’s explicit go-ahead. A Read-only connection cannot reach any of them.
  • No credential passes through the agent. The person who owns a login authorizes it through a setup link, and the credential goes into a vault.
  • Every call is logged with its tool, its shape and its outcome. Not its content.

The tools

Start here

get_agent_context
Operating rules, entity roster and freshness warnings for THIS org. Call it first in every session.
get_help
This tool: guidance, the starting libraries of views/documents/artifacts for a company being set up, the artifact component catalog, troubleshooting, the tool map, and the help center for people.
list_entities
The companies in scope for your key.
submit_feedback
Tell the Gatlas team what is broken, missing or confusing. Please use it.

Views (structured)

list_views
The curated view catalog you can read. The single source for what exists.
search_views
Ranked search over the view catalog when list_views is too long to scan.
describe_view
A view's columns, AI context and caveats. Read before querying it.
query_view
Read a view with server-side filters. The default way to get numbers.
query_sql
Raw SQL over synced tables. Last resort when no view covers the question.
list_tables
The raw tables behind the views, per entity schema.
describe_table
A raw table's columns and docs, when you must go below the views.
create_view
[WRITE] Persist a new view from SQL + AI context; dry-runs the SQL first.
edit_view
[WRITE] Change a view's SQL, AI context or column docs in place.
delete_view
[WRITE] Hard-delete a view; unconfirmed calls return an impact report instead.

Documents (unstructured)

list_documents
The curated markdown documents you can read.
get_document
Read one document (optionally a past version), plus the raw source files that version was generated from.
search_documents
Ranked passages from the RAW files under the curated documents. The last resort on this side, like query_sql on the other. It reports how far it searched.
get_raw_document
One raw file's text, a page at a time, by the document_id search_documents or get_document's Sources block printed.
edit_document
[WRITE] Update a document; the old body is kept as a version.
list_transform_prompts
The scheduled AI syntheses that keep documents current.
create_transform_prompt
[WRITE] Define a synthesis: prompt + inputs (raw documents, curated documents, published views) + output document + schedule.
edit_transform_prompt
[WRITE] Change a transform prompt's definition or schedule.
run_transform_prompt
[WRITE] Run a transform prompt now (preview or live).

Pipeline

list_connections
The source connections feeding each entity, with freshness.
get_sync_status
Sync health per connection (needs a key that can manage syncs).
get_recent_syncs
Recent sync runs and their outcomes (needs sync management).
trigger_sync
[WRITE] Re-sync a connection now (needs sync management; rate-limited).
edit_sync_schedule
[WRITE] Change how often a connection syncs.
mint_setup_link
[WRITE] Issue a credential-bearing setup URL for a human operator; requires confirm + purpose.

Activation

list_artifacts
Saved dashboards/reports built over published views.
list_components
The component library this key can see, with how many artifacts place each one.
describe_artifact
An artifact's components, bound views and embed URL.
describe_component
One library component's full definition and where it is placed.
create_artifact
[WRITE] Compose charts/tables/text over published views into a shareable artifact: a dashboard, an A4 document or a 16:9 deck (layout.format).
create_component
[WRITE] Save one chart, table or text block to the component library for artifacts to place by name.
edit_artifact
[WRITE] Change an artifact's components, its layout format (dashboard/document/deck) or its share link (the embed field).
edit_component
[WRITE] Change a library component everywhere it is placed.
delete_artifact
[WRITE] Hard-delete an artifact and its embed link; unconfirmed calls return an impact report instead.
delete_component
[WRITE] Remove a library component; refused while any artifact still places it. Unconfirmed calls return an impact report instead.