settld 0.1.1 → 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
@@ -0,0 +1,337 @@
1
+ # Quickstart: MCP (Stdio Spike)
2
+
3
+ This quickstart connects an MCP-compatible agent/client to Settld using the Sprint 23 `stdio` MCP spike server.
4
+
5
+ For host-specific setup (Claude, Cursor, Codex, OpenClaw), see `docs/QUICKSTART_MCP_HOSTS.md`.
6
+
7
+ ## Prerequisites
8
+
9
+ - Node.js 20+
10
+ - A Settld API key with appropriate scopes (`keyId.secret` format)
11
+ - Settld API reachable (local `npm run dev:api` or hosted)
12
+
13
+ ## One-Command Local Demo (Paid MCP Exa Flow)
14
+
15
+ Boots local API + provider wrapper + x402 gateway, runs MCP `settld.exa_search_paid`, verifies signatures/tokens, and writes an artifact bundle.
16
+
17
+ To scaffold your own paid tool server quickly:
18
+
19
+ ```bash
20
+ npx create-settld-paid-tool my-paid-tool
21
+ ```
22
+
23
+ Run provider conformance/publish with machine-readable artifacts:
24
+
25
+ ```bash
26
+ npm run provider:conformance -- \
27
+ --manifest ./paid-tool-manifest.json \
28
+ --base-url http://127.0.0.1:9402 \
29
+ --api-url http://127.0.0.1:3000 \
30
+ --api-key "$SETTLD_API_KEY" \
31
+ --json-out artifacts/provider-conformance.json
32
+
33
+ npm run provider:publish -- \
34
+ --manifest ./paid-tool-manifest.json \
35
+ --base-url http://127.0.0.1:9402 \
36
+ --api-url http://127.0.0.1:3000 \
37
+ --api-key "$SETTLD_API_KEY" \
38
+ --json-out artifacts/provider-publication.json \
39
+ --conformance-json-out artifacts/provider-conformance-from-publish.json
40
+ ```
41
+
42
+ Notes:
43
+
44
+ - `provider:conformance` exits non-zero when verdict is not `ok` (use `--allow-fail` to keep exit code `0`).
45
+ - `provider:publish` exits non-zero when `runConformance` is enabled and publication is not `certified` (use `--allow-fail` to keep exit code `0`).
46
+
47
+ ```bash
48
+ npm run demo:mcp-paid-exa
49
+ npm run demo:mcp-paid-weather
50
+ npm run demo:mcp-paid-llm
51
+ ```
52
+
53
+ Circle sandbox mode (real reserve path):
54
+
55
+ ```bash
56
+ SETTLD_DEMO_CIRCLE_MODE=sandbox \
57
+ X402_REQUIRE_EXTERNAL_RESERVE=1 \
58
+ npm run demo:mcp-paid-exa -- --circle=sandbox
59
+ ```
60
+
61
+ Circle sandbox mode with batch settlement execution:
62
+
63
+ ```bash
64
+ SETTLD_DEMO_CIRCLE_MODE=sandbox \
65
+ SETTLD_DEMO_RUN_BATCH_SETTLEMENT=1 \
66
+ SETTLD_DEMO_BATCH_PROVIDER_WALLET_ID="$CIRCLE_WALLET_ID_ESCROW" \
67
+ X402_REQUIRE_EXTERNAL_RESERVE=1 \
68
+ npm run demo:mcp-paid-exa -- --circle=sandbox
69
+ ```
70
+
71
+ Success output:
72
+
73
+ ```text
74
+ PASS artifactDir=artifacts/mcp-paid-exa/...
75
+ gateId=...
76
+ decisionId=...
77
+ settlementReceiptId=...
78
+ ```
79
+
80
+ Artifact bundle includes:
81
+
82
+ - `summary.json`
83
+ - `mcp-call.raw.json`
84
+ - `mcp-call.parsed.json`
85
+ - `response-body.json`
86
+ - `gate-state.json`
87
+ - `reserve-state.json`
88
+ - `provider-signature-verification.json`
89
+ - `settld-pay-token-verification.json`
90
+ - `batch-payout-registry.json` (when `SETTLD_DEMO_RUN_BATCH_SETTLEMENT=1`)
91
+ - `batch-worker-state.json` (when `SETTLD_DEMO_RUN_BATCH_SETTLEMENT=1`)
92
+ - `batch-settlement.json` (when `SETTLD_DEMO_RUN_BATCH_SETTLEMENT=1`)
93
+
94
+ ## Authority + Pinning Notes
95
+
96
+ - Authority enforcement in this flow is API key scope + tenant-bound policy checks at Settld API/gateway surfaces.
97
+ - Replay-critical settlement policy pinning is captured in `SettlementDecisionRecord.v2` (`policyHashUsed`, `verificationMethodHashUsed`), so decisions remain auditable and deterministic.
98
+ - Receipts and exports bind the paid call to decision + settlement artifacts:
99
+ - `decisionId` (printed by demo and present in receipt data)
100
+ - `settlementReceiptId` (printed by demo and present in receipt data)
101
+
102
+ Reference specs:
103
+
104
+ - `docs/spec/SettlementDecisionRecord.v2.md`
105
+ - `docs/spec/SettlementReceipt.v1.md`
106
+ - `docs/spec/SettlementKernel.v1.md`
107
+
108
+ ## Run The MCP Server
109
+
110
+ Set environment variables:
111
+
112
+ ```bash
113
+ export SETTLD_BASE_URL='https://api.settld.work' # or http://127.0.0.1:3000
114
+ export SETTLD_TENANT_ID='tenant_default'
115
+ export SETTLD_API_KEY='sk_live_xxx.yyy' # keyId.secret (do not commit)
116
+ export SETTLD_PROTOCOL='1.0' # optional; server will try to auto-discover
117
+ export SETTLD_PAID_TOOLS_BASE_URL='http://127.0.0.1:8402' # optional; paid x402 tools
118
+ ```
119
+
120
+ Start the server:
121
+
122
+ ```bash
123
+ npm run mcp:server
124
+ ```
125
+
126
+ The server speaks JSON-RPC 2.0 over `stdio` and exposes curated tools.
127
+ If you run it in a normal terminal, it will just sit waiting for JSON-RPC input (this is expected). Use `mcp:probe` below to validate it end-to-end.
128
+
129
+ ## Optional: HTTP Gateway (HTTP -> MCP stdio)
130
+
131
+ This is useful if you can do HTTP calls but cannot spawn a local MCP process.
132
+
133
+ ```bash
134
+ export MCP_HTTP_PORT=8787
135
+ npm run mcp:http
136
+ ```
137
+
138
+ Then send JSON-RPC requests:
139
+
140
+ ```bash
141
+ curl -sS http://127.0.0.1:8787/rpc \
142
+ -H 'content-type: application/json' \
143
+ -d '{"jsonrpc":"2.0","id":"1","method":"initialize","params":{"protocolVersion":"2024-11-05","clientInfo":{"name":"curl","version":"0"},"capabilities":{}}}' | jq .
144
+ ```
145
+
146
+ ## Sanity Check (No Manual JSON Copy/Paste)
147
+
148
+ ```bash
149
+ npm run mcp:probe
150
+ ```
151
+
152
+ This spawns the MCP server, runs `initialize` and `tools/list`, prints the responses, and exits.
153
+
154
+ ## x402 Gate Smoke (create -> verify -> get)
155
+
156
+ Run an end-to-end x402 gate flow over MCP with explicit idempotency keys:
157
+
158
+ ```bash
159
+ npm run -s mcp:probe -- --x402-smoke
160
+ ```
161
+
162
+ This performs:
163
+
164
+ 1. `settld.x402_gate_create`
165
+ 2. `settld.x402_gate_verify` (auto-authorize enabled by default)
166
+ 3. `settld.x402_gate_get`
167
+
168
+ You can override payloads from a JSON file:
169
+
170
+ ```bash
171
+ cat > /tmp/settld-mcp-x402-smoke.json <<'JSON'
172
+ {
173
+ "create": {
174
+ "amountCents": 250,
175
+ "idempotencyKey": "mcp_probe_create_custom_1"
176
+ },
177
+ "verify": {
178
+ "idempotencyKey": "mcp_probe_verify_custom_1",
179
+ "authorizeIdempotencyKey": "mcp_probe_auth_custom_1"
180
+ }
181
+ }
182
+ JSON
183
+
184
+ npm run -s mcp:probe -- --x402-smoke --x402-smoke-file /tmp/settld-mcp-x402-smoke.json
185
+ ```
186
+
187
+ ## Agreement Delegation Tools (create/list)
188
+
189
+ Create a delegation edge and list it via MCP:
190
+
191
+ ```bash
192
+ cat > /tmp/settld-mcp-delegation-create.json <<'JSON'
193
+ {
194
+ "parentAgreementHash": "1111111111111111111111111111111111111111111111111111111111111111",
195
+ "childAgreementHash": "2222222222222222222222222222222222222222222222222222222222222222",
196
+ "delegatorAgentId": "agt_parent",
197
+ "delegateeAgentId": "agt_child",
198
+ "budgetCapCents": 500,
199
+ "idempotencyKey": "mcp_probe_delegation_create_1"
200
+ }
201
+ JSON
202
+
203
+ npm run -s mcp:probe -- --call-file settld.agreement_delegation_create /tmp/settld-mcp-delegation-create.json
204
+ npm run -s mcp:probe -- --call settld.agreement_delegation_list '{"agreementHash":"1111111111111111111111111111111111111111111111111111111111111111","status":"active","limit":20,"offset":0}'
205
+ ```
206
+
207
+ `settld.agreement_delegation_create` responses include `delegation.delegationHash` for deterministic orchestration and audit bindings.
208
+
209
+ ## Live Call Without Shell-JSON Footguns
210
+
211
+ If your terminal copy/paste keeps inserting line breaks, pass tool arguments via a JSON file:
212
+
213
+ ```bash
214
+ cat > /tmp/settld-mcp-create-agreement.json <<'JSON'
215
+ {"amountCents":500,"currency":"USD","title":"MCP live probe","capability":"agent-task:demo","disputeWindowDays":7}
216
+ JSON
217
+
218
+ npm run -s mcp:probe -- --call-file settld.create_agreement /tmp/settld-mcp-create-agreement.json
219
+ ```
220
+
221
+ Alternative that avoids paste issues entirely:
222
+
223
+ ```bash
224
+ jq -n '{amountCents:500,currency:"USD",title:"MCP live probe",capability:"agent-task:demo",disputeWindowDays:7}' \
225
+ > /tmp/settld-mcp-create-agreement.json
226
+ ```
227
+
228
+ ## Tool Flow (Typical)
229
+
230
+ 1. Create an agreement (marketplace-backed) and a run:
231
+
232
+ Method: `tools/call`
233
+
234
+ Tool: `settld.create_agreement`
235
+
236
+ Arguments example:
237
+
238
+ ```json
239
+ {
240
+ "amountCents": 500,
241
+ "currency": "USD",
242
+ "title": "MCP spike agreement",
243
+ "capability": "agent-task:demo",
244
+ "disputeWindowDays": 7
245
+ }
246
+ ```
247
+
248
+ 2. Submit evidence for the run:
249
+
250
+ Tool: `settld.submit_evidence`
251
+
252
+ ```json
253
+ {
254
+ "agentId": "<payeeAgentId from create_agreement>",
255
+ "runId": "<runId from create_agreement>",
256
+ "evidenceRef": "evidence://demo/step-1"
257
+ }
258
+ ```
259
+
260
+ 3. Settle the run:
261
+
262
+ Tool: `settld.settle_run`
263
+
264
+ ```json
265
+ {
266
+ "agentId": "<payeeAgentId>",
267
+ "runId": "<runId>",
268
+ "outcome": "completed",
269
+ "outputRef": "evidence://demo/output"
270
+ }
271
+ ```
272
+
273
+ 4. Resolve the settlement (so it is no longer `locked`):
274
+
275
+ Tool: `settld.resolve_settlement`
276
+
277
+ ```json
278
+ {
279
+ "runId": "<runId>",
280
+ "status": "released",
281
+ "reason": "demo settlement resolution"
282
+ }
283
+ ```
284
+
285
+ 5. Open a dispute (only valid within the dispute window):
286
+
287
+ Tool: `settld.open_dispute`
288
+
289
+ ```json
290
+ {
291
+ "runId": "<runId>",
292
+ "reason": "Disputing for demo purposes",
293
+ "evidenceRefs": ["evidence://demo/dispute/1"],
294
+ "waitMs": 5000
295
+ }
296
+ ```
297
+
298
+ ## Paid Tool Flows (`settld.exa_search_paid`, `settld.weather_current_paid`)
299
+
300
+ Both paid tools exercise the same x402 path from MCP:
301
+
302
+ 1. First call returns `402` from the paid endpoint.
303
+ 2. MCP wrapper retries with `x-settld-gate-id`.
304
+ 3. Gateway returns `200` and `x-settld-*` verification/settlement headers.
305
+
306
+ Run the local paid upstream + gateway from `docs/QUICKSTART_X402_GATEWAY.md`, then invoke:
307
+
308
+ ```bash
309
+ cat > /tmp/settld-mcp-exa-search.json <<'JSON'
310
+ {"query":"dentist near me chicago","numResults":3}
311
+ JSON
312
+
313
+ SETTLD_PAID_TOOLS_BASE_URL='http://127.0.0.1:8402' \
314
+ npm run -s mcp:probe -- --call-file settld.exa_search_paid /tmp/settld-mcp-exa-search.json
315
+ ```
316
+
317
+ Exa call result includes:
318
+
319
+ - `response`: Exa-style search body.
320
+ - `headers`: captured `x-settld-*` verification/settlement headers.
321
+
322
+ Weather call example:
323
+
324
+ ```bash
325
+ cat > /tmp/settld-mcp-weather.json <<'JSON'
326
+ {"city":"Chicago","unit":"f"}
327
+ JSON
328
+
329
+ SETTLD_PAID_TOOLS_BASE_URL='http://127.0.0.1:8402' \
330
+ npm run -s mcp:probe -- --call-file settld.weather_current_paid /tmp/settld-mcp-weather.json
331
+ ```
332
+
333
+ ## Notes
334
+
335
+ - Writes require `x-settld-protocol`. The MCP server sets this automatically for write calls.
336
+ - Run event appends require `x-proxy-expected-prev-chain-hash`. The MCP server fetches the current head and supplies it.
337
+ - This is a spike (Sprint 23). Production hardening (SSE transport, rate limiting, etc.) is planned for Sprint 25.
@@ -0,0 +1,143 @@
1
+ # Quickstart: MCP Host Integrations (Claude, Cursor, Codex, OpenClaw)
2
+
3
+ Use this when you want to connect a real agent host to Settld MCP in under 5 minutes.
4
+
5
+ For core MCP flow details and paid-tool artifacts, see `docs/QUICKSTART_MCP.md`.
6
+
7
+ ## 0) Prerequisites
8
+
9
+ - Node.js 20+
10
+ - Settld API reachable (`http://127.0.0.1:3000` for local or your hosted API)
11
+ - A tenant-scoped Settld API key (`keyId.secret` format)
12
+
13
+ Export env once in your shell:
14
+
15
+ ```bash
16
+ export SETTLD_BASE_URL='http://127.0.0.1:3000'
17
+ export SETTLD_TENANT_ID='tenant_default'
18
+ export SETTLD_API_KEY='sk_live_xxx.yyy'
19
+ export SETTLD_PAID_TOOLS_BASE_URL='http://127.0.0.1:8402'
20
+ ```
21
+
22
+ Sanity check the server before wiring any host:
23
+
24
+ ```bash
25
+ npm run mcp:probe
26
+ ```
27
+
28
+ ## 1) Canonical MCP Server Definition
29
+
30
+ Most hosts that support MCP stdio need a command, args, and env.
31
+ Use this as your default server config:
32
+
33
+ ```json
34
+ {
35
+ "name": "settld",
36
+ "command": "npx",
37
+ "args": ["-y", "settld-mcp"],
38
+ "env": {
39
+ "SETTLD_BASE_URL": "http://127.0.0.1:3000",
40
+ "SETTLD_TENANT_ID": "tenant_default",
41
+ "SETTLD_API_KEY": "sk_live_xxx.yyy",
42
+ "SETTLD_PAID_TOOLS_BASE_URL": "http://127.0.0.1:8402"
43
+ }
44
+ }
45
+ ```
46
+
47
+ If your host cannot spawn stdio commands, use HTTP bridge:
48
+
49
+ ```bash
50
+ MCP_HTTP_PORT=8787 npm run mcp:http
51
+ ```
52
+
53
+ Then point the host at:
54
+
55
+ - MCP endpoint: `http://127.0.0.1:8787/rpc`
56
+ - Health endpoint: `http://127.0.0.1:8787/healthz`
57
+
58
+ ## 2) Claude
59
+
60
+ 1. Open Claude MCP settings.
61
+ 2. Add a new MCP server using the canonical config above.
62
+ 3. Save and reconnect.
63
+ 4. Ask Claude to call:
64
+ - `settld.about`
65
+ - `settld.exa_search_paid` with `{"query":"dentist near me chicago","numResults":3}`
66
+
67
+ Expected behavior:
68
+
69
+ - First paid call triggers x402 challenge/authorize/retry automatically in the MCP wrapper.
70
+ - Tool result includes Settld verification/settlement headers.
71
+
72
+ ## 3) Cursor
73
+
74
+ 1. Open Cursor MCP settings.
75
+ 2. Add an MCP server using the same canonical stdio definition.
76
+ 3. Reconnect tools.
77
+ 4. Run:
78
+ - `settld.about`
79
+ - `settld.weather_current_paid` with `{"city":"Chicago","unit":"f"}`
80
+
81
+ Expected behavior:
82
+
83
+ - Paid tool returns response body plus `x-settld-*` headers captured by the tool bridge.
84
+
85
+ ## 4) Codex
86
+
87
+ 1. Open Codex MCP/tooling configuration.
88
+ 2. Register Settld with the canonical stdio definition.
89
+ 3. Reload tool discovery.
90
+ 4. Run:
91
+ - `settld.about`
92
+ - `settld.exa_search_paid`
93
+
94
+ Expected behavior:
95
+
96
+ - Paid call resolves through the same x402 autopay flow.
97
+
98
+ ## 5) OpenClaw
99
+
100
+ For OpenClaw, package Settld as a skill that declares MCP setup instructions.
101
+ Reference skill payload:
102
+
103
+ - `docs/integrations/openclaw/settld-mcp-skill/SKILL.md`
104
+ - `docs/integrations/openclaw/settld-mcp-skill/mcp-server.example.json`
105
+ - `docs/integrations/openclaw/CLAWHUB_PUBLISH_CHECKLIST.md`
106
+
107
+ Minimum skill payload should include:
108
+
109
+ - Name/description
110
+ - MCP server command (`npx -y settld-mcp`)
111
+ - Required env vars (`SETTLD_BASE_URL`, `SETTLD_TENANT_ID`, `SETTLD_API_KEY`, optional `SETTLD_PAID_TOOLS_BASE_URL`)
112
+ - A smoke prompt using `settld.about`
113
+
114
+ You can test locally first with:
115
+
116
+ ```bash
117
+ npm run mcp:probe -- --call settld.about '{}'
118
+ ```
119
+
120
+ ## 6) 5-Minute Validation Checklist
121
+
122
+ 0. (CI/local gate) run hosted-style smoke once:
123
+
124
+ ```bash
125
+ npm run test:ci:mcp-host-smoke
126
+ ```
127
+
128
+ 1. `npm run mcp:probe` passes locally.
129
+ 2. Host discovers Settld tools (`tools/list` includes `settld.*`).
130
+ 3. `settld.about` succeeds.
131
+ 4. One paid tool call succeeds (`settld.exa_search_paid` or `settld.weather_current_paid`).
132
+ 5. You can see a resulting artifact bundle from paid demo runs:
133
+ - `artifacts/mcp-paid-exa/.../summary.json`
134
+ - `artifacts/mcp-paid-weather/.../summary.json`
135
+
136
+ ## 7) Troubleshooting
137
+
138
+ - `SETTLD_API_KEY must be a non-empty string`
139
+ - API key not injected into MCP server env.
140
+ - Host cannot run `npx`
141
+ - Install Node 20+ and ensure `npx` is on PATH, or run HTTP bridge mode.
142
+ - Paid tool returns gateway/connectivity errors
143
+ - Confirm `SETTLD_PAID_TOOLS_BASE_URL` points to a running gateway.
@@ -0,0 +1,61 @@
1
+ # Quickstart: Produce + verify a bundle (bootstrap)
2
+
3
+ This quickstart is for design partners who want an end-to-end “from zero” flow:
4
+
5
+ 1) initialize trust + keys
6
+ 2) produce a bundle
7
+ 3) verify it strictly and archive the JSON output
8
+
9
+ ## 0) Install (from this repo)
10
+
11
+ From a checkout:
12
+
13
+ ```sh
14
+ npm ci
15
+ ```
16
+
17
+ ## 1) Initialize trust
18
+
19
+ ```sh
20
+ node packages/artifact-produce/bin/settld-trust.js init --out out/trust --format json --force
21
+ ```
22
+
23
+ This writes:
24
+
25
+ - `out/trust/trust.json` (public trust anchors; safe to commit)
26
+ - `out/trust/keypairs.json` (private keys; **do not commit**)
27
+
28
+ For production deployments, use remote signing so no private keys touch disk:
29
+
30
+ - RemoteSigner contract: `docs/spec/REMOTE_SIGNER.md`
31
+ - Operator notes: `docs/OPERATIONS_SIGNING.md`
32
+
33
+ ## 2) Produce a JobProof bundle
34
+
35
+ ```sh
36
+ node packages/artifact-produce/bin/settld-produce.js jobproof \
37
+ --out out/jobproof \
38
+ --keys out/trust/keypairs.json \
39
+ --format json \
40
+ --deterministic \
41
+ --force
42
+ ```
43
+
44
+ The output JSON is `ProduceCliOutput.v1` (see `docs/spec/ProduceCliOutput.v1.md`).
45
+
46
+ ## 3) Verify strictly
47
+
48
+ Export trust anchors from `trust.json`:
49
+
50
+ ```sh
51
+ export SETTLD_TRUSTED_GOVERNANCE_ROOT_KEYS_JSON="$(node -e \"const fs=require('fs'); const t=JSON.parse(fs.readFileSync('out/trust/trust.json','utf8')); process.stdout.write(JSON.stringify(t.governanceRoots||{}))\")"
52
+ export SETTLD_TRUSTED_TIME_AUTHORITY_KEYS_JSON="$(node -e \"const fs=require('fs'); const t=JSON.parse(fs.readFileSync('out/trust/trust.json','utf8')); process.stdout.write(JSON.stringify(t.timeAuthorities||{}))\")"
53
+ ```
54
+
55
+ Then verify and archive machine output:
56
+
57
+ ```sh
58
+ node packages/artifact-verify/bin/settld-verify.js --format json --strict --job-proof out/jobproof > out/verify.json
59
+ ```
60
+
61
+ `out/verify.json` is `VerifyCliOutput.v1` and is intended to be archived as audit evidence.
@@ -0,0 +1,39 @@
1
+ # Quickstart: Verify a Settld Release (Authenticity)
2
+
3
+ This verifies Settld **distribution artifacts** (npm tarballs, conformance pack, audit packet) using a signed `ReleaseIndex.v1` rooted in a release trust file.
4
+
5
+ ## Offline verification (recommended)
6
+
7
+ 1) Download a release’s assets into a directory (example: `./release/`), including:
8
+
9
+ - `release_index_v1.json`
10
+ - `release_index_v1.sig`
11
+ - every artifact listed in `release_index_v1.json.artifacts[]`
12
+
13
+ 2) Verify using the pinned release trust roots:
14
+
15
+ ```sh
16
+ settld-release verify --dir ./release --trust-file trust/release-trust.json --format json --explain
17
+ ```
18
+
19
+ - Exit code `0` means verified.
20
+ - `--format json` prints `VerifyReleaseOutput.v1` to stdout (pipe-safe, deterministic).
21
+ - `--explain` prints deterministic diagnostics to stderr.
22
+
23
+ ## Mirror/HTTP verification (base URL)
24
+
25
+ If your org mirrors release assets under a single base URL:
26
+
27
+ ```sh
28
+ settld-release verify --base-url https://example.com/settld/releases/v1.0.0-rc.1/ --trust-file trust/release-trust.json --format json --explain
29
+ ```
30
+
31
+ This downloads `release_index_v1.json`, `release_index_v1.sig`, then downloads every artifact referenced by the index (relative to the base URL) into a temp directory before verifying.
32
+
33
+ ## Trust domains (important)
34
+
35
+ Release authenticity trust roots are **separate** from bundle verification trust roots.
36
+
37
+ - Release trust: `trust/release-trust.json`
38
+ - Bundle verification trust: `SETTLD_TRUSTED_GOVERNANCE_ROOT_KEYS_JSON` / `trust.json` (see `docs/spec/TRUST_ANCHORS.md`)
39
+
@@ -0,0 +1,125 @@
1
+ # Quickstart: First verified agent run with the SDK
2
+
3
+ Goal: run one end-to-end agent transaction (register identities, append run events, verify `green`, release settlement) using `SettldClient.firstVerifiedRun(...)`.
4
+
5
+ ## 0) Install deps
6
+
7
+ ```sh
8
+ npm ci
9
+ ```
10
+
11
+ ## Fast Path (recommended)
12
+
13
+ Use the helper scripts to avoid manual export churn across shells:
14
+
15
+ ```sh
16
+ npm run dev:env:init
17
+ # edit .env.dev with your DATABASE_URL once
18
+ ```
19
+
20
+ Start API:
21
+
22
+ ```sh
23
+ npm run dev:start
24
+ ```
25
+
26
+ In another shell:
27
+
28
+ ```sh
29
+ source scripts/dev/env.sh
30
+ npm run dev:sdk:first-run
31
+ ```
32
+
33
+ Run the full billing + dispute + arbitration doctor flow:
34
+
35
+ ```sh
36
+ source scripts/dev/env.sh
37
+ npm run dev:billing:doctor
38
+ ```
39
+
40
+ Optional: make `sdk:first-run` create a disputable settlement window:
41
+
42
+ ```sh
43
+ SETTLD_SDK_DISPUTE_WINDOW_DAYS=3 npm run sdk:first-run
44
+ ```
45
+
46
+ ## 1) Start the API with a local ops token
47
+
48
+ ```sh
49
+ export PROXY_OPS_TOKEN=dev_ops_token
50
+ npm run dev:api
51
+ ```
52
+
53
+ ## 2) Create an API key for SDK calls
54
+
55
+ In a second shell:
56
+
57
+ ```sh
58
+ export SETTLD_BASE_URL=http://127.0.0.1:3000
59
+ export SETTLD_TENANT_ID=tenant_default
60
+ export SETTLD_API_KEY="$(
61
+ curl -sS -X POST "$SETTLD_BASE_URL/ops/api-keys" \
62
+ -H "authorization: Bearer $PROXY_OPS_TOKEN" \
63
+ -H "x-proxy-tenant-id: $SETTLD_TENANT_ID" \
64
+ -H "content-type: application/json" \
65
+ -d '{"scopes":["ops_read","ops_write","finance_read","finance_write","audit_read"],"description":"sdk quickstart"}' \
66
+ | jq -r '.keyId + "." + .secret'
67
+ )"
68
+ ```
69
+
70
+ ## 3) Run the SDK example
71
+
72
+ ```sh
73
+ node scripts/examples/sdk-first-verified-run.mjs
74
+ ```
75
+
76
+ Expected output:
77
+
78
+ ```json
79
+ {
80
+ "runId": "run_sdk_...",
81
+ "payeeAgentId": "agt_payee_...",
82
+ "payerAgentId": "agt_payer_...",
83
+ "runStatus": "completed",
84
+ "verificationStatus": "green",
85
+ "settlementStatus": "released"
86
+ }
87
+ ```
88
+
89
+ ## 4) Use the helper directly in code
90
+
91
+ ```js
92
+ import { SettldClient } from "./packages/api-sdk/src/index.js";
93
+
94
+ const client = new SettldClient({
95
+ baseUrl: process.env.SETTLD_BASE_URL,
96
+ tenantId: process.env.SETTLD_TENANT_ID,
97
+ apiKey: process.env.SETTLD_API_KEY,
98
+ xApiKey: process.env.SETTLD_X_API_KEY // optional for Magic Link deployments that enforce x-api-key
99
+ });
100
+
101
+ const result = await client.firstVerifiedRun({
102
+ payeeAgent: { publicKeyPem: "...", owner: { ownerType: "service", ownerId: "svc_a" } },
103
+ payerAgent: { publicKeyPem: "...", owner: { ownerType: "service", ownerId: "svc_b" } },
104
+ payerCredit: { amountCents: 5000 },
105
+ settlement: { amountCents: 1200 },
106
+ run: { taskType: "translation" }
107
+ });
108
+ ```
109
+
110
+ ## 5) Pull tenant analytics + trust graph (Magic Link)
111
+
112
+ ```js
113
+ const analytics = await client.getTenantAnalytics("tenant_default", { month: "2026-02", bucket: "day", limit: 20 });
114
+ const graph = await client.getTenantTrustGraph("tenant_default", { month: "2026-02", minRuns: 1, maxEdges: 200 });
115
+ const diff = await client.diffTenantTrustGraph("tenant_default", { baseMonth: "2026-01", compareMonth: "2026-02", limit: 50 });
116
+ ```
117
+
118
+ Or run the prebuilt script:
119
+
120
+ ```sh
121
+ SETTLD_BASE_URL=http://127.0.0.1:8787 \
122
+ SETTLD_TENANT_ID=tenant_default \
123
+ SETTLD_X_API_KEY=test_key \
124
+ npm run sdk:analytics
125
+ ```