SIGNLD
Give your agent grounded access to your SIGNLD workspace: your connected business systems, your Knowledge Graph, and your Decision Topics.
What it can do
- List Workspaces: Lists the SIGNLD workspaces this user can access, marking the active one. All other tools operate on the active workspace.
- Select Workspace: Switches the active SIGNLD workspace for this user's MCP session. Takes effect from the next tool call.
- Get Guide: Returns SIGNLD's authoritative how-to guide. Call get_guide('sql') once per session BEFORE composing SQL that touches KG entities/metrics; 'kg-authoring' before any update_knowledge_graph;
What data it sees
Do you need an account
No: the server works without sign-in
Give your agent grounded access to your SIGNLD workspace: your connected business systems, your Knowledge Graph, and your Decision Topics. Instead of guessing at your numbers, the agent reads your actual data, runs read-only SQL over it, and answers Knowledge-Graph-first, so every answer maps back to the real entities and metrics in your business. It can also turn a query into a chart, save a shareable dashboard, and help build out the Knowledge Graph itself.
How to connect
How to connect SIGNLD to Claude
The server address to paste into Claude settings:
https://signld--dashboard.run.tools
- Open Claude (claude.ai or the desktop app).
- Go to Settings → Connectors.
- Click Add custom connector.
- Paste the server address copied below into Remote MCP server URL and click Add.
- In a chat, click + → Connectors and switch the new connector on.
Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.
Authorization
After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.
How to connect SIGNLD to ChatGPT
The server address to paste into ChatGPT settings:
https://signld--dashboard.run.tools
- Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
- Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
- Open Settings → Connectors and click Create.
- Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
- Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
- In a new chat open + → Apps/Connectors and enable the connector.
OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.
Authorization
On first use ChatGPT opens the service's sign-in window. Sign in and approve access.
How to connect SIGNLD to Cursor
The server address to paste into Cursor settings:
https://signld--dashboard.run.tools
Fastest: click Open in Cursor below and confirm the prompt.
Manually:
- In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
- Paste the JSON copied below into
~/.cursor/mcp.json(per project:.cursor/mcp.jsonin the repo root). - Save the file. The server appears in the MCP list; authorize it there if asked.
Authorization
If the service needs sign-in, an authorize button appears next to the server in the MCP list.
Server tool list (19)
Raw names from tools/list. Only developers need these.
| list_workspaces | Lists the SIGNLD workspaces this user can access, marking the active one. All other tools operate on the active workspace. |
| select_workspace | Switches the active SIGNLD workspace for this user's MCP session. Takes effect from the next tool call. |
| get_guide | Returns SIGNLD's authoritative how-to guide. Call get_guide('sql') once per session BEFORE composing SQL that touches KG entities/metrics; 'kg-authoring' before any update_knowledge_graph; 'topics' before topic writes; 'charting' before building a dashboard. |
| list_connections | Lists workspace data connections (id, name, type). SQL source() macros require the connection ID, never the display name. Use get_connections_schema for tables and columns. |
| get_connections_schema | Returns table schemas for the requested connections as plain text. Format: header `SCHEMA: N connection(s), M table(s)`, then one section per connection prefixed with `## connection: <friendly name>` plus `id:` and `name:` lines when the friendly name differs from the canonical connection id (otherwise the header value IS the canonical id), and one sub-section per table prefixed with `# table: <name>` followed by `columns (K):` and one column per line ` <name> (<type>) [flags] - <description> [examples: ...]`. Use the friendly name when mentioning the connection to the user; use the canonical id verbatim in source() macros and tool calls. For large schemas (>50 tables) only column names are listed; use get_table_details for full column info. |
| get_table_details | Fetches detailed schema information for specific tables as plain text. Format: header `TABLE DETAILS: connection <friendly name>, N table(s)` plus `id:` and `name:` lines when the friendly name differs from the canonical connection id (otherwise the header value IS the canonical id), then one section per table prefixed with `# table: <name>` followed by optional `ai_title:`, `ai_description:`, `rowCount:` and `columns (K):` with one column per line ` <name> (<type>) [PK,unique,nullable] - <description> [examples: ...]`. Use the friendly name when mentioning the connection to the user; use the canonical id verbatim in source() macros and tool calls. Use this after get_connections_schema when you need column types, descriptions, examples, or constraints. |
| execute_sql | Runs one read-only DuckDB SQL query over workspace data. Reference tables ONLY as source('<connection_id>', '<table>'). KG-first: when the question involves business entities or metrics, resolve them via get_knowledge_graph / compile_kg_entity_spec and follow get_guide('sql') before writing SQL. Returns a markdown preview plus a tableId handle to the full persisted result (page through it with get_query_result). Raw DuckDB errors are returned verbatim — fix the SQL and retry (max 2 attempts per root cause). |
| create_chart | Prepares a SIGNLD chart from a previous execute_sql result: validates a SignldChartSpec, persists it, and returns the spec, chart-ready rows and EXACT server-computed widget aggregates (headline/delta/breakdown over the full result). Render the result as a self-contained artifact following get_guide('charting') — SIGNLD palette + widget layout. Author the spec per get_guide('charting'); every field must be a column of the tableId result. Use charts for trends, breakdowns, rankings and distributions; 'kpi' for a single headline number; skip charts for non-numeric lists. The user's explicit chart/table request always wins. |
| get_query_result | Fetches rows from a previous execute_sql result by tableId, paginated. Use when the preview was truncated and you need more rows. |
| get_knowledge_graph | Reads a slim overview of the workspace Knowledge Graph (nodes | edges | metrics | domainPalette as plain text). Call this FIRST at the start of any analytical task — the KG is the source of truth for entity and metric definitions and may have changed since your last call. Use get_kg_node_details for full entityRule/properties/formula. |
| get_kg_node_details | Returns full details (entityRule, properties, verification, formula, linkedNodes) for specific KG nodes and/or metrics by id. REQUIRED before any update that touches properties, linkedNodes, or a metric formula — array fields replace wholesale on save. |
| compile_kg_entity_spec | Load a Knowledge Graph entity (node, edge, or metric) and return its business description — name, label, type, description, properties, and the full `entityRule` markdown. This tool: 1. Looks up the entity in the Knowledge Graph by id or name 2. Returns the entity's description block plus the raw `entityRule` (business rules, source table references via `source('<connId>', '<table>')` macros, joins, filters, variants — whatever the rule author captured) The returned spec does NOT bundle column-level schema. When you need real column names, types, or examples to compose SQL, call `get_connections_schema` separately for the connections referenced in the entityRule. Use this tool whenever you need to query data for a KG entity: read the entityRule for the business logic and source table refs, then fetch schema with `get_connections_schema` for those tables before writing SQL. |
| update_knowledge_graph | Upserts Knowledge Graph elements by id: send only what you add or change; omitted elements are preserved, omitted fields are preserved, but ARRAY fields (properties, linkedNodes) REPLACE wholesale — load current values via get_kg_node_details first. Metrics require formula. Persist definitions and rules, never query-result snapshots — see get_guide('kg-authoring'). Titles ≤100 chars, descriptions ≤160. |
| delete_knowledge_graph_node | Deletes a knowledge graph node by id and cleans up dependent data: removes connected edges, removes metric linkedNodes references to this node, and removes topic knowledgeGraphEntities with the same node name. Requires explicit confirmation via confirmDelete=true before executing. |
| get_topics | Lists workspace topics (id TOP-NNN, title, description). Deterministic full list — filter or match topics yourself. |
| get_topic_details | Returns full details for specific topics by their IDs as plain text. Each topic is rendered as a section starting with `=== <id> ===` followed by `title:`, `description:`, `createdAt:`, `createdBy:`, `kgEntities:`, `kgMetrics:` lines and a `--- detail ---` block containing the markdown body. Use after get_topics to drill into topics you need to work with. |
| create_topic | Persists a topic to the workspace as early as possible — call this as soon as you recognize a topic, even with just a title. Supports batch-saving related data in a single call: knowledgeGraphEntities (real-world business objects) and knowledgeGraphMetrics (business metrics) can both be provided as arrays on creation. Fill in any remaining fields as the conversation progresses using update_topic. |
| update_topic | Updates a topic by id: send only fields that change, but knowledgeGraphEntities / knowledgeGraphMetrics arrays REPLACE wholesale — load the current topic via get_topic_details first and send complete arrays. See get_guide('topics'). |
| save_dashboard | Saves a complete standalone HTML dashboard page (all styles/scripts/data embedded; Tailwind + Chart.js CDNs allowed — see get_guide('charting')). Returns the dashboard id and a view URL for signed-in workspace members. |