Table of Contents
- Overview
- What you will need to connect
- Setting up your connection
-
Utilizing the MCP
- Example Prompts
-
Additional Workflows and Integrations
- Slack - Real-Time Alerts on Regressions
- Atlassian (Jira + Confluence) - Ticketing and Documentation
- HubSpot - Connecting Performance to Marketing Campaigns
- ZoomInfo - Segmenting Impact by Account
- Microsoft 365 (Excel, Word, Outlook) - Reporting and Distribution
- Notion - Incident Logs and Living Documentation
- Quick Reference: Which Blue Triangle Tool Feeds Which Workflow
- Troubleshooting
- Additional Information
Quick start
The Blue Triangle MCP Server connects AI assistants like Claude and Cursor directly to your performance data, so you can ask questions in plain language instead of building API calls yourself. Using Claude? Just connect via OAuth in Settings > Connectors — no config file needed. Using Cursor or another client? You'll add a small JSON config with your API credentials. Both are covered below.
Overview
The Blue Triangle MCP (Model Context Protocol) Server gives AI assistants direct access to your Blue Triangle monitoring data. Use it to query site performance metrics in plain language, automate analysis, and generate insights — no manual API integration required.
What you will need to connect
Make sure you have the following on hand:
| A supported MCP client | Claude, Cursor, Antigravity, Gemini, ChatGPT or any custom MCP client |
| A Blue Triangle account | With API access enabled |
| Your API credentials | Site Tag Prefix, API Key, and API Email |
Your API key is available is attached to your BT portal user login. Don't have your portal login handy? Reach out to your Blue Triangle account admin or support before continuing.
Setting up your connection
The Blue Triangle MCP Server uses HTTP transport with header-based authentication, and works with Claude, Cursor, Windsurf, Antigravity, and any custom MCP client. The exact steps depend on which client you're using — jump to your client below.
General config format (used by most clients):
{
"mcpServers": {
"bluetriangle": {
"transport": "http",
"url": "https://mcp.bluetriangle.com/mcp",
"headers": {
"X-API-Key": "API KEY",
"X-API-Email": "USER EMAIL",
"X-Site-Prefix": "TAG PREFIX",
"Revenue-Enabled": "true/false"
}
}
}
}📝 Note: Revenue-Enabled is optional — include it only if you want revenue and order metrics available.
Connecting Claude (recommended: OAuth, no config needed)
Claude supports one-click OAuth, so you won't need to edit any files.
- In Claude, click your name in the bottom-left corner.
- Open Settings (gear icon).
- Go to Connectors.
- Search for Blue Triangle MCP.
- Click Connect next to Blue Triangle MCP.
- A login portal opens — log in with your Blue Triangle account.
- On the authorization screen, click Authorize.
- You'll be redirected back to Claude, where Ask Blue Triangle will appear in your pins.
Connecting Cursor AI
- Go to Settings > Tools & MCP.
- Click New MCP Server. This opens an
mcp.jsonfile. - Add the configuration below, replacing
<YOUR_BLUE_TRIANGLE_EMAIL>and<YOUR_BLUE_TRIANGLE_API_KEY>with your own values, then save the file.
{
"mcpServers": {
"Blue Triangle": {
"url": "https://mcp.bluetriangle.com/mcp",
"headers": {
"X-API-Email": "<YOUR_BLUE_TRIANGLE_EMAIL>",
"X-API-Key": "<YOUR_BLUE_TRIANGLE_API_KEY>"
}
}
}
}- Save the file, then restart Cursor.
Connecting Antigravity
Connecting Codex
Codex CLI (and the shared Codex VS Code extension / desktop app config) uses TOML, not JSON, and headers go in their own sub-table:
[mcp_servers.bluetriangle] url = "https://mcp.bluetriangle.com/mcp" [mcp_servers.bluetriangle.http_headers] X-API-Key = "YOUR_API_KEY" X-API-Email = "YOUR_API_EMAIL" X-Site-Prefix = "YOUR_TAG_PREFIX"
Steps:
- Open
~/.codex/config.toml(or.codex/config.tomlin a trusted project for a project-scoped setup). - Paste the block above, filling in your actual Blue Triangle API Key, API Email, and Site Tag Prefix.
- Restart Codex CLI.
- Run
/mcpinside Codex to confirmbluetriangleshows up and is connected.
Add Revenue-Enabled = "true" in the same http_headers table if you want revenue/order metrics included.
Connecting ChatGPT
*Coming soon*
Connecting Gemini
Gemini CLI
What you'll need first:
- Your Blue Triangle API Key and API Email (from your Blue Triangle profile)
- Your Site Tag Prefix
Steps:
Edit ~/.gemini/settings.json (or a project-level .gemini/settings.json) and add:
{
"mcpServers": {
"bluetriangle": {
"httpUrl": "https://mcp.bluetriangle.com/mcp",
"headers": {
"X-API-Key": "YOUR_API_KEY",
"X-API-Email": "YOUR_API_EMAIL",
"X-Site-Prefix": "YOUR_TAG_PREFIX"
}
}
}
}Then restart Gemini CLI and run /mcp to confirm it shows as connected.
Gemini Enterprise
This goes through Google Cloud's "custom MCP server data store" flow rather than a config file: in the Gemini Enterprise console, go to Data stores → Create data store, choose the custom MCP server option, and enter https://mcp.bluetriangle.com/mcp as the endpoint along with the same three headers as credentials.
If you hit connection issues, double check header casing (they're case-sensitive) and that you're using "httpUrl" (Gemini CLI's field name) rather than "transport": "http" .
Utilizing the MCP
Now that you are connected, using the MCP is easy. Here are example prompts you could use to drive the Blue Triangle MCP tools in a conversation
Example Prompts
Site & setup
- "Switch to the [site name] site in Blue Triangle."
- "What pages are tracked for our site over the last 30 days?"
- "Turn on revenue metrics for this session."
Performance summaries
- "Give me a performance summary by page for the last 7 days."
- "Show me average load time by browser and country for last week."
- "Which pages had the slowest load times yesterday?"
Comparisons
- "Compare our site's performance this week vs last week."
- "Compare page load times between Black Friday and the prior Friday."
- "How did performance change before and after our last deploy on [date]?"
Errors
- "Show me JavaScript errors from the last 24 hours."
- "Are there any CSP violations on the checkout page this week?"
- "What were the top errors on mobile browsers yesterday?"
Resource / Third-party timing
- "Break down resource timing by domain for the homepage over the last 3 days."
- "Which third-party scripts are adding the most load time?"
- "Show resource timing aggregated by file for the product page."
Revenue / E-commerce
- "What's our conversion rate and bounce rate by page for the past week?"
- "Show revenue and order data by browser for the last 14 days."
- "How does revenue correlate with page load time this month?"
Raw data / Time ranges
- "Pull raw page-view hits for the checkout page from 9am to 5pm yesterday."
- "Get performance data for 'last quarter' and summarize the trend."
Tips:
- Naming the specific site upfront ("for [site name]...") avoids an extra clarifying step if you have access to multiple sites.
- Time expressions like "last week," "yesterday," "Q2," or specific dates all work — the tool resolves them automatically.
Additional Workflows and Integrations
Slack - Real-Time Alerts on Regressions
Use case: Get notified the moment a page's performance or error rate degrades, without manually checking a dashboard.
Tools used: Blue Triangle MCP + Slack
Workflow:
-
Define the baseline window — use
resolve_time_range_to_unixto convert something like "last 24 hours" and "the 24 hours before that" into two epoch ranges. -
Run the comparison — call
compare_performance_dataacross both periods, grouped bypageName, on your key metrics (LCP, CLS, INP, or error count viaget_error_data). - Set a threshold — decide what counts as a regression (e.g., LCP up more than 20%, error count up more than 50%).
- Flag results — filter the comparison output to only rows that breach the threshold.
- Post to Slack — send a formatted message to the relevant channel with: page name, metric, before/after values, % change, and a link to the site dashboard if available.
Sample prompt:
"Compare LCP and error rate for all pages, this week vs last week. If any page regressed by more than 20%, post a summary to #site-performance in Slack."
Notes
- Good candidate for a recurring/scheduled check (daily or weekly) rather than one-off.
- Keep the Slack message short — page name, metric, delta — and link out to the full data rather than pasting everything inline.
Atlassian (Jira + Confluence) - Ticketing and Documentation
Use case: Turn confirmed regressions into trackable work, and keep a living record of site performance over time.
Tools used: Blue Triangle MCP + Atlassian Rovo (Jira, Confluence)
Workflow A: Auto-create a Jira ticket for a regression
- Run
compare_performance_dataorget_error_datato identify a real, sustained regression (not just noise — check it holds across a full day/week, not one hour). - Pull supporting detail with
get_page_hits_raw(specific sessions) orget_resource_data(which resource/domain is slow) to give engineers something actionable. - Create a Jira issue with:
- Summary: e.g., "LCP regression on /checkout — up 34% week-over-week"
- Description: before/after metrics, affected page(s), suspected resource/domain if identified, date range
-
Labels: e.g.,
performance,regression
- Assign to the relevant team or backlog.
Workflow B: Weekly performance report in Confluence
- Run
get_performance_summarygrouped bypageName(and optionallydeviceorcountry) for the past week. - Run
get_error_datagrouped bypageNamefor the same window. - Convert all durations from ms to seconds with
convert_ms_to_secondsbefore writing anything up. - Create or update a Confluence page with a summary table: top pages by traffic, their key metrics, week-over-week deltas, and any notable error spikes.
Sample prompts
"Check for any page where LCP regressed more than 25% this week. If you find one, pull the slow resources behind it and create a Jira ticket with the details."
"Pull last week's performance summary by page and create a Confluence page summarizing it, including a call-out for any pages with elevated error rates."
HubSpot - Connecting Performance to Marketing Campaigns
Use case: Find out whether slow-loading pages are hurting the campaigns driving traffic to them.
Tools used: Blue Triangle MCP + HubSpot
Workflow:
- Identify your top campaign landing pages in HubSpot (campaign name, source, medium).
- In Blue Triangle, run
get_performance_summaryorget_revenue_datafiltered bycampaignName/campaignSource/campaignMediumto match those same campaigns. - Compare conversion rate and bounce rate (
get_revenue_data) against load time (get_performance_summary) for each campaign's landing page. - Look for the pattern: campaigns with higher LCP/load time and correspondingly higher bounce rate or lower conversion.
- Report back to HubSpot campaign owners which landing pages are underperforming due to speed, not creative or targeting — so budget isn't wasted optimizing the wrong thing.
Sample prompt
"Pull revenue and bounce rate data grouped by campaign name for the last 30 days, alongside page load time for the same campaigns. Flag any campaign where bounce rate is high and load time is also high."
Notes
-
enable_revenueneeds to be turned on for revenue/conversion data — Claude will ask before doing this since it surfaces business-sensitive figures. - This workflow is about correlation, not proof — flag candidates for the marketing team to investigate further.
ZoomInfo - Segmenting Impact by Account
Use case: Understand whether your highest-value target accounts are the ones hitting your slowest pages.
Tools used: Blue Triangle MCP + ZoomInfo
Workflow:
- Use ZoomInfo to identify a list of target/enterprise accounts (by company, industry, or firmographic segment).
- Cross-reference against Blue Triangle traffic data — if you have IP-based or firmographic custom variables/categories configured in Blue Triangle, filter
get_performance_summaryorget_page_hits_rawusing those custom fields (customCategory1-5,customVariable) to isolate traffic from those accounts. - Compare performance metrics for that segment against your overall traffic baseline.
- If performance is materially worse for high-value accounts, flag it — this is a case where a performance issue has outsized business risk (churn/expansion risk) even if it looks minor in aggregate data.
Sample prompt
"Using the custom category tied to enterprise accounts, pull performance summary data for that segment vs. all traffic over the last 2 weeks. Tell me if enterprise accounts are seeing worse load times."
Notes
- This workflow depends on your Blue Triangle instance having account-level data captured in custom variables/categories — it won't work out of the box without that setup.
- ZoomInfo itself doesn't feed data directly into Blue Triangle; this is a manual cross-reference using account lists rather than a live join.
Microsoft 365 (Excel, Word, Outlook) - Reporting and Distribution
Use case: Package performance data into documents and communications for stakeholders who live in Office, not Slack or Jira.
Tools used: Blue Triangle MCP + Microsoft 365
Workflow A: Excel performance tracker
- Pull
get_performance_summarygrouped bypageNameandtime(weekly buckets) for a trailing period (e.g., last 8 weeks). - Convert all metrics to seconds.
- Build an Excel workbook with a row per page/week, columns for LCP, CLS, INP, error count, and revenue/conversion if enabled.
- Add a simple conditional format or trend column so degradations are visually obvious.
Workflow B: Word/email executive summary
- Run
compare_performance_data(this period vs. last) andget_revenue_datafor the same window. - Draft a short written summary — 3-5 bullet points — highlighting the biggest wins and biggest concerns.
- Format as a Word doc for distribution, or as an Outlook-ready email if the audience prefers reading in their inbox.
Sample prompts
"Build an Excel tracker of weekly LCP, CLS, and error count by page for the last 8 weeks."
"Summarize this month's site performance and revenue trends in a short doc I can email to leadership."
Notion - Incident Logs and Living Documentation
Use case: Similar to Confluence — a lightweight, searchable home for incident timelines and recurring reports, if Notion is where your team already works.
Tools used: Blue Triangle MCP + Notion
Workflow A: Incident timeline
- When an error spike or performance regression is detected (
get_error_dataorcompare_performance_data), pull session-level detail withget_page_hits_rawto establish the exact start time and affected pages. - Create a Notion page/database entry: Incident date, affected pages, metric impacted, magnitude, resolution status, owner.
- Update the entry as the issue is investigated and resolved.
Workflow B: Recurring performance digest
- On a set cadence (weekly/monthly), pull
get_performance_summaryandget_revenue_data. - Append a new entry to a Notion database tracking key metrics over time, so trends are visible without re-running queries each time.
Sample prompt
"There's an error spike happening right now — pull the detail on when it started and which pages are affected, and log it as a new incident entry in Notion."
Quick Reference: Which Blue Triangle Tool Feeds Which Workflow
| Blue Triangle MCP Tool | Slack | Jira/Confluence | HubSpot | ZoomInfo | Microsoft 365 | Notion |
|---|---|---|---|---|---|---|
compare_performance_data |
Alerting | Ticket evidence | Reports | Incident logs | ||
get_error_data |
Alerting | Ticket evidence | Incident logs | |||
get_performance_summary |
Weekly reports | Campaign correlation | Segment comparison | Trackers | Digests | |
get_revenue_data |
Campaign correlation | Summaries | Digests | |||
get_page_hits_raw |
Drill-down detail | Segment filtering | Incident detail | |||
get_resource_data |
Root-cause detail | |||||
resolve_time_range_to_unix / convert_ms_to_seconds |
Used everywhere as supporting utilities |
Troubleshooting
Configuration issues
- Validate your JSON syntax — watch for trailing commas.
- Use
"transport": "http"(not"url"or"sse"). - Header names are case-sensitive.
Connection issues
- Verify your API credentials are active.
- Confirm your Site ID is correct (must be numeric).
- Restart your MCP client after any configuration changes.
- Check firewall rules and network connectivity.
No data returned
- Verify the time range and Unix timestamp conversion.
- Confirm data collection was active during the queried period.
- Check metric availability for your selected
dataType. - Try a simpler query to isolate the issue.
Rate limiting
- If the rate limit is exceeded, wait 60 seconds before retrying.
- Use time bucketing to retrieve more data in fewer queries.
Still stuck? Reach out to Blue Triangle Support with a screenshot of your config (with credentials redacted) and any error messages you're seeing.
Additional Information
Timestamps & time ranges
- All timestamps must be Unix epoch in seconds (e.g.,
1737067739). - All timing metrics are returned in milliseconds.
- Maximum date range per query: 90 days.
- Rate limit: 60 calls per minute per user.
Data aggregation
- Geometric mean is used by default for performance metrics.
- Use percentile aggregation for distribution analysis.
- Maximum of 3 grouping dimensions per query.
Authentication & security
Authentication is handled automatically via your MCP configuration headers (X-API-Key, X-API-Email, X-Site-ID). A few best practices:
- Never share credentials publicly.
- Rotate API keys regularly.
- Use separate credentials per environment.
- Secure configuration files with appropriate file permissions.
Technical Documentation
The BT MCP Server runs off of our existing APIs. For additional details, please see the following documentation:
Available Tools
- compare_performance_data: Compare performance metrics between two non-overlapping time periods
- convert_ms_to_seconds: Convert one or more millisecond durations to seconds
- enable_revenue: Turn revenue and order metrics on (or off) for the session, after user confirmation
- get_current_unix_time: Get the current time in Unix epoch seconds
- get_error_data: Get JavaScript errors, general errors, and CSP violations
- get_page_hits_raw: Pull raw page-view records (one row per page load) with full timing details
- get_page_names: List the page names configured for a site over a date range
- get_performance_summary: Get summarized performance statistics grouped by dimensions (page, browser, country, etc.)
- get_resource_data: Get W3C Resource Timing data aggregated by domain, file, or host
- get_revenue_data: Get revenue, conversions, bounce rates, and e-commerce KPIs aggregated by dimension
- resolve_time_range_to_unix: Convert any time expression into start and end Unix epoch seconds switch_site: Set the active site for the session to the site the user chose
Comments
0 comments
Please sign in to leave a comment.