The AINumbers AuthZ access-decision API, wrapped in a Bazantic x402/MPP gateway with a published Recipe on top. The same task ran twice on the same model with the same API access: once with raw API info only, once with the Recipe. The Recipe is the only material difference.
A Bazantic gateway in front of the AINumbers AuthZ API (upstream https://mcp.ainumbers.co). No API key: payment is the auth.
Gateway URL https://ainumbers.bazgateway.com MCP server https://ainumbers.bazgateway.com/mcp (LIVE · 7 tools) Pricing $0.01 USDC / call per route Payouts Ready · receiving address 0x7900…4cE2 · first revenue already settled
Any unpaid call returns HTTP 402 with both payment rails advertised in the same challenge:
payment-required: x402 v2 · network "base" · USDC · 10000 units (= $0.01) · payTo 0x7900…4cE2 www-authenticate: Payment … method="tempo" ← the MPP rail
Give it plain-English access questions; get back a verifiable ruling table.
Any time a person or agent must prove who may do what: handovers, payment approvals, document deletions, any access review where a bare yes/no is not enough and the decision must carry a receipt.
The raw API punishes naive use: subject IDs must be resolved via search, a "soft delete" must become action properties {"soft":true}, and every decision should carry its governing rule and execution hash.
How: resolve canonical IDs, translate business wording into exact predicates, evaluate all questions in one batch call, return question | PERMIT/DENY | governing rule | execution hash.
| Test A: raw API info | Test B: the Recipe | |
|---|---|---|
| Task prompt | "Can Alice approve payment TX-042?" · "Can admin Bob soft-delete archived document DOC-7?" → ruling table with rule + execution hash | |
| Model | identical on both sides (the Recipe's designated model, run headlessly for Test A) | |
| API access | the OpenAPI spec the gateway ingested, plus the keyless base URL; the agent explores via shell | the published Recipe tool calling the same API through the gateway |
| Only material difference | the Recipe | |
Run 1: 5 API calls (health + 3 searches + 1 batch) · 28 s · 5 turns Run 2: 6+ API calls (searches + batches + self-invented "control probes") · 52 s · 7 turns
Verdicts were correct (it is a strong model) but:
18c6a750… / 73e773a6…Every successful run: searchSubjects → searchResources → searchActions → ONE evaluateBatch Fixed pipeline · stable token count · stable latency
| Question | Decision | Governing rule | Execution hash | | Can Alice approve payment TX-042? | DENY | default: deny | b2587c08… | | Can admin Bob soft-delete archived DOC-7? | PERMIT | delete: permit iff action.properties.soft == true | d3b64b76… |
Run 1 and Run 3 returned byte-identical tables: same canonical predicates, same execution hashes. Repeatable by construction.
| Metric (same model, same prompt, same API) | Raw (A) | Recipe (B) |
|---|---|---|
| API calls to answer | 5-6+, unbounded | 4, fixed |
| Wall-clock | 28 s / 52 s (varies) | stable |
| Agent turns / exploration | 5-7 turns, ad-hoc probes | fixed pipeline, one tool for the caller |
| Receipts (execution hash) | ad-hoc payloads → non-canonical hashes | canonical, identical across runs, auditable |
| Output contract | varies (caveats, format drift) | guaranteed ruling table |
| Cost for a paying agent | unbounded per-call spend | one Recipe call, one price |
The Recipe turns a strong-but-erratic agent into a deterministic, receipt-bearing compliance instrument: same model, same prompt, same API.
Gateway https://ainumbers.bazgateway.com (402 = pay per call)
MCP https://ainumbers.bazgateway.com/mcp
Recipe bazantic.com/recipes → "AuthZEN Access Control Ruling Table"
api.bazantic.com/v1/recipes/authzen-access-control-ruling-table
Upstream https://mcp.ainumbers.co (AINumbers.co · free · keyless · deterministic)