Developers
Build boards from your AI agent.
Boardtrail speaks the Model Context Protocol, so Claude, Cursor and any other MCP client can read your workspace and build dashboards in it. Point an agent at a CSV and ask for a dashboard.
Connect a client
Create an API key under your profile, granting the scopes you want the agent to have, then add this to your MCP client config.
{
"mcpServers": {
"boardtrail": {
"type": "http",
"url": "https://boardtrail.io/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}The endpoint is https://boardtrail.io/mcp. Authentication is the same bearer key the REST API uses, with the same scopes.
What an agent can do
Read and create only. There is no tool that edits or deletes anything, so an agent that misunderstands you builds a spare board rather than damaging one you already have. Every call is checked twice: the key must carry the scope, and you must have a role in the workspace that allows it. Members are read-only.
| Tool | What it does | Scope |
|---|---|---|
| list-organizations | List the Boardtrail workspaces this key can reach, with the slug every other tool needs. Start here. | read |
| list-data-sources | List the connected data sources in a workspace. Returns names, types and health only. Call describe-data-source for the column keys you need to configure a widget. | read |
| describe-data-source | Read the columns and a sample of rows from a data source. Call this before configuring any widget: it returns the exact column keys, which are slugged from the origin headers and cannot be guessed. | read |
| list-boards | List the dashboards in a workspace, with how many widgets and save points each has. | read |
| get-board | Read one board including every widget, its type, config and grid position. Call this before adding widgets to a board that already has some, so you can see what is there. | read |
| read-widget-data | Read the rows behind a widget, after its data source transforms have run. Use this to answer questions about what the numbers actually say. | read |
| list-save-points | List the save points on a board. A save point freezes both the layout and the data as they were, so the board can be viewed exactly as it looked then. | read |
| list-templates | List the ready-made board templates. Copying one with copy-template gives a complete working board in a single step, so check here before building from scratch. | read |
| create-organization | Create a new workspace owned by the key holder. Only needed when list-organizations comes back empty, or the user explicitly asks for a separate workspace. | organizations:create |
| preview-data-source | Fetch and parse a URL without saving anything, to see whether it works and what columns it has. Do this before create-data-source so you can tell the user what the file actually contains rather than guessing from its name. | data-sources:write |
| create-data-source | Connect a public CSV or Excel link, or an unauthenticated JSON API, to a workspace. Sources needing a password, an auth header or a database connection cannot be created here and must be added by a person in the web app. | data-sources:write |
| create-board | Create an empty dashboard in a workspace. Add widgets to it with create-widget. | boards:write |
| copy-template | Copy a ready-made template, with all its widgets and sample data, into a workspace as a new board. The fastest way to a working dashboard. Use list-templates to see what is available. | boards:write |
| create-widget | Add a chart, table or tile to a board. Call describe-data-source first and use its exact column keys: config keys and column names are both checked, so a mistake comes back as an error rather than a chart that quietly draws the wrong thing. Leave position out and the widget is placed below the existing ones at a sensible size. | widgets:write |
| create-save-point | Freeze the board and its current data so it can be viewed exactly as it is now. Worth doing once a board is finished, since this server cannot edit or delete anything afterwards. | snapshots:write |
What it will not do
- No editing or deleting. Boards, widgets and sources can be created, never changed or removed. Capture a save point when a board is finished.
- No credentials. Agents can connect public CSV and Excel links and unauthenticated JSON APIs. Anything needing a password, an auth header or a database connection has to be added by a person here, so secrets never pass through a model.
- No crossing workspaces. A key only reaches the workspaces its owner belongs to, and ids from anywhere else simply do not resolve.
Try it
Once connected, ask for what you want in plain language. The server ships a build-a-dashboard prompt that walks the agent through inspecting the columns before it picks any charts.
Build me a dashboard from
https://example.com/monthly-revenue.csv
showing how revenue is trending by region.