A funnel you've never had: moment, path, outcome.
Every feature gate hit through your MCP server is a funnel row — which tool was blocked, which capability the user reached for, which plan unlocks it, which path they took, and what it produced. Per tool, per plan, per lifecycle stage, per agent environment.
The user asks for a capability, not a plan.
The user reaches for a capability, not a plan name.
"Do it" — the capability is one keystroke away.
The feature exists. Their plan doesn't include it.
Every path forward, not just a checkout link.
One click from gate to paid capability.
Eight minutes later, the suite is green.
Users reach for a capability. Your error names a plan.
Nobody asks an agent for the Scale plan — they ask for parallel runners, SSO, the export. When the tool call is gated, today's error either says nothing or names a tier the user has never compared. There's no mapping from the thing they wanted to the thing that unlocks it, so the moment produces neither revenue nor a record that it happened.
- The gate fires mid-task, where your packaging language has never been seen.
- Blocked-action copy is generic because nothing maps tool to capability to plan.
- RevOps gets no row: no moment, no path, no outcome — experimentation is impossible.
Precise copy, and a path for every user.
The tool-to-capability-to-plan mapping makes the blocked-action copy exact: what was blocked, why, and precisely which plan carries it. Then the path chooser makes sure nothing dead-ends — checkout for the user who can buy, the billing portal, an admin request with context attached, sales routing, or a graceful limited mode. Every path is a recorded, attributable outcome.
- Checkout · portal · admin approval · sales · limited mode — chosen per user, per moment.
- Fallbacks are first-class outcomes: a limited-mode acceptance today is tomorrow’s conversion signal.
- Moment → path → outcome accumulates into the experiment surface your funnel never had.
Precision without exposure.
Gate copy reaches your users mid-task, in your name. The rules that keep it safe are structural, not editorial policy.
No gate, no offer.
Every offer must cite a recorded blocking event — enforced in the schema, tested in CI. The gate the user just hit is the only thing that can trigger one, and the trigger is auditable per offer.
No copy ships unreviewed.
Blocked-action copy and offer framing run through a draft, approve, apply flow. The optimization engine experiments inside messaging constraints you set — never outside them.
Per-class control.
Every trigger class has its own toggle, and every wall has a kill switch. A gate you'd rather handle in-app can be observed without ever offering.
Give every blocked action a path.
One import into your MCP server. Your packaging, mapped to the moments where users actually reach for it.