Allows AI to query your CRM data using raw SQL via MCP, and build custom dashboards with the API
Overview
MCP (Model Context Protocol) lets LLMs interact with external tools and data sources. HighLevel has its own MCP, but it wraps the REST API — meaning the LLM can only fetch lists of records and try to reason about them in-context.
This creates real limitations. If you ask "how many duplicate opportunities do we have?", the HighLevel MCP has to pull records page by page, hold them in memory, and estimate. It can't join tables, count distinct values, or cross-reference contacts against phone calls and emails.
Streamlined's MCP is different. Because we sync your CRM data into a relational database, the LLM can write and execute real SQL queries — giving you deterministic, exact results across any combination of tables.
Why Relational Matters
Full Query Flexibility
You're not limited to pre-built dashboard widgets or fixed report templates. Need speed-to-lead broken down by sub-account? Duplicate opportunity counts grouped by pipeline stage? Engagement rates filtered by call direction and email status? Just ask — the LLM writes the SQL, and the database returns exact results. If you can describe it, you can query it.
Plain English, No SQL Required
The MCP exposes your full schema — table names, column descriptions, foreign keys, and enum values — so the LLM understands your data structure automatically. You just describe what you want to know in plain English, and the LLM crafts the right query. You never have to write or even see SQL unless you want to.
Build Custom Dashboards with the API
The same query engine that powers the MCP is also available as a standalone API. Generate an API key, point any frontend tool at it — Looker Studio, Retool, Lovable, or your own app — and build live dashboards with real-time CRM data. No export files, no stale snapshots.
Best-in-Class Data Sync
All of this is powered by Streamlined's data integration layer, which continuously syncs your HighLevel data into a clean, relational database. We handle the hard part — pulling, normalizing, and keeping your data accurate — so that every query you run, whether through an LLM or a dashboard, reflects reality.
What You Can Do
Here are a few examples of questions you can ask through the MCP. These would be difficult or impossible with a REST API-based MCP:
- "How many duplicate opportunities do we have per contact, and which pipeline stage has the most?"
- "What's our average speed-to-lead for missed inbound calls, broken down by sub-account?"
- "Which contacts were created this week and have engaged with us via a completed call, clicked email, or inbound message?"
- "Show me all contacts who booked an appointment but never showed, grouped by calendar."
- "What percentage of inbound callers do we actually call back, and how quickly?"
The MCP has access to all synced tables — contacts, opportunities, pipelines, pipeline stages, phone calls, emails, appointments, calendars, accounts, and more.
MCP Tools
When you connect the Streamlined MCP, the LLM gets access to the following tools:
describe_schema
Lists all available tables, accounts, groupings, and query rules. This is typically the first tool the LLM calls to understand what data is available.
explain_tables
Returns detailed column descriptions, data types, foreign keys, and enum values for one or more tables. The LLM uses this to understand how to write correct queries.
execute_query
Runs a read-only SQL SELECT query against your CRM database. All queries are scoped to your account — you can only see your own data.
utilize_api
Provides instructions for building custom dashboards and apps that query your CRM data via the API. If you use tools like Looker Studio, Retool, Lovable, or Claude Code, you can create live dashboards powered by the same SQL endpoint.
API Reference
The MCP wraps a REST API that you can also use directly to build dashboards, integrations, or custom tooling. All endpoints live under:
https://gateway.streamlined.so/query/apiAll routes require authentication via an Authorization header or X-API-Key header. You can generate an API key from Settings → Integrations in Streamlined.
GET /query/api/get-overview
Returns a high-level catalog of the data available to your account. Use this to discover what tables exist and how to query them.
Parameters: None.
Response:
Field | Description |
tables | List of available table slugs with descriptions, column counts, foreign key counts, and pivot join counts. |
accounts | All accounts (locations) belonging to your company, with ID and name. |
groupings | Pre-defined sets of accounts with their constituent account_ids. |
rules | Plain-text instructions for how to use the query API (e.g. "only SELECT allowed", "call explain-tables before writing SQL"). |
Tables that require Fivetran are excluded if your account doesn't have Fivetran enabled.
GET /query/api/explain-tables
Returns detailed schema information for one or more tables. Use this to understand column types, relationships, and how to write correct joins.
Parameters:
Parameter | Type | Required | Description |
table | Query string (repeatable) | Yes | One or more table slugs to describe. |
Example: ?table=contacts&table=opportunities
Response (per table):
Field | Description |
columns | Column name, description, type, nullable flag, and enum values (for local enums). |
foreign_keys | FK column, referenced table, description, nullable flag, and a ready-to-use JOIN hint. |
pivot_joins | Pivot table name, target table, description, and a multi-line JOIN hint. |
links | URL templates with placeholders that reference column values. |
Returns 400 if no table params are provided or if any slugs are unrecognized.
POST /query/api/execute-sql
Executes a read-only SQL query scoped to your account.
Request Body:
{
"sql": "SELECT COUNT(*) FROM contacts WHERE date_created > '2026-01-01'"
}Behavior:
- Only
SELECTandWITHstatements are allowed — anything else is rejected. - Row-level security is automatically applied using your company's location IDs.
- Queries run as a read-only role with a 600-second timeout.
- Results are capped at 5,000 rows. If exceeded,
truncatedis set totrue.
Success Response:
{
"status": "success",
"result": [...],
"truncated": false
}Error Response (400):
{
"status": "error",
"error": "Only SELECT statements are allowed"
}Connecting the MCP
The MCP endpoint for all platforms is:
https://gateway.streamlined.so/query/mcpAuthentication is handled via OAuth. When you connect for the first time, you'll be redirected to an authorization screen that says "<client> wants to query your CRM data" — click Allow Access and you're done.
ChatGPT
- Open ChatGPT and go to Settings → Apps
- Click Create App
- Enter a name (e.g. "Streamlined")
- Paste the MCP URL:
https://gateway.streamlined.so/query/mcp - Set authentication to OAuth
- Check the box to enable dev mode (required by ChatGPT)
- Click Create — you'll be redirected to authorize access
- Click Allow Access and you're connected
Claude
- Open Claude and go to Settings → Connectors
- Click Add a custom connector
- Enter a name (e.g. "Streamlined")
- Paste the MCP URL:
https://gateway.streamlined.so/query/mcp - Click Add — no advanced settings needed
- Authorize access when prompted
Other Platforms (Cursor, Claude Code, etc.)
Any LLM client that supports MCP can connect using the same URL. If your client supports OAuth-based MCP authentication, use the URL above. If it requires an API key instead, you can generate one from Settings → Integrations inside Streamlined.
To use the MCP or API via API key, pass an X-API-Key header in your requests.
Managing Connections
Once connected, your MCP connections are visible in Streamlined under Settings → Integrations. From there you can:
- See all active MCP connections (ChatGPT, Claude, etc.)
- View who created each connection and when
- Revoke or delete connections at any time
Your data is scoped per-account. Other users or accounts cannot see your data through the MCP.
Other Details
Security & Data Access
All queries are read-only (SELECT only) and scoped to your account. The MCP cannot modify, delete, or insert data. Other customers' data is never accessible.
Schema Reasoning
The MCP includes built-in schema descriptions so that LLMs can understand your tables and write correct queries without any guidance from you. You just ask your question in plain English.
Rate Limits
There are no rate limits as of now, though that may change in the future if there is significant adoption.
Ready to Install?
When you’re ready to install any app, click the link below to be taken through our installation wizard which can help you get it installed!
Frequent Questions
Do you offer custom development work?
Should I install your app at the agency level or location level?
What’s your support like?
How do I install your app?
Do you offer a free trial?
Can I request a feature or product?
Are there any usage limits on your apps?
Can I use your app on multiple accounts?
How do I uninstall the app?
Need to Get in Touch?
If you have any questions, concerns, or ideas, I’d love to hear them!
Visit the page below to book a call or get in touch right away.
