Blue Triangle Help Center
Auto Light Dark
Auto Light Dark

Blue Triangle MCP Overview

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.

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.


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. 

  1. In Claude, click your name in the bottom-left corner.

  2. Open Settings (gear icon).

  3. Go to Connectors.

  4. Search for Blue Triangle MCP.

  5. Click Connect next to Blue Triangle MCP.

  6. A login portal opens — log in with your Blue Triangle account.

  7. On the authorization screen, click Authorize.

  8. You'll be redirected back to Claude, where Ask Blue Triangle will appear in your pins.

That's it! Once connected, use the Ask Blue Triangle pin to query your data directly within Claude.

Connecting Cursor AI

  1. Go to Settings > Tools & MCP.

  2. Click New MCP Server. This opens an mcp.json file.

  3. 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>"
      }
    }
  }
}
  1. 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:

  1. Open ~/.codex/config.toml (or .codex/config.toml in a trusted project for a project-scoped setup).

  2. Paste the block above, filling in your actual Blue Triangle API Key, API Email, and Site Tag Prefix.

  3. Restart Codex CLI.

  4. Run /mcp inside Codex to confirm bluetriangle shows 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:

  1. Define the baseline window — use resolve_time_range_to_unix to convert something like "last 24 hours" and "the 24 hours before that" into two epoch ranges.

  2. Run the comparison — call compare_performance_data across both periods, grouped by pageName, on your key metrics (LCP, CLS, INP, or error count via get_error_data).

  3. Set a threshold — decide what counts as a regression (e.g., LCP up more than 20%, error count up more than 50%).

  4. Flag results — filter the comparison output to only rows that breach the threshold.

  5. 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

  1. Run compare_performance_data or get_error_data to identify a real, sustained regression (not just noise — check it holds across a full day/week, not one hour).

  2. Pull supporting detail with get_page_hits_raw (specific sessions) or get_resource_data (which resource/domain is slow) to give engineers something actionable.

  3. 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

  4. Assign to the relevant team or backlog.

Workflow B: Weekly performance report in Confluence

  1. Run get_performance_summary grouped by pageName (and optionally device or country) for the past week.

  2. Run get_error_data grouped by pageName for the same window.

  3. Convert all durations from ms to seconds with convert_ms_to_seconds before writing anything up.

  4. 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:

  1. Identify your top campaign landing pages in HubSpot (campaign name, source, medium).

  2. In Blue Triangle, run get_performance_summary or get_revenue_data filtered by campaignName / campaignSource / campaignMedium to match those same campaigns.

  3. Compare conversion rate and bounce rate (get_revenue_data) against load time (get_performance_summary) for each campaign's landing page.

  4. Look for the pattern: campaigns with higher LCP/load time and correspondingly higher bounce rate or lower conversion.

  5. 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_revenue needs 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:

  1. Use ZoomInfo to identify a list of target/enterprise accounts (by company, industry, or firmographic segment).

  2. Cross-reference against Blue Triangle traffic data — if you have IP-based or firmographic custom variables/categories configured in Blue Triangle, filter get_performance_summary or get_page_hits_raw using those custom fields (customCategory1-5, customVariable) to isolate traffic from those accounts.

  3. Compare performance metrics for that segment against your overall traffic baseline.

  4. 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

  1. Pull get_performance_summary grouped by pageName and time (weekly buckets) for a trailing period (e.g., last 8 weeks).

  2. Convert all metrics to seconds.

  3. Build an Excel workbook with a row per page/week, columns for LCP, CLS, INP, error count, and revenue/conversion if enabled.

  4. Add a simple conditional format or trend column so degradations are visually obvious.

Workflow B: Word/email executive summary

  1. Run compare_performance_data (this period vs. last) and get_revenue_data for the same window.

  2. Draft a short written summary — 3-5 bullet points — highlighting the biggest wins and biggest concerns.

  3. 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

  1. When an error spike or performance regression is detected (get_error_data or compare_performance_data), pull session-level detail with get_page_hits_raw to establish the exact start time and affected pages.

  2. Create a Notion page/database entry: Incident date, affected pages, metric impacted, magnitude, resolution status, owner.

  3. Update the entry as the issue is investigated and resolved.

Workflow B: Recurring performance digest

  1. On a set cadence (weekly/monthly), pull get_performance_summary and get_revenue_data.

  2. 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