Connect your AI agent to your developer data.
The Built for Devs MCP integration gives any AI agent direct access to your developer funnel, friction signals, TTV trends, session data, and evaluation reports—all scoped to your account, no manual exports required.
What it enables
Ask your AI agent about your developers
Once connected, your AI agent can answer questions about your developer experience directly from your real data.
“Where are developers dropping off in my onboarding funnel?”
“Which pages are developers rage-clicking? What does that tell us?”
“Has our TTV improved over the last 6 months?”
“What JavaScript errors are developers hitting most often?”
“Walk me through everything developer sarah@acme.com has done in our product.”
“What did the last evaluation report say about our auth setup?”
“What are developers copying most from our docs? Show me the pages and previews.”
Step 1
Get your MCP API key
Go to Settings → Tracking Script and find the MCP Integration card. Your MCP API key is listed there alongside your endpoint URL.
Your MCP key is separate from your tracking script API key. It authenticates AI agent connections to your account and can be rotated independently if needed.
Endpoint
https://builtfor.dev/mcp
Auth header
X-BFD-MCP-Key: <your-key>
Step 2
Connect your AI client
The MCP integration uses the Streamable HTTP transport, which is supported by Claude Code, Claude Desktop, Cursor, and any other client that supports MCP over HTTP.
Claude Code
Add the following to your .mcp.json file in your project root, or to ~/.claude/mcp.json for global access:
{
"mcpServers": {
"builtfordevs": {
"type": "http",
"url": "https://builtfor.dev/mcp",
"headers": {
"X-BFD-MCP-Key": "<your-mcp-key>"
}
}
}
}
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"builtfordevs": {
"type": "http",
"url": "https://builtfor.dev/mcp",
"headers": {
"X-BFD-MCP-Key": "<your-mcp-key>"
}
}
}
}
Cursor
Go to Cursor Settings → MCP → Add new global MCP server and paste:
{
"builtfordevs": {
"type": "http",
"url": "https://builtfor.dev/mcp",
"headers": {
"X-BFD-MCP-Key": "<your-mcp-key>"
}
}
}
After saving, restart your AI client. The Built for Devs tools will appear automatically—your agent can start using them immediately without any additional setup.
Tools
What your agent can access
Developer Journey Funnel
read-onlyget-developer-funnel
Returns your complete developer journey funnel from the most recent monthly snapshot. Includes session counts, drop-off rates, and average time spent at each of the seven stages: Discovery, First Impression, Onboarding Setup, First Value, Adoption, Expansion, and Advocacy. Also returns a list of all identified developers who have been observed in your product, with their current journey stage and last seen timestamp. Use this as the starting point to understand the overall health of your developer onboarding—where developers are getting stuck, how long the critical path to first value actually takes, and which stage has the worst drop-off.
Friction Signals
read-onlyget-friction-signals
Returns aggregated behavioral friction signals from the last 30 days, grouped by type and page. Built for Devs tracks four categories of developer frustration that most analytics tools miss entirely: rage clicks (rapid repeated clicks in the same spot, indicating broken or confusing UI), copy events (what developers are copying and from which pages—with a 40-character preview; when a key or token is detected the preview is suppressed and replaced with a key_type label like "API key" or "Bearer token" so you know what they found without seeing the value), JavaScript errors (uncaught exceptions and unhandled promise rejections with filename and line number), and scroll depth patterns (how far developers scroll on key pages before leaving). Use this to surface exactly where your developer experience is breaking down, which pages are causing the most frustration, and what content developers are extracting for later use.
TTV Trend
read-onlyget-ttv-trend
Returns Time to Value (TTV) trend data for your product, broken down by month, showing whether developer onboarding is getting faster or slower over time. TTV measures the median time in seconds from a developer's first session to the moment they reach your defined "first value" event—the moment they've successfully built something meaningful with your product. Pass months (1–12) to control the lookback window; default is 6 months. Each data point includes the month, the median TTV in seconds, the number of developers who reached first value that month, and a comparison delta versus the prior period. Use this to measure the long-term impact of developer experience improvements—if you rewrote your getting started guide, this is where you'd see whether it worked.
Developer Session
read-onlyget-developer-session
Returns a complete behavioral profile for a specific developer or a single session. Pass a developer_id (the identifier you set via BFD.identify()) to retrieve every session that developer has had across your product—their full journey, every page visited, time spent per page, and any friction events encountered. Pass a session_id to drill into a single session. Each session includes an AI-generated narrative summary of what the developer was doing and where they got stuck, a chronological list of pages visited with timestamps, a breakdown of event types that occurred, and details on any rage clicks or JavaScript errors. Use this when a specific developer reports a problem, when you want to understand why someone churned, or to build an accurate mental model of what onboarding actually feels like in practice.
Evaluation Report
read-onlyget-evaluation-report
Returns the published findings report from a completed evaluation project. Built for Devs evaluation projects are live sessions where real developers attempt to build something with your product while their screen is recorded. After transcription and AI analysis, a structured findings report is generated. This tool exposes that report: the executive summary, a scored rubric across key developer experience dimensions, critical blocking issues, quick wins that would have the highest impact, specific things developers praised, and the full narrative report. Pass a project_id from your Evaluations page. Recording files and raw transcripts are never exposed. Use this to bring your evaluation findings directly into your planning workflow—have your AI agent summarize findings into Linear issues, prioritize them against your roadmap, or write a post-mortem.
Query Events
read-onlyquery-events
Raw, paginated access to your tracking events with full filtering. Supports filtering by date range (max 90 days), event type (pageview, click, scroll_depth, copy, rage_click, js_error, form_focus, form_submit, return_visit, external_link, time_on_page), page URL (partial match), session ID, or developer ID. Returns up to 200 results per page. Bots and internal traffic are always excluded. Each event includes the URL it occurred on, its type, a timestamp, the session ID, the developer's identifier (if identified), and a metadata field whose contents vary by event type—see the event reference on this page. Use this when you have a specific question the higher-level tools don't answer: "show me every form_submit event on the quickstart page in the last two weeks," "what pages did this session visit before they hit a JS error," or "how many developers clicked this specific button."
Developer CRM
Identify developers across sessions
By default, Built for Devs tracks developers anonymously by session. To unlock per-developer views in the MCP—and in your dashboard—call BFD.identify() when a developer authenticates in your product.
Example
// Call this after the developer logs in
BFD.identify('sarah@acme.com');
// Or use any stable identifier—user ID, UUID, hash
BFD.identify('usr_8f3k2m9x');
The identifier is your choice—an email address, a user ID, a hashed value, whatever fits your privacy model. Built for Devs doesn't prescribe the format and doesn't cross-reference it with any external data.
Once a developer is identified, you can ask your AI agent to pull their full history across every session:
“Show me everything developer sarah@acme.com has done in our product, and flag any errors or friction points she hit.”
Their complete session history—every page visited, every error encountered, every rage click—is available through get-developer-session and query-events filtered by their identifier.
Event reference
What each event contains
The metadata field returned by query-events varies by event type. Every event also includes the URL it occurred on, the session ID, the developer ID (if identified), and a timestamp.
pageview
Fired on every page load. Referrer URL is in the referrer field on the event.
click
Fired on interactive elements (buttons, links, inputs).
tag
HTML element tag (button, a, input, etc.)
text
Visible text of the element, up to 50 characters.
href
Link destination, if applicable.
external_link
Fired when a developer clicks a link leaving your domain.
tag
HTML element tag.
text
Link text, up to 50 characters.
href
Full destination URL.
destination_hostname
The external domain being navigated to.
rage_click
Fired when 3+ clicks occur within 700ms in a 40px radius—a strong frustration signal.
tag
Element tag at the click location, if interactive.
text
Element text, up to 50 characters.
x / y
Pixel coordinates of the click cluster.
click_count
Number of rapid clicks detected.
is_interactive
Whether the clicks landed on an interactive element.
copy
Fired when a developer copies text on the page.
preview
First 40 characters of the copied text. Null when key_type is set.
length
Total character count of the copied selection.
key_type
Credential type detected—e.g. "API key", "Secret key", "Bearer token", "JWT". Null when nothing was detected.
Key detection runs client-side before transmission. When a key is detected, preview is suppressed at the source and key_type tells you what category of credential the developer copied—useful signal for understanding where they are in your onboarding (e.g. a developer copying an API key from your quickstart page is a strong first-value indicator).
scroll_depth
Fired at 25%, 50%, 75%, 90%, and 100% scroll milestones.
percent
Scroll milestone reached (25, 50, 75, 90, or 100).
js_error
Fired on uncaught JavaScript errors and unhandled promise rejections.
message
Error message, up to 200 characters.
filename
Source file where the error occurred, up to 200 characters.
lineno / colno
Line and column number of the error.
event_name is set to unhandled_rejection for promise rejections.
form_focus
Fired when a developer focuses a form (intent to fill it out).
form_id
The form's id attribute, if set.
form_name
The form's name attribute, if set.
form_submit
Fired when a form is submitted.
form_id
The form's id attribute, if set.
form_name
The form's name attribute, if set.
action
The form's action path (path only, no domain or query params).
time_on_page
Fired when the developer leaves the page. Duration in seconds is in the time_on_page field on the event.
return_visit
Fired alongside a pageview when the developer has visited this page before in a prior session.
Security
Your data stays yours
Every MCP request is authenticated against your account. An AI agent using your MCP key can only ever see data scoped to your product—no other account's data is accessible, regardless of what's requested.
key_type label ("API key", "Secret key", "Bearer token") so you understand what the developer found without seeing the value. This is always on and cannot be disabled.
Ready to connect?
Get your MCP key from Settings, add it to your AI client, and start asking questions about your developer experience.
Get your MCP key →