settld 0.1.2 → 0.2.0

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 (483) hide show
  1. package/README.md +93 -3
  2. package/SETTLD_VERSION +1 -1
  3. package/bin/settld-mcp +2 -0
  4. package/bin/settld.js +71 -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 +152 -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 +377 -0
  36. package/docs/QUICKSTART_MCP_HOSTS.md +210 -0
  37. package/docs/QUICKSTART_POLICY_PACKS.md +65 -0
  38. package/docs/QUICKSTART_PRODUCE.md +61 -0
  39. package/docs/QUICKSTART_PROFILES.md +198 -0
  40. package/docs/QUICKSTART_RELEASE_VERIFY.md +39 -0
  41. package/docs/QUICKSTART_SDK.md +125 -0
  42. package/docs/QUICKSTART_SDK_PYTHON.md +111 -0
  43. package/docs/QUICKSTART_VERIFY.md +54 -0
  44. package/docs/QUICKSTART_X402_GATEWAY.md +317 -0
  45. package/docs/README.md +33 -0
  46. package/docs/RELEASE_CHECKLIST.md +182 -0
  47. package/docs/RELEASING.md +82 -0
  48. package/docs/REPO_SETTINGS.md +37 -0
  49. package/docs/RUNBOOK.md +86 -0
  50. package/docs/SKILLS.md +42 -0
  51. package/docs/SKILL_BUNDLE_FORMAT.md +48 -0
  52. package/docs/SLO.md +131 -0
  53. package/docs/SUMMARY.md +17 -0
  54. package/docs/SUPPORT.md +31 -0
  55. package/docs/THREAT_MODEL.md +36 -0
  56. package/docs/TRUST.md +59 -0
  57. package/docs/WORKFLOW.md +35 -0
  58. package/docs/X402_BATCH_SETTLEMENT.md +126 -0
  59. package/docs/blog/2026-02-14-your-ai-agent-just-spent-500-where-is-the-receipt.md +73 -0
  60. package/docs/examples/x402-provider-payout-registry.example.json +14 -0
  61. package/docs/gitbook/README.md +64 -0
  62. package/docs/gitbook/SETUP.md +25 -0
  63. package/docs/gitbook/SUMMARY.md +15 -0
  64. package/docs/gitbook/api-reference.md +73 -0
  65. package/docs/gitbook/closepacks.md +55 -0
  66. package/docs/gitbook/conformance.md +59 -0
  67. package/docs/gitbook/core-primitives.md +85 -0
  68. package/docs/gitbook/dispute-lifecycle.md +33 -0
  69. package/docs/gitbook/faq.md +21 -0
  70. package/docs/gitbook/guides.md +49 -0
  71. package/docs/gitbook/operations-runbook.md +36 -0
  72. package/docs/gitbook/quickstart.md +103 -0
  73. package/docs/gitbook/replay-and-audit.md +30 -0
  74. package/docs/gitbook/sdk-reference.md +35 -0
  75. package/docs/gitbook/security-model.md +58 -0
  76. package/docs/integrations/README.md +15 -0
  77. package/docs/integrations/github-actions-verify.yml +31 -0
  78. package/docs/integrations/github-actions.md +34 -0
  79. package/docs/integrations/openclaw/CLAWHUB_PUBLISH_CHECKLIST.md +65 -0
  80. package/docs/integrations/openclaw/PUBLIC_QUICKSTART.md +95 -0
  81. package/docs/integrations/openclaw/settld-mcp-skill/SKILL.md +69 -0
  82. package/docs/integrations/openclaw/settld-mcp-skill/mcp-server.example.json +12 -0
  83. package/docs/kernel-compatible/capabilities.json +36 -0
  84. package/docs/marketing/agent-commerce-substrate.md +78 -0
  85. package/docs/marketing/hn-repost-2026-02-17.md +102 -0
  86. package/docs/marketing/show-hn-post.md +45 -0
  87. package/docs/ops/ARTIFACT_VERIFICATION_STATUS.md +43 -0
  88. package/docs/ops/BILLING_WEBHOOK_REPLAY.md +105 -0
  89. package/docs/ops/CI_FLAKE_BUDGET.md +31 -0
  90. package/docs/ops/DISPUTE_FINANCE_RECONCILIATION_PACKET.md +56 -0
  91. package/docs/ops/GO_LIVE_GATE_S13.md +27 -0
  92. package/docs/ops/HOSTED_BASELINE_R2.md +129 -0
  93. package/docs/ops/KERNEL_V0_SHIP_GATE.md +69 -0
  94. package/docs/ops/LIGHTHOUSE_PRODUCTION_CLOSE.md +51 -0
  95. package/docs/ops/MCP_COMPATIBILITY_MATRIX.md +30 -0
  96. package/docs/ops/MINIMUM_PRODUCTION_TOPOLOGY.md +89 -0
  97. package/docs/ops/P0_BACKEND_PROGRESS.md +150 -0
  98. package/docs/ops/PAYMENTS_ALPHA_R5.md +105 -0
  99. package/docs/ops/PILOT_ONBOARDING_RUNBOOK.md +112 -0
  100. package/docs/ops/PRODUCTION_DEPLOYMENT_CHECKLIST.md +140 -0
  101. package/docs/ops/R1_SLOS.md +66 -0
  102. package/docs/ops/RELEASE_SIGNING_INCIDENT.md +58 -0
  103. package/docs/ops/SELF_SERVE_LAUNCH_AUTOMATION.md +89 -0
  104. package/docs/ops/THROUGHPUT_DRILL_10X.md +48 -0
  105. package/docs/ops/TRUST_CONFIG_WIZARD.md +60 -0
  106. package/docs/ops/X402_PILOT_WEEKLY_METRICS.md +76 -0
  107. package/docs/ops/tool-call-disputes-holdback.md +52 -0
  108. package/docs/pilot-kit/PILOT_PACKAGE_SCORECARD_X402.md +46 -0
  109. package/docs/pilot-kit/README.md +29 -0
  110. package/docs/pilot-kit/architecture-one-pager.md +48 -0
  111. package/docs/pilot-kit/buyer-email.txt +19 -0
  112. package/docs/pilot-kit/buyer-one-pager.md +31 -0
  113. package/docs/pilot-kit/gtm-pilot-playbook.md +182 -0
  114. package/docs/pilot-kit/offline-verify.md +33 -0
  115. package/docs/pilot-kit/procurement-one-pager.md +50 -0
  116. package/docs/pilot-kit/rfp-clause.md +46 -0
  117. package/docs/pilot-kit/roi-calculator-template.csv +2 -0
  118. package/docs/pilot-kit/security-qa.md +153 -0
  119. package/docs/pilot-kit/security-summary.md +35 -0
  120. package/docs/plans/2026-02-13-mcp-spike-design.md +113 -0
  121. package/docs/plans/2026-02-20-trust-os-v1-jira-backlog.md +348 -0
  122. package/docs/plans/2026-02-21-agent-economic-actor-operating-model.md +169 -0
  123. package/docs/plans/2026-02-21-trust-os-v1-strategy.md +241 -0
  124. package/docs/research/2026-02-21-agent-spend-host-landscape.md +57 -0
  125. package/docs/spec/AcceptanceCriteria.v1.md +17 -0
  126. package/docs/spec/AcceptanceEvaluation.v1.md +10 -0
  127. package/docs/spec/AgentEvent.v1.md +47 -0
  128. package/docs/spec/AgentIdentity.v1.md +62 -0
  129. package/docs/spec/AgentPassport.v1.md +95 -0
  130. package/docs/spec/AgentReputation.v1.md +59 -0
  131. package/docs/spec/AgentReputation.v2.md +52 -0
  132. package/docs/spec/AgentRun.v1.md +47 -0
  133. package/docs/spec/AgentRunSettlement.v1.md +52 -0
  134. package/docs/spec/AgentWallet.v1.md +43 -0
  135. package/docs/spec/AgreementDelegation.v1.md +109 -0
  136. package/docs/spec/ArbitrationCase.v1.md +67 -0
  137. package/docs/spec/ArbitrationOutcomeMapping.v1.md +62 -0
  138. package/docs/spec/ArbitrationVerdict.v1.md +60 -0
  139. package/docs/spec/BundleHeadAttestation.v1.md +32 -0
  140. package/docs/spec/CANONICAL_JSON.md +31 -0
  141. package/docs/spec/CRYPTOGRAPHY.md +61 -0
  142. package/docs/spec/ClosePack.v1.md +49 -0
  143. package/docs/spec/ClosePackManifest.v1.md +24 -0
  144. package/docs/spec/DelegationGrant.v1.md +90 -0
  145. package/docs/spec/DisputeCaseLifecycle.v1.md +51 -0
  146. package/docs/spec/DisputeOpenEnvelope.v1.md +43 -0
  147. package/docs/spec/ERRORS.md +76 -0
  148. package/docs/spec/ESCROW_NETTING_INVARIANTS.md +71 -0
  149. package/docs/spec/EvidenceIndex.v1.md +20 -0
  150. package/docs/spec/ExecutionIntent.v1.md +90 -0
  151. package/docs/spec/FinancePackBundleManifest.v1.md +24 -0
  152. package/docs/spec/FundingHold.v1.md +60 -0
  153. package/docs/spec/GovernancePolicy.v1.md +34 -0
  154. package/docs/spec/GovernancePolicy.v2.md +30 -0
  155. package/docs/spec/INVARIANTS.md +389 -0
  156. package/docs/spec/InteractionDirectionMatrix.v1.md +30 -0
  157. package/docs/spec/InvoiceBundleManifest.v1.md +24 -0
  158. package/docs/spec/InvoiceClaim.v1.md +11 -0
  159. package/docs/spec/MONEY_RAIL_STATE_MACHINE.md +58 -0
  160. package/docs/spec/MarketplaceAcceptance.v2.md +46 -0
  161. package/docs/spec/MarketplaceOffer.v2.md +54 -0
  162. package/docs/spec/MeteringReport.v1.md +18 -0
  163. package/docs/spec/OperatorAction.v1.md +90 -0
  164. package/docs/spec/PRODUCER_ERRORS.md +42 -0
  165. package/docs/spec/PolicyDecision.v1.md +83 -0
  166. package/docs/spec/PricingMatrix.v1.md +20 -0
  167. package/docs/spec/PricingMatrixSignatures.v1.md +30 -0
  168. package/docs/spec/PricingMatrixSignatures.v2.md +29 -0
  169. package/docs/spec/ProduceCliOutput.v1.md +46 -0
  170. package/docs/spec/ProofBundleManifest.v1.md +24 -0
  171. package/docs/spec/README.md +109 -0
  172. package/docs/spec/REFERENCE_IMPLEMENTATIONS.md +29 -0
  173. package/docs/spec/REFERENCE_VERIFIER_BEHAVIOR.md +68 -0
  174. package/docs/spec/REMOTE_SIGNER.md +66 -0
  175. package/docs/spec/ReleaseIndex.v1.md +32 -0
  176. package/docs/spec/ReleaseIndexSignatures.v1.md +17 -0
  177. package/docs/spec/ReleaseTrust.v1.md +13 -0
  178. package/docs/spec/ReleaseTrust.v2.md +26 -0
  179. package/docs/spec/RemoteSignerRequest.v1.md +21 -0
  180. package/docs/spec/RemoteSignerResponse.v1.md +16 -0
  181. package/docs/spec/ReputationEvent.v1.md +63 -0
  182. package/docs/spec/RevocationList.v1.md +28 -0
  183. package/docs/spec/SIGNER_PROVIDER_PLUGIN.md +32 -0
  184. package/docs/spec/STRICTNESS.md +68 -0
  185. package/docs/spec/SUPPLY_CHAIN.md +33 -0
  186. package/docs/spec/SettlementAdjustment.v1.md +45 -0
  187. package/docs/spec/SettlementDecisionRecord.v1.md +48 -0
  188. package/docs/spec/SettlementDecisionRecord.v2.md +53 -0
  189. package/docs/spec/SettlementDecisionReport.v1.md +44 -0
  190. package/docs/spec/SettlementKernel.v1.md +59 -0
  191. package/docs/spec/SettlementReceipt.v1.md +63 -0
  192. package/docs/spec/SlaDefinition.v1.md +24 -0
  193. package/docs/spec/SlaEvaluation.v1.md +12 -0
  194. package/docs/spec/THREAT_MODEL.md +113 -0
  195. package/docs/spec/TOOL_PROVENANCE.md +30 -0
  196. package/docs/spec/TRUST_ANCHORS.md +84 -0
  197. package/docs/spec/TenantSettings.v1.md +90 -0
  198. package/docs/spec/TenantSettings.v2.md +99 -0
  199. package/docs/spec/TimestampProof.v1.md +25 -0
  200. package/docs/spec/ToolCallAgreement.v1.md +34 -0
  201. package/docs/spec/ToolCallEvidence.v1.md +47 -0
  202. package/docs/spec/ToolManifest.v1.md +47 -0
  203. package/docs/spec/VERIFIER_ENVIRONMENT.md +38 -0
  204. package/docs/spec/VERSIONING.md +107 -0
  205. package/docs/spec/VerificationReport.v1.md +50 -0
  206. package/docs/spec/VerifyAboutOutput.v1.md +10 -0
  207. package/docs/spec/VerifyCliOutput.v1.md +28 -0
  208. package/docs/spec/WARNINGS.md +83 -0
  209. package/docs/spec/error-codes.v1.txt +285 -0
  210. package/docs/spec/examples/agreement_delegation_v1.example.json +21 -0
  211. package/docs/spec/examples/arbitration_case_v1.example.json +26 -0
  212. package/docs/spec/examples/arbitration_verdict_v1.example.json +32 -0
  213. package/docs/spec/examples/dispute_open_envelope_v1.example.json +18 -0
  214. package/docs/spec/examples/produce_cli_output_v1.example.json +32 -0
  215. package/docs/spec/examples/release_index_signature_v1.example.json +9 -0
  216. package/docs/spec/examples/release_index_signatures_v1.example.json +14 -0
  217. package/docs/spec/examples/release_index_v1.example.json +15 -0
  218. package/docs/spec/examples/release_trust_v1.example.json +7 -0
  219. package/docs/spec/examples/release_trust_v2.example.json +22 -0
  220. package/docs/spec/examples/remote_signer_request_v1.example.json +18 -0
  221. package/docs/spec/examples/remote_signer_response_v1.example.json +8 -0
  222. package/docs/spec/examples/reputation_event_v1.example.json +29 -0
  223. package/docs/spec/examples/verification_report_v1.example.json +24 -0
  224. package/docs/spec/examples/verify_about_output_v1.example.json +29 -0
  225. package/docs/spec/examples/verify_cli_output_v1.example.json +13 -0
  226. package/docs/spec/legacy/MarketplaceAcceptance.v1.md +48 -0
  227. package/docs/spec/legacy/MarketplaceOffer.v1.md +56 -0
  228. package/docs/spec/legacy/schemas/MarketplaceAcceptance.v1.schema.json +53 -0
  229. package/docs/spec/legacy/schemas/MarketplaceOffer.v1.schema.json +61 -0
  230. package/docs/spec/producer-error-codes.v1.txt +14 -0
  231. package/docs/spec/schemas/AcceptanceCriteria.v1.schema.json +24 -0
  232. package/docs/spec/schemas/AcceptanceEvaluation.v1.schema.json +26 -0
  233. package/docs/spec/schemas/AgentEvent.v1.schema.json +49 -0
  234. package/docs/spec/schemas/AgentIdentity.v1.schema.json +129 -0
  235. package/docs/spec/schemas/AgentPassport.v1.schema.json +112 -0
  236. package/docs/spec/schemas/AgentReputation.v1.schema.json +151 -0
  237. package/docs/spec/schemas/AgentReputation.v2.schema.json +120 -0
  238. package/docs/spec/schemas/AgentRun.v1.schema.json +71 -0
  239. package/docs/spec/schemas/AgentRunSettlement.v1.schema.json +75 -0
  240. package/docs/spec/schemas/AgentWallet.v1.schema.json +54 -0
  241. package/docs/spec/schemas/AgreementDelegation.v1.schema.json +50 -0
  242. package/docs/spec/schemas/ArbitrationCase.v1.schema.json +133 -0
  243. package/docs/spec/schemas/ArbitrationVerdict.v1.schema.json +149 -0
  244. package/docs/spec/schemas/BundleHeadAttestation.v1.schema.json +21 -0
  245. package/docs/spec/schemas/ClosePackManifest.v1.schema.json +38 -0
  246. package/docs/spec/schemas/DelegationGrant.v1.schema.json +102 -0
  247. package/docs/spec/schemas/DisputeOpenEnvelope.v1.schema.json +78 -0
  248. package/docs/spec/schemas/EvidenceIndex.v1.schema.json +41 -0
  249. package/docs/spec/schemas/ExecutionIntent.v1.schema.json +85 -0
  250. package/docs/spec/schemas/FinancePackBundleManifest.v1.schema.json +38 -0
  251. package/docs/spec/schemas/FundingHold.v1.schema.json +46 -0
  252. package/docs/spec/schemas/GovernancePolicy.v1.schema.json +45 -0
  253. package/docs/spec/schemas/GovernancePolicy.v2.schema.json +70 -0
  254. package/docs/spec/schemas/InteractionDirectionMatrix.v1.schema.json +43 -0
  255. package/docs/spec/schemas/InvoiceBundleManifest.v1.schema.json +38 -0
  256. package/docs/spec/schemas/InvoiceClaim.v1.schema.json +39 -0
  257. package/docs/spec/schemas/MarketplaceAcceptance.v2.schema.json +53 -0
  258. package/docs/spec/schemas/MarketplaceOffer.v2.schema.json +61 -0
  259. package/docs/spec/schemas/MeteringReport.v1.schema.json +45 -0
  260. package/docs/spec/schemas/OperatorAction.v1.schema.json +113 -0
  261. package/docs/spec/schemas/PolicyDecision.v1.schema.json +74 -0
  262. package/docs/spec/schemas/PricingMatrix.v1.schema.json +24 -0
  263. package/docs/spec/schemas/PricingMatrixSignatures.v1.schema.json +24 -0
  264. package/docs/spec/schemas/PricingMatrixSignatures.v2.schema.json +24 -0
  265. package/docs/spec/schemas/ProduceCliOutput.v1.schema.json +107 -0
  266. package/docs/spec/schemas/ProofBundleManifest.v1.schema.json +37 -0
  267. package/docs/spec/schemas/PublicKeys.v1.schema.json +33 -0
  268. package/docs/spec/schemas/ReleaseIndex.v1.schema.json +45 -0
  269. package/docs/spec/schemas/ReleaseIndexSignature.v1.schema.json +16 -0
  270. package/docs/spec/schemas/ReleaseIndexSignatures.v1.schema.json +16 -0
  271. package/docs/spec/schemas/ReleaseTrust.v1.schema.json +15 -0
  272. package/docs/spec/schemas/ReleaseTrust.v2.schema.json +37 -0
  273. package/docs/spec/schemas/RemoteSignerPublicKeyResponse.v1.schema.json +14 -0
  274. package/docs/spec/schemas/RemoteSignerRequest.v1.schema.json +24 -0
  275. package/docs/spec/schemas/RemoteSignerResponse.v1.schema.json +10 -0
  276. package/docs/spec/schemas/RemoteSignerSignRequest.v1.schema.json +27 -0
  277. package/docs/spec/schemas/RemoteSignerSignResponse.v1.schema.json +16 -0
  278. package/docs/spec/schemas/ReputationEvent.v1.schema.json +164 -0
  279. package/docs/spec/schemas/RevocationList.v1.schema.json +51 -0
  280. package/docs/spec/schemas/SettlementAdjustment.v1.schema.json +44 -0
  281. package/docs/spec/schemas/SettlementDecisionRecord.v1.schema.json +66 -0
  282. package/docs/spec/schemas/SettlementDecisionRecord.v2.schema.json +149 -0
  283. package/docs/spec/schemas/SettlementDecisionReport.v1.schema.json +61 -0
  284. package/docs/spec/schemas/SettlementReceipt.v1.schema.json +135 -0
  285. package/docs/spec/schemas/SlaDefinition.v1.schema.json +33 -0
  286. package/docs/spec/schemas/SlaEvaluation.v1.schema.json +26 -0
  287. package/docs/spec/schemas/TenantSettings.v1.schema.json +90 -0
  288. package/docs/spec/schemas/TenantSettings.v2.schema.json +161 -0
  289. package/docs/spec/schemas/TimestampProof.v1.schema.json +17 -0
  290. package/docs/spec/schemas/ToolCallAgreement.v1.schema.json +34 -0
  291. package/docs/spec/schemas/ToolCallEvidence.v1.schema.json +45 -0
  292. package/docs/spec/schemas/ToolManifest.v1.schema.json +54 -0
  293. package/docs/spec/schemas/VerificationReport.v1.schema.json +83 -0
  294. package/docs/spec/schemas/VerifyAboutOutput.v1.schema.json +54 -0
  295. package/docs/spec/schemas/VerifyCliOutput.v1.schema.json +75 -0
  296. package/docs/spec/schemas/VerifyReleaseOutput.v1.schema.json +47 -0
  297. package/docs/spec/x402-error-codes.v1.txt +35 -0
  298. package/docs/templates/buyer-email.txt +18 -0
  299. package/docs/templates/buyer-one-pager.md +24 -0
  300. package/package.json +53 -6
  301. package/scripts/acceptance/full-stack.mjs +734 -0
  302. package/scripts/acceptance/full-stack.sh +99 -0
  303. package/scripts/audit/build-audit-packet.mjs +242 -0
  304. package/scripts/backup-pg.sh +45 -0
  305. package/scripts/backup-restore/README.md +18 -0
  306. package/scripts/backup-restore/capture-state.mjs +130 -0
  307. package/scripts/backup-restore/client.mjs +97 -0
  308. package/scripts/backup-restore/seed-workload.mjs +235 -0
  309. package/scripts/backup-restore/verify-state.mjs +139 -0
  310. package/scripts/backup-restore-test.sh +217 -0
  311. package/scripts/chaos.js +221 -0
  312. package/scripts/ci/build-launch-cutover-packet.mjs +304 -0
  313. package/scripts/ci/build-self-serve-benchmark-report.mjs +122 -0
  314. package/scripts/ci/changelog-guard.mjs +145 -0
  315. package/scripts/ci/check-kernel-v0-launch-gate.mjs +233 -0
  316. package/scripts/ci/check-secret-hygiene.mjs +78 -0
  317. package/scripts/ci/check-version-consistency.mjs +42 -0
  318. package/scripts/ci/cli-pack-smoke.mjs +160 -0
  319. package/scripts/ci/flake-budget-guard.mjs +68 -0
  320. package/scripts/ci/generate-error-codes.mjs +54 -0
  321. package/scripts/ci/lib/lighthouse-tracker.mjs +90 -0
  322. package/scripts/ci/lib/self-serve-launch-gate.mjs +89 -0
  323. package/scripts/ci/npm-pack-smoke.mjs +454 -0
  324. package/scripts/ci/run-10x-throughput-drill.mjs +318 -0
  325. package/scripts/ci/run-10x-throughput-incident-rehearsal.mjs +368 -0
  326. package/scripts/ci/run-arbitration-workspace-browser-e2e.sh +22 -0
  327. package/scripts/ci/run-circle-sandbox-smoke.mjs +237 -0
  328. package/scripts/ci/run-go-live-gate.mjs +150 -0
  329. package/scripts/ci/run-kernel-v0-ship-gate.mjs +97 -0
  330. package/scripts/ci/run-mcp-host-cert-matrix.mjs +201 -0
  331. package/scripts/ci/run-mcp-host-smoke.mjs +473 -0
  332. package/scripts/ci/run-offline-verification-parity-gate.mjs +762 -0
  333. package/scripts/ci/run-onboarding-host-success-gate.mjs +516 -0
  334. package/scripts/ci/run-onboarding-policy-slo-gate.mjs +537 -0
  335. package/scripts/ci/run-production-cutover-gate.mjs +540 -0
  336. package/scripts/ci/run-public-openclaw-npx-smoke.mjs +148 -0
  337. package/scripts/ci/run-release-promotion-guard.mjs +756 -0
  338. package/scripts/ci/run-self-serve-launch-gate.mjs +56 -0
  339. package/scripts/ci/runtime-import-smoke.mjs +58 -0
  340. package/scripts/ci/update-lighthouse-tracker.mjs +112 -0
  341. package/scripts/closepack/lib.mjs +286 -0
  342. package/scripts/collect-debug.sh +263 -0
  343. package/scripts/demo/compositional-settlement-3hop.mjs +237 -0
  344. package/scripts/demo/delivery-robot/export-ui-fixture.mjs +188 -0
  345. package/scripts/demo/delivery-robot/generate.mjs +377 -0
  346. package/scripts/demo/kernel-agent-goes-shopping.mjs +202 -0
  347. package/scripts/demo/magic-link-first-green.mjs +118 -0
  348. package/scripts/demo/magic-link-kind-smoke.mjs +577 -0
  349. package/scripts/demo/mcp-paid-exa.mjs +1110 -0
  350. package/scripts/dev/billing-doctor.sh +145 -0
  351. package/scripts/dev/billing-smoke-prod.sh +219 -0
  352. package/scripts/dev/billing-webhook-replay.sh +161 -0
  353. package/scripts/dev/env.dev.example +29 -0
  354. package/scripts/dev/env.sh +37 -0
  355. package/scripts/dev/new-sdk-key.sh +81 -0
  356. package/scripts/dev/sdk-first-run.sh +21 -0
  357. package/scripts/dev/smoke-x402-gateway.sh +115 -0
  358. package/scripts/dev/start-api.sh +24 -0
  359. package/scripts/doctor/mcp-host.mjs +120 -0
  360. package/scripts/examples/produce-and-verify-jobproof.mjs +191 -0
  361. package/scripts/examples/sdk-first-paid-rfq.py +105 -0
  362. package/scripts/examples/sdk-first-verified-run.mjs +85 -0
  363. package/scripts/examples/sdk-first-verified-run.py +99 -0
  364. package/scripts/examples/sdk-tenant-analytics.mjs +103 -0
  365. package/scripts/examples/sdk-tenant-analytics.py +118 -0
  366. package/scripts/finance-pack/bundle.mjs +284 -0
  367. package/scripts/fixtures/generate-bundle-fixtures.mjs +877 -0
  368. package/scripts/governance/export.mjs +169 -0
  369. package/scripts/load/delivery-stress.k6.js +183 -0
  370. package/scripts/load/ingest-burst.k6.js +236 -0
  371. package/scripts/load/run-delivery-load.js +66 -0
  372. package/scripts/load/webhook-receiver.js +131 -0
  373. package/scripts/magic-link/migrate-run-records-to-db.mjs +35 -0
  374. package/scripts/mcp/probe.mjs +238 -0
  375. package/scripts/mcp/settld-mcp-http-gateway.mjs +178 -0
  376. package/scripts/mcp/settld-mcp-server.mjs +1511 -0
  377. package/scripts/openapi/write.mjs +13 -0
  378. package/scripts/ops/bootstrap-tenant-conformance.mjs +185 -0
  379. package/scripts/ops/build-x402-pilot-reliability-report.mjs +489 -0
  380. package/scripts/ops/check-x402-receipt-sample.mjs +181 -0
  381. package/scripts/ops/design-partner-run-packet.mjs +466 -0
  382. package/scripts/ops/dispute-finance-reconciliation-packet.mjs +313 -0
  383. package/scripts/ops/hosted-baseline-evidence.mjs +890 -0
  384. package/scripts/ops/money-rails-chargeback-evidence.mjs +509 -0
  385. package/scripts/ops/money-rails-reconcile-evidence.mjs +180 -0
  386. package/scripts/ops/p0-seed-money-rail-operation.mjs +432 -0
  387. package/scripts/ops/run-x402-hitl-smoke.mjs +607 -0
  388. package/scripts/pilot/finance-pack.mjs +495 -0
  389. package/scripts/pilot/fixtures/robot-keypair.json +4 -0
  390. package/scripts/pilot/fixtures/server-signer.json +4 -0
  391. package/scripts/policy/cli.mjs +600 -0
  392. package/scripts/profile/cli.mjs +1324 -0
  393. package/scripts/proof-bundle/job.mjs +109 -0
  394. package/scripts/proof-bundle/lib.mjs +92 -0
  395. package/scripts/proof-bundle/month.mjs +103 -0
  396. package/scripts/provider/conformance-run.mjs +159 -0
  397. package/scripts/provider/keys-generate.mjs +135 -0
  398. package/scripts/provider/publish.mjs +420 -0
  399. package/scripts/quickstart/x402.mjs +334 -0
  400. package/scripts/register-entity-secret.mjs +102 -0
  401. package/scripts/release/build-artifacts.mjs +181 -0
  402. package/scripts/release/generate-release-index.mjs +112 -0
  403. package/scripts/release/release-index-lib.mjs +232 -0
  404. package/scripts/release/sign-release-index.mjs +85 -0
  405. package/scripts/release/validate-release-assets.mjs +170 -0
  406. package/scripts/release/verify-release.mjs +261 -0
  407. package/scripts/restore-pg.sh +34 -0
  408. package/scripts/scaffold/create-settld-paid-tool.mjs +19 -0
  409. package/scripts/sdk/smoke-python.py +30 -0
  410. package/scripts/sdk/smoke.mjs +16 -0
  411. package/scripts/settlement/x402-batch-worker.mjs +1091 -0
  412. package/scripts/setup/circle-bootstrap.mjs +310 -0
  413. package/scripts/setup/host-config.mjs +617 -0
  414. package/scripts/setup/onboard.mjs +1337 -0
  415. package/scripts/setup/openclaw-onboard.mjs +423 -0
  416. package/scripts/setup/wizard.mjs +986 -0
  417. package/scripts/slo/check.mjs +239 -0
  418. package/scripts/smoke/k8s-smoke.mjs +214 -0
  419. package/scripts/spec/generate-protocol-vectors.mjs +1019 -0
  420. package/scripts/test/check-no-generated-artifacts.sh +12 -0
  421. package/scripts/test/run.sh +59 -0
  422. package/scripts/trust/validate-trust-file.mjs +57 -0
  423. package/scripts/trust-config/rotate-settld-pay.mjs +277 -0
  424. package/scripts/trust-config/wizard.mjs +161 -0
  425. package/scripts/vendor-contract-test-lib.mjs +182 -0
  426. package/scripts/vendor-contract-test.mjs +55 -0
  427. package/scripts/vercel/build-mkdocs.sh +9 -0
  428. package/scripts/vercel/ignore-mkdocs.sh +25 -0
  429. package/scripts/vercel/install-mkdocs.sh +6 -0
  430. package/scripts/verify-pg.js +217 -0
  431. package/scripts/x402/receipt-verify.mjs +289 -0
  432. package/services/finance-sink/src/dedupe-store.js +29 -6
  433. package/services/receiver/src/dedupe-store.js +29 -5
  434. package/services/x402-gateway/Dockerfile +13 -0
  435. package/services/x402-gateway/README.md +58 -0
  436. package/services/x402-gateway/examples/upstream-mock.js +337 -0
  437. package/services/x402-gateway/src/server.js +1058 -0
  438. package/src/api/app.js +34658 -16940
  439. package/src/api/maintenance.js +70 -0
  440. package/src/api/middleware/trust-kernel.js +114 -0
  441. package/src/api/openapi.js +1778 -70
  442. package/src/api/persistence.js +456 -0
  443. package/src/api/server.js +81 -5
  444. package/src/api/store.js +1581 -62
  445. package/src/api/workers/deliveries.js +99 -4
  446. package/src/api/workers/insolvency-sweep.js +159 -0
  447. package/src/core/agent-card.js +69 -0
  448. package/src/core/agent-wallets.js +231 -0
  449. package/src/core/agreement-delegation.js +549 -0
  450. package/src/core/billing-plans.js +40 -6
  451. package/src/core/circle-reserve-adapter.js +845 -0
  452. package/src/core/event-policy.js +21 -2
  453. package/src/core/maintenance-locks.js +1 -0
  454. package/src/core/operator-action.js +303 -0
  455. package/src/core/paid-tool-manifest.js +318 -0
  456. package/src/core/policy-decision.js +322 -0
  457. package/src/core/policy-packs.js +207 -0
  458. package/src/core/profile-fingerprint.js +27 -0
  459. package/src/core/profile-simulation-reasons.js +84 -0
  460. package/src/core/profile-templates.js +242 -0
  461. package/src/core/provider-publish-conformance.js +525 -0
  462. package/src/core/provider-publish-proof.js +396 -0
  463. package/src/core/provider-quote-signature.js +170 -0
  464. package/src/core/settld-keys.js +112 -0
  465. package/src/core/settld-pay-token.js +344 -0
  466. package/src/core/settlement-kernel.js +239 -2
  467. package/src/core/settlement-verifier.js +335 -0
  468. package/src/core/tool-call-agreement.js +112 -0
  469. package/src/core/tool-call-evidence.js +144 -0
  470. package/src/core/tool-provider-signature.js +98 -0
  471. package/src/core/wallet-assignment-resolver.js +129 -0
  472. package/src/core/wallet-provider-bootstrap.js +365 -0
  473. package/src/core/x402-escalation-override.js +258 -0
  474. package/src/core/x402-gate.js +118 -0
  475. package/src/core/x402-provider-refund-decision.js +220 -0
  476. package/src/core/x402-receipt-verifier.js +708 -0
  477. package/src/core/x402-reversal-command.js +251 -0
  478. package/src/core/x402-wallet-issuer-decision.js +252 -0
  479. package/src/core/zk-verifier.js +300 -0
  480. package/src/db/migrations/029_reputation_event_index.sql +54 -0
  481. package/src/db/migrations/030_artifacts_source_event_unique_job_only.sql +15 -0
  482. package/src/db/pg.js +18 -7
  483. package/src/db/store-pg.js +1508 -111
@@ -0,0 +1,377 @@
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
+ ## Fast Path (Recommended)
14
+
15
+ Run guided setup first:
16
+
17
+ ```bash
18
+ npx -y settld setup
19
+ ```
20
+
21
+ Then run a smoke probe:
22
+
23
+ ```bash
24
+ npm run mcp:probe
25
+ ```
26
+
27
+ If you prefer to wire everything manually, use the fallback steps in `Run The MCP Server` below.
28
+
29
+ ## One-Command Local Demo (Paid MCP Exa Flow)
30
+
31
+ Boots local API + provider wrapper + x402 gateway, runs MCP `settld.exa_search_paid`, verifies signatures/tokens, and writes an artifact bundle.
32
+
33
+ To scaffold your own paid tool server quickly:
34
+
35
+ ```bash
36
+ npx create-settld-paid-tool my-paid-tool
37
+ ```
38
+
39
+ Run provider conformance/publish with machine-readable artifacts:
40
+
41
+ ```bash
42
+ npm run provider:conformance -- \
43
+ --manifest ./paid-tool-manifest.json \
44
+ --base-url http://127.0.0.1:9402 \
45
+ --api-url http://127.0.0.1:3000 \
46
+ --api-key "$SETTLD_API_KEY" \
47
+ --json-out artifacts/provider-conformance.json
48
+
49
+ npm run provider:publish -- \
50
+ --manifest ./paid-tool-manifest.json \
51
+ --base-url http://127.0.0.1:9402 \
52
+ --api-url http://127.0.0.1:3000 \
53
+ --api-key "$SETTLD_API_KEY" \
54
+ --json-out artifacts/provider-publication.json \
55
+ --conformance-json-out artifacts/provider-conformance-from-publish.json
56
+ ```
57
+
58
+ Notes:
59
+
60
+ - `provider:conformance` exits non-zero when verdict is not `ok` (use `--allow-fail` to keep exit code `0`).
61
+ - `provider:publish` exits non-zero when `runConformance` is enabled and publication is not `certified` (use `--allow-fail` to keep exit code `0`).
62
+
63
+ ```bash
64
+ npm run demo:mcp-paid-exa
65
+ npm run demo:mcp-paid-weather
66
+ npm run demo:mcp-paid-llm
67
+ ```
68
+
69
+ Circle sandbox mode (real reserve path):
70
+
71
+ ```bash
72
+ SETTLD_DEMO_CIRCLE_MODE=sandbox \
73
+ X402_REQUIRE_EXTERNAL_RESERVE=1 \
74
+ npm run demo:mcp-paid-exa -- --circle=sandbox
75
+ ```
76
+
77
+ Circle sandbox mode with batch settlement execution:
78
+
79
+ ```bash
80
+ SETTLD_DEMO_CIRCLE_MODE=sandbox \
81
+ SETTLD_DEMO_RUN_BATCH_SETTLEMENT=1 \
82
+ SETTLD_DEMO_BATCH_PROVIDER_WALLET_ID="$CIRCLE_WALLET_ID_ESCROW" \
83
+ X402_REQUIRE_EXTERNAL_RESERVE=1 \
84
+ npm run demo:mcp-paid-exa -- --circle=sandbox
85
+ ```
86
+
87
+ Success output:
88
+
89
+ ```text
90
+ PASS artifactDir=artifacts/mcp-paid-exa/...
91
+ gateId=...
92
+ decisionId=...
93
+ settlementReceiptId=...
94
+ ```
95
+
96
+ Artifact bundle includes:
97
+
98
+ - `summary.json`
99
+ - `mcp-call.raw.json`
100
+ - `mcp-call.parsed.json`
101
+ - `response-body.json`
102
+ - `gate-state.json`
103
+ - `reserve-state.json`
104
+ - `provider-signature-verification.json`
105
+ - `settld-pay-token-verification.json`
106
+ - `batch-payout-registry.json` (when `SETTLD_DEMO_RUN_BATCH_SETTLEMENT=1`)
107
+ - `batch-worker-state.json` (when `SETTLD_DEMO_RUN_BATCH_SETTLEMENT=1`)
108
+ - `batch-settlement.json` (when `SETTLD_DEMO_RUN_BATCH_SETTLEMENT=1`)
109
+
110
+ ## First verified receipt (keep this artifact)
111
+
112
+ The demo exports receipts to:
113
+
114
+ - `<artifactDir>/x402-receipts.export.jsonl`
115
+ - `<artifactDir>/x402-receipts.sample-verification.json`
116
+
117
+ Convert the first exported receipt row into a standalone JSON file and verify it:
118
+
119
+ ```bash
120
+ jq -c 'first' <artifactDir>/x402-receipts.export.jsonl > /tmp/settld-first-receipt.json
121
+ settld x402 receipt verify /tmp/settld-first-receipt.json --format json --json-out /tmp/settld-first-receipt.verify.json
122
+ ```
123
+
124
+ Keep `/tmp/settld-first-receipt.verify.json` (or check in an equivalent artifact path in CI). This is the deterministic
125
+ proof packet for the first paid action.
126
+
127
+ ## Authority + Pinning Notes
128
+
129
+ - Authority enforcement in this flow is API key scope + tenant-bound policy checks at Settld API/gateway surfaces.
130
+ - Replay-critical settlement policy pinning is captured in `SettlementDecisionRecord.v2` (`policyHashUsed`, `verificationMethodHashUsed`), so decisions remain auditable and deterministic.
131
+ - Receipts and exports bind the paid call to decision + settlement artifacts:
132
+ - `decisionId` (printed by demo and present in receipt data)
133
+ - `settlementReceiptId` (printed by demo and present in receipt data)
134
+
135
+ Reference specs:
136
+
137
+ - `docs/spec/SettlementDecisionRecord.v2.md`
138
+ - `docs/spec/SettlementReceipt.v1.md`
139
+ - `docs/spec/SettlementKernel.v1.md`
140
+
141
+ ## Run The MCP Server
142
+
143
+ Primary path:
144
+
145
+ ```bash
146
+ settld setup
147
+ npm run mcp:server
148
+ ```
149
+
150
+ Manual fallback (if you skip setup):
151
+
152
+ ```bash
153
+ export SETTLD_BASE_URL='https://api.settld.work' # or http://127.0.0.1:3000
154
+ export SETTLD_TENANT_ID='tenant_default'
155
+ export SETTLD_API_KEY='sk_live_xxx.yyy' # keyId.secret (do not commit)
156
+ export SETTLD_PROTOCOL='1.0' # optional; server will try to auto-discover
157
+ export SETTLD_PAID_TOOLS_BASE_URL='http://127.0.0.1:8402' # optional; paid x402 tools
158
+ ```
159
+
160
+ Start the server:
161
+
162
+ ```bash
163
+ npm run mcp:server
164
+ ```
165
+
166
+ The server speaks JSON-RPC 2.0 over `stdio` and exposes curated tools.
167
+ 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.
168
+
169
+ ## Optional: HTTP Gateway (HTTP -> MCP stdio)
170
+
171
+ This is useful if you can do HTTP calls but cannot spawn a local MCP process.
172
+
173
+ ```bash
174
+ export MCP_HTTP_PORT=8787
175
+ npm run mcp:http
176
+ ```
177
+
178
+ Then send JSON-RPC requests:
179
+
180
+ ```bash
181
+ curl -sS http://127.0.0.1:8787/rpc \
182
+ -H 'content-type: application/json' \
183
+ -d '{"jsonrpc":"2.0","id":"1","method":"initialize","params":{"protocolVersion":"2024-11-05","clientInfo":{"name":"curl","version":"0"},"capabilities":{}}}' | jq .
184
+ ```
185
+
186
+ ## Sanity Check (No Manual JSON Copy/Paste)
187
+
188
+ ```bash
189
+ npm run mcp:probe
190
+ ```
191
+
192
+ This spawns the MCP server, runs `initialize` and `tools/list`, prints the responses, and exits.
193
+
194
+ ## x402 Gate Smoke (create -> verify -> get)
195
+
196
+ Run an end-to-end x402 gate flow over MCP with explicit idempotency keys:
197
+
198
+ ```bash
199
+ npm run -s mcp:probe -- --x402-smoke
200
+ ```
201
+
202
+ This performs:
203
+
204
+ 1. `settld.x402_gate_create`
205
+ 2. `settld.x402_gate_verify` (auto-authorize enabled by default)
206
+ 3. `settld.x402_gate_get`
207
+
208
+ You can override payloads from a JSON file:
209
+
210
+ ```bash
211
+ cat > /tmp/settld-mcp-x402-smoke.json <<'JSON'
212
+ {
213
+ "create": {
214
+ "amountCents": 250,
215
+ "idempotencyKey": "mcp_probe_create_custom_1"
216
+ },
217
+ "verify": {
218
+ "idempotencyKey": "mcp_probe_verify_custom_1",
219
+ "authorizeIdempotencyKey": "mcp_probe_auth_custom_1"
220
+ }
221
+ }
222
+ JSON
223
+
224
+ npm run -s mcp:probe -- --x402-smoke --x402-smoke-file /tmp/settld-mcp-x402-smoke.json
225
+ ```
226
+
227
+ ## Agreement Delegation Tools (create/list)
228
+
229
+ Create a delegation edge and list it via MCP:
230
+
231
+ ```bash
232
+ cat > /tmp/settld-mcp-delegation-create.json <<'JSON'
233
+ {
234
+ "parentAgreementHash": "1111111111111111111111111111111111111111111111111111111111111111",
235
+ "childAgreementHash": "2222222222222222222222222222222222222222222222222222222222222222",
236
+ "delegatorAgentId": "agt_parent",
237
+ "delegateeAgentId": "agt_child",
238
+ "budgetCapCents": 500,
239
+ "idempotencyKey": "mcp_probe_delegation_create_1"
240
+ }
241
+ JSON
242
+
243
+ npm run -s mcp:probe -- --call-file settld.agreement_delegation_create /tmp/settld-mcp-delegation-create.json
244
+ npm run -s mcp:probe -- --call settld.agreement_delegation_list '{"agreementHash":"1111111111111111111111111111111111111111111111111111111111111111","status":"active","limit":20,"offset":0}'
245
+ ```
246
+
247
+ `settld.agreement_delegation_create` responses include `delegation.delegationHash` for deterministic orchestration and audit bindings.
248
+
249
+ ## Live Call Without Shell-JSON Footguns
250
+
251
+ If your terminal copy/paste keeps inserting line breaks, pass tool arguments via a JSON file:
252
+
253
+ ```bash
254
+ cat > /tmp/settld-mcp-create-agreement.json <<'JSON'
255
+ {"amountCents":500,"currency":"USD","title":"MCP live probe","capability":"agent-task:demo","disputeWindowDays":7}
256
+ JSON
257
+
258
+ npm run -s mcp:probe -- --call-file settld.create_agreement /tmp/settld-mcp-create-agreement.json
259
+ ```
260
+
261
+ Alternative that avoids paste issues entirely:
262
+
263
+ ```bash
264
+ jq -n '{amountCents:500,currency:"USD",title:"MCP live probe",capability:"agent-task:demo",disputeWindowDays:7}' \
265
+ > /tmp/settld-mcp-create-agreement.json
266
+ ```
267
+
268
+ ## Tool Flow (Typical)
269
+
270
+ 1. Create an agreement (marketplace-backed) and a run:
271
+
272
+ Method: `tools/call`
273
+
274
+ Tool: `settld.create_agreement`
275
+
276
+ Arguments example:
277
+
278
+ ```json
279
+ {
280
+ "amountCents": 500,
281
+ "currency": "USD",
282
+ "title": "MCP spike agreement",
283
+ "capability": "agent-task:demo",
284
+ "disputeWindowDays": 7
285
+ }
286
+ ```
287
+
288
+ 2. Submit evidence for the run:
289
+
290
+ Tool: `settld.submit_evidence`
291
+
292
+ ```json
293
+ {
294
+ "agentId": "<payeeAgentId from create_agreement>",
295
+ "runId": "<runId from create_agreement>",
296
+ "evidenceRef": "evidence://demo/step-1"
297
+ }
298
+ ```
299
+
300
+ 3. Settle the run:
301
+
302
+ Tool: `settld.settle_run`
303
+
304
+ ```json
305
+ {
306
+ "agentId": "<payeeAgentId>",
307
+ "runId": "<runId>",
308
+ "outcome": "completed",
309
+ "outputRef": "evidence://demo/output"
310
+ }
311
+ ```
312
+
313
+ 4. Resolve the settlement (so it is no longer `locked`):
314
+
315
+ Tool: `settld.resolve_settlement`
316
+
317
+ ```json
318
+ {
319
+ "runId": "<runId>",
320
+ "status": "released",
321
+ "reason": "demo settlement resolution"
322
+ }
323
+ ```
324
+
325
+ 5. Open a dispute (only valid within the dispute window):
326
+
327
+ Tool: `settld.open_dispute`
328
+
329
+ ```json
330
+ {
331
+ "runId": "<runId>",
332
+ "reason": "Disputing for demo purposes",
333
+ "evidenceRefs": ["evidence://demo/dispute/1"],
334
+ "waitMs": 5000
335
+ }
336
+ ```
337
+
338
+ ## Paid Tool Flows (`settld.exa_search_paid`, `settld.weather_current_paid`)
339
+
340
+ Both paid tools exercise the same x402 path from MCP:
341
+
342
+ 1. First call returns `402` from the paid endpoint.
343
+ 2. MCP wrapper retries with `x-settld-gate-id`.
344
+ 3. Gateway returns `200` and `x-settld-*` verification/settlement headers.
345
+
346
+ Run the local paid upstream + gateway from `docs/QUICKSTART_X402_GATEWAY.md`, then invoke:
347
+
348
+ ```bash
349
+ cat > /tmp/settld-mcp-exa-search.json <<'JSON'
350
+ {"query":"dentist near me chicago","numResults":3}
351
+ JSON
352
+
353
+ SETTLD_PAID_TOOLS_BASE_URL='http://127.0.0.1:8402' \
354
+ npm run -s mcp:probe -- --call-file settld.exa_search_paid /tmp/settld-mcp-exa-search.json
355
+ ```
356
+
357
+ Exa call result includes:
358
+
359
+ - `response`: Exa-style search body.
360
+ - `headers`: captured `x-settld-*` verification/settlement headers.
361
+
362
+ Weather call example:
363
+
364
+ ```bash
365
+ cat > /tmp/settld-mcp-weather.json <<'JSON'
366
+ {"city":"Chicago","unit":"f"}
367
+ JSON
368
+
369
+ SETTLD_PAID_TOOLS_BASE_URL='http://127.0.0.1:8402' \
370
+ npm run -s mcp:probe -- --call-file settld.weather_current_paid /tmp/settld-mcp-weather.json
371
+ ```
372
+
373
+ ## Notes
374
+
375
+ - Writes require `x-settld-protocol`. The MCP server sets this automatically for write calls.
376
+ - Run event appends require `x-proxy-expected-prev-chain-hash`. The MCP server fetches the current head and supplies it.
377
+ - This is a spike (Sprint 23). Production hardening (SSE transport, rate limiting, etc.) is planned for Sprint 25.
@@ -0,0 +1,210 @@
1
+ # Quickstart: MCP Host Integrations (Codex, Claude, Cursor, OpenClaw)
2
+
3
+ This guide is the fastest path to wire Settld into an agent host and confirm a first verified paid action.
4
+
5
+ Target outcome:
6
+
7
+ 1. Host can call `settld.*` MCP tools.
8
+ 2. Wallet mode is configured (`managed`, `byo`, or `none`).
9
+ 3. Policy profile is applied.
10
+ 4. Smoke call and first paid receipt are green.
11
+
12
+ For deeper tool-level examples, see `docs/QUICKSTART_MCP.md`.
13
+
14
+ ## 1) Before you run `settld setup`
15
+
16
+ Required inputs:
17
+
18
+ - `SETTLD_BASE_URL` (local or hosted API URL)
19
+ - `SETTLD_TENANT_ID`
20
+ - `SETTLD_API_KEY` (`keyId.secret`)
21
+ - Node.js 20+
22
+
23
+ Recommended non-interactive pattern:
24
+
25
+ ```bash
26
+ settld setup --non-interactive \
27
+ --host openclaw \
28
+ --base-url https://api.settld.work \
29
+ --tenant-id tenant_default \
30
+ --settld-api-key 'sk_live_xxx.yyy' \
31
+ --wallet-mode managed \
32
+ --wallet-bootstrap remote \
33
+ --profile-id engineering-spend \
34
+ --smoke \
35
+ --out-env ./.tmp/settld-openclaw.env
36
+ ```
37
+
38
+ If you want validation only (no config writes):
39
+
40
+ ```bash
41
+ settld setup --non-interactive \
42
+ --host openclaw \
43
+ --base-url https://api.settld.work \
44
+ --tenant-id tenant_default \
45
+ --settld-api-key 'sk_live_xxx.yyy' \
46
+ --wallet-mode none \
47
+ --preflight-only \
48
+ --report-path ./.tmp/setup-preflight.json \
49
+ --format json
50
+ ```
51
+
52
+ ## 2) Host setup flows
53
+
54
+ Unified setup command:
55
+
56
+ ```bash
57
+ settld setup
58
+ ```
59
+
60
+ The wizard handles:
61
+
62
+ - host selection (`codex|claude|cursor|openclaw`)
63
+ - wallet mode selection (`managed|byo|none`)
64
+ - preflight checks (API health, tenant auth, profile baseline, host config path)
65
+ - policy apply + optional smoke
66
+ - interactive menus with arrow keys (Up/Down + Enter) for choice steps
67
+
68
+ Host-specific non-interactive examples:
69
+
70
+ ```bash
71
+ # Codex
72
+ settld setup --non-interactive --host codex --base-url http://127.0.0.1:3000 --tenant-id tenant_default --settld-api-key sk_live_xxx.yyy --wallet-mode none --profile-id engineering-spend --smoke
73
+
74
+ # Claude
75
+ settld setup --non-interactive --host claude --base-url http://127.0.0.1:3000 --tenant-id tenant_default --settld-api-key sk_live_xxx.yyy --wallet-mode none --profile-id engineering-spend --smoke
76
+
77
+ # Cursor
78
+ settld setup --non-interactive --host cursor --base-url http://127.0.0.1:3000 --tenant-id tenant_default --settld-api-key sk_live_xxx.yyy --wallet-mode none --profile-id engineering-spend --smoke
79
+
80
+ # OpenClaw
81
+ settld setup --non-interactive --host openclaw --base-url http://127.0.0.1:3000 --tenant-id tenant_default --settld-api-key sk_live_xxx.yyy --wallet-mode none --profile-id engineering-spend --smoke
82
+ ```
83
+
84
+ ## 3) Wallet modes: managed vs BYO
85
+
86
+ ### Managed (`--wallet-mode managed`)
87
+
88
+ Managed is the default and recommended first path.
89
+
90
+ `--wallet-bootstrap auto` behavior:
91
+
92
+ - If `--circle-api-key` (or `CIRCLE_API_KEY`) is present: local Circle bootstrap.
93
+ - If not present: remote onboarding bootstrap (`/v1/tenants/{tenantId}/onboarding/wallet-bootstrap`).
94
+
95
+ Force the path explicitly when needed:
96
+
97
+ ```bash
98
+ # force remote wallet creation
99
+ settld setup --non-interactive --host openclaw --base-url https://api.settld.work --tenant-id tenant_default --settld-api-key 'sk_live_xxx.yyy' --wallet-mode managed --wallet-bootstrap remote --profile-id engineering-spend --smoke
100
+
101
+ # force local wallet creation with Circle credentials
102
+ settld setup --non-interactive --host openclaw --base-url https://api.settld.work --tenant-id tenant_default --settld-api-key 'sk_live_xxx.yyy' --wallet-mode managed --wallet-bootstrap local --circle-api-key 'TEST_API_KEY:...' --profile-id engineering-spend --smoke
103
+ ```
104
+
105
+ ### BYO (`--wallet-mode byo`)
106
+
107
+ Provide your own existing wallet values. Required keys:
108
+
109
+ - `CIRCLE_BASE_URL`
110
+ - `CIRCLE_BLOCKCHAIN`
111
+ - `CIRCLE_WALLET_ID_SPEND`
112
+ - `CIRCLE_WALLET_ID_ESCROW`
113
+ - `CIRCLE_TOKEN_ID_USDC`
114
+ - `CIRCLE_ENTITY_SECRET_HEX`
115
+
116
+ Pass as env or repeated `--wallet-env KEY=VALUE` flags:
117
+
118
+ ```bash
119
+ settld setup --non-interactive \
120
+ --host openclaw \
121
+ --base-url https://api.settld.work \
122
+ --tenant-id tenant_default \
123
+ --settld-api-key 'sk_live_xxx.yyy' \
124
+ --wallet-mode byo \
125
+ --wallet-env CIRCLE_BASE_URL=https://api-sandbox.circle.com \
126
+ --wallet-env CIRCLE_BLOCKCHAIN=BASE-SEPOLIA \
127
+ --wallet-env CIRCLE_WALLET_ID_SPEND=wid_spend \
128
+ --wallet-env CIRCLE_WALLET_ID_ESCROW=wid_escrow \
129
+ --wallet-env CIRCLE_TOKEN_ID_USDC=token_usdc \
130
+ --wallet-env CIRCLE_ENTITY_SECRET_HEX=$(openssl rand -hex 32) \
131
+ --profile-id engineering-spend \
132
+ --smoke
133
+ ```
134
+
135
+ ### None (`--wallet-mode none`)
136
+
137
+ Use this for policy/tooling setup without payment rails yet.
138
+
139
+ ## 4) Activation after setup
140
+
141
+ `settld setup` writes host MCP config and prints `Combined exports`.
142
+
143
+ If you used `--out-env`, source it before running tools:
144
+
145
+ ```bash
146
+ source ./.tmp/settld-openclaw.env
147
+ ```
148
+
149
+ Then activate host-side:
150
+
151
+ - `codex`: restart Codex.
152
+ - `claude`: restart Claude Desktop.
153
+ - `cursor`: restart Cursor.
154
+ - `openclaw`: run `openclaw doctor`, ensure OpenClaw onboarding is complete (`openclaw onboard --install-daemon`), then run `openclaw tui`.
155
+
156
+ ## 5) How the agent uses Settld after activation
157
+
158
+ After host activation, the agent interacts with Settld through MCP `settld.*` tools.
159
+
160
+ Typical flow:
161
+
162
+ 1. Connectivity check: `settld.about`
163
+ 2. Paid action: `settld.exa_search_paid` or `settld.weather_current_paid`
164
+ 3. Policy gate + authorization happen server-side in Settld.
165
+ 4. Settld records evidence/decision/receipt artifacts.
166
+ 5. You can verify receipts offline (`settld x402 receipt verify`).
167
+
168
+ Quick local smoke:
169
+
170
+ ```bash
171
+ npm run mcp:probe -- --call settld.about '{}'
172
+ ```
173
+
174
+ First paid run + artifacts:
175
+
176
+ ```bash
177
+ npm run demo:mcp-paid-exa
178
+ ```
179
+
180
+ Verify first receipt from artifacts:
181
+
182
+ ```bash
183
+ # replace <artifactDir> with the printed directory from demo output
184
+ settld x402 receipt verify <artifactDir>/x402-receipt.json --json-out /tmp/settld-first-receipt.json
185
+ ```
186
+
187
+ ## 6) Host config helper customization
188
+
189
+ Default host configuration logic is in:
190
+
191
+ - `scripts/setup/host-config.mjs`
192
+
193
+ If you need a custom resolver/writer, pass:
194
+
195
+ ```bash
196
+ settld setup --host-config ./path/to/custom-host-config.mjs
197
+ ```
198
+
199
+ Your helper should provide resolver/setup exports compatible with `scripts/setup/wizard.mjs`.
200
+
201
+ ## 7) Troubleshooting
202
+
203
+ - `BYO wallet mode missing required env keys`
204
+ - Provide all required Circle keys in section 3.
205
+ - `host config helper missing`
206
+ - Add `scripts/setup/host-config.mjs` or pass `--host-config`.
207
+ - `SETTLD_API_KEY must be a non-empty string`
208
+ - Ensure key is present in shell or setup flags.
209
+ - Host cannot run `npx`
210
+ - Install Node.js 20+ and ensure `npx` is in `PATH`.
@@ -0,0 +1,65 @@
1
+ # Quickstart: Policy Packs CLI (v1)
2
+
3
+ Goal: initialize, simulate, and publish deterministic local policy pack artifacts with `settld policy`.
4
+
5
+ ## Starter policy packs
6
+
7
+ - `engineering-spend`
8
+ - `procurement-enterprise`
9
+ - `data-api-buyer`
10
+ - `support-automation`
11
+ - `finance-controls`
12
+
13
+ ## 1) Initialize a starter pack
14
+
15
+ Installed CLI:
16
+
17
+ ```bash
18
+ npx settld policy init engineering-spend --out ./policies/engineering.policy-pack.json
19
+ ```
20
+
21
+ Repo checkout:
22
+
23
+ ```bash
24
+ ./bin/settld.js policy init engineering-spend --out ./policies/engineering.policy-pack.json
25
+ ```
26
+
27
+ ## 2) Simulate a decision
28
+
29
+ Default scenario (first allowlisted provider/tool, zero spend):
30
+
31
+ ```bash
32
+ ./bin/settld.js policy simulate ./policies/engineering.policy-pack.json --format json
33
+ ```
34
+
35
+ Explicit scenario:
36
+
37
+ ```bash
38
+ ./bin/settld.js policy simulate ./policies/engineering.policy-pack.json \
39
+ --scenario-json '{"providerId":"openai","toolId":"llm.inference","amountUsdCents":25000,"monthToDateSpendUsdCents":100000,"approvalsProvided":1,"receiptSigned":true,"toolManifestHashPresent":true,"toolVersionKnown":true}' \
40
+ --format json
41
+ ```
42
+
43
+ ## 3) Publish locally (deterministic report artifact)
44
+
45
+ ```bash
46
+ ./bin/settld.js policy publish ./policies/engineering.policy-pack.json --format json
47
+ ```
48
+
49
+ `publish` has no remote dependency. It writes a local `SettldPolicyPublication.v1` artifact and returns a `SettldPolicyPublishReport.v1` with:
50
+
51
+ - deterministic `policyFingerprint` (canonical JSON SHA-256)
52
+ - deterministic `publicationRef` (`<channel>:<packId>:<fingerprint-prefix>`)
53
+ - `artifactPath` + `artifactSha256`
54
+
55
+ ## Output modes
56
+
57
+ All commands support:
58
+
59
+ - `--format text|json` (default `text`)
60
+ - `--json-out <path>` for machine output files
61
+
62
+ `init` and `publish` also support:
63
+
64
+ - `--out <path>`
65
+ - `--force` to overwrite an existing path
@@ -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.