Your agents ship features. Needlr proves which ones pay off.

Connect Claude Code, Cursor or any agent that speaks MCP. Before it builds, it learns what's measurable. After it ships, it asks "did that work?" and gets a verdict from your own data, with what to do next.

What is Needlr for coding agents?

Needlr is a release impact tool with an MCP server. A coding agent such as Claude Code or Cursor connects to it to ask whether a change it shipped moved a business KPI, like demos booked or sign-ups. Needlr answers with a split test, a before vs after comparison of a past release, or feature adoption, from the site's own data, and says what to do next. Agents measure; a person decides what goes live. Free up to 25,000 measured visitors a month.

Connect in two minutes

  1. In Needlr: Agents → Connect an agent. Pick its projects and how its split tests start. Copy the key.
  2. Add Needlr to the agent. For Claude Code:
claude mcp add --transport http needlr https://api.needlr.io/mcp --header "Authorization: Bearer ndl_ag_…"

Other clients: an MCP server over Streamable HTTP at https://api.needlr.io/mcp with the same header. Or plain HTTP: https://api.needlr.io/v1/agent/….

Then add one line to your CLAUDE.md or AGENTS.md:

Before shipping a user-facing change, call needlr_estimate. After it is live, call needlr_validate. At the start of a session, call needlr_list_checks with filter "pending".

The tools

needlr_list_checks
At the start of every session (filter "pending"): verdicts waiting for your decision, and checks waiting for a person.
needlr_get_context
A project's KPIs (what each counts, its health and usual rate, how far back it can judge a release), weekly visitors, and the rules.
needlr_estimate
Before you build: which method fits and how long a verdict takes. With little traffic, only big changes are measurable.
needlr_validate
After you ship. "released": before vs after, answered at once when there is history. "flag": a split test in code, with the code to add. "adoption": who uses a new feature.
needlr_get_verdict
Where a check stands. Progress only until the verdict; then the effect, the evidence and what to do.
needlr_record_decision
What you did: keep, rollback, iterate, abandon or fix_measurement.
needlr_search_learnings
Before you propose an idea: past checks on your projects and their verdicts, so you don't repeat what already failed and can build on what worked.
needlr_propose_kpi
When no KPI measures what your change should move: propose one. A person creates it and publishes its tag; if the project already counts it, you get its key.

The rules

  • No peeking: until the verdict an agent sees progress and the expected date, never which way it leans.
  • Agents never publish to your site. Tag Manager changes and shipping a winner stay with a person, with a code from their authenticator app.
  • The account Owner chooses whether an agent's split tests start on their own: always ask, only with a pull request, or always.
  • Split tests started by agents are judged at 95% confidence, over at least 7 full days, and at most 2 run at once on the same KPI.
  • A change that already didn't win isn't measured again, unless it's a follow-up (change.parentCheckId).
  • Releases within 14 days on the same KPI are measured together, and the evidence says so ("weak").

How verdicts are reached: methodology. What protects your site: security.

Error codes

Every refusal comes with nextSteps the agent can follow.

unauthorized
Missing or invalid API key.
forbidden_scope
This key doesn't have the scope for that.
project_not_allowed
This agent isn't connected to that project.
not_found
No such check, project or KPI for this agent.
invalid_request
The request doesn't match the schema.
idempotency_conflict
This idempotency key was used for a different request.
rate_limited
Too many calls. Retry after the time given.
daily_quota
This agent's validation requests for today are used up.
kpi_not_found
No active KPI with that key in this project.
kpi_unhealthy
The KPI stopped firing, so its numbers can't be trusted.
kpi_not_counted_yet
Needlr hasn't counted this KPI yet: its tag must be published to Tag Manager by a person.
ga4_kpi_before_after_only
A KPI from Google Analytics can only measure a release made for everyone (released).
connect_ga4_first
This KPI comes from Google Analytics, which isn't connected.
connect_gtm_first
The Needlr snippet isn't live on the site, so a split test can't reach visitors.
launch_date_too_old
The release is older than Google Analytics' data Needlr reads.
launch_date_past_plan
The release is further back than this account's plan lets Needlr measure.
not_enough_history
Needlr doesn't have 28 days of this KPI before that release.
adoption_date_too_old
Adoption is measured from raw events, kept 60 days.
release_in_future
The release date is in the future.
not_measurable_in_time
With this traffic, a verdict would take longer than the time allowed.
concurrency_limit
Too many of this agent's split tests run on this KPI already.
plan_limit
The account's plan doesn't allow another running check.
feature_key_taken
That feature key is already used by another check.
rerun_detected
The same change was already measured and didn't win.
not_decidable
This check has no final verdict yet.