Discount exception
Approve a 15% annual-plan discount for a growth account?
- Owner: RevOps
- System: CRM + billing
- Risk: margin change without an owner trail
Send action context. Get yes, no, or review with a replayable Decision Record before your product, agent, queue, or internal tool changes state.
curl -X POST https://decide.fyi/api/decide -d @pricing_exception.json
Request
{
"mode": "rulebook",
"rulebook": {
"schema_version": "rulebook_v1",
"rulebook_id": "pricing_exception",
"version": "2026-06-11",
"rules": [{
"rule_id": "approve_standard_exception",
"priority": 100,
"condition": {
"all": [
{ "field": "discount_percent", "operator": "lte", "value": 15 },
{ "field": "margin_floor_passed", "operator": "eq", "value": true },
{ "field": "owner_verified", "operator": "eq", "value": true }
]
},
"outcome": {
"decision": "yes",
"verdict": "APPROVE",
"action": "approve_discount",
"reason_code": "STANDARD_EXCEPTION_ALLOWED"
}
}],
"default_outcome": {
"decision": "review",
"verdict": "REVIEW",
"action": "route_to_owner",
"reason_code": "NO_RULE_MATCHED"
}
},
"context": {
"workflow": "pricing_exception",
"source_record_id": "deal_1042",
"requested_action": "approve_discount",
"inputs": {
"discount_percent": 15,
"margin_floor_passed": true,
"owner_verified": true
}
}
}
Response
{
"decision_record_version": "decision_record_v1",
"verdict": "yes",
"application_verdict": "APPROVE",
"reason_code": "STANDARD_EXCEPTION_ALLOWED",
"matched_rule_id": "approve_standard_exception",
"request_id": "req_9f3c",
"decision_id": "dec_43b2",
"evidence": ["STANDARD_EXCEPTION_ALLOWED"],
"action": "approve_discount",
"action_binding": {
"system": "pricing_exception",
"resource": "deal_1042",
"proposed_action": "approve_discount"
},
"policy_id": "pricing_exception",
"policy_version": "2026-06-11",
"rulebook": {
"schema_version": "rulebook_v1",
"id": "pricing_exception",
"version": "2026-06-11",
"hash": "4cf1..."
},
"policy_bundle_hash": "4cf1...",
"record_hash": "7f3a...",
"receipt_hash": "c91e...",
"verify_url": "/api/decision/dec_43b2/verify",
"replay_url": "/api/decision/dec_43b2/replay"
}
Your app sends action context; Decide returns the verdict record before anything changes state. Legacy single, multi, and runtime calls are advisory-only. Underneath, the production core is hybrid_declarative_rulebook_with_trusted_adapters: direct calls use direct_declarative_rulebook; registered trusted adapters use trusted_adapter_facts_then_declarative_rulebook.
declarative Rulebook v1
declarative Rulebook v1 remains the verdict authority.
Adapter authority
facts_only
trusted adapters emit facts only before Rulebook v1 evaluates.
Rejected mode
customer_executable_rulebook
Fails closed with RULEBOOK_BINDING_MODE_UNSUPPORTED.
No caller-supplied verdicts
decision_contract
Callers cannot preload the verdict, decision_contract, or runtime material; those requests fail with RULEBOOK_OUTPUT_MATERIAL_FORBIDDEN.
Try the pricing-exception boundary, inspect the returned record shape, then copy cURL, JavaScript, or Python when the shape fits. Binding production verdicts use Rulebook v1.
Sandbox calls are for integration design. Binding production verdicts use mode: "rulebook" with Rulebook v1. Production keys add auth, quotas, telemetry, replay visibility, and commercial controls.
Each preset changes the action context sent to the Decision API.
Run a preset or enter an action boundary to inspect the returned record.
yes / no / review
Identitydecision_id + request_id
Proofevidence + record_hash
Follow-upverify_url + replay_url
pending
Recorddecision_id pending
Replaypending
Actionwaiting
The value is not a prettier form. It is the repeatable API boundary between a verdict, its evidence, and the action that follows.
The same canonical input and Rulebook v1 version return the same verdict: yes, no, or review.
Every call gets a replay URL and durable record hash so teams can inspect, rerun, and attach outcomes.
Each request is scoped to current context, so old chat drift does not leak into production decisions.
Response fields are compact and easy to route into products, automations, queues, agents, and MCP tools.
Reference applications show how the same primitive gates source-backed policy, pricing, and execution workflows.
Flagship proof run
The risky moment is CRM or billing changing state before margin, owner, and evidence checks are attached.
Approve a 15% annual-plan discount for a growth account?
Decide checks the facts that usually live across CRM fields, policy docs, and human review.
{
"verdict": "yes",
"application_verdict": "APPROVE",
"decision_id": "dec_43b2",
"evidence": ["MARGIN_FLOOR_OK", "OWNER_RULE_VERIFIED"],
"action": "approve_discount",
"policy_version": "2026-06-11",
"record_hash": "7f3a...",
"verify_url": "/api/decision/dec_43b2/verify",
"replay_url": "/api/decision/dec_43b2/replay"
}
dec_43b2 can be replayed against pricing_exception:v3.
Replay compares verdict, evidence, and record hash against the original policy run instead of screenshots, chat history, or memory.
First wedge
Pricing exceptions make the first boundary obvious: revenue is at stake, ownership is clear, and the record must travel with the action.
Decision API
Decide should feel like infrastructure, not another dashboard. Send context and guardrails, then receive yes, no, or review with a decision record your system can store, replay, and attach to the action that follows.
{
"endpoint": "/api/decide",
"request": {
"mode": "rulebook",
"binding_mode": "direct_declarative_rulebook",
"action": "approve_discount",
"context": { "discount_percent": 15 },
"rulebook": "pricing_exception:v3"
},
"response": {
"verdict": "yes", "decision_id": "dec_43b2",
"evidence": ["MARGIN_FLOOR_OK", "OWNER_RULE_VERIFIED"],
"runtime_binding": { "verdict_authority": "declarative_rulebook" },
"rulebook_contract": { "evaluator_version": "decide_rulebook_v1" },
"record_hash": "7f3a...",
"replay": "/api/decision/dec_43b2/replay"
}
}
How it matures
Start with one recorded verdict. Add execution and outcome evidence only when the boundary becomes production-critical.
Context and guardrails become yes, no, or review with evidence before state changes.
Execution Receipts and a portable Decision Packet connect the verdict to the attempted action.
Outcome Records measure rule effectiveness, confidence, benchmarks, and explainable anomalies.
Why not hard-code this?
Software is acting faster than teams can audit. Decide gives each bounded action one recorded verdict that survives outside the code path that made it.
Slack, CRM notes, workflow branches, and logs each held part of the rule.
Evidence, policy version, hashes, verify URL, and replay URL stay beside the action.
RevOps can inspect the record, attempted execution, and outcome without reconstructing intent.
Production questions
Keep the workflow. Add one call before the state change and store the record beside the action.
No. It sits before the CRM, billing system, queue, agent, or internal tool changes state.
Decision Record v1: verdict, evidence, policy version, hashes, verify and replay URLs, and the action that followed.
Your product routes, holds, or blocks using the same verdict and record.
Keyed API calls, quotas, telemetry, replay visibility, security docs, and launch support by plan.
Start with one production boundary. Developers can wire the record; buyers can approve the controls.
Shape the request in sandbox, then use the quickstart and SDK to put the verdict before your state change.
Review the security posture and request a keyed, metered API path for the action you are ready to gate.
Expansion path
The API can gate any bounded software action. Start with one expensive boundary, then expand as teams trust the record.
Approve, deny, or escalate discount and packaging decisions before billing or CRM state changes.
record_hash and receipt_hash travel with the decisionRefund, cancel, return, trial, access, and routing checks use the same verdict shape once one boundary is trusted.
Agents, wallets, queues, and internal tools can require a Decide response before value moves or state changes.
Proof resources
Go deeper only when the core idea is clear: one API call returns a record your system can store.
Simple model: run Evaluate for free validation, then buy a Production API tier by monthly decision records (10k -> 50k -> 200k) and live action boundaries. Annual billing saves 20%, and burst packs handle temporary spikes.
Use docs and runtime references to test Rulebook v1 outputs and request-linked evidence fields.
Choose by monthly decision records, then by how many production action boundaries need to require a Decide verdict. Enterprise uses commercial contract terms when governance and procurement controls are strict.
Up to 10,000 records/month
Self-serve production Decision API.
Up to 50,000 records/month
Growth tier for multiple boundaries and faster launch support.
Up to 200,000 records/month
For multi-team governance, procurement review, and strict enterprise controls.
Decision Records, execution receipts, Outcome Records, and self-serve packet export for the first production boundary.
Policy effectiveness, confidence, and explainable anomaly reports turn observed outcomes into rollout decisions.
Benchmarks, packet review, audit-chain governance, and the security package support procurement and multi-team rollout.
Compare decision scope, delivery model, rate-limit envelope, and expansion path before you request access. Default delivery is remote integration handoff (not on-site services).
| Plan | Price | Delivery model | Monthly decision scope | Rate-limit envelope | Overage / expansion | Support + uptime terms |
|---|---|---|---|---|---|---|
| Evaluate ($0) | $0 | Sandbox + live demo validation only. | No production usage. | Shared demo limits; no contractual uptime terms. | Move to API Starter, API Team, or API Enterprise for production. | No production uptime terms. |
| API Starter (from $299/mo) | From $299/mo | Standalone keyed /api/decide access. |
Up to 10,000 decision records/month for one live boundary. | Default Starter envelope: 20 req/min per API key (returned in x-ratelimit-*). |
Use burst packs (+10k/+25k/+50k) or upgrade to API Team. | Self-serve runtime with docs-first implementation handoff. |
| API Team (from $1,199/mo) | From $1,199/mo | Quote-based API runtime with included implementation support. | Up to 50,000 decision records/month across multiple boundaries. | Higher commercial contract envelope than Starter. | Use burst packs or move to Enterprise for stricter governance and larger envelopes. | Launch support + contracted uptime terms + implementation support included. |
| API Enterprise (from $3,999/mo) | From $3,999/mo | Enterprise runtime with included rollout/governance support. | Up to 200,000 decision records/month and/or strict multi-team controls. | Custom throughput and uptime envelope by commercial contract. | Further custom tiers above 200k/month as volume and controls expand. | Full procurement/security package and enterprise support model with implementation support included. |
Need first-boundary help? Request a pricing-exception workflow review.
Yes. Choose API Starter for direct API runtime access, add burst packs for temporary spikes, or move to Team/Enterprise for larger envelopes and controls.
You land on /payment/success with handoff steps, and receive kickoff confirmation by email. If missing after 10 minutes, check spam/promotions and contact support@decide.fyi.
No. Evaluate is for runtime testing and payload validation only. Production usage starts with API Starter (or higher API tiers).
Usually when monthly volume approaches or exceeds 200,000 decisions, when multi-team governance is required, or when procurement/compliance controls need custom contract terms.
Planning estimate: Model one product or internal workflow at a time, using your own decision-record volume, loaded review cost, and measured outcome deltas before treating any impact number as procurement evidence.
Use assumption-based decision-volume math before commercial commit so upside, spend, and cost assumptions stay explicit.
Estimate monthly review-time effect for one decision boundary and compare it against the selected kickoff or plan cost. This is a planning model, not a savings guarantee.
Reference scenario, not a promise: 5,000 records/month × 12 review minutes × 15% handle-time reduction × $25/hour ≈ $3,750/month modeled review-time impact before error-rate reduction.
Formula: hours saved = (records/month × avg review minutes ÷ 60) × reduction%; estimated monthly impact = hours saved × loaded hourly cost; net modeled impact = estimated impact - plan cost.
Cost comparison appears after input values are applied.
Modeled estimate only. Use your baseline, rollout records, and measured decision-outcome deltas before treating any impact number as procurement evidence.
Run the sandbox, copy an integration path, then request production access for one action boundary.
Use Console as an evaluation and onboarding path: describe the workflow, map the first boundary, run proof, then request production access when the fit is clear.
Evaluation Console
Tell us the software action you want to control. The mapper turns it into a first Decide boundary, relevant evidence fields, artifacts, and docs to review.
This is an evaluation aid, not production/legal/security advice. It only maps to documented Decide patterns.
Start with the action that changes state: CRM update, billing mutation, support refund, queue job, or agent tool call.
Production-readiness checks confirm request delivery, checkout links, booking path, and confirmation channel before rollout.
Use these when the evaluation is ready to become a first-boundary rollout.
Use your x-metrics-token to load 24h runtime metrics and export the rollout summary snapshot.
| Top event (24h) | Count |
|---|---|
| Load metrics to view top events. | |
Build a concise rollout brief from current readiness checks and telemetry. Use this for customer updates and weekly rollout readouts.
No report generated yet.
Refund, cancel, return, and trial checks show how clients can consume deterministic verdicts with stable endpoints, source links, and replayable evidence.
Registry links, MCP install URLs, REST endpoints, and source references remain on *.decide.fyi. This is a preserved reference application for the broader Decision API.
Stable Decide runtime for refund eligibility checks. Direct declarative Rulebook v1 returns ALLOWED, DENIED, or UNKNOWN plus a signed rulebook result; no trusted adapter is required.
Stable Decide runtime for cancellation penalty checks. Direct declarative Rulebook v1 returns FREE_CANCEL, PENALTY, or LOCKED plus a signed rulebook result; no trusted adapter is required.
Stable Decide runtime for return eligibility checks. Direct declarative Rulebook v1 returns RETURNABLE, EXPIRED, or NON_RETURNABLE plus a signed rulebook result; no trusted adapter is required.
Stable Decide runtime for trial terms checks. Direct declarative Rulebook v1 returns TRIAL_AVAILABLE or NO_TRIAL plus a signed rulebook result; no trusted adapter is required.
Run the stable Decide reference remotes, inspect deterministic responses, and keep a scoped audit trail for QA and incident review.
Run a request to see output.
| Time (UTC) | Reference app | Mode | Status | Latency | Req hash | Actions |
|---|
Add the stable Decide reference remotes to any MCP-compatible client.
{
"mcpServers": {
"refund-decide": {
"url": "https://refund.decide.fyi/api/mcp"
},
"cancel-decide": {
"url": "https://cancel.decide.fyi/api/mcp"
},
"return-decide": {
"url": "https://return.decide.fyi/api/mcp"
},
"trial-decide": {
"url": "https://trial.decide.fyi/api/mcp"
}
}
}
curl -X POST https://refund.decide.fyi/api/mcp \ -H "Content-Type: application/json" \ -d '{ "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "refund_eligibility", "arguments": { "vendor": "adobe", "days_since_purchase": 12, "region": "US", "plan": "individual" } } }'
curl -X POST https://refund.decide.fyi/api/v1/refund/eligibility \ -H "Content-Type: application/json" \ -d '{"vendor":"spotify","days_since_purchase":5,"region":"US","plan":"individual"}'
Deterministic outputs, no hidden state, and stable remotes for products that build on Decide.
Same canonical input and rulebook version, same output. Fully auditable decisions your agent can cite.
No sessions, no tokens, no stored data. Pure function over HTTP.
JSON-RPC 2.0 over HTTP POST. Works with Claude Desktop, Cursor, and any MCP client.
Adobe, Netflix, Spotify, Microsoft 365, and 96 more. Checked every 6 hours via automated source checks.
Reference validation runs sandbox-first; production Decision API access uses explicit keys and commercial runtime controls.
Full reference rules, source links, and server code on GitHub. Verify everything.
Use the proof surfaces to validate the primitive, then integrate Rulebook v1 where your workflow needs deterministic verdicts.