settld 0.1.2 → 0.1.5

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 (441) hide show
  1. package/README.md +61 -3
  2. package/SETTLD_VERSION +1 -1
  3. package/bin/settld-mcp +2 -0
  4. package/bin/settld.js +13 -0
  5. package/conformance/kernel-v0/README.md +7 -0
  6. package/conformance/kernel-v0/run.mjs +292 -4
  7. package/docs/ACCESS.md +57 -0
  8. package/docs/ADOPTION_CHECKLIST.md +44 -0
  9. package/docs/ALERTS.md +198 -0
  10. package/docs/ARCHITECTURE.md +69 -0
  11. package/docs/ARCHITECTURE_FOUNDER_GUIDE.md +284 -0
  12. package/docs/ARTIFACTS.md +60 -0
  13. package/docs/CERTIFICATION_CHECKLIST.md +33 -0
  14. package/docs/CIRCLE_SANDBOX_E2E.md +140 -0
  15. package/docs/CONFIG.md +297 -0
  16. package/docs/CONTRACTS_APIS.md +23 -0
  17. package/docs/DEPRECATION.md +31 -0
  18. package/docs/DOMAIN_MODEL.md +92 -0
  19. package/docs/EVENT_ENVELOPE.md +53 -0
  20. package/docs/FINANCE_PACK_FORMAT.md +53 -0
  21. package/docs/INCIDENT_TAXONOMY.md +30 -0
  22. package/docs/JOB_STATE_MACHINE.md +66 -0
  23. package/docs/KERNEL_COMPATIBLE.md +60 -0
  24. package/docs/KERNEL_V0.md +40 -0
  25. package/docs/KEY_ROTATION.md +80 -0
  26. package/docs/LEDGER.md +82 -0
  27. package/docs/LIVENESS.md +76 -0
  28. package/docs/MVP_BUILD_ORDER.md +36 -0
  29. package/docs/ONCALL_PLAYBOOK.md +39 -0
  30. package/docs/OPERATIONS_SIGNING.md +20 -0
  31. package/docs/OVERVIEW.md +190 -0
  32. package/docs/PERF_BASELINE.md +85 -0
  33. package/docs/PRD.md +77 -0
  34. package/docs/QUICKSTART_KERNEL_V0.md +96 -0
  35. package/docs/QUICKSTART_MCP.md +337 -0
  36. package/docs/QUICKSTART_MCP_HOSTS.md +143 -0
  37. package/docs/QUICKSTART_PRODUCE.md +61 -0
  38. package/docs/QUICKSTART_RELEASE_VERIFY.md +39 -0
  39. package/docs/QUICKSTART_SDK.md +125 -0
  40. package/docs/QUICKSTART_SDK_PYTHON.md +111 -0
  41. package/docs/QUICKSTART_VERIFY.md +54 -0
  42. package/docs/QUICKSTART_X402_GATEWAY.md +317 -0
  43. package/docs/README.md +15 -0
  44. package/docs/RELEASE_CHECKLIST.md +156 -0
  45. package/docs/RELEASING.md +81 -0
  46. package/docs/REPO_SETTINGS.md +37 -0
  47. package/docs/RUNBOOK.md +86 -0
  48. package/docs/SKILLS.md +42 -0
  49. package/docs/SKILL_BUNDLE_FORMAT.md +48 -0
  50. package/docs/SLO.md +70 -0
  51. package/docs/SUMMARY.md +16 -0
  52. package/docs/SUPPORT.md +31 -0
  53. package/docs/THREAT_MODEL.md +36 -0
  54. package/docs/TRUST.md +59 -0
  55. package/docs/WORKFLOW.md +35 -0
  56. package/docs/X402_BATCH_SETTLEMENT.md +126 -0
  57. package/docs/blog/2026-02-14-your-ai-agent-just-spent-500-where-is-the-receipt.md +73 -0
  58. package/docs/examples/x402-provider-payout-registry.example.json +14 -0
  59. package/docs/gitbook/README.md +52 -0
  60. package/docs/gitbook/SETUP.md +25 -0
  61. package/docs/gitbook/SUMMARY.md +15 -0
  62. package/docs/gitbook/api-reference.md +73 -0
  63. package/docs/gitbook/closepacks.md +55 -0
  64. package/docs/gitbook/conformance.md +59 -0
  65. package/docs/gitbook/core-primitives.md +85 -0
  66. package/docs/gitbook/dispute-lifecycle.md +33 -0
  67. package/docs/gitbook/faq.md +21 -0
  68. package/docs/gitbook/guides.md +49 -0
  69. package/docs/gitbook/operations-runbook.md +36 -0
  70. package/docs/gitbook/quickstart.md +104 -0
  71. package/docs/gitbook/replay-and-audit.md +30 -0
  72. package/docs/gitbook/sdk-reference.md +35 -0
  73. package/docs/gitbook/security-model.md +58 -0
  74. package/docs/integrations/README.md +14 -0
  75. package/docs/integrations/github-actions-verify.yml +31 -0
  76. package/docs/integrations/github-actions.md +34 -0
  77. package/docs/integrations/openclaw/CLAWHUB_PUBLISH_CHECKLIST.md +65 -0
  78. package/docs/integrations/openclaw/settld-mcp-skill/SKILL.md +69 -0
  79. package/docs/integrations/openclaw/settld-mcp-skill/mcp-server.example.json +12 -0
  80. package/docs/kernel-compatible/capabilities.json +36 -0
  81. package/docs/marketing/agent-commerce-substrate.md +78 -0
  82. package/docs/marketing/hn-repost-2026-02-17.md +102 -0
  83. package/docs/marketing/show-hn-post.md +45 -0
  84. package/docs/ops/ARTIFACT_VERIFICATION_STATUS.md +43 -0
  85. package/docs/ops/BILLING_WEBHOOK_REPLAY.md +105 -0
  86. package/docs/ops/CI_FLAKE_BUDGET.md +31 -0
  87. package/docs/ops/GO_LIVE_GATE_S13.md +27 -0
  88. package/docs/ops/HOSTED_BASELINE_R2.md +129 -0
  89. package/docs/ops/KERNEL_V0_SHIP_GATE.md +67 -0
  90. package/docs/ops/LIGHTHOUSE_PRODUCTION_CLOSE.md +51 -0
  91. package/docs/ops/MCP_COMPATIBILITY_MATRIX.md +28 -0
  92. package/docs/ops/MINIMUM_PRODUCTION_TOPOLOGY.md +89 -0
  93. package/docs/ops/P0_BACKEND_PROGRESS.md +150 -0
  94. package/docs/ops/PAYMENTS_ALPHA_R5.md +105 -0
  95. package/docs/ops/PILOT_ONBOARDING_RUNBOOK.md +112 -0
  96. package/docs/ops/PRODUCTION_DEPLOYMENT_CHECKLIST.md +103 -0
  97. package/docs/ops/R1_SLOS.md +66 -0
  98. package/docs/ops/RELEASE_SIGNING_INCIDENT.md +58 -0
  99. package/docs/ops/SELF_SERVE_LAUNCH_AUTOMATION.md +89 -0
  100. package/docs/ops/THROUGHPUT_DRILL_10X.md +48 -0
  101. package/docs/ops/TRUST_CONFIG_WIZARD.md +47 -0
  102. package/docs/ops/X402_PILOT_WEEKLY_METRICS.md +76 -0
  103. package/docs/ops/tool-call-disputes-holdback.md +52 -0
  104. package/docs/pilot-kit/PILOT_PACKAGE_SCORECARD_X402.md +46 -0
  105. package/docs/pilot-kit/README.md +29 -0
  106. package/docs/pilot-kit/architecture-one-pager.md +48 -0
  107. package/docs/pilot-kit/buyer-email.txt +19 -0
  108. package/docs/pilot-kit/buyer-one-pager.md +31 -0
  109. package/docs/pilot-kit/gtm-pilot-playbook.md +182 -0
  110. package/docs/pilot-kit/offline-verify.md +33 -0
  111. package/docs/pilot-kit/procurement-one-pager.md +50 -0
  112. package/docs/pilot-kit/rfp-clause.md +46 -0
  113. package/docs/pilot-kit/roi-calculator-template.csv +2 -0
  114. package/docs/pilot-kit/security-qa.md +153 -0
  115. package/docs/pilot-kit/security-summary.md +35 -0
  116. package/docs/plans/2026-02-13-mcp-spike-design.md +113 -0
  117. package/docs/spec/AcceptanceCriteria.v1.md +17 -0
  118. package/docs/spec/AcceptanceEvaluation.v1.md +10 -0
  119. package/docs/spec/AgentEvent.v1.md +47 -0
  120. package/docs/spec/AgentIdentity.v1.md +62 -0
  121. package/docs/spec/AgentPassport.v1.md +95 -0
  122. package/docs/spec/AgentReputation.v1.md +59 -0
  123. package/docs/spec/AgentReputation.v2.md +52 -0
  124. package/docs/spec/AgentRun.v1.md +47 -0
  125. package/docs/spec/AgentRunSettlement.v1.md +52 -0
  126. package/docs/spec/AgentWallet.v1.md +43 -0
  127. package/docs/spec/AgreementDelegation.v1.md +109 -0
  128. package/docs/spec/ArbitrationCase.v1.md +67 -0
  129. package/docs/spec/ArbitrationVerdict.v1.md +60 -0
  130. package/docs/spec/BundleHeadAttestation.v1.md +32 -0
  131. package/docs/spec/CANONICAL_JSON.md +31 -0
  132. package/docs/spec/CRYPTOGRAPHY.md +61 -0
  133. package/docs/spec/ClosePack.v1.md +49 -0
  134. package/docs/spec/ClosePackManifest.v1.md +24 -0
  135. package/docs/spec/DelegationGrant.v1.md +90 -0
  136. package/docs/spec/DisputeOpenEnvelope.v1.md +43 -0
  137. package/docs/spec/ERRORS.md +76 -0
  138. package/docs/spec/ESCROW_NETTING_INVARIANTS.md +71 -0
  139. package/docs/spec/EvidenceIndex.v1.md +20 -0
  140. package/docs/spec/ExecutionIntent.v1.md +90 -0
  141. package/docs/spec/FinancePackBundleManifest.v1.md +24 -0
  142. package/docs/spec/FundingHold.v1.md +60 -0
  143. package/docs/spec/GovernancePolicy.v1.md +34 -0
  144. package/docs/spec/GovernancePolicy.v2.md +30 -0
  145. package/docs/spec/INVARIANTS.md +389 -0
  146. package/docs/spec/InteractionDirectionMatrix.v1.md +30 -0
  147. package/docs/spec/InvoiceBundleManifest.v1.md +24 -0
  148. package/docs/spec/InvoiceClaim.v1.md +11 -0
  149. package/docs/spec/MONEY_RAIL_STATE_MACHINE.md +58 -0
  150. package/docs/spec/MarketplaceAcceptance.v2.md +46 -0
  151. package/docs/spec/MarketplaceOffer.v2.md +54 -0
  152. package/docs/spec/MeteringReport.v1.md +18 -0
  153. package/docs/spec/PRODUCER_ERRORS.md +42 -0
  154. package/docs/spec/PricingMatrix.v1.md +20 -0
  155. package/docs/spec/PricingMatrixSignatures.v1.md +30 -0
  156. package/docs/spec/PricingMatrixSignatures.v2.md +29 -0
  157. package/docs/spec/ProduceCliOutput.v1.md +46 -0
  158. package/docs/spec/ProofBundleManifest.v1.md +24 -0
  159. package/docs/spec/README.md +104 -0
  160. package/docs/spec/REFERENCE_IMPLEMENTATIONS.md +29 -0
  161. package/docs/spec/REFERENCE_VERIFIER_BEHAVIOR.md +68 -0
  162. package/docs/spec/REMOTE_SIGNER.md +66 -0
  163. package/docs/spec/ReleaseIndex.v1.md +32 -0
  164. package/docs/spec/ReleaseIndexSignatures.v1.md +17 -0
  165. package/docs/spec/ReleaseTrust.v1.md +13 -0
  166. package/docs/spec/ReleaseTrust.v2.md +26 -0
  167. package/docs/spec/RemoteSignerRequest.v1.md +21 -0
  168. package/docs/spec/RemoteSignerResponse.v1.md +16 -0
  169. package/docs/spec/ReputationEvent.v1.md +63 -0
  170. package/docs/spec/RevocationList.v1.md +28 -0
  171. package/docs/spec/SIGNER_PROVIDER_PLUGIN.md +32 -0
  172. package/docs/spec/STRICTNESS.md +68 -0
  173. package/docs/spec/SUPPLY_CHAIN.md +33 -0
  174. package/docs/spec/SettlementAdjustment.v1.md +45 -0
  175. package/docs/spec/SettlementDecisionRecord.v1.md +48 -0
  176. package/docs/spec/SettlementDecisionRecord.v2.md +51 -0
  177. package/docs/spec/SettlementDecisionReport.v1.md +44 -0
  178. package/docs/spec/SettlementKernel.v1.md +59 -0
  179. package/docs/spec/SettlementReceipt.v1.md +63 -0
  180. package/docs/spec/SlaDefinition.v1.md +24 -0
  181. package/docs/spec/SlaEvaluation.v1.md +12 -0
  182. package/docs/spec/THREAT_MODEL.md +113 -0
  183. package/docs/spec/TOOL_PROVENANCE.md +30 -0
  184. package/docs/spec/TRUST_ANCHORS.md +84 -0
  185. package/docs/spec/TenantSettings.v1.md +90 -0
  186. package/docs/spec/TenantSettings.v2.md +99 -0
  187. package/docs/spec/TimestampProof.v1.md +25 -0
  188. package/docs/spec/ToolCallAgreement.v1.md +34 -0
  189. package/docs/spec/ToolCallEvidence.v1.md +47 -0
  190. package/docs/spec/ToolManifest.v1.md +47 -0
  191. package/docs/spec/VERIFIER_ENVIRONMENT.md +38 -0
  192. package/docs/spec/VERSIONING.md +107 -0
  193. package/docs/spec/VerificationReport.v1.md +50 -0
  194. package/docs/spec/VerifyAboutOutput.v1.md +10 -0
  195. package/docs/spec/VerifyCliOutput.v1.md +28 -0
  196. package/docs/spec/WARNINGS.md +83 -0
  197. package/docs/spec/error-codes.v1.txt +285 -0
  198. package/docs/spec/examples/agreement_delegation_v1.example.json +21 -0
  199. package/docs/spec/examples/arbitration_case_v1.example.json +26 -0
  200. package/docs/spec/examples/arbitration_verdict_v1.example.json +32 -0
  201. package/docs/spec/examples/dispute_open_envelope_v1.example.json +18 -0
  202. package/docs/spec/examples/produce_cli_output_v1.example.json +32 -0
  203. package/docs/spec/examples/release_index_signature_v1.example.json +9 -0
  204. package/docs/spec/examples/release_index_signatures_v1.example.json +14 -0
  205. package/docs/spec/examples/release_index_v1.example.json +15 -0
  206. package/docs/spec/examples/release_trust_v1.example.json +7 -0
  207. package/docs/spec/examples/release_trust_v2.example.json +22 -0
  208. package/docs/spec/examples/remote_signer_request_v1.example.json +18 -0
  209. package/docs/spec/examples/remote_signer_response_v1.example.json +8 -0
  210. package/docs/spec/examples/reputation_event_v1.example.json +29 -0
  211. package/docs/spec/examples/verification_report_v1.example.json +24 -0
  212. package/docs/spec/examples/verify_about_output_v1.example.json +29 -0
  213. package/docs/spec/examples/verify_cli_output_v1.example.json +13 -0
  214. package/docs/spec/legacy/MarketplaceAcceptance.v1.md +48 -0
  215. package/docs/spec/legacy/MarketplaceOffer.v1.md +56 -0
  216. package/docs/spec/legacy/schemas/MarketplaceAcceptance.v1.schema.json +53 -0
  217. package/docs/spec/legacy/schemas/MarketplaceOffer.v1.schema.json +61 -0
  218. package/docs/spec/producer-error-codes.v1.txt +14 -0
  219. package/docs/spec/schemas/AcceptanceCriteria.v1.schema.json +24 -0
  220. package/docs/spec/schemas/AcceptanceEvaluation.v1.schema.json +26 -0
  221. package/docs/spec/schemas/AgentEvent.v1.schema.json +49 -0
  222. package/docs/spec/schemas/AgentIdentity.v1.schema.json +129 -0
  223. package/docs/spec/schemas/AgentPassport.v1.schema.json +112 -0
  224. package/docs/spec/schemas/AgentReputation.v1.schema.json +151 -0
  225. package/docs/spec/schemas/AgentReputation.v2.schema.json +120 -0
  226. package/docs/spec/schemas/AgentRun.v1.schema.json +71 -0
  227. package/docs/spec/schemas/AgentRunSettlement.v1.schema.json +75 -0
  228. package/docs/spec/schemas/AgentWallet.v1.schema.json +54 -0
  229. package/docs/spec/schemas/AgreementDelegation.v1.schema.json +50 -0
  230. package/docs/spec/schemas/ArbitrationCase.v1.schema.json +133 -0
  231. package/docs/spec/schemas/ArbitrationVerdict.v1.schema.json +149 -0
  232. package/docs/spec/schemas/BundleHeadAttestation.v1.schema.json +21 -0
  233. package/docs/spec/schemas/ClosePackManifest.v1.schema.json +38 -0
  234. package/docs/spec/schemas/DelegationGrant.v1.schema.json +102 -0
  235. package/docs/spec/schemas/DisputeOpenEnvelope.v1.schema.json +78 -0
  236. package/docs/spec/schemas/EvidenceIndex.v1.schema.json +41 -0
  237. package/docs/spec/schemas/ExecutionIntent.v1.schema.json +85 -0
  238. package/docs/spec/schemas/FinancePackBundleManifest.v1.schema.json +38 -0
  239. package/docs/spec/schemas/FundingHold.v1.schema.json +46 -0
  240. package/docs/spec/schemas/GovernancePolicy.v1.schema.json +45 -0
  241. package/docs/spec/schemas/GovernancePolicy.v2.schema.json +70 -0
  242. package/docs/spec/schemas/InteractionDirectionMatrix.v1.schema.json +43 -0
  243. package/docs/spec/schemas/InvoiceBundleManifest.v1.schema.json +38 -0
  244. package/docs/spec/schemas/InvoiceClaim.v1.schema.json +39 -0
  245. package/docs/spec/schemas/MarketplaceAcceptance.v2.schema.json +53 -0
  246. package/docs/spec/schemas/MarketplaceOffer.v2.schema.json +61 -0
  247. package/docs/spec/schemas/MeteringReport.v1.schema.json +45 -0
  248. package/docs/spec/schemas/PricingMatrix.v1.schema.json +24 -0
  249. package/docs/spec/schemas/PricingMatrixSignatures.v1.schema.json +24 -0
  250. package/docs/spec/schemas/PricingMatrixSignatures.v2.schema.json +24 -0
  251. package/docs/spec/schemas/ProduceCliOutput.v1.schema.json +107 -0
  252. package/docs/spec/schemas/ProofBundleManifest.v1.schema.json +37 -0
  253. package/docs/spec/schemas/PublicKeys.v1.schema.json +33 -0
  254. package/docs/spec/schemas/ReleaseIndex.v1.schema.json +45 -0
  255. package/docs/spec/schemas/ReleaseIndexSignature.v1.schema.json +16 -0
  256. package/docs/spec/schemas/ReleaseIndexSignatures.v1.schema.json +16 -0
  257. package/docs/spec/schemas/ReleaseTrust.v1.schema.json +15 -0
  258. package/docs/spec/schemas/ReleaseTrust.v2.schema.json +37 -0
  259. package/docs/spec/schemas/RemoteSignerPublicKeyResponse.v1.schema.json +14 -0
  260. package/docs/spec/schemas/RemoteSignerRequest.v1.schema.json +24 -0
  261. package/docs/spec/schemas/RemoteSignerResponse.v1.schema.json +10 -0
  262. package/docs/spec/schemas/RemoteSignerSignRequest.v1.schema.json +27 -0
  263. package/docs/spec/schemas/RemoteSignerSignResponse.v1.schema.json +16 -0
  264. package/docs/spec/schemas/ReputationEvent.v1.schema.json +164 -0
  265. package/docs/spec/schemas/RevocationList.v1.schema.json +51 -0
  266. package/docs/spec/schemas/SettlementAdjustment.v1.schema.json +44 -0
  267. package/docs/spec/schemas/SettlementDecisionRecord.v1.schema.json +66 -0
  268. package/docs/spec/schemas/SettlementDecisionRecord.v2.schema.json +148 -0
  269. package/docs/spec/schemas/SettlementDecisionReport.v1.schema.json +61 -0
  270. package/docs/spec/schemas/SettlementReceipt.v1.schema.json +135 -0
  271. package/docs/spec/schemas/SlaDefinition.v1.schema.json +33 -0
  272. package/docs/spec/schemas/SlaEvaluation.v1.schema.json +26 -0
  273. package/docs/spec/schemas/TenantSettings.v1.schema.json +90 -0
  274. package/docs/spec/schemas/TenantSettings.v2.schema.json +161 -0
  275. package/docs/spec/schemas/TimestampProof.v1.schema.json +17 -0
  276. package/docs/spec/schemas/ToolCallAgreement.v1.schema.json +34 -0
  277. package/docs/spec/schemas/ToolCallEvidence.v1.schema.json +45 -0
  278. package/docs/spec/schemas/ToolManifest.v1.schema.json +54 -0
  279. package/docs/spec/schemas/VerificationReport.v1.schema.json +83 -0
  280. package/docs/spec/schemas/VerifyAboutOutput.v1.schema.json +54 -0
  281. package/docs/spec/schemas/VerifyCliOutput.v1.schema.json +75 -0
  282. package/docs/spec/schemas/VerifyReleaseOutput.v1.schema.json +47 -0
  283. package/docs/spec/x402-error-codes.v1.txt +21 -0
  284. package/docs/templates/buyer-email.txt +18 -0
  285. package/docs/templates/buyer-one-pager.md +24 -0
  286. package/package.json +40 -6
  287. package/scripts/acceptance/full-stack.mjs +734 -0
  288. package/scripts/acceptance/full-stack.sh +99 -0
  289. package/scripts/audit/build-audit-packet.mjs +242 -0
  290. package/scripts/backup-pg.sh +45 -0
  291. package/scripts/backup-restore/README.md +18 -0
  292. package/scripts/backup-restore/capture-state.mjs +130 -0
  293. package/scripts/backup-restore/client.mjs +97 -0
  294. package/scripts/backup-restore/seed-workload.mjs +235 -0
  295. package/scripts/backup-restore/verify-state.mjs +139 -0
  296. package/scripts/backup-restore-test.sh +217 -0
  297. package/scripts/chaos.js +221 -0
  298. package/scripts/ci/build-launch-cutover-packet.mjs +148 -0
  299. package/scripts/ci/build-self-serve-benchmark-report.mjs +122 -0
  300. package/scripts/ci/changelog-guard.mjs +145 -0
  301. package/scripts/ci/check-kernel-v0-launch-gate.mjs +233 -0
  302. package/scripts/ci/check-secret-hygiene.mjs +78 -0
  303. package/scripts/ci/check-version-consistency.mjs +42 -0
  304. package/scripts/ci/cli-pack-smoke.mjs +160 -0
  305. package/scripts/ci/flake-budget-guard.mjs +68 -0
  306. package/scripts/ci/generate-error-codes.mjs +54 -0
  307. package/scripts/ci/lib/lighthouse-tracker.mjs +90 -0
  308. package/scripts/ci/lib/self-serve-launch-gate.mjs +89 -0
  309. package/scripts/ci/npm-pack-smoke.mjs +454 -0
  310. package/scripts/ci/run-10x-throughput-drill.mjs +246 -0
  311. package/scripts/ci/run-10x-throughput-incident-rehearsal.mjs +325 -0
  312. package/scripts/ci/run-arbitration-workspace-browser-e2e.sh +22 -0
  313. package/scripts/ci/run-circle-sandbox-smoke.mjs +237 -0
  314. package/scripts/ci/run-go-live-gate.mjs +150 -0
  315. package/scripts/ci/run-kernel-v0-ship-gate.mjs +97 -0
  316. package/scripts/ci/run-mcp-host-smoke.mjs +275 -0
  317. package/scripts/ci/run-self-serve-launch-gate.mjs +56 -0
  318. package/scripts/ci/runtime-import-smoke.mjs +58 -0
  319. package/scripts/ci/update-lighthouse-tracker.mjs +112 -0
  320. package/scripts/closepack/lib.mjs +286 -0
  321. package/scripts/collect-debug.sh +263 -0
  322. package/scripts/demo/compositional-settlement-3hop.mjs +237 -0
  323. package/scripts/demo/delivery-robot/export-ui-fixture.mjs +188 -0
  324. package/scripts/demo/delivery-robot/generate.mjs +377 -0
  325. package/scripts/demo/kernel-agent-goes-shopping.mjs +202 -0
  326. package/scripts/demo/magic-link-first-green.mjs +118 -0
  327. package/scripts/demo/magic-link-kind-smoke.mjs +577 -0
  328. package/scripts/demo/mcp-paid-exa.mjs +1110 -0
  329. package/scripts/dev/billing-doctor.sh +145 -0
  330. package/scripts/dev/billing-smoke-prod.sh +219 -0
  331. package/scripts/dev/billing-webhook-replay.sh +161 -0
  332. package/scripts/dev/env.dev.example +29 -0
  333. package/scripts/dev/env.sh +37 -0
  334. package/scripts/dev/new-sdk-key.sh +81 -0
  335. package/scripts/dev/sdk-first-run.sh +21 -0
  336. package/scripts/dev/smoke-x402-gateway.sh +115 -0
  337. package/scripts/dev/start-api.sh +24 -0
  338. package/scripts/examples/produce-and-verify-jobproof.mjs +191 -0
  339. package/scripts/examples/sdk-first-paid-rfq.py +105 -0
  340. package/scripts/examples/sdk-first-verified-run.mjs +85 -0
  341. package/scripts/examples/sdk-first-verified-run.py +99 -0
  342. package/scripts/examples/sdk-tenant-analytics.mjs +103 -0
  343. package/scripts/examples/sdk-tenant-analytics.py +118 -0
  344. package/scripts/finance-pack/bundle.mjs +284 -0
  345. package/scripts/fixtures/generate-bundle-fixtures.mjs +877 -0
  346. package/scripts/governance/export.mjs +169 -0
  347. package/scripts/load/delivery-stress.k6.js +183 -0
  348. package/scripts/load/ingest-burst.k6.js +236 -0
  349. package/scripts/load/run-delivery-load.js +66 -0
  350. package/scripts/load/webhook-receiver.js +131 -0
  351. package/scripts/magic-link/migrate-run-records-to-db.mjs +35 -0
  352. package/scripts/mcp/probe.mjs +238 -0
  353. package/scripts/mcp/settld-mcp-http-gateway.mjs +178 -0
  354. package/scripts/mcp/settld-mcp-server.mjs +1201 -0
  355. package/scripts/openapi/write.mjs +13 -0
  356. package/scripts/ops/bootstrap-tenant-conformance.mjs +185 -0
  357. package/scripts/ops/build-x402-pilot-reliability-report.mjs +489 -0
  358. package/scripts/ops/check-x402-receipt-sample.mjs +181 -0
  359. package/scripts/ops/design-partner-run-packet.mjs +466 -0
  360. package/scripts/ops/hosted-baseline-evidence.mjs +681 -0
  361. package/scripts/ops/money-rails-chargeback-evidence.mjs +509 -0
  362. package/scripts/ops/money-rails-reconcile-evidence.mjs +180 -0
  363. package/scripts/ops/p0-seed-money-rail-operation.mjs +432 -0
  364. package/scripts/pilot/finance-pack.mjs +495 -0
  365. package/scripts/pilot/fixtures/robot-keypair.json +4 -0
  366. package/scripts/pilot/fixtures/server-signer.json +4 -0
  367. package/scripts/proof-bundle/job.mjs +109 -0
  368. package/scripts/proof-bundle/lib.mjs +92 -0
  369. package/scripts/proof-bundle/month.mjs +103 -0
  370. package/scripts/provider/conformance-run.mjs +159 -0
  371. package/scripts/provider/keys-generate.mjs +135 -0
  372. package/scripts/provider/publish.mjs +420 -0
  373. package/scripts/quickstart/x402.mjs +334 -0
  374. package/scripts/release/build-artifacts.mjs +181 -0
  375. package/scripts/release/generate-release-index.mjs +112 -0
  376. package/scripts/release/release-index-lib.mjs +232 -0
  377. package/scripts/release/sign-release-index.mjs +85 -0
  378. package/scripts/release/validate-release-assets.mjs +170 -0
  379. package/scripts/release/verify-release.mjs +261 -0
  380. package/scripts/restore-pg.sh +34 -0
  381. package/scripts/scaffold/create-settld-paid-tool.mjs +19 -0
  382. package/scripts/sdk/smoke-python.py +30 -0
  383. package/scripts/sdk/smoke.mjs +16 -0
  384. package/scripts/settlement/x402-batch-worker.mjs +1091 -0
  385. package/scripts/slo/check.mjs +178 -0
  386. package/scripts/smoke/k8s-smoke.mjs +214 -0
  387. package/scripts/spec/generate-protocol-vectors.mjs +931 -0
  388. package/scripts/test/check-no-generated-artifacts.sh +12 -0
  389. package/scripts/test/run.sh +45 -0
  390. package/scripts/trust/validate-trust-file.mjs +57 -0
  391. package/scripts/trust-config/rotate-settld-pay.mjs +277 -0
  392. package/scripts/trust-config/wizard.mjs +161 -0
  393. package/scripts/vendor-contract-test-lib.mjs +182 -0
  394. package/scripts/vendor-contract-test.mjs +55 -0
  395. package/scripts/vercel/build-mkdocs.sh +9 -0
  396. package/scripts/vercel/ignore-mkdocs.sh +25 -0
  397. package/scripts/vercel/install-mkdocs.sh +6 -0
  398. package/scripts/verify-pg.js +217 -0
  399. package/scripts/x402/receipt-verify.mjs +289 -0
  400. package/services/finance-sink/src/dedupe-store.js +29 -6
  401. package/services/receiver/src/dedupe-store.js +29 -5
  402. package/services/x402-gateway/Dockerfile +13 -0
  403. package/services/x402-gateway/README.md +58 -0
  404. package/services/x402-gateway/examples/upstream-mock.js +337 -0
  405. package/services/x402-gateway/src/server.js +947 -0
  406. package/src/api/app.js +32517 -16877
  407. package/src/api/maintenance.js +70 -0
  408. package/src/api/openapi.js +1130 -17
  409. package/src/api/persistence.js +272 -0
  410. package/src/api/server.js +81 -5
  411. package/src/api/store.js +1248 -6
  412. package/src/api/workers/deliveries.js +99 -4
  413. package/src/api/workers/insolvency-sweep.js +159 -0
  414. package/src/core/agent-card.js +69 -0
  415. package/src/core/agent-wallets.js +97 -0
  416. package/src/core/agreement-delegation.js +549 -0
  417. package/src/core/billing-plans.js +40 -6
  418. package/src/core/circle-reserve-adapter.js +845 -0
  419. package/src/core/maintenance-locks.js +1 -0
  420. package/src/core/paid-tool-manifest.js +318 -0
  421. package/src/core/provider-publish-conformance.js +525 -0
  422. package/src/core/provider-publish-proof.js +396 -0
  423. package/src/core/provider-quote-signature.js +170 -0
  424. package/src/core/settld-keys.js +112 -0
  425. package/src/core/settld-pay-token.js +344 -0
  426. package/src/core/settlement-kernel.js +213 -2
  427. package/src/core/settlement-verifier.js +335 -0
  428. package/src/core/tool-call-agreement.js +112 -0
  429. package/src/core/tool-call-evidence.js +144 -0
  430. package/src/core/tool-provider-signature.js +98 -0
  431. package/src/core/x402-escalation-override.js +258 -0
  432. package/src/core/x402-gate.js +118 -0
  433. package/src/core/x402-provider-refund-decision.js +220 -0
  434. package/src/core/x402-receipt-verifier.js +708 -0
  435. package/src/core/x402-reversal-command.js +251 -0
  436. package/src/core/x402-wallet-issuer-decision.js +252 -0
  437. package/src/core/zk-verifier.js +300 -0
  438. package/src/db/migrations/029_reputation_event_index.sql +54 -0
  439. package/src/db/migrations/030_artifacts_source_event_unique_job_only.sql +15 -0
  440. package/src/db/pg.js +18 -7
  441. package/src/db/store-pg.js +838 -72
@@ -67,6 +67,118 @@ export function buildOpenApiSpec({ baseUrl = null } = {}) {
67
67
  }
68
68
  };
69
69
 
70
+ const X402ExecutionProofV1 = {
71
+ type: "object",
72
+ additionalProperties: false,
73
+ required: ["protocol", "publicSignals", "proofData"],
74
+ properties: {
75
+ schemaVersion: { type: "string", enum: ["X402ExecutionProof.v1"] },
76
+ protocol: { type: "string", enum: ["groth16", "plonk", "stark"] },
77
+ publicSignals: { type: "array", items: {} },
78
+ proofData: { type: "object", additionalProperties: true },
79
+ verificationKey: { type: "object", nullable: true, additionalProperties: true },
80
+ verificationKeyRef: { type: "string", nullable: true },
81
+ statementHashSha256: { type: "string", pattern: "^[0-9a-f]{64}$", nullable: true },
82
+ inputDigestSha256: { type: "string", pattern: "^[0-9a-f]{64}$", nullable: true },
83
+ outputDigestSha256: { type: "string", pattern: "^[0-9a-f]{64}$", nullable: true }
84
+ }
85
+ };
86
+
87
+ const X402GateVerifyRequest = {
88
+ type: "object",
89
+ additionalProperties: true,
90
+ required: ["gateId"],
91
+ properties: {
92
+ gateId: { type: "string" },
93
+ proof: { ...X402ExecutionProofV1, nullable: true }
94
+ }
95
+ };
96
+
97
+ const X402GateAuthorizePaymentRequest = {
98
+ type: "object",
99
+ additionalProperties: true,
100
+ required: ["gateId"],
101
+ properties: {
102
+ gateId: { type: "string" },
103
+ quoteId: { type: "string", nullable: true },
104
+ requestBindingMode: { type: "string", enum: ["strict"], nullable: true },
105
+ requestBindingSha256: { type: "string", pattern: "^[0-9a-f]{64}$", nullable: true },
106
+ walletAuthorizationDecisionToken: { type: "string", nullable: true },
107
+ escalationOverrideToken: { type: "string", nullable: true },
108
+ executionIntent: {
109
+ type: "object",
110
+ nullable: true,
111
+ additionalProperties: true,
112
+ description: "ExecutionIntent.v1 payload bound to authorize-payment preconditions."
113
+ }
114
+ }
115
+ };
116
+
117
+ const X402AuthorizePaymentTaErrorCodes = Object.freeze([
118
+ "X402_EXECUTION_INTENT_REQUIRED",
119
+ "X402_EXECUTION_INTENT_IDEMPOTENCY_MISMATCH",
120
+ "X402_EXECUTION_INTENT_CONFLICT"
121
+ ]);
122
+
123
+ const X402AuthorizePaymentBadRequestKnownErrorCodes = Object.freeze([
124
+ "SCHEMA_INVALID",
125
+ "X402_EXECUTION_INTENT_HASH_MISMATCH"
126
+ ]);
127
+
128
+ const X402AuthorizePaymentConflictKnownErrorCodes = Object.freeze([
129
+ ...X402AuthorizePaymentTaErrorCodes,
130
+ "X402_EXECUTION_INTENT_INVALID",
131
+ "X402_EXECUTION_INTENT_TIME_INVALID",
132
+ "X402_EXECUTION_INTENT_TENANT_MISMATCH",
133
+ "X402_EXECUTION_INTENT_AGENT_MISMATCH",
134
+ "X402_EXECUTION_INTENT_SIDE_EFFECTING_REQUIRED",
135
+ "X402_EXECUTION_INTENT_REQUEST_BINDING_REQUIRED",
136
+ "X402_EXECUTION_INTENT_REQUEST_MISMATCH",
137
+ "X402_EXECUTION_INTENT_SPEND_LIMIT_EXCEEDED",
138
+ "X402_EXECUTION_INTENT_CURRENCY_MISMATCH",
139
+ "X402_EXECUTION_INTENT_RUN_MISMATCH",
140
+ "X402_EXECUTION_INTENT_AGREEMENT_MISMATCH",
141
+ "X402_EXECUTION_INTENT_QUOTE_MISMATCH",
142
+ "X402_EXECUTION_INTENT_POLICY_VERSION_MISMATCH",
143
+ "X402_EXECUTION_INTENT_POLICY_HASH_MISMATCH",
144
+ "X402_EXECUTION_INTENT_EXPIRES_AT_INVALID",
145
+ "X402_EXECUTION_INTENT_EXPIRED"
146
+ ]);
147
+
148
+ function errorResponseWithKnownCodes(knownCodes) {
149
+ return {
150
+ allOf: [
151
+ ErrorResponse,
152
+ {
153
+ type: "object",
154
+ additionalProperties: true,
155
+ properties: {
156
+ code: {
157
+ anyOf: [{ type: "string", enum: [...knownCodes] }, { type: "string" }],
158
+ description: "Known stable codes are listed in docs/spec/x402-error-codes.v1.txt."
159
+ }
160
+ }
161
+ }
162
+ ]
163
+ };
164
+ }
165
+
166
+ const X402ZkVerificationKeyV1 = {
167
+ type: "object",
168
+ additionalProperties: false,
169
+ required: ["schemaVersion", "verificationKeyId", "protocol", "verificationKey", "createdAt", "updatedAt"],
170
+ properties: {
171
+ schemaVersion: { type: "string", enum: ["X402ZkVerificationKey.v1"] },
172
+ verificationKeyId: { type: "string" },
173
+ protocol: { type: "string", enum: ["groth16", "plonk", "stark"] },
174
+ verificationKey: { type: "object", additionalProperties: true },
175
+ providerRef: { type: "string", nullable: true },
176
+ metadata: { type: "object", additionalProperties: true, nullable: true },
177
+ createdAt: { type: "string", format: "date-time" },
178
+ updatedAt: { type: "string", format: "date-time" }
179
+ }
180
+ };
181
+
70
182
  const JobCreateRequest = {
71
183
  type: "object",
72
184
  additionalProperties: false,
@@ -209,6 +321,80 @@ export function buildOpenApiSpec({ baseUrl = null } = {}) {
209
321
  }
210
322
  };
211
323
 
324
+ const ToolCallAgreementV1 = {
325
+ type: "object",
326
+ additionalProperties: false,
327
+ required: [
328
+ "schemaVersion",
329
+ "toolId",
330
+ "manifestHash",
331
+ "callId",
332
+ "inputHash",
333
+ "acceptanceCriteria",
334
+ "settlementTerms",
335
+ "payerAgentId",
336
+ "payeeAgentId",
337
+ "createdAt",
338
+ "agreementHash"
339
+ ],
340
+ properties: {
341
+ schemaVersion: { type: "string", enum: ["ToolCallAgreement.v1"] },
342
+ toolId: { type: "string" },
343
+ manifestHash: { type: "string", pattern: "^[0-9a-f]{64}$" },
344
+ callId: { type: "string" },
345
+ inputHash: { type: "string", pattern: "^[0-9a-f]{64}$" },
346
+ acceptanceCriteria: { type: "object", nullable: true, additionalProperties: true },
347
+ settlementTerms: { type: "object", nullable: true, additionalProperties: true },
348
+ payerAgentId: { type: "string", nullable: true },
349
+ payeeAgentId: { type: "string", nullable: true },
350
+ createdAt: { type: "string", format: "date-time" },
351
+ agreementHash: { type: "string", pattern: "^[0-9a-f]{64}$" }
352
+ }
353
+ };
354
+
355
+ const ToolCallEvidenceV1 = {
356
+ type: "object",
357
+ additionalProperties: false,
358
+ required: [
359
+ "schemaVersion",
360
+ "agreementHash",
361
+ "callId",
362
+ "inputHash",
363
+ "outputHash",
364
+ "outputRef",
365
+ "metrics",
366
+ "startedAt",
367
+ "completedAt",
368
+ "createdAt",
369
+ "evidenceHash"
370
+ ],
371
+ properties: {
372
+ schemaVersion: { type: "string", enum: ["ToolCallEvidence.v1"] },
373
+ agreementHash: { type: "string", pattern: "^[0-9a-f]{64}$" },
374
+ callId: { type: "string" },
375
+ inputHash: { type: "string", pattern: "^[0-9a-f]{64}$" },
376
+ outputHash: { type: "string", pattern: "^[0-9a-f]{64}$" },
377
+ outputRef: { type: "string", nullable: true },
378
+ metrics: { type: "object", nullable: true, additionalProperties: true },
379
+ startedAt: { type: "string", format: "date-time" },
380
+ completedAt: { type: "string", format: "date-time" },
381
+ createdAt: { type: "string", format: "date-time" },
382
+ evidenceHash: { type: "string", pattern: "^[0-9a-f]{64}$" },
383
+ signature: {
384
+ type: "object",
385
+ nullable: true,
386
+ additionalProperties: false,
387
+ required: ["algorithm", "signerKeyId", "evidenceHash", "signature"],
388
+ properties: {
389
+ algorithm: { type: "string", enum: ["ed25519"] },
390
+ signerKeyId: { type: "string" },
391
+ evidenceHash: { type: "string", pattern: "^[0-9a-f]{64}$" },
392
+ signature: { type: "string" }
393
+ }
394
+ }
395
+ }
396
+ };
397
+
212
398
  const AgentRunV1 = {
213
399
  type: "object",
214
400
  additionalProperties: false,
@@ -1536,6 +1722,169 @@ export function buildOpenApiSpec({ baseUrl = null } = {}) {
1536
1722
  }
1537
1723
  };
1538
1724
 
1725
+ const ProviderConformanceVerdictV1 = {
1726
+ type: "object",
1727
+ additionalProperties: false,
1728
+ required: ["ok", "requiredChecks", "passedChecks"],
1729
+ properties: {
1730
+ ok: { type: "boolean" },
1731
+ requiredChecks: { type: "integer", minimum: 0 },
1732
+ passedChecks: { type: "integer", minimum: 0 }
1733
+ }
1734
+ };
1735
+
1736
+ const ProviderConformanceSummaryV1 = {
1737
+ type: "object",
1738
+ additionalProperties: false,
1739
+ required: ["schemaVersion", "generatedAt", "verdict"],
1740
+ properties: {
1741
+ schemaVersion: { type: "string" },
1742
+ generatedAt: { type: "string", format: "date-time", nullable: true },
1743
+ verdict: ProviderConformanceVerdictV1
1744
+ }
1745
+ };
1746
+
1747
+ const MarketplaceProviderCertificationBadgeV1 = {
1748
+ type: "object",
1749
+ additionalProperties: false,
1750
+ required: [
1751
+ "schemaVersion",
1752
+ "providerId",
1753
+ "providerRef",
1754
+ "publicationId",
1755
+ "status",
1756
+ "certified",
1757
+ "manifestHash",
1758
+ "providerSigningKeyId",
1759
+ "toolCount",
1760
+ "conformance",
1761
+ "badgeHash"
1762
+ ],
1763
+ properties: {
1764
+ schemaVersion: { type: "string", enum: ["MarketplaceProviderCertificationBadge.v1"] },
1765
+ providerId: { type: "string" },
1766
+ providerRef: { type: "string" },
1767
+ publicationId: { type: "string" },
1768
+ status: { type: "string", enum: ["certified", "conformance_failed", "draft"] },
1769
+ certified: { type: "boolean" },
1770
+ certifiedAt: { type: "string", format: "date-time", nullable: true },
1771
+ updatedAt: { type: "string", format: "date-time", nullable: true },
1772
+ manifestHash: { type: "string", pattern: "^[0-9a-f]{64}$" },
1773
+ providerSigningKeyId: { type: "string", nullable: true },
1774
+ toolCount: { type: "integer", minimum: 0 },
1775
+ conformance: { ...ProviderConformanceSummaryV1, nullable: true },
1776
+ badgeHash: { type: "string", pattern: "^[0-9a-f]{64}$" }
1777
+ }
1778
+ };
1779
+
1780
+ const MarketplaceProviderPublicationSummaryV1 = {
1781
+ type: "object",
1782
+ additionalProperties: false,
1783
+ required: [
1784
+ "schemaVersion",
1785
+ "publicationId",
1786
+ "tenantId",
1787
+ "providerId",
1788
+ "providerRef",
1789
+ "status",
1790
+ "certified",
1791
+ "baseUrl",
1792
+ "tags",
1793
+ "toolCount",
1794
+ "manifestSchemaVersion",
1795
+ "manifestHash",
1796
+ "conformance",
1797
+ "certificationBadge",
1798
+ "publishedAt",
1799
+ "certifiedAt",
1800
+ "updatedAt"
1801
+ ],
1802
+ properties: {
1803
+ schemaVersion: { type: "string" },
1804
+ publicationId: { type: "string" },
1805
+ tenantId: { type: "string" },
1806
+ providerId: { type: "string" },
1807
+ providerRef: { type: "string", nullable: true },
1808
+ status: { type: "string", enum: ["certified", "conformance_failed", "draft"] },
1809
+ certified: { type: "boolean" },
1810
+ baseUrl: { type: "string" },
1811
+ description: { type: "string", nullable: true },
1812
+ tags: {
1813
+ type: "array",
1814
+ items: { type: "string" }
1815
+ },
1816
+ toolCount: { type: "integer", minimum: 0 },
1817
+ manifestSchemaVersion: { type: "string" },
1818
+ manifestHash: { type: "string", pattern: "^[0-9a-f]{64}$" },
1819
+ conformance: { ...ProviderConformanceSummaryV1, nullable: true },
1820
+ certificationBadge: { ...MarketplaceProviderCertificationBadgeV1, nullable: true },
1821
+ publishedAt: { type: "string", format: "date-time", nullable: true },
1822
+ certifiedAt: { type: "string", format: "date-time", nullable: true },
1823
+ updatedAt: { type: "string", format: "date-time", nullable: true }
1824
+ }
1825
+ };
1826
+
1827
+ const MarketplaceToolListingV1 = {
1828
+ type: "object",
1829
+ additionalProperties: false,
1830
+ required: [
1831
+ "schemaVersion",
1832
+ "providerId",
1833
+ "providerRef",
1834
+ "publicationId",
1835
+ "certified",
1836
+ "providerStatus",
1837
+ "providerTags",
1838
+ "manifestSchemaVersion",
1839
+ "manifestHash",
1840
+ "toolId",
1841
+ "pricing",
1842
+ "certificationBadge",
1843
+ "publishedAt",
1844
+ "updatedAt"
1845
+ ],
1846
+ properties: {
1847
+ schemaVersion: { type: "string", enum: ["MarketplaceToolListing.v1"] },
1848
+ providerId: { type: "string" },
1849
+ providerRef: { type: "string", nullable: true },
1850
+ publicationId: { type: "string" },
1851
+ certified: { type: "boolean" },
1852
+ providerStatus: { type: "string", enum: ["certified", "conformance_failed", "draft"] },
1853
+ providerDescription: { type: "string", nullable: true },
1854
+ providerTags: {
1855
+ type: "array",
1856
+ items: { type: "string" }
1857
+ },
1858
+ manifestSchemaVersion: { type: "string", nullable: true },
1859
+ manifestHash: { type: "string", pattern: "^[0-9a-f]{64}$", nullable: true },
1860
+ toolId: { type: "string" },
1861
+ mcpToolName: { type: "string", nullable: true },
1862
+ description: { type: "string", nullable: true },
1863
+ method: { type: "string", nullable: true },
1864
+ paidPath: { type: "string", nullable: true },
1865
+ upstreamPath: { type: "string", nullable: true },
1866
+ tags: {
1867
+ type: "array",
1868
+ items: { type: "string" }
1869
+ },
1870
+ pricing: {
1871
+ type: "object",
1872
+ additionalProperties: false,
1873
+ required: ["amountCents", "currency"],
1874
+ properties: {
1875
+ amountCents: { type: "integer", minimum: 1, nullable: true },
1876
+ currency: { type: "string", nullable: true }
1877
+ }
1878
+ },
1879
+ idempotency: { type: "string", nullable: true },
1880
+ signatureMode: { type: "string", nullable: true },
1881
+ authMode: { type: "string", nullable: true },
1882
+ certificationBadge: { ...MarketplaceProviderCertificationBadgeV1, nullable: true },
1883
+ publishedAt: { type: "string", format: "date-time", nullable: true },
1884
+ updatedAt: { type: "string", format: "date-time", nullable: true }
1885
+ }
1886
+ };
1887
+
1539
1888
  const MarketplaceRfqV1 = {
1540
1889
  type: "object",
1541
1890
  additionalProperties: false,
@@ -2123,6 +2472,47 @@ export function buildOpenApiSpec({ baseUrl = null } = {}) {
2123
2472
  }
2124
2473
  };
2125
2474
 
2475
+ const DisputeOpenEnvelopeSignedRequest = {
2476
+ type: "object",
2477
+ additionalProperties: false,
2478
+ required: [
2479
+ "schemaVersion",
2480
+ "artifactType",
2481
+ "artifactId",
2482
+ "envelopeId",
2483
+ "caseId",
2484
+ "tenantId",
2485
+ "agreementHash",
2486
+ "receiptHash",
2487
+ "holdHash",
2488
+ "openedByAgentId",
2489
+ "openedAt",
2490
+ "reasonCode",
2491
+ "nonce",
2492
+ "signerKeyId",
2493
+ "envelopeHash",
2494
+ "signature"
2495
+ ],
2496
+ properties: {
2497
+ schemaVersion: { type: "string", enum: ["DisputeOpenEnvelope.v1"] },
2498
+ artifactType: { type: "string", enum: ["DisputeOpenEnvelope.v1"] },
2499
+ artifactId: { type: "string" },
2500
+ envelopeId: { type: "string" },
2501
+ caseId: { type: "string" },
2502
+ tenantId: { type: "string" },
2503
+ agreementHash: { type: "string" },
2504
+ receiptHash: { type: "string" },
2505
+ holdHash: { type: "string" },
2506
+ openedByAgentId: { type: "string" },
2507
+ openedAt: { type: "string", format: "date-time" },
2508
+ reasonCode: { type: "string" },
2509
+ nonce: { type: "string" },
2510
+ signerKeyId: { type: "string" },
2511
+ envelopeHash: { type: "string" },
2512
+ signature: { type: "string" }
2513
+ }
2514
+ };
2515
+
2126
2516
  const ArbitrationCaseV1 = {
2127
2517
  type: "object",
2128
2518
  additionalProperties: false,
@@ -2303,6 +2693,58 @@ export function buildOpenApiSpec({ baseUrl = null } = {}) {
2303
2693
  }
2304
2694
  };
2305
2695
 
2696
+ const ToolCallReplayEvaluateResponse = {
2697
+ type: "object",
2698
+ additionalProperties: false,
2699
+ required: ["ok", "tenantId", "agreementHash", "runId", "replay", "stored", "comparisons", "issues"],
2700
+ properties: {
2701
+ ok: { type: "boolean" },
2702
+ tenantId: { type: "string" },
2703
+ agreementHash: { type: "string" },
2704
+ runId: { type: "string" },
2705
+ replay: { type: "object", additionalProperties: true },
2706
+ stored: { type: "object", additionalProperties: true },
2707
+ comparisons: { type: "object", additionalProperties: true },
2708
+ issues: { type: "array", items: { type: "string" } }
2709
+ }
2710
+ };
2711
+
2712
+ const ReputationFactsResponse = {
2713
+ type: "object",
2714
+ additionalProperties: false,
2715
+ required: ["ok", "tenantId", "agentId", "window", "asOf", "facts"],
2716
+ properties: {
2717
+ ok: { type: "boolean" },
2718
+ tenantId: { type: "string" },
2719
+ agentId: { type: "string" },
2720
+ toolId: { type: "string", nullable: true },
2721
+ window: { type: "string", enum: ["7d", "30d", "allTime"] },
2722
+ asOf: { type: "string", format: "date-time" },
2723
+ windowStartAt: { type: "string", format: "date-time", nullable: true },
2724
+ facts: {
2725
+ type: "object",
2726
+ additionalProperties: false,
2727
+ properties: {
2728
+ totals: { type: "object", additionalProperties: true },
2729
+ latencyMs: {
2730
+ type: "object",
2731
+ additionalProperties: false,
2732
+ properties: {
2733
+ count: { type: "integer", minimum: 0 },
2734
+ p50: { type: "integer", minimum: 0, nullable: true },
2735
+ p95: { type: "integer", minimum: 0, nullable: true }
2736
+ }
2737
+ }
2738
+ }
2739
+ },
2740
+ events: {
2741
+ type: "array",
2742
+ nullable: true,
2743
+ items: { type: "object", additionalProperties: true }
2744
+ }
2745
+ }
2746
+ };
2747
+
2306
2748
  const MonthCloseRequest = {
2307
2749
  type: "object",
2308
2750
  additionalProperties: false,
@@ -2812,6 +3254,8 @@ export function buildOpenApiSpec({ baseUrl = null } = {}) {
2812
3254
  JobEventAppendRequest,
2813
3255
  AgentIdentityV1,
2814
3256
  AgentRegisterRequest,
3257
+ ToolCallAgreementV1,
3258
+ ToolCallEvidenceV1,
2815
3259
  AgentRunV1,
2816
3260
  AgentEventV1,
2817
3261
  AgentRunCreateRequest,
@@ -2859,6 +3303,11 @@ export function buildOpenApiSpec({ baseUrl = null } = {}) {
2859
3303
  MarketplaceCapabilityAvailabilityV1,
2860
3304
  MarketplaceCapabilityListingV1,
2861
3305
  MarketplaceCapabilityListingUpsertRequest,
3306
+ ProviderConformanceVerdictV1,
3307
+ ProviderConformanceSummaryV1,
3308
+ MarketplaceProviderCertificationBadgeV1,
3309
+ MarketplaceProviderPublicationSummaryV1,
3310
+ MarketplaceToolListingV1,
2862
3311
  MarketplaceRfqV1,
2863
3312
  MarketplaceTaskAgreementV2,
2864
3313
  MarketplaceRfqCreateRequest,
@@ -2874,9 +3323,12 @@ export function buildOpenApiSpec({ baseUrl = null } = {}) {
2874
3323
  RunAgreementCancelResponse,
2875
3324
  DisputeVerdictSignedRequest,
2876
3325
  ArbitrationVerdictSignedRequest,
3326
+ DisputeOpenEnvelopeSignedRequest,
2877
3327
  ArbitrationCaseV1,
2878
3328
  RunSettlementPolicyReplayResponse,
2879
3329
  RunSettlementReplayEvaluateResponse,
3330
+ ToolCallReplayEvaluateResponse,
3331
+ ReputationFactsResponse,
2880
3332
  MonthCloseRequest,
2881
3333
  AckRequest,
2882
3334
  ArtifactVerificationSummary,
@@ -2951,16 +3403,17 @@ export function buildOpenApiSpec({ baseUrl = null } = {}) {
2951
3403
  }
2952
3404
  }
2953
3405
  },
2954
- "/marketplace/capability-listings": {
3406
+ "/marketplace/providers": {
2955
3407
  get: {
2956
- summary: "List marketplace capability listings",
3408
+ summary: "List marketplace provider publications",
2957
3409
  parameters: [
2958
3410
  TenantHeader,
2959
3411
  ProtocolHeader,
2960
3412
  RequestIdHeader,
2961
- { name: "status", in: "query", required: false, schema: { type: "string", enum: ["active", "paused", "retired", "all"] } },
2962
- { name: "capability", in: "query", required: false, schema: { type: "string" } },
2963
- { name: "sellerAgentId", in: "query", required: false, schema: { type: "string" } },
3413
+ { name: "status", in: "query", required: false, schema: { type: "string", enum: ["certified", "conformance_failed", "draft", "all"] } },
3414
+ { name: "providerId", in: "query", required: false, schema: { type: "string" } },
3415
+ { name: "providerRef", in: "query", required: false, schema: { type: "string" } },
3416
+ { name: "toolId", in: "query", required: false, schema: { type: "string" } },
2964
3417
  { name: "q", in: "query", required: false, schema: { type: "string" } },
2965
3418
  { name: "limit", in: "query", required: false, schema: { type: "integer", minimum: 1, maximum: 200 } },
2966
3419
  { name: "offset", in: "query", required: false, schema: { type: "integer", minimum: 0 } }
@@ -2974,9 +3427,9 @@ export function buildOpenApiSpec({ baseUrl = null } = {}) {
2974
3427
  schema: {
2975
3428
  type: "object",
2976
3429
  additionalProperties: false,
2977
- required: ["listings", "total", "limit", "offset"],
3430
+ required: ["publications", "total", "limit", "offset"],
2978
3431
  properties: {
2979
- listings: { type: "array", items: MarketplaceCapabilityListingV1 },
3432
+ publications: { type: "array", items: MarketplaceProviderPublicationSummaryV1 },
2980
3433
  total: { type: "integer", minimum: 0 },
2981
3434
  limit: { type: "integer", minimum: 1 },
2982
3435
  offset: { type: "integer", minimum: 0 }
@@ -2987,29 +3440,284 @@ export function buildOpenApiSpec({ baseUrl = null } = {}) {
2987
3440
  },
2988
3441
  400: { description: "Bad Request", content: { "application/json": { schema: ErrorResponse } } }
2989
3442
  }
2990
- },
2991
- post: {
2992
- summary: "Create or upsert a marketplace capability listing",
2993
- parameters: [TenantHeader, ProtocolHeader, RequestIdHeader, IdempotencyHeader],
3443
+ }
3444
+ },
3445
+ "/marketplace/tools": {
3446
+ get: {
3447
+ summary: "List marketplace tool listings aggregated from provider publications",
3448
+ parameters: [
3449
+ TenantHeader,
3450
+ ProtocolHeader,
3451
+ RequestIdHeader,
3452
+ { name: "status", in: "query", required: false, schema: { type: "string", enum: ["certified", "conformance_failed", "draft", "all"] } },
3453
+ { name: "providerId", in: "query", required: false, schema: { type: "string" } },
3454
+ { name: "providerRef", in: "query", required: false, schema: { type: "string" } },
3455
+ { name: "toolId", in: "query", required: false, schema: { type: "string" } },
3456
+ { name: "q", in: "query", required: false, schema: { type: "string" } },
3457
+ { name: "tags", in: "query", required: false, schema: { type: "string" }, description: "Comma-separated tag filter" },
3458
+ { name: "limit", in: "query", required: false, schema: { type: "integer", minimum: 1, maximum: 200 } },
3459
+ { name: "offset", in: "query", required: false, schema: { type: "integer", minimum: 0 } }
3460
+ ],
2994
3461
  security: [{ BearerAuth: [] }, { ProxyApiKey: [] }],
2995
- requestBody: { required: true, content: { "application/json": { schema: MarketplaceCapabilityListingUpsertRequest } } },
2996
3462
  responses: {
2997
3463
  200: {
2998
- description: "Updated",
3464
+ description: "OK",
2999
3465
  content: {
3000
3466
  "application/json": {
3001
3467
  schema: {
3002
3468
  type: "object",
3003
3469
  additionalProperties: false,
3470
+ required: ["tools", "total", "limit", "offset"],
3004
3471
  properties: {
3005
- listing: MarketplaceCapabilityListingV1
3472
+ tools: { type: "array", items: MarketplaceToolListingV1 },
3473
+ total: { type: "integer", minimum: 0 },
3474
+ limit: { type: "integer", minimum: 1 },
3475
+ offset: { type: "integer", minimum: 0 }
3006
3476
  }
3007
3477
  }
3008
3478
  }
3009
3479
  }
3010
3480
  },
3011
- 201: {
3012
- description: "Created",
3481
+ 400: { description: "Bad Request", content: { "application/json": { schema: ErrorResponse } } }
3482
+ }
3483
+ }
3484
+ },
3485
+ "/marketplace/providers/publish": {
3486
+ post: {
3487
+ summary: "Publish provider manifest and optionally run conformance",
3488
+ parameters: [TenantHeader, ProtocolHeader, RequestIdHeader, IdempotencyHeader],
3489
+ security: [{ BearerAuth: [] }, { ProxyApiKey: [] }],
3490
+ requestBody: {
3491
+ required: true,
3492
+ content: {
3493
+ "application/json": {
3494
+ schema: {
3495
+ type: "object",
3496
+ additionalProperties: false,
3497
+ required: ["baseUrl", "manifest", "publishProof", "publishProofJwksUrl"],
3498
+ properties: {
3499
+ providerId: { type: "string", nullable: true },
3500
+ baseUrl: { type: "string" },
3501
+ toolId: { type: "string", nullable: true },
3502
+ providerSigningPublicKeyPem: { type: "string", nullable: true },
3503
+ publishProof: { type: "string" },
3504
+ publishProofJwksUrl: { type: "string" },
3505
+ runConformance: { type: "boolean", nullable: true },
3506
+ description: { type: "string", nullable: true },
3507
+ contactUrl: { type: "string", nullable: true },
3508
+ termsUrl: { type: "string", nullable: true },
3509
+ tags: { type: "array", items: { type: "string" } },
3510
+ manifest: { type: "object", additionalProperties: true }
3511
+ }
3512
+ }
3513
+ }
3514
+ }
3515
+ },
3516
+ responses: {
3517
+ 200: {
3518
+ description: "Updated",
3519
+ content: {
3520
+ "application/json": {
3521
+ schema: {
3522
+ type: "object",
3523
+ additionalProperties: false,
3524
+ required: ["publication"],
3525
+ properties: {
3526
+ publication: { type: "object", additionalProperties: true }
3527
+ }
3528
+ }
3529
+ }
3530
+ }
3531
+ },
3532
+ 201: {
3533
+ description: "Created",
3534
+ content: {
3535
+ "application/json": {
3536
+ schema: {
3537
+ type: "object",
3538
+ additionalProperties: false,
3539
+ required: ["publication"],
3540
+ properties: {
3541
+ publication: { type: "object", additionalProperties: true }
3542
+ }
3543
+ }
3544
+ }
3545
+ }
3546
+ },
3547
+ 400: { description: "Bad Request", content: { "application/json": { schema: ErrorResponse } } },
3548
+ 409: { description: "Conflict", content: { "application/json": { schema: ErrorResponse } } },
3549
+ 502: { description: "Bad Gateway", content: { "application/json": { schema: ErrorResponse } } }
3550
+ }
3551
+ }
3552
+ },
3553
+ "/marketplace/providers/conformance/run": {
3554
+ post: {
3555
+ summary: "Run provider conformance checks",
3556
+ parameters: [TenantHeader, ProtocolHeader, RequestIdHeader],
3557
+ security: [{ BearerAuth: [] }, { ProxyApiKey: [] }],
3558
+ requestBody: {
3559
+ required: true,
3560
+ content: {
3561
+ "application/json": {
3562
+ schema: {
3563
+ type: "object",
3564
+ additionalProperties: false,
3565
+ required: ["baseUrl", "manifest"],
3566
+ properties: {
3567
+ providerId: { type: "string", nullable: true },
3568
+ baseUrl: { type: "string" },
3569
+ toolId: { type: "string", nullable: true },
3570
+ providerSigningPublicKeyPem: { type: "string", nullable: true },
3571
+ manifest: { type: "object", additionalProperties: true }
3572
+ }
3573
+ }
3574
+ }
3575
+ }
3576
+ },
3577
+ responses: {
3578
+ 200: {
3579
+ description: "OK",
3580
+ content: {
3581
+ "application/json": {
3582
+ schema: {
3583
+ type: "object",
3584
+ additionalProperties: false,
3585
+ required: ["report"],
3586
+ properties: {
3587
+ report: { type: "object", additionalProperties: true }
3588
+ }
3589
+ }
3590
+ }
3591
+ }
3592
+ },
3593
+ 400: { description: "Bad Request", content: { "application/json": { schema: ErrorResponse } } },
3594
+ 409: { description: "Conflict", content: { "application/json": { schema: ErrorResponse } } },
3595
+ 502: { description: "Bad Gateway", content: { "application/json": { schema: ErrorResponse } } }
3596
+ }
3597
+ }
3598
+ },
3599
+ "/marketplace/providers/{providerId}": {
3600
+ get: {
3601
+ summary: "Get marketplace provider publication by id",
3602
+ parameters: [
3603
+ TenantHeader,
3604
+ ProtocolHeader,
3605
+ RequestIdHeader,
3606
+ { name: "providerId", in: "path", required: true, schema: { type: "string" } }
3607
+ ],
3608
+ security: [{ BearerAuth: [] }, { ProxyApiKey: [] }],
3609
+ responses: {
3610
+ 200: {
3611
+ description: "OK",
3612
+ content: {
3613
+ "application/json": {
3614
+ schema: {
3615
+ type: "object",
3616
+ additionalProperties: false,
3617
+ required: ["publication", "certificationBadge"],
3618
+ properties: {
3619
+ publication: { type: "object", additionalProperties: true },
3620
+ certificationBadge: MarketplaceProviderCertificationBadgeV1
3621
+ }
3622
+ }
3623
+ }
3624
+ }
3625
+ },
3626
+ 400: { description: "Bad Request", content: { "application/json": { schema: ErrorResponse } } },
3627
+ 404: { description: "Not Found", content: { "application/json": { schema: ErrorResponse } } }
3628
+ }
3629
+ }
3630
+ },
3631
+ "/marketplace/providers/{providerId}/badge": {
3632
+ get: {
3633
+ summary: "Get provider certification badge payload",
3634
+ parameters: [
3635
+ TenantHeader,
3636
+ ProtocolHeader,
3637
+ RequestIdHeader,
3638
+ { name: "providerId", in: "path", required: true, schema: { type: "string" } }
3639
+ ],
3640
+ security: [{ BearerAuth: [] }, { ProxyApiKey: [] }],
3641
+ responses: {
3642
+ 200: {
3643
+ description: "OK",
3644
+ content: {
3645
+ "application/json": {
3646
+ schema: {
3647
+ type: "object",
3648
+ additionalProperties: false,
3649
+ required: ["badge"],
3650
+ properties: {
3651
+ badge: MarketplaceProviderCertificationBadgeV1
3652
+ }
3653
+ }
3654
+ }
3655
+ }
3656
+ },
3657
+ 400: { description: "Bad Request", content: { "application/json": { schema: ErrorResponse } } },
3658
+ 404: { description: "Not Found", content: { "application/json": { schema: ErrorResponse } } }
3659
+ }
3660
+ }
3661
+ },
3662
+ "/marketplace/capability-listings": {
3663
+ get: {
3664
+ summary: "List marketplace capability listings",
3665
+ parameters: [
3666
+ TenantHeader,
3667
+ ProtocolHeader,
3668
+ RequestIdHeader,
3669
+ { name: "status", in: "query", required: false, schema: { type: "string", enum: ["active", "paused", "retired", "all"] } },
3670
+ { name: "capability", in: "query", required: false, schema: { type: "string" } },
3671
+ { name: "sellerAgentId", in: "query", required: false, schema: { type: "string" } },
3672
+ { name: "q", in: "query", required: false, schema: { type: "string" } },
3673
+ { name: "limit", in: "query", required: false, schema: { type: "integer", minimum: 1, maximum: 200 } },
3674
+ { name: "offset", in: "query", required: false, schema: { type: "integer", minimum: 0 } }
3675
+ ],
3676
+ security: [{ BearerAuth: [] }, { ProxyApiKey: [] }],
3677
+ responses: {
3678
+ 200: {
3679
+ description: "OK",
3680
+ content: {
3681
+ "application/json": {
3682
+ schema: {
3683
+ type: "object",
3684
+ additionalProperties: false,
3685
+ required: ["listings", "total", "limit", "offset"],
3686
+ properties: {
3687
+ listings: { type: "array", items: MarketplaceCapabilityListingV1 },
3688
+ total: { type: "integer", minimum: 0 },
3689
+ limit: { type: "integer", minimum: 1 },
3690
+ offset: { type: "integer", minimum: 0 }
3691
+ }
3692
+ }
3693
+ }
3694
+ }
3695
+ },
3696
+ 400: { description: "Bad Request", content: { "application/json": { schema: ErrorResponse } } }
3697
+ }
3698
+ },
3699
+ post: {
3700
+ summary: "Create or upsert a marketplace capability listing",
3701
+ parameters: [TenantHeader, ProtocolHeader, RequestIdHeader, IdempotencyHeader],
3702
+ security: [{ BearerAuth: [] }, { ProxyApiKey: [] }],
3703
+ requestBody: { required: true, content: { "application/json": { schema: MarketplaceCapabilityListingUpsertRequest } } },
3704
+ responses: {
3705
+ 200: {
3706
+ description: "Updated",
3707
+ content: {
3708
+ "application/json": {
3709
+ schema: {
3710
+ type: "object",
3711
+ additionalProperties: false,
3712
+ properties: {
3713
+ listing: MarketplaceCapabilityListingV1
3714
+ }
3715
+ }
3716
+ }
3717
+ }
3718
+ },
3719
+ 201: {
3720
+ description: "Created",
3013
3721
  content: {
3014
3722
  "application/json": {
3015
3723
  schema: {
@@ -4834,6 +5542,7 @@ export function buildOpenApiSpec({ baseUrl = null } = {}) {
4834
5542
  panelCandidateAgentIds: { type: "array", items: { type: "string" } },
4835
5543
  summary: { type: "string" },
4836
5544
  evidenceRefs: { type: "array", items: { type: "string" } },
5545
+ disputeOpenEnvelope: DisputeOpenEnvelopeSignedRequest,
4837
5546
  adminOverride: { type: "object", additionalProperties: true }
4838
5547
  }
4839
5548
  }
@@ -4843,7 +5552,36 @@ export function buildOpenApiSpec({ baseUrl = null } = {}) {
4843
5552
  responses: {
4844
5553
  201: {
4845
5554
  description: "Created",
4846
- content: { "application/json": { schema: { type: "object", additionalProperties: false, properties: { arbitrationCase: ArbitrationCaseV1 } } } }
5555
+ content: {
5556
+ "application/json": {
5557
+ schema: {
5558
+ type: "object",
5559
+ additionalProperties: false,
5560
+ properties: {
5561
+ arbitrationCase: ArbitrationCaseV1,
5562
+ arbitrationCaseArtifact: {
5563
+ type: "object",
5564
+ nullable: true,
5565
+ additionalProperties: false,
5566
+ properties: {
5567
+ artifactId: { type: "string" },
5568
+ artifactHash: { type: "string", nullable: true }
5569
+ }
5570
+ },
5571
+ disputeOpenEnvelopeArtifact: {
5572
+ type: "object",
5573
+ nullable: true,
5574
+ additionalProperties: false,
5575
+ properties: {
5576
+ artifactId: { type: "string" },
5577
+ artifactHash: { type: "string", nullable: true }
5578
+ }
5579
+ },
5580
+ alreadyExisted: { type: "boolean" }
5581
+ }
5582
+ }
5583
+ }
5584
+ }
4847
5585
  },
4848
5586
  400: { description: "Bad Request", content: { "application/json": { schema: ErrorResponse } } },
4849
5587
  404: { description: "Not Found", content: { "application/json": { schema: ErrorResponse } } },
@@ -4995,6 +5733,64 @@ export function buildOpenApiSpec({ baseUrl = null } = {}) {
4995
5733
  }
4996
5734
  }
4997
5735
  },
5736
+ "/ops/tool-calls/replay-evaluate": {
5737
+ get: {
5738
+ summary: "Ops: replay tool-call holdback/dispute resolution by agreement hash",
5739
+ parameters: [
5740
+ TenantHeader,
5741
+ ProtocolHeader,
5742
+ RequestIdHeader,
5743
+ { name: "agreementHash", in: "query", required: true, schema: { type: "string" } }
5744
+ ],
5745
+ security: [{ BearerAuth: [] }, { ProxyApiKey: [] }],
5746
+ "x-settld-scopes": ["ops_read"],
5747
+ responses: {
5748
+ 200: {
5749
+ description: "OK",
5750
+ content: {
5751
+ "application/json": {
5752
+ schema: ToolCallReplayEvaluateResponse
5753
+ }
5754
+ }
5755
+ },
5756
+ 400: { description: "Bad Request", content: { "application/json": { schema: ErrorResponse } } },
5757
+ 403: { description: "Forbidden", content: { "application/json": { schema: ErrorResponse } } },
5758
+ 404: { description: "Not Found", content: { "application/json": { schema: ErrorResponse } } },
5759
+ 409: { description: "Conflict", content: { "application/json": { schema: ErrorResponse } } },
5760
+ 501: { description: "Not Implemented", content: { "application/json": { schema: ErrorResponse } } }
5761
+ }
5762
+ }
5763
+ },
5764
+ "/ops/reputation/facts": {
5765
+ get: {
5766
+ summary: "Ops: aggregate append-only reputation facts for an agent/tool window",
5767
+ parameters: [
5768
+ TenantHeader,
5769
+ ProtocolHeader,
5770
+ RequestIdHeader,
5771
+ { name: "agentId", in: "query", required: true, schema: { type: "string" } },
5772
+ { name: "toolId", in: "query", required: false, schema: { type: "string" } },
5773
+ { name: "window", in: "query", required: false, schema: { type: "string", enum: ["7d", "30d", "allTime"] } },
5774
+ { name: "asOf", in: "query", required: false, schema: { type: "string", format: "date-time" } },
5775
+ { name: "includeEvents", in: "query", required: false, schema: { type: "string", enum: ["1"] } }
5776
+ ],
5777
+ security: [{ BearerAuth: [] }, { ProxyApiKey: [] }],
5778
+ "x-settld-scopes": ["ops_read"],
5779
+ responses: {
5780
+ 200: {
5781
+ description: "OK",
5782
+ content: {
5783
+ "application/json": {
5784
+ schema: ReputationFactsResponse
5785
+ }
5786
+ }
5787
+ },
5788
+ 400: { description: "Bad Request", content: { "application/json": { schema: ErrorResponse } } },
5789
+ 403: { description: "Forbidden", content: { "application/json": { schema: ErrorResponse } } },
5790
+ 501: { description: "Not Implemented", content: { "application/json": { schema: ErrorResponse } } }
5791
+ }
5792
+ }
5793
+ },
4998
5794
  "/ops/tool-calls/holds/{holdHash}": {
4999
5795
  get: {
5000
5796
  summary: "Ops: get tool-call funding hold",
@@ -5444,6 +6240,43 @@ export function buildOpenApiSpec({ baseUrl = null } = {}) {
5444
6240
  }
5445
6241
  }
5446
6242
  },
6243
+ "/ops/money-rails/{providerId}/operations/{operationId}/submit": {
6244
+ post: {
6245
+ summary: "Submit a money rail payout operation to the configured provider",
6246
+ parameters: [
6247
+ TenantHeader,
6248
+ ProtocolHeader,
6249
+ RequestIdHeader,
6250
+ IdempotencyHeader,
6251
+ { name: "providerId", in: "path", required: true, schema: { type: "string" } },
6252
+ { name: "operationId", in: "path", required: true, schema: { type: "string" } }
6253
+ ],
6254
+ security: [{ BearerAuth: [] }, { ProxyApiKey: [] }],
6255
+ "x-settld-scopes": ["finance_write"],
6256
+ requestBody: {
6257
+ required: false,
6258
+ content: {
6259
+ "application/json": {
6260
+ schema: {
6261
+ type: "object",
6262
+ additionalProperties: false,
6263
+ properties: {
6264
+ providerRef: { type: "string" }
6265
+ }
6266
+ }
6267
+ }
6268
+ }
6269
+ },
6270
+ responses: {
6271
+ 200: { description: "OK", content: { "application/json": { schema: { type: "object", additionalProperties: true } } } },
6272
+ 400: { description: "Bad request", content: { "application/json": { schema: ErrorResponse } } },
6273
+ 404: { description: "Not found", content: { "application/json": { schema: ErrorResponse } } },
6274
+ 409: { description: "Conflict", content: { "application/json": { schema: ErrorResponse } } },
6275
+ 502: { description: "Upstream provider error", content: { "application/json": { schema: ErrorResponse } } },
6276
+ 503: { description: "Provider circuit open", content: { "application/json": { schema: ErrorResponse } } }
6277
+ }
6278
+ }
6279
+ },
5447
6280
  "/ops/money-rails/{providerId}/events/ingest": {
5448
6281
  post: {
5449
6282
  summary: "Ingest provider event and deterministically map to operation state",
@@ -5520,6 +6353,44 @@ export function buildOpenApiSpec({ baseUrl = null } = {}) {
5520
6353
  }
5521
6354
  }
5522
6355
  },
6356
+ "/ops/finance/money-rails/stripe-connect/accounts/sync": {
6357
+ post: {
6358
+ summary: "Sync Stripe Connect account KYB/capability state from Stripe",
6359
+ parameters: [
6360
+ TenantHeader,
6361
+ ProtocolHeader,
6362
+ RequestIdHeader,
6363
+ IdempotencyHeader,
6364
+ { name: "providerId", in: "query", required: false, schema: { type: "string" } }
6365
+ ],
6366
+ security: [{ BearerAuth: [] }, { ProxyApiKey: [] }],
6367
+ "x-settld-scopes": ["finance_write"],
6368
+ requestBody: {
6369
+ required: false,
6370
+ content: {
6371
+ "application/json": {
6372
+ schema: {
6373
+ type: "object",
6374
+ additionalProperties: false,
6375
+ properties: {
6376
+ providerId: { type: "string" },
6377
+ dryRun: { type: "boolean", default: false },
6378
+ accountIds: { type: "array", items: { type: "string" } }
6379
+ }
6380
+ }
6381
+ }
6382
+ }
6383
+ },
6384
+ responses: {
6385
+ 200: { description: "OK", content: { "application/json": { schema: { type: "object", additionalProperties: true } } } },
6386
+ 400: { description: "Bad Request", content: { "application/json": { schema: ErrorResponse } } },
6387
+ 404: { description: "Not found", content: { "application/json": { schema: ErrorResponse } } },
6388
+ 409: { description: "Conflict", content: { "application/json": { schema: ErrorResponse } } },
6389
+ 502: { description: "Upstream provider error", content: { "application/json": { schema: ErrorResponse } } },
6390
+ 503: { description: "Provider circuit open", content: { "application/json": { schema: ErrorResponse } } }
6391
+ }
6392
+ }
6393
+ },
5523
6394
  "/ops/finance/account-map": {
5524
6395
  get: {
5525
6396
  summary: "Get finance account map",
@@ -5660,6 +6531,248 @@ export function buildOpenApiSpec({ baseUrl = null } = {}) {
5660
6531
  }
5661
6532
  }
5662
6533
  },
6534
+ "/x402/gate/authorize-payment": {
6535
+ post: {
6536
+ summary: "Authorize payment for an x402 gate",
6537
+ description:
6538
+ "Uses strict preconditions (including optional ExecutionIntent.v1 binding) before minting or reusing an authorization token.",
6539
+ parameters: [TenantHeader, ProtocolHeader, RequestIdHeader, IdempotencyHeader],
6540
+ security: [{ BearerAuth: [] }, { ProxyApiKey: [] }],
6541
+ requestBody: {
6542
+ required: true,
6543
+ content: {
6544
+ "application/json": {
6545
+ schema: X402GateAuthorizePaymentRequest
6546
+ }
6547
+ }
6548
+ },
6549
+ responses: {
6550
+ 200: { description: "OK", content: { "application/json": { schema: { type: "object", additionalProperties: true } } } },
6551
+ 400: {
6552
+ description: "Bad Request",
6553
+ "x-settld-known-error-codes": [...X402AuthorizePaymentBadRequestKnownErrorCodes],
6554
+ content: {
6555
+ "application/json": {
6556
+ schema: errorResponseWithKnownCodes(X402AuthorizePaymentBadRequestKnownErrorCodes)
6557
+ }
6558
+ }
6559
+ },
6560
+ 404: { description: "Not Found", content: { "application/json": { schema: ErrorResponse } } },
6561
+ 409: {
6562
+ description: "Conflict",
6563
+ "x-settld-known-error-codes": [...X402AuthorizePaymentConflictKnownErrorCodes],
6564
+ content: {
6565
+ "application/json": {
6566
+ schema: errorResponseWithKnownCodes(X402AuthorizePaymentConflictKnownErrorCodes)
6567
+ }
6568
+ }
6569
+ }
6570
+ }
6571
+ }
6572
+ },
6573
+ "/x402/gate/verify": {
6574
+ post: {
6575
+ summary: "Verify x402 gated execution and settle escrow",
6576
+ parameters: [TenantHeader, ProtocolHeader, RequestIdHeader, IdempotencyHeader],
6577
+ security: [{ BearerAuth: [] }, { ProxyApiKey: [] }],
6578
+ requestBody: {
6579
+ required: true,
6580
+ content: {
6581
+ "application/json": {
6582
+ schema: X402GateVerifyRequest
6583
+ }
6584
+ }
6585
+ },
6586
+ responses: {
6587
+ 200: { description: "OK", content: { "application/json": { schema: { type: "object", additionalProperties: true } } } },
6588
+ 400: { description: "Bad Request", content: { "application/json": { schema: ErrorResponse } } },
6589
+ 404: { description: "Not Found", content: { "application/json": { schema: ErrorResponse } } },
6590
+ 409: { description: "Conflict", content: { "application/json": { schema: ErrorResponse } } }
6591
+ }
6592
+ }
6593
+ },
6594
+ "/x402/zk/verification-keys": {
6595
+ post: {
6596
+ summary: "Register an immutable x402 zk verification key",
6597
+ parameters: [TenantHeader, ProtocolHeader, RequestIdHeader, IdempotencyHeader],
6598
+ security: [{ BearerAuth: [] }, { ProxyApiKey: [] }],
6599
+ requestBody: {
6600
+ required: true,
6601
+ content: {
6602
+ "application/json": {
6603
+ schema: {
6604
+ type: "object",
6605
+ additionalProperties: false,
6606
+ required: ["verificationKey"],
6607
+ properties: {
6608
+ verificationKey: X402ZkVerificationKeyV1
6609
+ }
6610
+ }
6611
+ }
6612
+ }
6613
+ },
6614
+ responses: {
6615
+ 200: { description: "OK", content: { "application/json": { schema: { type: "object", additionalProperties: true } } } },
6616
+ 201: { description: "Created", content: { "application/json": { schema: { type: "object", additionalProperties: true } } } },
6617
+ 400: { description: "Bad Request", content: { "application/json": { schema: ErrorResponse } } },
6618
+ 409: { description: "Conflict", content: { "application/json": { schema: ErrorResponse } } }
6619
+ }
6620
+ },
6621
+ get: {
6622
+ summary: "List x402 zk verification keys",
6623
+ parameters: [
6624
+ TenantHeader,
6625
+ ProtocolHeader,
6626
+ RequestIdHeader,
6627
+ { name: "protocol", in: "query", required: false, schema: { type: "string", enum: ["groth16", "plonk", "stark"] } },
6628
+ { name: "providerRef", in: "query", required: false, schema: { type: "string" } },
6629
+ { name: "limit", in: "query", required: false, schema: { type: "integer", minimum: 1, maximum: 2000, default: 200 } },
6630
+ { name: "offset", in: "query", required: false, schema: { type: "integer", minimum: 0, maximum: 100000, default: 0 } }
6631
+ ],
6632
+ security: [{ BearerAuth: [] }, { ProxyApiKey: [] }],
6633
+ responses: {
6634
+ 200: { description: "OK", content: { "application/json": { schema: { type: "object", additionalProperties: true } } } },
6635
+ 400: { description: "Bad Request", content: { "application/json": { schema: ErrorResponse } } }
6636
+ }
6637
+ }
6638
+ },
6639
+ "/x402/zk/verification-keys/{verificationKeyId}": {
6640
+ get: {
6641
+ summary: "Get x402 zk verification key by id",
6642
+ parameters: [
6643
+ TenantHeader,
6644
+ ProtocolHeader,
6645
+ RequestIdHeader,
6646
+ { name: "verificationKeyId", in: "path", required: true, schema: { type: "string" } }
6647
+ ],
6648
+ security: [{ BearerAuth: [] }, { ProxyApiKey: [] }],
6649
+ responses: {
6650
+ 200: { description: "OK", content: { "application/json": { schema: { type: "object", additionalProperties: true } } } },
6651
+ 404: { description: "Not Found", content: { "application/json": { schema: ErrorResponse } } }
6652
+ }
6653
+ }
6654
+ },
6655
+ "/x402/webhooks/endpoints": {
6656
+ post: {
6657
+ summary: "Register an x402 principal webhook endpoint (secret returned once)",
6658
+ parameters: [TenantHeader, ProtocolHeader, RequestIdHeader, IdempotencyHeader],
6659
+ security: [{ BearerAuth: [] }, { ProxyApiKey: [] }],
6660
+ requestBody: {
6661
+ required: true,
6662
+ content: {
6663
+ "application/json": {
6664
+ schema: {
6665
+ type: "object",
6666
+ additionalProperties: false,
6667
+ required: ["url", "events"],
6668
+ properties: {
6669
+ url: { type: "string", format: "uri", example: "https://principal.example.com/webhooks/settld" },
6670
+ events: {
6671
+ type: "array",
6672
+ minItems: 1,
6673
+ items: {
6674
+ type: "string",
6675
+ enum: ["x402.escalation.created", "x402.escalation.approved", "x402.escalation.denied"]
6676
+ }
6677
+ },
6678
+ description: { type: "string", maxLength: 300 },
6679
+ status: { type: "string", enum: ["active", "disabled"], default: "active" }
6680
+ }
6681
+ }
6682
+ }
6683
+ }
6684
+ },
6685
+ responses: {
6686
+ 201: { description: "Created", content: { "application/json": { schema: { type: "object", additionalProperties: true } } } },
6687
+ 400: { description: "Bad Request", content: { "application/json": { schema: ErrorResponse } } }
6688
+ }
6689
+ },
6690
+ get: {
6691
+ summary: "List x402 webhook endpoints",
6692
+ parameters: [
6693
+ TenantHeader,
6694
+ ProtocolHeader,
6695
+ RequestIdHeader,
6696
+ { name: "status", in: "query", required: false, schema: { type: "string", enum: ["active", "disabled", "revoked"] } },
6697
+ {
6698
+ name: "event",
6699
+ in: "query",
6700
+ required: false,
6701
+ schema: { type: "string", enum: ["x402.escalation.created", "x402.escalation.approved", "x402.escalation.denied"] }
6702
+ },
6703
+ { name: "limit", in: "query", required: false, schema: { type: "integer", minimum: 1, maximum: 1000, default: 200 } },
6704
+ { name: "offset", in: "query", required: false, schema: { type: "integer", minimum: 0, maximum: 100000, default: 0 } }
6705
+ ],
6706
+ security: [{ BearerAuth: [] }, { ProxyApiKey: [] }],
6707
+ responses: {
6708
+ 200: { description: "OK", content: { "application/json": { schema: { type: "object", additionalProperties: true } } } },
6709
+ 400: { description: "Bad Request", content: { "application/json": { schema: ErrorResponse } } }
6710
+ }
6711
+ }
6712
+ },
6713
+ "/x402/webhooks/endpoints/{endpointId}": {
6714
+ get: {
6715
+ summary: "Get x402 webhook endpoint",
6716
+ parameters: [
6717
+ TenantHeader,
6718
+ ProtocolHeader,
6719
+ RequestIdHeader,
6720
+ { name: "endpointId", in: "path", required: true, schema: { type: "string" } }
6721
+ ],
6722
+ security: [{ BearerAuth: [] }, { ProxyApiKey: [] }],
6723
+ responses: {
6724
+ 200: { description: "OK", content: { "application/json": { schema: { type: "object", additionalProperties: true } } } },
6725
+ 404: { description: "Not Found", content: { "application/json": { schema: ErrorResponse } } }
6726
+ }
6727
+ },
6728
+ delete: {
6729
+ summary: "Revoke x402 webhook endpoint",
6730
+ parameters: [
6731
+ TenantHeader,
6732
+ ProtocolHeader,
6733
+ RequestIdHeader,
6734
+ IdempotencyHeader,
6735
+ { name: "endpointId", in: "path", required: true, schema: { type: "string" } }
6736
+ ],
6737
+ security: [{ BearerAuth: [] }, { ProxyApiKey: [] }],
6738
+ responses: {
6739
+ 200: { description: "OK", content: { "application/json": { schema: { type: "object", additionalProperties: true } } } },
6740
+ 404: { description: "Not Found", content: { "application/json": { schema: ErrorResponse } } }
6741
+ }
6742
+ }
6743
+ },
6744
+ "/x402/webhooks/endpoints/{endpointId}/rotate-secret": {
6745
+ post: {
6746
+ summary: "Rotate x402 webhook endpoint secret (returns new secret once)",
6747
+ parameters: [
6748
+ TenantHeader,
6749
+ ProtocolHeader,
6750
+ RequestIdHeader,
6751
+ { name: "endpointId", in: "path", required: true, schema: { type: "string" } }
6752
+ ],
6753
+ security: [{ BearerAuth: [] }, { ProxyApiKey: [] }],
6754
+ requestBody: {
6755
+ required: false,
6756
+ content: {
6757
+ "application/json": {
6758
+ schema: {
6759
+ type: "object",
6760
+ additionalProperties: false,
6761
+ properties: {
6762
+ gracePeriodSeconds: { type: "integer", minimum: 1, maximum: 604800, default: 86400 }
6763
+ }
6764
+ }
6765
+ }
6766
+ }
6767
+ },
6768
+ responses: {
6769
+ 200: { description: "OK", content: { "application/json": { schema: { type: "object", additionalProperties: true } } } },
6770
+ 400: { description: "Bad Request", content: { "application/json": { schema: ErrorResponse } } },
6771
+ 404: { description: "Not Found", content: { "application/json": { schema: ErrorResponse } } },
6772
+ 409: { description: "Conflict", content: { "application/json": { schema: ErrorResponse } } }
6773
+ }
6774
+ }
6775
+ },
5663
6776
  "/exports/ack": {
5664
6777
  post: {
5665
6778
  summary: "ACK a delivery (destination-signed)",