xytara 3.1.0 → 3.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (373) hide show
  1. package/.env.example +67 -58
  2. package/ADAPTER_START_HERE.md +56 -56
  3. package/CARRIED_HANDOFF_DEMO.md +60 -60
  4. package/EXAMPLE_PATHS.md +53 -53
  5. package/FINAL_CONTRACT.md +498 -498
  6. package/LICENSE +201 -201
  7. package/NOTICE +3 -3
  8. package/PARTNER_READY_PATH.md +71 -71
  9. package/PUBLIC_DEMO_SCRIPT.md +78 -78
  10. package/README.md +6 -1
  11. package/REAL_PAYMENT_SETUP.md +32 -3
  12. package/RELEASE_NOTES.md +14 -14
  13. package/SERVICE_CONTRACT.md +419 -419
  14. package/START_HERE.md +1 -1
  15. package/SUPABASE_RUNTIME_STATE_SETUP.md +61 -61
  16. package/TERMINOLOGY.md +50 -50
  17. package/WHY_XYTARA_XOONYA.md +63 -63
  18. package/XT1_EXECUTION_TRUTH_STANDARD.md +78 -78
  19. package/XYTARA_ADAPTER_PROTOCOL_TRUTH_MODEL.md +75 -75
  20. package/XYTARA_AUTONOMOUS_ENTRY_MODEL.md +124 -124
  21. package/XYTARA_DEFAULT_PATH_MODEL.md +84 -84
  22. package/XYTARA_EXECUTION_TRUTH_MODEL.md +171 -171
  23. package/XYTARA_PAYMENT_RAIL_TRUTH_MODEL.md +68 -68
  24. package/adapters/AUTHORING_GUIDE.md +243 -243
  25. package/adapters/ONBOARDING_POSTURE.md +61 -61
  26. package/adapters/THIRD_PARTY_SUBMISSION_PROCESS.md +84 -84
  27. package/adapters/adapter-manifest.schema.json +283 -283
  28. package/adapters/examples/example-execution-adapter.js +61 -61
  29. package/adapters/examples/example-execution-adapter.manifest.json +81 -81
  30. package/adapters/examples/example-settlement-adapter.js +55 -55
  31. package/adapters/examples/example-settlement-adapter.manifest.json +78 -78
  32. package/adapters/examples/example-third-party-acp-registration.submission-bundle.json +124 -124
  33. package/adapters/examples/example-third-party-erc8004-registration.submission-bundle.json +121 -121
  34. package/adapters/examples/example-third-party-identity-registration.certification-pack.json +22 -22
  35. package/adapters/examples/example-third-party-identity-registration.record.json +26 -26
  36. package/adapters/examples/example-third-party-identity-registration.submission-bundle.json +126 -126
  37. package/adapters/examples/example-third-party-langchain-registration.submission-bundle.json +124 -124
  38. package/adapters/examples/example-third-party-mpp-registration.submission-bundle.json +120 -120
  39. package/adapters/examples/example-third-party-registration.certification-pack.json +22 -22
  40. package/adapters/examples/example-third-party-registration.record.json +28 -28
  41. package/adapters/examples/example-third-party-registration.submission-bundle.json +126 -126
  42. package/adapters/examples/example-third-party-settlement-registration.certification-pack.json +22 -22
  43. package/adapters/examples/example-third-party-settlement-registration.record.json +26 -26
  44. package/adapters/examples/example-third-party-settlement-registration.submission-bundle.json +127 -127
  45. package/adapters/examples/langchain-reference-execution-adapter.js +81 -81
  46. package/adapters/examples/langchain-reference-execution-adapter.manifest.json +79 -79
  47. package/adapters/examples/langgraph-reference-execution-adapter.js +81 -81
  48. package/adapters/examples/langgraph-reference-execution-adapter.manifest.json +79 -79
  49. package/adapters/examples/minimal-third-party-execution-adapter.js +61 -61
  50. package/adapters/examples/minimal-third-party-execution-adapter.manifest.json +79 -79
  51. package/adapters/examples/minimal-third-party-execution-registration.record.json +26 -26
  52. package/adapters/examples/minimal-third-party-execution.certification-pack.json +22 -22
  53. package/adapters/examples/minimal-third-party-execution.submission-bundle.json +126 -126
  54. package/adapters/integration-certification-pack.schema.json +82 -82
  55. package/adapters/integration-registration-record.schema.json +114 -114
  56. package/adapters/integration-submission-bundle-set.schema.json +39 -39
  57. package/adapters/integration-submission-bundle.schema.json +34 -34
  58. package/adapters/interfaces.js +56 -56
  59. package/bin/xytara-first-run.js +244 -244
  60. package/bin/xytara-release.js +1429 -1429
  61. package/bin/xytara-run.js +186 -186
  62. package/bin/xytara.js +80 -80
  63. package/client.js +3 -3
  64. package/examples/_demo_env.js +40 -0
  65. package/examples/adapter_review_walkthrough.js +54 -53
  66. package/examples/export_carried_handoff.js +81 -80
  67. package/examples/funded_runtime_walkthrough.js +71 -70
  68. package/examples/generated.carried-handoff.json +30 -0
  69. package/examples/partner_launch_walkthrough.js +44 -43
  70. package/examples/quickstart.js +3256 -3255
  71. package/fixtures/catalog.js +1134 -1134
  72. package/index.js +395 -395
  73. package/integrations/dispatch.js +276 -276
  74. package/integrations/registry-snapshot.schema.json +36 -36
  75. package/integrations/registry.js +2261 -2261
  76. package/integrations/views.js +28 -28
  77. package/lib/a2a_lane_contract.js +104 -104
  78. package/lib/a2c_lane_contract.js +111 -111
  79. package/lib/account_auth.js +518 -518
  80. package/lib/acp_lane_contract.js +54 -54
  81. package/lib/activity_audit_contract.js +322 -322
  82. package/lib/adapter_certification_contract.js +130 -130
  83. package/lib/adapter_depth_contract.js +156 -156
  84. package/lib/adapter_pack.js +118 -118
  85. package/lib/adapter_partner_pack.js +89 -89
  86. package/lib/adapter_promotion_pack.js +89 -89
  87. package/lib/adapter_protocol_truth_contract.js +229 -229
  88. package/lib/announcement_pack.js +61 -61
  89. package/lib/artifact_distribution_lane_contract.js +54 -54
  90. package/lib/asyncapi_contract.js +150 -150
  91. package/lib/auth_interop_contract.js +80 -80
  92. package/lib/authority_binding_lifecycle_contract.js +182 -182
  93. package/lib/autonomous_entry_contract.js +409 -409
  94. package/lib/bolt_lane_contract.js +55 -55
  95. package/lib/bolt_payment_front.js +172 -172
  96. package/lib/business_cockpit.js +378 -378
  97. package/lib/capability_execution_truth.js +272 -272
  98. package/lib/capability_registry.js +633 -633
  99. package/lib/catalog_contract.js +966 -966
  100. package/lib/catalog_family_model.js +193 -193
  101. package/lib/catalog_views.js +55 -55
  102. package/lib/checkout_event_security.js +142 -142
  103. package/lib/cloudevents_contract.js +80 -80
  104. package/lib/command_flow.js +411 -406
  105. package/lib/commerce_artifacts.js +503 -503
  106. package/lib/commerce_authority.js +449 -449
  107. package/lib/commerce_cases.js +317 -317
  108. package/lib/commerce_checkout.js +509 -509
  109. package/lib/commerce_client.js +7687 -7676
  110. package/lib/commerce_coordination.js +346 -346
  111. package/lib/commerce_economics.js +4017 -4016
  112. package/lib/commerce_identity.js +578 -578
  113. package/lib/commerce_quotes.js +237 -237
  114. package/lib/commerce_reports.js +14461 -14461
  115. package/lib/commerce_runtime.js +315 -315
  116. package/lib/commerce_shell.js +257 -257
  117. package/lib/crypto_agility_matrix.js +125 -125
  118. package/lib/default_path_contract.js +412 -412
  119. package/lib/delivery_summary_contract.js +95 -95
  120. package/lib/ecosystem_entry.js +64 -64
  121. package/lib/erc8004_lane_contract.js +65 -65
  122. package/lib/event_system_lane_contract.js +75 -75
  123. package/lib/execution_truth_contract.js +234 -234
  124. package/lib/external_credit_bridge.js +142 -142
  125. package/lib/external_execution_runtime.js +132 -132
  126. package/lib/feature_control_lane_contract.js +54 -54
  127. package/lib/first_run_conversion_contract.js +290 -290
  128. package/lib/framework_lane_contract.js +89 -89
  129. package/lib/framework_provider_promotion.js +235 -235
  130. package/lib/full_catalog_contract.js +525 -525
  131. package/lib/go_live_operator_pack.js +391 -391
  132. package/lib/http_transport.js +73 -73
  133. package/lib/identity_auth.js +175 -175
  134. package/lib/identity_interop_contract.js +82 -82
  135. package/lib/integration_matrix_contract.js +102 -102
  136. package/lib/l402_lane_contract.js +55 -55
  137. package/lib/l402_payment_front.js +192 -192
  138. package/lib/launch_narrative.js +53 -53
  139. package/lib/lifecycle_continuity_contract.js +115 -115
  140. package/lib/machine_identity_registry_contract.js +199 -199
  141. package/lib/major_rails_lane_contract.js +150 -150
  142. package/lib/market_lane_contract.js +467 -467
  143. package/lib/market_lane_depth_contract.js +182 -182
  144. package/lib/market_lane_promotion_contract.js +210 -210
  145. package/lib/market_lane_trace_contract.js +278 -278
  146. package/lib/mcp_lane_contract.js +137 -137
  147. package/lib/network_transport.js +110 -110
  148. package/lib/offline_verifiability_recovery_contract.js +155 -155
  149. package/lib/openapi_contract.js +296 -296
  150. package/lib/operational_receipt_contract.js +165 -165
  151. package/lib/operator_intelligence.js +407 -407
  152. package/lib/outreach_copy_pack.js +51 -51
  153. package/lib/outreach_message_pack.js +71 -71
  154. package/lib/outreach_proof.js +71 -71
  155. package/lib/outreach_target_pack.js +60 -60
  156. package/lib/partner_intelligence.js +105 -105
  157. package/lib/payment_config.js +239 -191
  158. package/lib/payment_front_registry.js +53 -53
  159. package/lib/payment_protocol_contract.js +165 -165
  160. package/lib/payment_rail_truth_contract.js +324 -324
  161. package/lib/payment_verification.js +312 -264
  162. package/lib/phase_10_closeout_pack.js +45 -45
  163. package/lib/phase_10_completion_pack.js +76 -76
  164. package/lib/phase_10_decision_record_pack.js +54 -54
  165. package/lib/phase_10_decision_resolution_pack.js +53 -53
  166. package/lib/phase_10_demand_signal_adapters_runtime_pack.js +74 -74
  167. package/lib/phase_10_ecosystem_backlog_triage_runtime_pack.js +74 -74
  168. package/lib/phase_10_freeze_baseline_pack.js +67 -67
  169. package/lib/phase_10_freeze_review_pack.js +64 -64
  170. package/lib/phase_10_gate_pack.js +57 -57
  171. package/lib/phase_10_long_tail_continuity_pack.js +80 -80
  172. package/lib/phase_10_long_tail_ecosystem_pack.js +66 -66
  173. package/lib/phase_10_niche_extension_registry_runtime_pack.js +74 -74
  174. package/lib/phase_1_claude_mcp_pack.js +60 -60
  175. package/lib/phase_1_claude_mcp_runtime_pack.js +52 -52
  176. package/lib/phase_1_ecosystem_pack.js +67 -67
  177. package/lib/phase_1_openai_codex_pack.js +60 -60
  178. package/lib/phase_1_openai_codex_runtime_pack.js +52 -52
  179. package/lib/phase_2_base_runtime_pack.js +71 -71
  180. package/lib/phase_2_base_usdc_runtime_pack.js +72 -72
  181. package/lib/phase_2_closeout_pack.js +65 -65
  182. package/lib/phase_2_completion_pack.js +113 -113
  183. package/lib/phase_2_decision_record_pack.js +66 -66
  184. package/lib/phase_2_decision_resolution_pack.js +69 -69
  185. package/lib/phase_2_eth_runtime_pack.js +70 -70
  186. package/lib/phase_2_evm_base_runtime_pack.js +73 -73
  187. package/lib/phase_2_evm_runtime_pack.js +71 -71
  188. package/lib/phase_2_flip_preview_pack.js +60 -60
  189. package/lib/phase_2_freeze_review_pack.js +99 -99
  190. package/lib/phase_2_gate_pack.js +77 -77
  191. package/lib/phase_2_payment_rails_pack.js +71 -71
  192. package/lib/phase_2_usdc_runtime_pack.js +71 -71
  193. package/lib/phase_3_brc_runtime_pack.js +81 -81
  194. package/lib/phase_3_bsv_teranode_runtime_pack.js +83 -83
  195. package/lib/phase_3_closeout_pack.js +62 -62
  196. package/lib/phase_3_completion_pack.js +94 -94
  197. package/lib/phase_3_decision_record_pack.js +64 -64
  198. package/lib/phase_3_decision_resolution_pack.js +69 -69
  199. package/lib/phase_3_freeze_baseline_pack.js +67 -67
  200. package/lib/phase_3_freeze_review_pack.js +80 -80
  201. package/lib/phase_3_gate_pack.js +76 -76
  202. package/lib/phase_3_metanet_runtime_pack.js +81 -81
  203. package/lib/phase_3_native_bsv_pack.js +91 -91
  204. package/lib/phase_3_native_continuity_pack.js +82 -82
  205. package/lib/phase_4_attestation_runtime_pack.js +75 -75
  206. package/lib/phase_4_closeout_pack.js +45 -45
  207. package/lib/phase_4_completion_pack.js +94 -94
  208. package/lib/phase_4_decision_record_pack.js +54 -54
  209. package/lib/phase_4_decision_resolution_pack.js +45 -45
  210. package/lib/phase_4_erc8004_runtime_pack.js +76 -76
  211. package/lib/phase_4_freeze_baseline_pack.js +67 -67
  212. package/lib/phase_4_freeze_review_pack.js +68 -68
  213. package/lib/phase_4_gate_pack.js +58 -58
  214. package/lib/phase_4_identity_registry_runtime_pack.js +75 -75
  215. package/lib/phase_4_identity_trust_pack.js +73 -73
  216. package/lib/phase_4_trust_continuity_pack.js +86 -86
  217. package/lib/phase_5_antelope_runtime_pack.js +76 -76
  218. package/lib/phase_5_closeout_pack.js +44 -44
  219. package/lib/phase_5_completion_pack.js +82 -82
  220. package/lib/phase_5_constellation_dag_runtime_pack.js +76 -76
  221. package/lib/phase_5_decision_record_pack.js +54 -54
  222. package/lib/phase_5_decision_resolution_pack.js +45 -45
  223. package/lib/phase_5_digibyte_dgb_runtime_pack.js +76 -76
  224. package/lib/phase_5_freeze_baseline_pack.js +67 -67
  225. package/lib/phase_5_freeze_review_pack.js +68 -68
  226. package/lib/phase_5_gate_pack.js +58 -58
  227. package/lib/phase_5_hedera_hbar_runtime_pack.js +76 -76
  228. package/lib/phase_5_kaspa_kas_runtime_pack.js +76 -76
  229. package/lib/phase_5_major_rails_continuity_pack.js +86 -86
  230. package/lib/phase_5_major_rails_pack.js +110 -110
  231. package/lib/phase_5_metal_runtime_pack.js +76 -76
  232. package/lib/phase_5_polkadot_dot_runtime_pack.js +76 -76
  233. package/lib/phase_5_proton_xpr_runtime_pack.js +76 -76
  234. package/lib/phase_5_solana_runtime_pack.js +76 -76
  235. package/lib/phase_6_autogen_runtime_pack.js +72 -72
  236. package/lib/phase_6_closeout_pack.js +46 -46
  237. package/lib/phase_6_completion_pack.js +77 -77
  238. package/lib/phase_6_decision_record_pack.js +54 -54
  239. package/lib/phase_6_decision_resolution_pack.js +53 -53
  240. package/lib/phase_6_framework_continuity_pack.js +81 -81
  241. package/lib/phase_6_framework_runtime_pack.js +68 -68
  242. package/lib/phase_6_freeze_baseline_pack.js +68 -68
  243. package/lib/phase_6_freeze_review_pack.js +65 -65
  244. package/lib/phase_6_gate_pack.js +59 -59
  245. package/lib/phase_6_langchain_runtime_pack.js +72 -72
  246. package/lib/phase_6_langgraph_runtime_pack.js +72 -72
  247. package/lib/phase_6_semantic_kernel_runtime_pack.js +72 -72
  248. package/lib/phase_7_closeout_pack.js +45 -45
  249. package/lib/phase_7_completion_pack.js +85 -85
  250. package/lib/phase_7_decision_record_pack.js +53 -53
  251. package/lib/phase_7_decision_resolution_pack.js +53 -53
  252. package/lib/phase_7_event_system_continuity_pack.js +89 -89
  253. package/lib/phase_7_event_system_pack.js +76 -76
  254. package/lib/phase_7_freeze_baseline_pack.js +74 -74
  255. package/lib/phase_7_freeze_review_pack.js +65 -65
  256. package/lib/phase_7_gate_pack.js +58 -58
  257. package/lib/phase_7_kafka_runtime_pack.js +74 -74
  258. package/lib/phase_7_mqtt_runtime_pack.js +74 -74
  259. package/lib/phase_7_nats_runtime_pack.js +74 -74
  260. package/lib/phase_7_webhook_event_bus_runtime_pack.js +74 -74
  261. package/lib/phase_8_closeout_pack.js +46 -46
  262. package/lib/phase_8_completion_pack.js +82 -82
  263. package/lib/phase_8_decision_record_pack.js +54 -54
  264. package/lib/phase_8_decision_resolution_pack.js +53 -53
  265. package/lib/phase_8_external_receipt_import_runtime_pack.js +74 -74
  266. package/lib/phase_8_external_result_import_runtime_pack.js +74 -74
  267. package/lib/phase_8_freeze_baseline_pack.js +71 -71
  268. package/lib/phase_8_freeze_review_pack.js +64 -64
  269. package/lib/phase_8_gate_pack.js +58 -58
  270. package/lib/phase_8_proof_bridge_continuity_pack.js +86 -86
  271. package/lib/phase_8_proof_bridges_pack.js +72 -72
  272. package/lib/phase_8_proof_bundle_normalization_runtime_pack.js +74 -74
  273. package/lib/phase_9_closeout_pack.js +46 -46
  274. package/lib/phase_9_completion_pack.js +82 -82
  275. package/lib/phase_9_custody_refs_runtime_pack.js +74 -74
  276. package/lib/phase_9_decision_record_pack.js +54 -54
  277. package/lib/phase_9_decision_resolution_pack.js +53 -53
  278. package/lib/phase_9_freeze_baseline_pack.js +71 -71
  279. package/lib/phase_9_freeze_review_pack.js +64 -64
  280. package/lib/phase_9_gate_pack.js +58 -58
  281. package/lib/phase_9_operator_accounting_bridges_runtime_pack.js +74 -74
  282. package/lib/phase_9_treasury_connectivity_pack.js +72 -72
  283. package/lib/phase_9_treasury_continuity_pack.js +86 -86
  284. package/lib/phase_9_treasury_destinations_runtime_pack.js +74 -74
  285. package/lib/phase_program_pack.js +120 -120
  286. package/lib/pricing_optimization_contract.js +775 -775
  287. package/lib/protocol_lane_contract.js +117 -117
  288. package/lib/provenance_lane_contract.js +54 -54
  289. package/lib/provider_lane_contract.js +240 -240
  290. package/lib/provider_runtime_journey_contract.js +183 -183
  291. package/lib/public_surface_policy_contract.js +111 -111
  292. package/lib/publish_plan.js +51 -51
  293. package/lib/record_queries.js +48 -48
  294. package/lib/release_candidate.js +50 -50
  295. package/lib/release_center.js +1093 -1093
  296. package/lib/release_history.js +205 -205
  297. package/lib/release_manifest.js +113 -113
  298. package/lib/release_pack.js +453 -453
  299. package/lib/request_rate_limit.js +144 -144
  300. package/lib/resource_views.js +31 -31
  301. package/lib/revenue_launch_path_contract.js +326 -326
  302. package/lib/route_matchers.js +34 -34
  303. package/lib/route_params.js +19 -19
  304. package/lib/runtime_bridge.js +124 -124
  305. package/lib/runtime_operations_worker.js +282 -282
  306. package/lib/runtime_state_store.js +354 -354
  307. package/lib/settlement_lane_contract.js +111 -111
  308. package/lib/shared_signals_lane_contract.js +54 -54
  309. package/lib/signed_audit_provenance_contract.js +83 -83
  310. package/lib/soft_launch_pack.js +78 -78
  311. package/lib/stablecoin_lane_contract.js +76 -76
  312. package/lib/stripe_mpp_lane_contract.js +96 -96
  313. package/lib/stripe_mpp_payment_front.js +158 -158
  314. package/lib/telemetry_lane_contract.js +54 -54
  315. package/lib/treasury_destinations_contract.js +764 -764
  316. package/lib/treasury_egress_policy_contract.js +91 -91
  317. package/lib/treasury_lane_contract.js +84 -84
  318. package/lib/trust_portability_boundary_contract.js +72 -72
  319. package/lib/x402_facilitator.js +155 -0
  320. package/lib/x402_lane_contract.js +118 -118
  321. package/package.json +106 -105
  322. package/scripts/registry_cli.js +275 -275
  323. package/scripts/verify_adapters.js +554 -554
  324. package/scripts/verify_all.js +4962 -4962
  325. package/scripts/verify_control_plane_contracts.js +34 -34
  326. package/scripts/verify_control_plane_routes.js +70 -70
  327. package/scripts/verify_delivery_summary.js +112 -112
  328. package/scripts/verify_examples.js +19 -19
  329. package/scripts/verify_first_run_conversions.js +81 -81
  330. package/scripts/verify_framework_provider_promotion.js +152 -152
  331. package/scripts/verify_full_catalog.js +174 -174
  332. package/scripts/verify_integrations.js +620 -620
  333. package/scripts/verify_lifecycle_continuity.js +96 -96
  334. package/scripts/verify_market_lane_depth.js +94 -94
  335. package/scripts/verify_market_lane_promotion.js +103 -103
  336. package/scripts/verify_market_lane_traces.js +98 -98
  337. package/scripts/verify_market_lanes.js +102 -102
  338. package/scripts/verify_operator_observability_boundary.js +83 -83
  339. package/scripts/verify_pricing_experiment_plan.js +124 -124
  340. package/scripts/verify_provider_runtime_breadth.js +109 -109
  341. package/scripts/verify_provider_runtime_journeys.js +111 -111
  342. package/scripts/verify_revenue_launch_paths.js +105 -105
  343. package/scripts/verify_runtime_durability.js +52 -52
  344. package/scripts/verify_service.js +15410 -15250
  345. package/scripts/verify_tooling.js +1412 -1412
  346. package/scripts/verify_treasury_public_boundary.js +97 -97
  347. package/scripts/verify_x402_facilitator.js +174 -0
  348. package/server.js +11117 -11006
  349. package/.env.production.checklist +0 -77
  350. package/.env.production.template +0 -54
  351. package/.github/workflows/publish-mcp-executor.yml +0 -43
  352. package/ADAPTER_PARTNER_PATH.md +0 -47
  353. package/ADAPTER_PROMOTION_START_HERE.md +0 -44
  354. package/BOLT_BINDINGS.production.worksheet.json +0 -31
  355. package/EXECUTION_TARGETS.production.worksheet.json +0 -73
  356. package/GO_LIVE_OPERATOR_PACK.md +0 -412
  357. package/L402_BINDINGS.production.worksheet.json +0 -30
  358. package/OPERATIONS_RUNBOOK.md +0 -115
  359. package/OPERATOR_START_HERE.md +0 -63
  360. package/OUTREACH_MESSAGES.md +0 -19
  361. package/OUTREACH_START_HERE.md +0 -36
  362. package/PRODUCTION_MANUAL_CLOSEOUT_SEQUENCE.md +0 -172
  363. package/PROGRAM_COMPLETE_RELEASE.md +0 -63
  364. package/PROGRAM_STATUS.md +0 -57
  365. package/PUBLISH_PLAN.md +0 -26
  366. package/RELEASE_CHECKLIST.md +0 -16
  367. package/SOFT_LAUNCH_KIT.md +0 -47
  368. package/services/mcp-execution-target/DISCOVERY_REGISTRY_PLAYBOOK.md +0 -141
  369. package/services/mcp-execution-target/README.md +0 -319
  370. package/services/mcp-execution-target/package.json +0 -14
  371. package/services/mcp-execution-target/server.js +0 -1031
  372. package/services/mcp-execution-target/server.json +0 -16
  373. package/services/mcp-execution-target/verify.js +0 -308
@@ -1,419 +1,419 @@
1
- # xytara Service Contract
2
-
3
- This file freezes the public service contract for `xytara`.
4
-
5
- ## Public Routes
6
-
7
- Core routes:
8
-
9
- - `GET /health`
10
- - `GET /openapi.json`
11
- - `GET /v1/openapi`
12
- - `GET /v1/openapi/summary`
13
- - `GET /asyncapi.json`
14
- - `GET /v1/asyncapi`
15
- - `GET /v1/asyncapi/summary`
16
- - `GET /cloudevents.json`
17
- - `GET /v1/cloudevents`
18
- - `GET /v1/cloudevents/summary`
19
- - `GET /v1/auth-profiles`
20
- - `GET /v1/auth-profiles/summary`
21
- - `GET /v1/identity-interop`
22
- - `GET /v1/identity-interop/summary`
23
- - `GET /v1/providers`
24
- - `GET /v1/providers/summary`
25
- - `GET /v1/frameworks`
26
- - `GET /v1/frameworks/summary`
27
- - `GET /v1/protocols`
28
- - `GET /v1/protocols/summary`
29
- - `GET /v1/integration-matrix`
30
- - `GET /v1/integration-matrix/summary`
31
- - `GET /v1/mcp`
32
- - `GET /v1/mcp/summary`
33
- - `GET /v1/mcp/tools`
34
- - `GET /v1/a2a`
35
- - `GET /v1/a2a/summary`
36
- - `GET /v1/a2c`
37
- - `GET /v1/a2c/summary`
38
- - `GET /v1/x402`
39
- - `GET /v1/x402/summary`
40
- - `GET /v1/payment-protocols`
41
- - `GET /v1/payment-protocols/summary`
42
- - `GET /v1/settlement`
43
- - `GET /v1/settlement/summary`
44
- - `GET /v1/stripe-mpp`
45
- - `GET /v1/stripe-mpp/summary`
46
- - `GET /v1/stablecoins`
47
- - `GET /v1/stablecoins/summary`
48
- - `GET /v1/major-rails`
49
- - `GET /v1/major-rails/summary`
50
- - `GET /v1/treasury`
51
- - `GET /v1/treasury/summary`
52
- - `GET /v1/pricing-optimization`
53
- - `GET /v1/pricing-optimization/summary`
54
- - `GET /v1/pricing-optimization/quote-abandonment-summary`
55
- - `GET /v1/pricing-optimization/quote-cohorts`
56
- - `GET /v1/pricing-optimization/recommendations`
57
- - `GET /v1/activity-ledger`
58
- - `GET /v1/activity-ledger/summary`
59
- - `GET /v1/operator-observability`
60
- - `GET /v1/operator-observability/summary`
61
- - `GET /v1/business-cockpit`
62
- - `GET /v1/business-cockpit/summary`
63
- - `GET /business-cockpit`
64
- - `GET /v1/treasury-destinations`
65
- - `GET /v1/treasury-destinations/summary`
66
- - `GET /v1/treasury-destinations/operator-pack`
67
- - `GET /v1/treasury-destinations/operator-pack/summary`
68
- - `POST /v1/treasury-destinations/validate-preview`
69
- - `GET /v1/treasury-egress-policy`
70
- - `GET /v1/treasury-egress-policy/summary`
71
- - `GET /v1/erc8004`
72
- - `GET /v1/erc8004/summary`
73
- - `GET /v1/event-systems`
74
- - `GET /v1/event-systems/summary`
75
- - `GET /v1/telemetry`
76
- - `GET /v1/telemetry/summary`
77
- - `GET /v1/provenance`
78
- - `GET /v1/provenance/summary`
79
- - `GET /v1/artifact-distribution`
80
- - `GET /v1/artifact-distribution/summary`
81
- - `GET /v1/shared-signals`
82
- - `GET /v1/shared-signals/summary`
83
- - `GET /v1/feature-control`
84
- - `GET /v1/feature-control/summary`
85
- - `GET /v1/adapter-certification`
86
- - `GET /v1/adapter-certification/summary`
87
- - `GET /v1/adapter-certification/:front_id`
88
- - `GET /v1/trust-portability-boundary`
89
- - `GET /v1/trust-portability-boundary/summary`
90
- - `GET /v1/trust-portability-boundary/:axis_id`
91
- - `GET /v1/signed-audit-provenance`
92
- - `GET /v1/signed-audit-provenance/summary`
93
- - `GET /v1/signed-audit-provenance/:surface_id`
94
- - `GET /v1/catalog`
95
- - `GET /v1/catalog/summary`
96
- - `GET /v1/catalog/task?ref=<task_ref_or_alias>`
97
- - `GET /v1/catalog/workflows`
98
- - `GET /v1/catalog/workflow?ref=<workflow_ref_or_alias>`
99
- - `GET /v1/credit-packs`
100
- - `GET /v1/credit-packs/summary`
101
- - `GET /v1/credit-pack?ref=<pack_id>`
102
- - `GET /v1/integrations`
103
- - `GET /v1/integrations/summary`
104
- - `GET /v1/integrations/classes`
105
- - `GET /v1/integrations/protocols`
106
- - `GET /v1/integrations/settlement-modes`
107
- - `GET /v1/account-auth/spend-credentials`
108
- - `POST /v1/account-auth/spend-credentials`
109
- - `GET /v1/account-auth/spend-credentials/:credential_id`
110
- - `POST /v1/account-auth/spend-credentials/:credential_id/revoke`
111
- - `POST /v1/payment-quotes`
112
- - `POST /v1/commands/execute`
113
- - `POST /x402/commands/execute`
114
-
115
- Operational note:
116
-
117
- - for production acceptance, `POST /x402/commands/execute` and `POST /x402/mcp/tools/invoke` should normally run with `XYTARA_PAYMENT_VERIFICATION_MODE=local_signed` or a stronger verifier mode
118
- - `GET /v1/identity-interop` exposes how native authority and machine identity map to `JWT`, `DID/VC`, and `SD-JWT VC` interop lanes without replacing the native runtime authority model
119
- - `GET /v1/x402` exposes the first-class quote -> challenge -> pay -> execute lane for paid machine execution
120
- - `GET /v1/payment-protocols` makes the charging boundary explicit: keep auth, discovery, docs, catalog, and lightweight preview free while keeping execution, credit consumption, and consequence-bearing runtime work paid
121
- - `GET /v1/settlement` exposes the settlement family map across native BSV/Teranode, EVM/Base/USDC, and the major-rails family
122
- - `GET /v1/stripe-mpp` exposes the hosted-checkout and external-funding entry lane without making provider-specific checkout semantics the center of the stack
123
- - `GET /v1/stablecoins` exposes the current USDC/Base runtime family and marks Circle Nanopayments/CCTP as adapter-ready extensions instead of pretending they are already core first-party rails
124
- - `GET /v1/major-rails` exposes Solana plus the Antelope/Proton XPR/Metal family as one practical non-default settlement lane
125
- - `GET /v1/treasury` exposes the treasury-connectivity posture and the internal reserve doctrine of BSV/Teranode plus DAI/USDC, with Monero retained only as an optional hidden privacy reserve
126
- - `GET /v1/pricing-optimization` exposes minimum charge floors, starter pricing posture, credit-pack breakpoints, high-consequence premium multipliers, and quote abandonment visibility so revenue posture is reviewable instead of implicit
127
- - `GET /v1/pricing-optimization/quote-cohorts` and `GET /v1/pricing-optimization/recommendations` expose how quote conversion and abandonment behave by pricing band, payment protocol, and settlement mode so monetization tuning can be data-shaped rather than guessed
128
- - `GET /v1/activity-ledger` exposes one operator-grade ledger across quote, payment, settlement, delivery, dispute, refund, credit-grant, bridge, and integration-admission activity so operators can answer who did what, paid what, received what, and through which route
129
- - `GET /v1/operator-observability` exposes a protected read-only pack across activity, payment, delivery, settlement, adapter failure, credit-grant, and pricing telemetry posture without moving funds or submitting settlements
130
- - `GET /v1/business-cockpit` and `GET /business-cockpit` expose one protected operator analytics surface that bundles release posture, treasury landing truth, runtime activity, settlement readiness, and linked proof-facing health into a single private JSON or HTML cockpit
131
- - `GET /v1/treasury-destinations` is public-readiness only: it shows which rails are operationally configured without exposing actual landing references
132
- - `GET /v1/treasury-destinations/operator-pack` is the operator-only custody surface and is where real destination references belong
133
- - `POST /v1/treasury-destinations/validate-preview` lets operators preview per-rail custody readiness before they claim a rail as operational
134
- - `GET /v1/treasury-egress-policy` makes the treasury black-hole posture explicit: funds can come in easily through configured rails, but treasury release remains blocked until manual operator review with explicit reason and signoff
135
- - when `XYTARA_ACCOUNT_AUTH_BEARER_TOKEN` is configured, `GET /v1/activity-ledger`, `GET /v1/operator-observability`, `GET /v1/business-cockpit`, `GET /v1/business-cockpit/summary`, `GET /business-cockpit`, `GET /v1/treasury-destinations/operator-pack`, `POST /v1/treasury-destinations/validate-preview`, and `GET /v1/treasury-egress-policy` require that bearer token
136
- - `GET /v1/providers` exposes the OpenAI Codex and Claude/MCP family as first-class provider entry lanes
137
- - `GET /v1/frameworks` exposes LangGraph, LangChain, AutoGen, and Semantic Kernel as the primary runtime framework lanes, with CrewAI and LlamaIndex surfaced as registry-backed framework breadth
138
- - `GET /v1/protocols` exposes the canonical protocol and transport family across MCP, A2A, A2C, ACP, gRPC, Kafka, NATS, MQTT, ROS2, and webhook-event-bus posture
139
- - `GET /v1/integration-matrix` exposes the canonical public view across providers, frameworks, protocols, payments, settlement families, and registry-backed integrations
140
- - `GET /v1/telemetry` exposes the OpenTelemetry-aligned observability posture across runtime traces, metrics, logs, and event carry
141
- - `GET /v1/provenance` exposes the SLSA-aligned release and execution provenance posture for runtime trust and adoption
142
- - `GET /v1/artifact-distribution` exposes OCI-style artifact distribution posture for adapters, submission bundles, registry snapshots, and release artifacts
143
- - `GET /v1/shared-signals` exposes OpenID Shared Signals and CAEP-aligned risk and identity event exchange posture without replacing native runtime decisions
144
- - `GET /v1/feature-control` exposes OpenFeature/OFREP-aligned rollout and policy portability posture across pricing, authority, identity, trust, and release gates
145
- - `GET /v1/adapter-certification` exposes the front-specific adapter certification contract and its machine-readable compatibility states
146
- - `GET /v1/trust-portability-boundary` exposes the bounded trust portability contract for identity, delegation, delivery, and settlement-linked followthrough
147
- - `GET /v1/signed-audit-provenance` exposes the signed audit and provenance surface map for selected evidence-bearing runtime and release lanes
148
- - accepted payments then flow into payment-ledger, treasury-summary, rail-summary, and reconciliation surfaces
149
- - the default first-party settlement posture is now `bsv_teranode`, and `x402` challenge quotes carry native BSV/Teranode settlement hints when that default path is in use
150
- - the default machine-payment lane remains `x402`, while credits and `stripe_mpp` provide repeat-use and human-funding paths, and future protocol expansion should normally enter through the payment front rather than replacing the default machine lane
151
- - quote-based pricing is intentionally preferred over flat pricing because it protects margin on high-consequence work without overpricing small utility flows, but quote abandonment and conversion should still be monitored through the pricing-optimization layer
152
- - production acceptance on `bsv_teranode`, `evm`, `base`, `usdc`, `dai`, or `monero` should only be claimed once the corresponding treasury destination is explicitly configured and visible through `GET /v1/treasury-destinations`, with real custody details limited to `GET /v1/treasury-destinations/operator-pack`
153
- - in production, `POST /v1/credit-bridge/grants` should normally require `authorization: Bearer <token>` backed by `XYTARA_CREDIT_BRIDGE_BEARER_TOKEN`
154
- - in production, spend-credential issuance/revoke should normally require `authorization: Bearer <token>` backed by `XYTARA_ACCOUNT_AUTH_BEARER_TOKEN`
155
-
156
- Named first-class lanes:
157
-
158
- - `POST /v1/trust/handoffs/emit`
159
- - `POST /v1/trust/handoffs/validate`
160
- - `POST /v1/execution-receipts/handoffs/emit`
161
- - `POST /v1/execution-receipts/handoffs/validate`
162
- - `POST /v1/receipt-ledger/handoffs/emit`
163
- - `POST /v1/receipt-ledger/handoffs/validate`
164
- - `POST /v1/admission/preview`
165
- - `POST /v1/runtime/emit`
166
- - `POST /v1/runtime/anchor`
167
- - `POST /v1/runtime/emit-anchor`
168
- - `POST /v1/registry/register`
169
- - `POST /v1/anchoring/submit`
170
- - `GET /v1/coordination-center`
171
- - `GET /v1/coordination-center/summary`
172
- - `GET /v1/zones`
173
- - `GET /v1/zones/compatibility-profiles`
174
- - `GET /v1/zones/:zoneId/constitution`
175
- - `POST /v1/coordination-center/interpretation-handoff/validate`
176
- - `POST /v1/coordination-center/handshake-preview`
177
- - `POST /v1/coordination-center/cross-zone-preview`
178
- - `POST /v1/coordination-center/admission-case-projection`
179
- - `POST /v1/coordination-center/admission-case-bundle`
180
- - `POST /v1/coordination-center/operator-view`
181
- - `POST /v1/coordination-center/admin-view`
182
- - `POST /v1/coordination-center/admission-ops-pack`
183
- - `POST /v1/coordination-center/admission-workflow-pack`
184
- - `POST /v1/coordination-center/coordination-pack`
185
- - `POST /v1/coordination-center/review-link`
186
- - `GET /v1/coordination-center/zones-dashboard`
187
- - `POST /v1/coordination-center/zones-dashboard-pack`
188
- - `POST /v1/mcp/tools/invoke`
189
- - `POST /x402/mcp/tools/invoke`
190
- - `GET /v1/settlement/bsv-teranode`
191
- - `GET /v1/settlement/bsv-teranode/:settlement_id`
192
- - `POST /v1/settlement/bsv-teranode/:settlement_id/submit`
193
- - `POST /v1/settlement/bsv-teranode/:settlement_id/refresh`
194
-
195
- Lifecycle and operator routes:
196
-
197
- - `GET /v1/payment-quotes`
198
- - `GET /v1/payment-quotes/:quote_id`
199
- - `GET /v1/governed-transactions`
200
- - `GET /v1/governed-transactions/:transaction_id`
201
- - `GET /v1/receipts`
202
- - `GET /v1/receipts/:receipt_id`
203
- - `GET /v1/payment-ledger`
204
- - `GET /v1/payment-ledger/:payment_id`
205
- - `GET /v1/deliveries`
206
- - `GET /v1/deliveries/:delivery_id`
207
- - `GET /v1/disputes`
208
- - `POST /v1/disputes`
209
- - `GET /v1/disputes/:dispute_id`
210
- - `POST /v1/disputes/:dispute_id/actions`
211
- - `GET /v1/refunds`
212
- - `POST /v1/refunds`
213
- - `GET /v1/refunds/:refund_id`
214
- - `POST /v1/refunds/:refund_id/actions`
215
- - `POST /v1/remediation-tickets`
216
- - `GET /v1/remediation-tickets`
217
- - `GET /v1/remediation-tickets/:ticket_id`
218
- - `POST /v1/remediation-tickets/:ticket_id/actions`
219
- - `GET /v1/reconciliation-report`
220
- - `GET /v1/operator-export-pack`
221
- - `GET /v1/operations/dashboard`
222
- - `GET /v1/operations/attention-records`
223
- - `GET /v1/operator-shell`
224
- - `GET /v1/operator-shell/summary`
225
- - `POST /v1/operator-shell/summary`
226
- - `POST /v1/operator-shell/workflow-pack`
227
- - `POST /v1/operator-shell/admin-pack`
228
- - `GET /v1/agent-accounts`
229
- - `POST /v1/agent-accounts`
230
- - `GET /v1/agent-accounts/:account_id`
231
- - `POST /v1/economics/budgets`
232
- - `POST /v1/economics/budgets/:budget_id/status`
233
- - `POST /v1/economics/agents`
234
- - `POST /v1/economics/agents/:agent_id/status`
235
- - `POST /v1/economics/receipts`
236
- - `POST /v1/economics/receipts/:receipt_id/lifecycle`
237
- - `POST /v1/economics/receipts/:receipt_id/operator-action`
238
- - `POST /v1/economics/allocations/mint`
239
- - `POST /v1/economics/allocations/reverse`
240
- - `POST /v1/economics/rails/credits/preview`
241
- - `POST /v1/economics/rails/credits/apply`
242
- - `POST /v1/economics/metering/preview`
243
- - `POST /v1/economics/handoff-bundles/economic-consequence`
244
- - `POST /v1/economics/rails/credits/preview-spend`
245
- - `POST /v1/economics/rails/credits/consume`
246
- - `GET /v1/credit-bridge/grants`
247
- - `POST /v1/credit-bridge/grants`
248
- - `GET /v1/credit-bridge/grants/:grant_id`
249
- - `GET /v1/checkout/purchase-intents`
250
- - `POST /v1/checkout/purchase-intents`
251
- - `GET /v1/checkout/purchase-intents/:purchase_intent_id`
252
- - `GET /v1/checkout/purchase-intents/:purchase_intent_id/sessions`
253
- - `POST /v1/checkout/purchase-intents/:purchase_intent_id/session`
254
- - `GET /v1/checkout/purchase-intents/:purchase_intent_id/refunds`
255
- - `POST /v1/checkout/purchase-intents/:purchase_intent_id/refund-request`
256
- - `GET /v1/checkout/sessions/:checkout_session_id`
257
- - `POST /v1/checkout/events/normalize`
258
- - `GET /v1/checkout/events/:event_id`
259
- - `POST /v1/runtime-bridge/dispatch`
260
- - `GET /v1/runtime-bridge/dispatches`
261
- - `GET /v1/runtime-bridge/dispatches/:request_id`
262
- - `POST /v1/economics/receipt-ledger/validate`
263
- - `POST /v1/economics/interpretation-handoff`
264
- - `POST /v1/economics/markets/preview`
265
- - `POST /v1/economics/markets/workflow-pack`
266
- - `POST /v1/economics/markets/signoff-pack`
267
- - `POST /v1/economics/markets/coordination-pack`
268
- - `GET /v1/economics/accounts/:account_id/budgets`
269
- - `GET /v1/economics/accounts/:account_id/agents`
270
- - `GET /v1/economics/accounts/:account_id/receipts`
271
- - `GET /v1/economics/accounts/:account_id`
272
- - `GET /v1/economics/accounts/:account_id/credit-balance`
273
- - `GET /v1/economics/accounts/:account_id/metering-summary`
274
- - `GET /v1/economics/accounts/:account_id/usage-meters`
275
- - `GET /v1/economics/accounts/:account_id/usage-meters/:usage_meter_id`
276
- - `GET /v1/economics/accounts/:account_id/entitlements`
277
- - `GET /v1/economics/accounts/:account_id/entitlements/summary`
278
- - `GET /v1/economics/accounts/:account_id/entitlements/replenishment-summary`
279
- - `GET /v1/economics/accounts/:account_id/entitlements/:entitlement_id`
280
- - `GET /v1/economics/accounts/:account_id/entitlements/:entitlement_id/replenishment-view`
281
- - `POST /v1/economics/accounts/:account_id/entitlements/:entitlement_id/replenishment-preference`
282
- - `GET /v1/economics/accounts/:account_id/operator-view`
283
- - `GET /v1/economics/accounts/:account_id/operator-dashboard`
284
- - `GET /v1/economics/accounts/:account_id/treasury-summary`
285
- - `GET /v1/economics/accounts/:account_id/ledger-export`
286
- - `GET /v1/economics/accounts/:account_id/treasury-drilldown`
287
- - `GET /v1/economics/accounts/:account_id/reconciliation-pack`
288
- - `GET /v1/economics/accounts/:account_id/treasury-workflow-pack`
289
- - `GET /v1/economics/accounts/:account_id/treasury-signoff-pack`
290
- - `GET /v1/economics/accounts/:account_id/policy-summary`
291
- - `GET /v1/economics/accounts/:account_id/policy-pack`
292
- - `GET /v1/economics/accounts/:account_id/agents/:agent_id/policy-view`
293
- - `GET /v1/economics/accounts/:account_id/rail-summary`
294
- - `GET /v1/economics/accounts/:account_id/rail-workflow-pack`
295
- - `GET /v1/economics/accounts/:account_id/rail-signoff-pack`
296
- - `POST /v1/economics/jobs/:job_id/operator-action`
297
- - `GET /v1/economics/evidence/receipts/:receipt_ref`
298
- - `GET /v1/economics/evidence/jobs/:job_id`
299
- - `GET /v1/economics/integration/jobs/:job_id`
300
-
301
- ## Error-Shape Expectations
302
-
303
- Primary error posture:
304
-
305
- - malformed or invalid requests return `400`
306
- - payment-required flows return `402`
307
- - expired quotes return `409`
308
- - missing routes return `404`
309
- - unexpected server failures return `500`
310
-
311
- Expected top-level error shapes:
312
-
313
- - generic failure:
314
- - `{ "ok": false, "reason": "<message>" }`
315
- - payment challenge:
316
- - `{ "ok": false, "payment_required": { ... } }`
317
- - expired quote:
318
- - `{ "ok": false, "reason": "quote_expired", "quote": { ... } }`
319
- - not found:
320
- - `{ "ok": false, "reason": "not_found", "path": "<path>" }`
321
-
322
- Named resource-view responses may return resource-specific missing reasons such as `quote_not_found` or `delivery_not_found`, but the top-level failure posture should remain predictable.
323
-
324
- ## Final-Loop Verification
325
-
326
- The constitutional commerce loop for `xytara` is:
327
-
328
- 1. discover
329
- 2. quote
330
- 3. spend credits first when the caller chooses the reusable-balance path
331
- 4. otherwise pay or receive payment challenge
332
- 5. execute
333
- 6. deliver
334
- 7. inspect
335
- 8. prove or reference proof-compatible facts
336
-
337
- Credit-first execution should use:
338
-
339
- 1. fund an account through credit issuance or hosted checkout
340
- 2. inspect `GET /v1/economics/accounts/:account_id/credit-balance`
341
- 3. default to `open_spend`: if the funded caller can pay, the runtime should spend and execute without extra policy ceremony
342
- 4. call `POST /v1/commands/execute` with `payment_preference: "credits_first"`
343
- 5. optionally include `agent_id` and/or `budget_id` only when runtime spend should stay inside explicit policy bounds
344
- 6. treat agent and budget controls as optional bounded-spend posture, not as the default burden on every caller
345
- 7. consume credits on successful execution
346
- 8. receive `402 insufficient_credits` plus a quote when the balance is not enough
347
- 9. receive a bounded policy failure when agent or budget controls deny the spend
348
- 10. fall back to direct payment or top up credits without changing the execution surface
349
-
350
- Deterministic usage metering should use:
351
-
352
- 1. preview the expected unit profile through `POST /v1/economics/metering/preview`
353
- 2. let successful credit spend create a linked usage-meter record automatically
354
- 3. inspect account-level metering state through `GET /v1/economics/accounts/:account_id/metering-summary`
355
- 4. inspect concrete meter records through `GET /v1/economics/accounts/:account_id/usage-meters`
356
- 5. expect reconciliation and operator-export surfaces to expose the same metering trail for audit and operator review
357
- 6. export the same deterministic consequence as a canonical cross-repo handoff bundle through `POST /v1/economics/handoff-bundles/economic-consequence`
358
- 7. expect `POST /v1/transaction-center/result-packages/export` and result-package continuation run/prepare surfaces to auto-carry that same canonical bundle whenever credit-first execution produced the linked usage meter and credit spend
359
-
360
- External top-up and pack issuance should use:
361
-
362
- 1. verify the purchase outside the runtime
363
- 2. issue a bounded grant through `POST /v1/credit-bridge/grants`
364
- 3. inspect grants through `GET /v1/credit-bridge/grants`
365
- 4. rely on the same account credit balance and credit-first execution path afterward
366
-
367
- When using pack-backed issuance:
368
-
369
- - `pack_id` should reference a real public credit pack from `GET /v1/credit-packs`
370
- - unknown pack ids should fail cleanly
371
- - pack-backed grants may derive default units and nominal amount from the referenced public pack
372
-
373
- Delegated spend should use:
374
-
375
- 1. issue a narrow spend credential for the target account
376
- 2. optionally bind it to an `agent_id` and/or `budget_id`
377
- 3. optionally bind it to a `pack_id` or `entitlement_id` when value should stay inside one pool
378
- 4. call the normal execution surface with `authorization: Bearer <spend_credential>`
379
- 5. use `payment_preference: "credits_first"` for the repeat-use path
380
- 6. revoke the credential without affecting account ownership or payout posture
381
-
382
- The first hosted purchase path now follows:
383
-
384
- 1. create purchase intent
385
- 2. create checkout session
386
- 3. receive normalized payment status
387
- 4. issue credits or execution entitlement
388
- 5. converge into the runtime spine
389
-
390
- Direct single-task hosted execution should use:
391
-
392
- 1. hosted checkout purchase intent
393
- 2. normalized `paid` event
394
- 3. runtime dispatch
395
- 4. normal transaction, receipt, treasury, and proof follow-through
396
-
397
- Hosted checkout payout posture should use:
398
-
399
- 1. refund request enters review
400
- 2. operator review updates refund state
401
- 3. approval is explicit
402
- 4. completion is manual and bounded
403
-
404
- Provider or customer refund-shaped signals may be recorded, but they should not become autonomous payout authority inside the public stack.
405
-
406
- Operator-shell posture should now also expose hosted checkout visibility:
407
-
408
- - purchase intent counts
409
- - runtime dispatch counts
410
- - refund review queue counts
411
-
412
- so the human payment path remains operationally visible without introducing a second control plane.
413
-
414
- This loop is exercised through:
415
-
416
- - package verification
417
- - adapter verification
418
- - quickstart verification
419
- - service verification
1
+ # xytara Service Contract
2
+
3
+ This file freezes the public service contract for `xytara`.
4
+
5
+ ## Public Routes
6
+
7
+ Core routes:
8
+
9
+ - `GET /health`
10
+ - `GET /openapi.json`
11
+ - `GET /v1/openapi`
12
+ - `GET /v1/openapi/summary`
13
+ - `GET /asyncapi.json`
14
+ - `GET /v1/asyncapi`
15
+ - `GET /v1/asyncapi/summary`
16
+ - `GET /cloudevents.json`
17
+ - `GET /v1/cloudevents`
18
+ - `GET /v1/cloudevents/summary`
19
+ - `GET /v1/auth-profiles`
20
+ - `GET /v1/auth-profiles/summary`
21
+ - `GET /v1/identity-interop`
22
+ - `GET /v1/identity-interop/summary`
23
+ - `GET /v1/providers`
24
+ - `GET /v1/providers/summary`
25
+ - `GET /v1/frameworks`
26
+ - `GET /v1/frameworks/summary`
27
+ - `GET /v1/protocols`
28
+ - `GET /v1/protocols/summary`
29
+ - `GET /v1/integration-matrix`
30
+ - `GET /v1/integration-matrix/summary`
31
+ - `GET /v1/mcp`
32
+ - `GET /v1/mcp/summary`
33
+ - `GET /v1/mcp/tools`
34
+ - `GET /v1/a2a`
35
+ - `GET /v1/a2a/summary`
36
+ - `GET /v1/a2c`
37
+ - `GET /v1/a2c/summary`
38
+ - `GET /v1/x402`
39
+ - `GET /v1/x402/summary`
40
+ - `GET /v1/payment-protocols`
41
+ - `GET /v1/payment-protocols/summary`
42
+ - `GET /v1/settlement`
43
+ - `GET /v1/settlement/summary`
44
+ - `GET /v1/stripe-mpp`
45
+ - `GET /v1/stripe-mpp/summary`
46
+ - `GET /v1/stablecoins`
47
+ - `GET /v1/stablecoins/summary`
48
+ - `GET /v1/major-rails`
49
+ - `GET /v1/major-rails/summary`
50
+ - `GET /v1/treasury`
51
+ - `GET /v1/treasury/summary`
52
+ - `GET /v1/pricing-optimization`
53
+ - `GET /v1/pricing-optimization/summary`
54
+ - `GET /v1/pricing-optimization/quote-abandonment-summary`
55
+ - `GET /v1/pricing-optimization/quote-cohorts`
56
+ - `GET /v1/pricing-optimization/recommendations`
57
+ - `GET /v1/activity-ledger`
58
+ - `GET /v1/activity-ledger/summary`
59
+ - `GET /v1/operator-observability`
60
+ - `GET /v1/operator-observability/summary`
61
+ - `GET /v1/business-cockpit`
62
+ - `GET /v1/business-cockpit/summary`
63
+ - `GET /business-cockpit`
64
+ - `GET /v1/treasury-destinations`
65
+ - `GET /v1/treasury-destinations/summary`
66
+ - `GET /v1/treasury-destinations/operator-pack`
67
+ - `GET /v1/treasury-destinations/operator-pack/summary`
68
+ - `POST /v1/treasury-destinations/validate-preview`
69
+ - `GET /v1/treasury-egress-policy`
70
+ - `GET /v1/treasury-egress-policy/summary`
71
+ - `GET /v1/erc8004`
72
+ - `GET /v1/erc8004/summary`
73
+ - `GET /v1/event-systems`
74
+ - `GET /v1/event-systems/summary`
75
+ - `GET /v1/telemetry`
76
+ - `GET /v1/telemetry/summary`
77
+ - `GET /v1/provenance`
78
+ - `GET /v1/provenance/summary`
79
+ - `GET /v1/artifact-distribution`
80
+ - `GET /v1/artifact-distribution/summary`
81
+ - `GET /v1/shared-signals`
82
+ - `GET /v1/shared-signals/summary`
83
+ - `GET /v1/feature-control`
84
+ - `GET /v1/feature-control/summary`
85
+ - `GET /v1/adapter-certification`
86
+ - `GET /v1/adapter-certification/summary`
87
+ - `GET /v1/adapter-certification/:front_id`
88
+ - `GET /v1/trust-portability-boundary`
89
+ - `GET /v1/trust-portability-boundary/summary`
90
+ - `GET /v1/trust-portability-boundary/:axis_id`
91
+ - `GET /v1/signed-audit-provenance`
92
+ - `GET /v1/signed-audit-provenance/summary`
93
+ - `GET /v1/signed-audit-provenance/:surface_id`
94
+ - `GET /v1/catalog`
95
+ - `GET /v1/catalog/summary`
96
+ - `GET /v1/catalog/task?ref=<task_ref_or_alias>`
97
+ - `GET /v1/catalog/workflows`
98
+ - `GET /v1/catalog/workflow?ref=<workflow_ref_or_alias>`
99
+ - `GET /v1/credit-packs`
100
+ - `GET /v1/credit-packs/summary`
101
+ - `GET /v1/credit-pack?ref=<pack_id>`
102
+ - `GET /v1/integrations`
103
+ - `GET /v1/integrations/summary`
104
+ - `GET /v1/integrations/classes`
105
+ - `GET /v1/integrations/protocols`
106
+ - `GET /v1/integrations/settlement-modes`
107
+ - `GET /v1/account-auth/spend-credentials`
108
+ - `POST /v1/account-auth/spend-credentials`
109
+ - `GET /v1/account-auth/spend-credentials/:credential_id`
110
+ - `POST /v1/account-auth/spend-credentials/:credential_id/revoke`
111
+ - `POST /v1/payment-quotes`
112
+ - `POST /v1/commands/execute`
113
+ - `POST /x402/commands/execute`
114
+
115
+ Operational note:
116
+
117
+ - for production acceptance, `POST /x402/commands/execute` and `POST /x402/mcp/tools/invoke` should normally run with `XYTARA_PAYMENT_VERIFICATION_MODE=local_signed` or a stronger verifier mode
118
+ - `GET /v1/identity-interop` exposes how native authority and machine identity map to `JWT`, `DID/VC`, and `SD-JWT VC` interop lanes without replacing the native runtime authority model
119
+ - `GET /v1/x402` exposes the first-class quote -> challenge -> pay -> execute lane for paid machine execution
120
+ - `GET /v1/payment-protocols` makes the charging boundary explicit: keep auth, discovery, docs, catalog, and lightweight preview free while keeping execution, credit consumption, and consequence-bearing runtime work paid
121
+ - `GET /v1/settlement` exposes the settlement family map across native BSV/Teranode, EVM/Base/USDC, and the major-rails family
122
+ - `GET /v1/stripe-mpp` exposes the hosted-checkout and external-funding entry lane without making provider-specific checkout semantics the center of the stack
123
+ - `GET /v1/stablecoins` exposes the current USDC/Base runtime family and marks Circle Nanopayments/CCTP as adapter-ready extensions instead of pretending they are already core first-party rails
124
+ - `GET /v1/major-rails` exposes Solana plus the Antelope/Proton XPR/Metal family as one practical non-default settlement lane
125
+ - `GET /v1/treasury` exposes the treasury-connectivity posture and the internal reserve doctrine of BSV/Teranode plus DAI/USDC, with Monero retained only as an optional hidden privacy reserve
126
+ - `GET /v1/pricing-optimization` exposes minimum charge floors, starter pricing posture, credit-pack breakpoints, high-consequence premium multipliers, and quote abandonment visibility so revenue posture is reviewable instead of implicit
127
+ - `GET /v1/pricing-optimization/quote-cohorts` and `GET /v1/pricing-optimization/recommendations` expose how quote conversion and abandonment behave by pricing band, payment protocol, and settlement mode so monetization tuning can be data-shaped rather than guessed
128
+ - `GET /v1/activity-ledger` exposes one operator-grade ledger across quote, payment, settlement, delivery, dispute, refund, credit-grant, bridge, and integration-admission activity so operators can answer who did what, paid what, received what, and through which route
129
+ - `GET /v1/operator-observability` exposes a protected read-only pack across activity, payment, delivery, settlement, adapter failure, credit-grant, and pricing telemetry posture without moving funds or submitting settlements
130
+ - `GET /v1/business-cockpit` and `GET /business-cockpit` expose one protected operator analytics surface that bundles release posture, treasury landing truth, runtime activity, settlement readiness, and linked proof-facing health into a single private JSON or HTML cockpit
131
+ - `GET /v1/treasury-destinations` is public-readiness only: it shows which rails are operationally configured without exposing actual landing references
132
+ - `GET /v1/treasury-destinations/operator-pack` is the operator-only custody surface and is where real destination references belong
133
+ - `POST /v1/treasury-destinations/validate-preview` lets operators preview per-rail custody readiness before they claim a rail as operational
134
+ - `GET /v1/treasury-egress-policy` makes the treasury black-hole posture explicit: funds can come in easily through configured rails, but treasury release remains blocked until manual operator review with explicit reason and signoff
135
+ - when `XYTARA_ACCOUNT_AUTH_BEARER_TOKEN` is configured, `GET /v1/activity-ledger`, `GET /v1/operator-observability`, `GET /v1/business-cockpit`, `GET /v1/business-cockpit/summary`, `GET /business-cockpit`, `GET /v1/treasury-destinations/operator-pack`, `POST /v1/treasury-destinations/validate-preview`, and `GET /v1/treasury-egress-policy` require that bearer token
136
+ - `GET /v1/providers` exposes the OpenAI Codex and Claude/MCP family as first-class provider entry lanes
137
+ - `GET /v1/frameworks` exposes LangGraph, LangChain, AutoGen, and Semantic Kernel as the primary runtime framework lanes, with CrewAI and LlamaIndex surfaced as registry-backed framework breadth
138
+ - `GET /v1/protocols` exposes the canonical protocol and transport family across MCP, A2A, A2C, ACP, gRPC, Kafka, NATS, MQTT, ROS2, and webhook-event-bus posture
139
+ - `GET /v1/integration-matrix` exposes the canonical public view across providers, frameworks, protocols, payments, settlement families, and registry-backed integrations
140
+ - `GET /v1/telemetry` exposes the OpenTelemetry-aligned observability posture across runtime traces, metrics, logs, and event carry
141
+ - `GET /v1/provenance` exposes the SLSA-aligned release and execution provenance posture for runtime trust and adoption
142
+ - `GET /v1/artifact-distribution` exposes OCI-style artifact distribution posture for adapters, submission bundles, registry snapshots, and release artifacts
143
+ - `GET /v1/shared-signals` exposes OpenID Shared Signals and CAEP-aligned risk and identity event exchange posture without replacing native runtime decisions
144
+ - `GET /v1/feature-control` exposes OpenFeature/OFREP-aligned rollout and policy portability posture across pricing, authority, identity, trust, and release gates
145
+ - `GET /v1/adapter-certification` exposes the front-specific adapter certification contract and its machine-readable compatibility states
146
+ - `GET /v1/trust-portability-boundary` exposes the bounded trust portability contract for identity, delegation, delivery, and settlement-linked followthrough
147
+ - `GET /v1/signed-audit-provenance` exposes the signed audit and provenance surface map for selected evidence-bearing runtime and release lanes
148
+ - accepted payments then flow into payment-ledger, treasury-summary, rail-summary, and reconciliation surfaces
149
+ - the default first-party settlement posture is now `bsv_teranode`, and `x402` challenge quotes carry native BSV/Teranode settlement hints when that default path is in use
150
+ - the default machine-payment lane remains `x402`, while credits and `stripe_mpp` provide repeat-use and human-funding paths, and future protocol expansion should normally enter through the payment front rather than replacing the default machine lane
151
+ - quote-based pricing is intentionally preferred over flat pricing because it protects margin on high-consequence work without overpricing small utility flows, but quote abandonment and conversion should still be monitored through the pricing-optimization layer
152
+ - production acceptance on `bsv_teranode`, `evm`, `base`, `usdc`, `dai`, or `monero` should only be claimed once the corresponding treasury destination is explicitly configured and visible through `GET /v1/treasury-destinations`, with real custody details limited to `GET /v1/treasury-destinations/operator-pack`
153
+ - in production, `POST /v1/credit-bridge/grants` should normally require `authorization: Bearer <token>` backed by `XYTARA_CREDIT_BRIDGE_BEARER_TOKEN`
154
+ - in production, spend-credential issuance/revoke should normally require `authorization: Bearer <token>` backed by `XYTARA_ACCOUNT_AUTH_BEARER_TOKEN`
155
+
156
+ Named first-class lanes:
157
+
158
+ - `POST /v1/trust/handoffs/emit`
159
+ - `POST /v1/trust/handoffs/validate`
160
+ - `POST /v1/execution-receipts/handoffs/emit`
161
+ - `POST /v1/execution-receipts/handoffs/validate`
162
+ - `POST /v1/receipt-ledger/handoffs/emit`
163
+ - `POST /v1/receipt-ledger/handoffs/validate`
164
+ - `POST /v1/admission/preview`
165
+ - `POST /v1/runtime/emit`
166
+ - `POST /v1/runtime/anchor`
167
+ - `POST /v1/runtime/emit-anchor`
168
+ - `POST /v1/registry/register`
169
+ - `POST /v1/anchoring/submit`
170
+ - `GET /v1/coordination-center`
171
+ - `GET /v1/coordination-center/summary`
172
+ - `GET /v1/zones`
173
+ - `GET /v1/zones/compatibility-profiles`
174
+ - `GET /v1/zones/:zoneId/constitution`
175
+ - `POST /v1/coordination-center/interpretation-handoff/validate`
176
+ - `POST /v1/coordination-center/handshake-preview`
177
+ - `POST /v1/coordination-center/cross-zone-preview`
178
+ - `POST /v1/coordination-center/admission-case-projection`
179
+ - `POST /v1/coordination-center/admission-case-bundle`
180
+ - `POST /v1/coordination-center/operator-view`
181
+ - `POST /v1/coordination-center/admin-view`
182
+ - `POST /v1/coordination-center/admission-ops-pack`
183
+ - `POST /v1/coordination-center/admission-workflow-pack`
184
+ - `POST /v1/coordination-center/coordination-pack`
185
+ - `POST /v1/coordination-center/review-link`
186
+ - `GET /v1/coordination-center/zones-dashboard`
187
+ - `POST /v1/coordination-center/zones-dashboard-pack`
188
+ - `POST /v1/mcp/tools/invoke`
189
+ - `POST /x402/mcp/tools/invoke`
190
+ - `GET /v1/settlement/bsv-teranode`
191
+ - `GET /v1/settlement/bsv-teranode/:settlement_id`
192
+ - `POST /v1/settlement/bsv-teranode/:settlement_id/submit`
193
+ - `POST /v1/settlement/bsv-teranode/:settlement_id/refresh`
194
+
195
+ Lifecycle and operator routes:
196
+
197
+ - `GET /v1/payment-quotes`
198
+ - `GET /v1/payment-quotes/:quote_id`
199
+ - `GET /v1/governed-transactions`
200
+ - `GET /v1/governed-transactions/:transaction_id`
201
+ - `GET /v1/receipts`
202
+ - `GET /v1/receipts/:receipt_id`
203
+ - `GET /v1/payment-ledger`
204
+ - `GET /v1/payment-ledger/:payment_id`
205
+ - `GET /v1/deliveries`
206
+ - `GET /v1/deliveries/:delivery_id`
207
+ - `GET /v1/disputes`
208
+ - `POST /v1/disputes`
209
+ - `GET /v1/disputes/:dispute_id`
210
+ - `POST /v1/disputes/:dispute_id/actions`
211
+ - `GET /v1/refunds`
212
+ - `POST /v1/refunds`
213
+ - `GET /v1/refunds/:refund_id`
214
+ - `POST /v1/refunds/:refund_id/actions`
215
+ - `POST /v1/remediation-tickets`
216
+ - `GET /v1/remediation-tickets`
217
+ - `GET /v1/remediation-tickets/:ticket_id`
218
+ - `POST /v1/remediation-tickets/:ticket_id/actions`
219
+ - `GET /v1/reconciliation-report`
220
+ - `GET /v1/operator-export-pack`
221
+ - `GET /v1/operations/dashboard`
222
+ - `GET /v1/operations/attention-records`
223
+ - `GET /v1/operator-shell`
224
+ - `GET /v1/operator-shell/summary`
225
+ - `POST /v1/operator-shell/summary`
226
+ - `POST /v1/operator-shell/workflow-pack`
227
+ - `POST /v1/operator-shell/admin-pack`
228
+ - `GET /v1/agent-accounts`
229
+ - `POST /v1/agent-accounts`
230
+ - `GET /v1/agent-accounts/:account_id`
231
+ - `POST /v1/economics/budgets`
232
+ - `POST /v1/economics/budgets/:budget_id/status`
233
+ - `POST /v1/economics/agents`
234
+ - `POST /v1/economics/agents/:agent_id/status`
235
+ - `POST /v1/economics/receipts`
236
+ - `POST /v1/economics/receipts/:receipt_id/lifecycle`
237
+ - `POST /v1/economics/receipts/:receipt_id/operator-action`
238
+ - `POST /v1/economics/allocations/mint`
239
+ - `POST /v1/economics/allocations/reverse`
240
+ - `POST /v1/economics/rails/credits/preview`
241
+ - `POST /v1/economics/rails/credits/apply`
242
+ - `POST /v1/economics/metering/preview`
243
+ - `POST /v1/economics/handoff-bundles/economic-consequence`
244
+ - `POST /v1/economics/rails/credits/preview-spend`
245
+ - `POST /v1/economics/rails/credits/consume`
246
+ - `GET /v1/credit-bridge/grants`
247
+ - `POST /v1/credit-bridge/grants`
248
+ - `GET /v1/credit-bridge/grants/:grant_id`
249
+ - `GET /v1/checkout/purchase-intents`
250
+ - `POST /v1/checkout/purchase-intents`
251
+ - `GET /v1/checkout/purchase-intents/:purchase_intent_id`
252
+ - `GET /v1/checkout/purchase-intents/:purchase_intent_id/sessions`
253
+ - `POST /v1/checkout/purchase-intents/:purchase_intent_id/session`
254
+ - `GET /v1/checkout/purchase-intents/:purchase_intent_id/refunds`
255
+ - `POST /v1/checkout/purchase-intents/:purchase_intent_id/refund-request`
256
+ - `GET /v1/checkout/sessions/:checkout_session_id`
257
+ - `POST /v1/checkout/events/normalize`
258
+ - `GET /v1/checkout/events/:event_id`
259
+ - `POST /v1/runtime-bridge/dispatch`
260
+ - `GET /v1/runtime-bridge/dispatches`
261
+ - `GET /v1/runtime-bridge/dispatches/:request_id`
262
+ - `POST /v1/economics/receipt-ledger/validate`
263
+ - `POST /v1/economics/interpretation-handoff`
264
+ - `POST /v1/economics/markets/preview`
265
+ - `POST /v1/economics/markets/workflow-pack`
266
+ - `POST /v1/economics/markets/signoff-pack`
267
+ - `POST /v1/economics/markets/coordination-pack`
268
+ - `GET /v1/economics/accounts/:account_id/budgets`
269
+ - `GET /v1/economics/accounts/:account_id/agents`
270
+ - `GET /v1/economics/accounts/:account_id/receipts`
271
+ - `GET /v1/economics/accounts/:account_id`
272
+ - `GET /v1/economics/accounts/:account_id/credit-balance`
273
+ - `GET /v1/economics/accounts/:account_id/metering-summary`
274
+ - `GET /v1/economics/accounts/:account_id/usage-meters`
275
+ - `GET /v1/economics/accounts/:account_id/usage-meters/:usage_meter_id`
276
+ - `GET /v1/economics/accounts/:account_id/entitlements`
277
+ - `GET /v1/economics/accounts/:account_id/entitlements/summary`
278
+ - `GET /v1/economics/accounts/:account_id/entitlements/replenishment-summary`
279
+ - `GET /v1/economics/accounts/:account_id/entitlements/:entitlement_id`
280
+ - `GET /v1/economics/accounts/:account_id/entitlements/:entitlement_id/replenishment-view`
281
+ - `POST /v1/economics/accounts/:account_id/entitlements/:entitlement_id/replenishment-preference`
282
+ - `GET /v1/economics/accounts/:account_id/operator-view`
283
+ - `GET /v1/economics/accounts/:account_id/operator-dashboard`
284
+ - `GET /v1/economics/accounts/:account_id/treasury-summary`
285
+ - `GET /v1/economics/accounts/:account_id/ledger-export`
286
+ - `GET /v1/economics/accounts/:account_id/treasury-drilldown`
287
+ - `GET /v1/economics/accounts/:account_id/reconciliation-pack`
288
+ - `GET /v1/economics/accounts/:account_id/treasury-workflow-pack`
289
+ - `GET /v1/economics/accounts/:account_id/treasury-signoff-pack`
290
+ - `GET /v1/economics/accounts/:account_id/policy-summary`
291
+ - `GET /v1/economics/accounts/:account_id/policy-pack`
292
+ - `GET /v1/economics/accounts/:account_id/agents/:agent_id/policy-view`
293
+ - `GET /v1/economics/accounts/:account_id/rail-summary`
294
+ - `GET /v1/economics/accounts/:account_id/rail-workflow-pack`
295
+ - `GET /v1/economics/accounts/:account_id/rail-signoff-pack`
296
+ - `POST /v1/economics/jobs/:job_id/operator-action`
297
+ - `GET /v1/economics/evidence/receipts/:receipt_ref`
298
+ - `GET /v1/economics/evidence/jobs/:job_id`
299
+ - `GET /v1/economics/integration/jobs/:job_id`
300
+
301
+ ## Error-Shape Expectations
302
+
303
+ Primary error posture:
304
+
305
+ - malformed or invalid requests return `400`
306
+ - payment-required flows return `402`
307
+ - expired quotes return `409`
308
+ - missing routes return `404`
309
+ - unexpected server failures return `500`
310
+
311
+ Expected top-level error shapes:
312
+
313
+ - generic failure:
314
+ - `{ "ok": false, "reason": "<message>" }`
315
+ - payment challenge:
316
+ - `{ "ok": false, "payment_required": { ... } }`
317
+ - expired quote:
318
+ - `{ "ok": false, "reason": "quote_expired", "quote": { ... } }`
319
+ - not found:
320
+ - `{ "ok": false, "reason": "not_found", "path": "<path>" }`
321
+
322
+ Named resource-view responses may return resource-specific missing reasons such as `quote_not_found` or `delivery_not_found`, but the top-level failure posture should remain predictable.
323
+
324
+ ## Final-Loop Verification
325
+
326
+ The constitutional commerce loop for `xytara` is:
327
+
328
+ 1. discover
329
+ 2. quote
330
+ 3. spend credits first when the caller chooses the reusable-balance path
331
+ 4. otherwise pay or receive payment challenge
332
+ 5. execute
333
+ 6. deliver
334
+ 7. inspect
335
+ 8. prove or reference proof-compatible facts
336
+
337
+ Credit-first execution should use:
338
+
339
+ 1. fund an account through credit issuance or hosted checkout
340
+ 2. inspect `GET /v1/economics/accounts/:account_id/credit-balance`
341
+ 3. default to `open_spend`: if the funded caller can pay, the runtime should spend and execute without extra policy ceremony
342
+ 4. call `POST /v1/commands/execute` with `payment_preference: "credits_first"`
343
+ 5. optionally include `agent_id` and/or `budget_id` only when runtime spend should stay inside explicit policy bounds
344
+ 6. treat agent and budget controls as optional bounded-spend posture, not as the default burden on every caller
345
+ 7. consume credits on successful execution
346
+ 8. receive `402 insufficient_credits` plus a quote when the balance is not enough
347
+ 9. receive a bounded policy failure when agent or budget controls deny the spend
348
+ 10. fall back to direct payment or top up credits without changing the execution surface
349
+
350
+ Deterministic usage metering should use:
351
+
352
+ 1. preview the expected unit profile through `POST /v1/economics/metering/preview`
353
+ 2. let successful credit spend create a linked usage-meter record automatically
354
+ 3. inspect account-level metering state through `GET /v1/economics/accounts/:account_id/metering-summary`
355
+ 4. inspect concrete meter records through `GET /v1/economics/accounts/:account_id/usage-meters`
356
+ 5. expect reconciliation and operator-export surfaces to expose the same metering trail for audit and operator review
357
+ 6. export the same deterministic consequence as a canonical cross-repo handoff bundle through `POST /v1/economics/handoff-bundles/economic-consequence`
358
+ 7. expect `POST /v1/transaction-center/result-packages/export` and result-package continuation run/prepare surfaces to auto-carry that same canonical bundle whenever credit-first execution produced the linked usage meter and credit spend
359
+
360
+ External top-up and pack issuance should use:
361
+
362
+ 1. verify the purchase outside the runtime
363
+ 2. issue a bounded grant through `POST /v1/credit-bridge/grants`
364
+ 3. inspect grants through `GET /v1/credit-bridge/grants`
365
+ 4. rely on the same account credit balance and credit-first execution path afterward
366
+
367
+ When using pack-backed issuance:
368
+
369
+ - `pack_id` should reference a real public credit pack from `GET /v1/credit-packs`
370
+ - unknown pack ids should fail cleanly
371
+ - pack-backed grants may derive default units and nominal amount from the referenced public pack
372
+
373
+ Delegated spend should use:
374
+
375
+ 1. issue a narrow spend credential for the target account
376
+ 2. optionally bind it to an `agent_id` and/or `budget_id`
377
+ 3. optionally bind it to a `pack_id` or `entitlement_id` when value should stay inside one pool
378
+ 4. call the normal execution surface with `authorization: Bearer <spend_credential>`
379
+ 5. use `payment_preference: "credits_first"` for the repeat-use path
380
+ 6. revoke the credential without affecting account ownership or payout posture
381
+
382
+ The first hosted purchase path now follows:
383
+
384
+ 1. create purchase intent
385
+ 2. create checkout session
386
+ 3. receive normalized payment status
387
+ 4. issue credits or execution entitlement
388
+ 5. converge into the runtime spine
389
+
390
+ Direct single-task hosted execution should use:
391
+
392
+ 1. hosted checkout purchase intent
393
+ 2. normalized `paid` event
394
+ 3. runtime dispatch
395
+ 4. normal transaction, receipt, treasury, and proof follow-through
396
+
397
+ Hosted checkout payout posture should use:
398
+
399
+ 1. refund request enters review
400
+ 2. operator review updates refund state
401
+ 3. approval is explicit
402
+ 4. completion is manual and bounded
403
+
404
+ Provider or customer refund-shaped signals may be recorded, but they should not become autonomous payout authority inside the public stack.
405
+
406
+ Operator-shell posture should now also expose hosted checkout visibility:
407
+
408
+ - purchase intent counts
409
+ - runtime dispatch counts
410
+ - refund review queue counts
411
+
412
+ so the human payment path remains operationally visible without introducing a second control plane.
413
+
414
+ This loop is exercised through:
415
+
416
+ - package verification
417
+ - adapter verification
418
+ - quickstart verification
419
+ - service verification