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.
- package/README.md +93 -3
- package/SETTLD_VERSION +1 -1
- package/bin/settld-mcp +2 -0
- package/bin/settld.js +71 -0
- package/conformance/kernel-v0/README.md +7 -0
- package/conformance/kernel-v0/run.mjs +292 -4
- package/docs/ACCESS.md +57 -0
- package/docs/ADOPTION_CHECKLIST.md +44 -0
- package/docs/ALERTS.md +198 -0
- package/docs/ARCHITECTURE.md +69 -0
- package/docs/ARCHITECTURE_FOUNDER_GUIDE.md +284 -0
- package/docs/ARTIFACTS.md +60 -0
- package/docs/CERTIFICATION_CHECKLIST.md +33 -0
- package/docs/CIRCLE_SANDBOX_E2E.md +152 -0
- package/docs/CONFIG.md +297 -0
- package/docs/CONTRACTS_APIS.md +23 -0
- package/docs/DEPRECATION.md +31 -0
- package/docs/DOMAIN_MODEL.md +92 -0
- package/docs/EVENT_ENVELOPE.md +53 -0
- package/docs/FINANCE_PACK_FORMAT.md +53 -0
- package/docs/INCIDENT_TAXONOMY.md +30 -0
- package/docs/JOB_STATE_MACHINE.md +66 -0
- package/docs/KERNEL_COMPATIBLE.md +60 -0
- package/docs/KERNEL_V0.md +40 -0
- package/docs/KEY_ROTATION.md +80 -0
- package/docs/LEDGER.md +82 -0
- package/docs/LIVENESS.md +76 -0
- package/docs/MVP_BUILD_ORDER.md +36 -0
- package/docs/ONCALL_PLAYBOOK.md +39 -0
- package/docs/OPERATIONS_SIGNING.md +20 -0
- package/docs/OVERVIEW.md +190 -0
- package/docs/PERF_BASELINE.md +85 -0
- package/docs/PRD.md +77 -0
- package/docs/QUICKSTART_KERNEL_V0.md +96 -0
- package/docs/QUICKSTART_MCP.md +377 -0
- package/docs/QUICKSTART_MCP_HOSTS.md +210 -0
- package/docs/QUICKSTART_POLICY_PACKS.md +65 -0
- package/docs/QUICKSTART_PRODUCE.md +61 -0
- package/docs/QUICKSTART_PROFILES.md +198 -0
- package/docs/QUICKSTART_RELEASE_VERIFY.md +39 -0
- package/docs/QUICKSTART_SDK.md +125 -0
- package/docs/QUICKSTART_SDK_PYTHON.md +111 -0
- package/docs/QUICKSTART_VERIFY.md +54 -0
- package/docs/QUICKSTART_X402_GATEWAY.md +317 -0
- package/docs/README.md +33 -0
- package/docs/RELEASE_CHECKLIST.md +182 -0
- package/docs/RELEASING.md +82 -0
- package/docs/REPO_SETTINGS.md +37 -0
- package/docs/RUNBOOK.md +86 -0
- package/docs/SKILLS.md +42 -0
- package/docs/SKILL_BUNDLE_FORMAT.md +48 -0
- package/docs/SLO.md +131 -0
- package/docs/SUMMARY.md +17 -0
- package/docs/SUPPORT.md +31 -0
- package/docs/THREAT_MODEL.md +36 -0
- package/docs/TRUST.md +59 -0
- package/docs/WORKFLOW.md +35 -0
- package/docs/X402_BATCH_SETTLEMENT.md +126 -0
- package/docs/blog/2026-02-14-your-ai-agent-just-spent-500-where-is-the-receipt.md +73 -0
- package/docs/examples/x402-provider-payout-registry.example.json +14 -0
- package/docs/gitbook/README.md +64 -0
- package/docs/gitbook/SETUP.md +25 -0
- package/docs/gitbook/SUMMARY.md +15 -0
- package/docs/gitbook/api-reference.md +73 -0
- package/docs/gitbook/closepacks.md +55 -0
- package/docs/gitbook/conformance.md +59 -0
- package/docs/gitbook/core-primitives.md +85 -0
- package/docs/gitbook/dispute-lifecycle.md +33 -0
- package/docs/gitbook/faq.md +21 -0
- package/docs/gitbook/guides.md +49 -0
- package/docs/gitbook/operations-runbook.md +36 -0
- package/docs/gitbook/quickstart.md +103 -0
- package/docs/gitbook/replay-and-audit.md +30 -0
- package/docs/gitbook/sdk-reference.md +35 -0
- package/docs/gitbook/security-model.md +58 -0
- package/docs/integrations/README.md +15 -0
- package/docs/integrations/github-actions-verify.yml +31 -0
- package/docs/integrations/github-actions.md +34 -0
- package/docs/integrations/openclaw/CLAWHUB_PUBLISH_CHECKLIST.md +65 -0
- package/docs/integrations/openclaw/PUBLIC_QUICKSTART.md +95 -0
- package/docs/integrations/openclaw/settld-mcp-skill/SKILL.md +69 -0
- package/docs/integrations/openclaw/settld-mcp-skill/mcp-server.example.json +12 -0
- package/docs/kernel-compatible/capabilities.json +36 -0
- package/docs/marketing/agent-commerce-substrate.md +78 -0
- package/docs/marketing/hn-repost-2026-02-17.md +102 -0
- package/docs/marketing/show-hn-post.md +45 -0
- package/docs/ops/ARTIFACT_VERIFICATION_STATUS.md +43 -0
- package/docs/ops/BILLING_WEBHOOK_REPLAY.md +105 -0
- package/docs/ops/CI_FLAKE_BUDGET.md +31 -0
- package/docs/ops/DISPUTE_FINANCE_RECONCILIATION_PACKET.md +56 -0
- package/docs/ops/GO_LIVE_GATE_S13.md +27 -0
- package/docs/ops/HOSTED_BASELINE_R2.md +129 -0
- package/docs/ops/KERNEL_V0_SHIP_GATE.md +69 -0
- package/docs/ops/LIGHTHOUSE_PRODUCTION_CLOSE.md +51 -0
- package/docs/ops/MCP_COMPATIBILITY_MATRIX.md +30 -0
- package/docs/ops/MINIMUM_PRODUCTION_TOPOLOGY.md +89 -0
- package/docs/ops/P0_BACKEND_PROGRESS.md +150 -0
- package/docs/ops/PAYMENTS_ALPHA_R5.md +105 -0
- package/docs/ops/PILOT_ONBOARDING_RUNBOOK.md +112 -0
- package/docs/ops/PRODUCTION_DEPLOYMENT_CHECKLIST.md +140 -0
- package/docs/ops/R1_SLOS.md +66 -0
- package/docs/ops/RELEASE_SIGNING_INCIDENT.md +58 -0
- package/docs/ops/SELF_SERVE_LAUNCH_AUTOMATION.md +89 -0
- package/docs/ops/THROUGHPUT_DRILL_10X.md +48 -0
- package/docs/ops/TRUST_CONFIG_WIZARD.md +60 -0
- package/docs/ops/X402_PILOT_WEEKLY_METRICS.md +76 -0
- package/docs/ops/tool-call-disputes-holdback.md +52 -0
- package/docs/pilot-kit/PILOT_PACKAGE_SCORECARD_X402.md +46 -0
- package/docs/pilot-kit/README.md +29 -0
- package/docs/pilot-kit/architecture-one-pager.md +48 -0
- package/docs/pilot-kit/buyer-email.txt +19 -0
- package/docs/pilot-kit/buyer-one-pager.md +31 -0
- package/docs/pilot-kit/gtm-pilot-playbook.md +182 -0
- package/docs/pilot-kit/offline-verify.md +33 -0
- package/docs/pilot-kit/procurement-one-pager.md +50 -0
- package/docs/pilot-kit/rfp-clause.md +46 -0
- package/docs/pilot-kit/roi-calculator-template.csv +2 -0
- package/docs/pilot-kit/security-qa.md +153 -0
- package/docs/pilot-kit/security-summary.md +35 -0
- package/docs/plans/2026-02-13-mcp-spike-design.md +113 -0
- package/docs/plans/2026-02-20-trust-os-v1-jira-backlog.md +348 -0
- package/docs/plans/2026-02-21-agent-economic-actor-operating-model.md +169 -0
- package/docs/plans/2026-02-21-trust-os-v1-strategy.md +241 -0
- package/docs/research/2026-02-21-agent-spend-host-landscape.md +57 -0
- package/docs/spec/AcceptanceCriteria.v1.md +17 -0
- package/docs/spec/AcceptanceEvaluation.v1.md +10 -0
- package/docs/spec/AgentEvent.v1.md +47 -0
- package/docs/spec/AgentIdentity.v1.md +62 -0
- package/docs/spec/AgentPassport.v1.md +95 -0
- package/docs/spec/AgentReputation.v1.md +59 -0
- package/docs/spec/AgentReputation.v2.md +52 -0
- package/docs/spec/AgentRun.v1.md +47 -0
- package/docs/spec/AgentRunSettlement.v1.md +52 -0
- package/docs/spec/AgentWallet.v1.md +43 -0
- package/docs/spec/AgreementDelegation.v1.md +109 -0
- package/docs/spec/ArbitrationCase.v1.md +67 -0
- package/docs/spec/ArbitrationOutcomeMapping.v1.md +62 -0
- package/docs/spec/ArbitrationVerdict.v1.md +60 -0
- package/docs/spec/BundleHeadAttestation.v1.md +32 -0
- package/docs/spec/CANONICAL_JSON.md +31 -0
- package/docs/spec/CRYPTOGRAPHY.md +61 -0
- package/docs/spec/ClosePack.v1.md +49 -0
- package/docs/spec/ClosePackManifest.v1.md +24 -0
- package/docs/spec/DelegationGrant.v1.md +90 -0
- package/docs/spec/DisputeCaseLifecycle.v1.md +51 -0
- package/docs/spec/DisputeOpenEnvelope.v1.md +43 -0
- package/docs/spec/ERRORS.md +76 -0
- package/docs/spec/ESCROW_NETTING_INVARIANTS.md +71 -0
- package/docs/spec/EvidenceIndex.v1.md +20 -0
- package/docs/spec/ExecutionIntent.v1.md +90 -0
- package/docs/spec/FinancePackBundleManifest.v1.md +24 -0
- package/docs/spec/FundingHold.v1.md +60 -0
- package/docs/spec/GovernancePolicy.v1.md +34 -0
- package/docs/spec/GovernancePolicy.v2.md +30 -0
- package/docs/spec/INVARIANTS.md +389 -0
- package/docs/spec/InteractionDirectionMatrix.v1.md +30 -0
- package/docs/spec/InvoiceBundleManifest.v1.md +24 -0
- package/docs/spec/InvoiceClaim.v1.md +11 -0
- package/docs/spec/MONEY_RAIL_STATE_MACHINE.md +58 -0
- package/docs/spec/MarketplaceAcceptance.v2.md +46 -0
- package/docs/spec/MarketplaceOffer.v2.md +54 -0
- package/docs/spec/MeteringReport.v1.md +18 -0
- package/docs/spec/OperatorAction.v1.md +90 -0
- package/docs/spec/PRODUCER_ERRORS.md +42 -0
- package/docs/spec/PolicyDecision.v1.md +83 -0
- package/docs/spec/PricingMatrix.v1.md +20 -0
- package/docs/spec/PricingMatrixSignatures.v1.md +30 -0
- package/docs/spec/PricingMatrixSignatures.v2.md +29 -0
- package/docs/spec/ProduceCliOutput.v1.md +46 -0
- package/docs/spec/ProofBundleManifest.v1.md +24 -0
- package/docs/spec/README.md +109 -0
- package/docs/spec/REFERENCE_IMPLEMENTATIONS.md +29 -0
- package/docs/spec/REFERENCE_VERIFIER_BEHAVIOR.md +68 -0
- package/docs/spec/REMOTE_SIGNER.md +66 -0
- package/docs/spec/ReleaseIndex.v1.md +32 -0
- package/docs/spec/ReleaseIndexSignatures.v1.md +17 -0
- package/docs/spec/ReleaseTrust.v1.md +13 -0
- package/docs/spec/ReleaseTrust.v2.md +26 -0
- package/docs/spec/RemoteSignerRequest.v1.md +21 -0
- package/docs/spec/RemoteSignerResponse.v1.md +16 -0
- package/docs/spec/ReputationEvent.v1.md +63 -0
- package/docs/spec/RevocationList.v1.md +28 -0
- package/docs/spec/SIGNER_PROVIDER_PLUGIN.md +32 -0
- package/docs/spec/STRICTNESS.md +68 -0
- package/docs/spec/SUPPLY_CHAIN.md +33 -0
- package/docs/spec/SettlementAdjustment.v1.md +45 -0
- package/docs/spec/SettlementDecisionRecord.v1.md +48 -0
- package/docs/spec/SettlementDecisionRecord.v2.md +53 -0
- package/docs/spec/SettlementDecisionReport.v1.md +44 -0
- package/docs/spec/SettlementKernel.v1.md +59 -0
- package/docs/spec/SettlementReceipt.v1.md +63 -0
- package/docs/spec/SlaDefinition.v1.md +24 -0
- package/docs/spec/SlaEvaluation.v1.md +12 -0
- package/docs/spec/THREAT_MODEL.md +113 -0
- package/docs/spec/TOOL_PROVENANCE.md +30 -0
- package/docs/spec/TRUST_ANCHORS.md +84 -0
- package/docs/spec/TenantSettings.v1.md +90 -0
- package/docs/spec/TenantSettings.v2.md +99 -0
- package/docs/spec/TimestampProof.v1.md +25 -0
- package/docs/spec/ToolCallAgreement.v1.md +34 -0
- package/docs/spec/ToolCallEvidence.v1.md +47 -0
- package/docs/spec/ToolManifest.v1.md +47 -0
- package/docs/spec/VERIFIER_ENVIRONMENT.md +38 -0
- package/docs/spec/VERSIONING.md +107 -0
- package/docs/spec/VerificationReport.v1.md +50 -0
- package/docs/spec/VerifyAboutOutput.v1.md +10 -0
- package/docs/spec/VerifyCliOutput.v1.md +28 -0
- package/docs/spec/WARNINGS.md +83 -0
- package/docs/spec/error-codes.v1.txt +285 -0
- package/docs/spec/examples/agreement_delegation_v1.example.json +21 -0
- package/docs/spec/examples/arbitration_case_v1.example.json +26 -0
- package/docs/spec/examples/arbitration_verdict_v1.example.json +32 -0
- package/docs/spec/examples/dispute_open_envelope_v1.example.json +18 -0
- package/docs/spec/examples/produce_cli_output_v1.example.json +32 -0
- package/docs/spec/examples/release_index_signature_v1.example.json +9 -0
- package/docs/spec/examples/release_index_signatures_v1.example.json +14 -0
- package/docs/spec/examples/release_index_v1.example.json +15 -0
- package/docs/spec/examples/release_trust_v1.example.json +7 -0
- package/docs/spec/examples/release_trust_v2.example.json +22 -0
- package/docs/spec/examples/remote_signer_request_v1.example.json +18 -0
- package/docs/spec/examples/remote_signer_response_v1.example.json +8 -0
- package/docs/spec/examples/reputation_event_v1.example.json +29 -0
- package/docs/spec/examples/verification_report_v1.example.json +24 -0
- package/docs/spec/examples/verify_about_output_v1.example.json +29 -0
- package/docs/spec/examples/verify_cli_output_v1.example.json +13 -0
- package/docs/spec/legacy/MarketplaceAcceptance.v1.md +48 -0
- package/docs/spec/legacy/MarketplaceOffer.v1.md +56 -0
- package/docs/spec/legacy/schemas/MarketplaceAcceptance.v1.schema.json +53 -0
- package/docs/spec/legacy/schemas/MarketplaceOffer.v1.schema.json +61 -0
- package/docs/spec/producer-error-codes.v1.txt +14 -0
- package/docs/spec/schemas/AcceptanceCriteria.v1.schema.json +24 -0
- package/docs/spec/schemas/AcceptanceEvaluation.v1.schema.json +26 -0
- package/docs/spec/schemas/AgentEvent.v1.schema.json +49 -0
- package/docs/spec/schemas/AgentIdentity.v1.schema.json +129 -0
- package/docs/spec/schemas/AgentPassport.v1.schema.json +112 -0
- package/docs/spec/schemas/AgentReputation.v1.schema.json +151 -0
- package/docs/spec/schemas/AgentReputation.v2.schema.json +120 -0
- package/docs/spec/schemas/AgentRun.v1.schema.json +71 -0
- package/docs/spec/schemas/AgentRunSettlement.v1.schema.json +75 -0
- package/docs/spec/schemas/AgentWallet.v1.schema.json +54 -0
- package/docs/spec/schemas/AgreementDelegation.v1.schema.json +50 -0
- package/docs/spec/schemas/ArbitrationCase.v1.schema.json +133 -0
- package/docs/spec/schemas/ArbitrationVerdict.v1.schema.json +149 -0
- package/docs/spec/schemas/BundleHeadAttestation.v1.schema.json +21 -0
- package/docs/spec/schemas/ClosePackManifest.v1.schema.json +38 -0
- package/docs/spec/schemas/DelegationGrant.v1.schema.json +102 -0
- package/docs/spec/schemas/DisputeOpenEnvelope.v1.schema.json +78 -0
- package/docs/spec/schemas/EvidenceIndex.v1.schema.json +41 -0
- package/docs/spec/schemas/ExecutionIntent.v1.schema.json +85 -0
- package/docs/spec/schemas/FinancePackBundleManifest.v1.schema.json +38 -0
- package/docs/spec/schemas/FundingHold.v1.schema.json +46 -0
- package/docs/spec/schemas/GovernancePolicy.v1.schema.json +45 -0
- package/docs/spec/schemas/GovernancePolicy.v2.schema.json +70 -0
- package/docs/spec/schemas/InteractionDirectionMatrix.v1.schema.json +43 -0
- package/docs/spec/schemas/InvoiceBundleManifest.v1.schema.json +38 -0
- package/docs/spec/schemas/InvoiceClaim.v1.schema.json +39 -0
- package/docs/spec/schemas/MarketplaceAcceptance.v2.schema.json +53 -0
- package/docs/spec/schemas/MarketplaceOffer.v2.schema.json +61 -0
- package/docs/spec/schemas/MeteringReport.v1.schema.json +45 -0
- package/docs/spec/schemas/OperatorAction.v1.schema.json +113 -0
- package/docs/spec/schemas/PolicyDecision.v1.schema.json +74 -0
- package/docs/spec/schemas/PricingMatrix.v1.schema.json +24 -0
- package/docs/spec/schemas/PricingMatrixSignatures.v1.schema.json +24 -0
- package/docs/spec/schemas/PricingMatrixSignatures.v2.schema.json +24 -0
- package/docs/spec/schemas/ProduceCliOutput.v1.schema.json +107 -0
- package/docs/spec/schemas/ProofBundleManifest.v1.schema.json +37 -0
- package/docs/spec/schemas/PublicKeys.v1.schema.json +33 -0
- package/docs/spec/schemas/ReleaseIndex.v1.schema.json +45 -0
- package/docs/spec/schemas/ReleaseIndexSignature.v1.schema.json +16 -0
- package/docs/spec/schemas/ReleaseIndexSignatures.v1.schema.json +16 -0
- package/docs/spec/schemas/ReleaseTrust.v1.schema.json +15 -0
- package/docs/spec/schemas/ReleaseTrust.v2.schema.json +37 -0
- package/docs/spec/schemas/RemoteSignerPublicKeyResponse.v1.schema.json +14 -0
- package/docs/spec/schemas/RemoteSignerRequest.v1.schema.json +24 -0
- package/docs/spec/schemas/RemoteSignerResponse.v1.schema.json +10 -0
- package/docs/spec/schemas/RemoteSignerSignRequest.v1.schema.json +27 -0
- package/docs/spec/schemas/RemoteSignerSignResponse.v1.schema.json +16 -0
- package/docs/spec/schemas/ReputationEvent.v1.schema.json +164 -0
- package/docs/spec/schemas/RevocationList.v1.schema.json +51 -0
- package/docs/spec/schemas/SettlementAdjustment.v1.schema.json +44 -0
- package/docs/spec/schemas/SettlementDecisionRecord.v1.schema.json +66 -0
- package/docs/spec/schemas/SettlementDecisionRecord.v2.schema.json +149 -0
- package/docs/spec/schemas/SettlementDecisionReport.v1.schema.json +61 -0
- package/docs/spec/schemas/SettlementReceipt.v1.schema.json +135 -0
- package/docs/spec/schemas/SlaDefinition.v1.schema.json +33 -0
- package/docs/spec/schemas/SlaEvaluation.v1.schema.json +26 -0
- package/docs/spec/schemas/TenantSettings.v1.schema.json +90 -0
- package/docs/spec/schemas/TenantSettings.v2.schema.json +161 -0
- package/docs/spec/schemas/TimestampProof.v1.schema.json +17 -0
- package/docs/spec/schemas/ToolCallAgreement.v1.schema.json +34 -0
- package/docs/spec/schemas/ToolCallEvidence.v1.schema.json +45 -0
- package/docs/spec/schemas/ToolManifest.v1.schema.json +54 -0
- package/docs/spec/schemas/VerificationReport.v1.schema.json +83 -0
- package/docs/spec/schemas/VerifyAboutOutput.v1.schema.json +54 -0
- package/docs/spec/schemas/VerifyCliOutput.v1.schema.json +75 -0
- package/docs/spec/schemas/VerifyReleaseOutput.v1.schema.json +47 -0
- package/docs/spec/x402-error-codes.v1.txt +35 -0
- package/docs/templates/buyer-email.txt +18 -0
- package/docs/templates/buyer-one-pager.md +24 -0
- package/package.json +53 -6
- package/scripts/acceptance/full-stack.mjs +734 -0
- package/scripts/acceptance/full-stack.sh +99 -0
- package/scripts/audit/build-audit-packet.mjs +242 -0
- package/scripts/backup-pg.sh +45 -0
- package/scripts/backup-restore/README.md +18 -0
- package/scripts/backup-restore/capture-state.mjs +130 -0
- package/scripts/backup-restore/client.mjs +97 -0
- package/scripts/backup-restore/seed-workload.mjs +235 -0
- package/scripts/backup-restore/verify-state.mjs +139 -0
- package/scripts/backup-restore-test.sh +217 -0
- package/scripts/chaos.js +221 -0
- package/scripts/ci/build-launch-cutover-packet.mjs +304 -0
- package/scripts/ci/build-self-serve-benchmark-report.mjs +122 -0
- package/scripts/ci/changelog-guard.mjs +145 -0
- package/scripts/ci/check-kernel-v0-launch-gate.mjs +233 -0
- package/scripts/ci/check-secret-hygiene.mjs +78 -0
- package/scripts/ci/check-version-consistency.mjs +42 -0
- package/scripts/ci/cli-pack-smoke.mjs +160 -0
- package/scripts/ci/flake-budget-guard.mjs +68 -0
- package/scripts/ci/generate-error-codes.mjs +54 -0
- package/scripts/ci/lib/lighthouse-tracker.mjs +90 -0
- package/scripts/ci/lib/self-serve-launch-gate.mjs +89 -0
- package/scripts/ci/npm-pack-smoke.mjs +454 -0
- package/scripts/ci/run-10x-throughput-drill.mjs +318 -0
- package/scripts/ci/run-10x-throughput-incident-rehearsal.mjs +368 -0
- package/scripts/ci/run-arbitration-workspace-browser-e2e.sh +22 -0
- package/scripts/ci/run-circle-sandbox-smoke.mjs +237 -0
- package/scripts/ci/run-go-live-gate.mjs +150 -0
- package/scripts/ci/run-kernel-v0-ship-gate.mjs +97 -0
- package/scripts/ci/run-mcp-host-cert-matrix.mjs +201 -0
- package/scripts/ci/run-mcp-host-smoke.mjs +473 -0
- package/scripts/ci/run-offline-verification-parity-gate.mjs +762 -0
- package/scripts/ci/run-onboarding-host-success-gate.mjs +516 -0
- package/scripts/ci/run-onboarding-policy-slo-gate.mjs +537 -0
- package/scripts/ci/run-production-cutover-gate.mjs +540 -0
- package/scripts/ci/run-public-openclaw-npx-smoke.mjs +148 -0
- package/scripts/ci/run-release-promotion-guard.mjs +756 -0
- package/scripts/ci/run-self-serve-launch-gate.mjs +56 -0
- package/scripts/ci/runtime-import-smoke.mjs +58 -0
- package/scripts/ci/update-lighthouse-tracker.mjs +112 -0
- package/scripts/closepack/lib.mjs +286 -0
- package/scripts/collect-debug.sh +263 -0
- package/scripts/demo/compositional-settlement-3hop.mjs +237 -0
- package/scripts/demo/delivery-robot/export-ui-fixture.mjs +188 -0
- package/scripts/demo/delivery-robot/generate.mjs +377 -0
- package/scripts/demo/kernel-agent-goes-shopping.mjs +202 -0
- package/scripts/demo/magic-link-first-green.mjs +118 -0
- package/scripts/demo/magic-link-kind-smoke.mjs +577 -0
- package/scripts/demo/mcp-paid-exa.mjs +1110 -0
- package/scripts/dev/billing-doctor.sh +145 -0
- package/scripts/dev/billing-smoke-prod.sh +219 -0
- package/scripts/dev/billing-webhook-replay.sh +161 -0
- package/scripts/dev/env.dev.example +29 -0
- package/scripts/dev/env.sh +37 -0
- package/scripts/dev/new-sdk-key.sh +81 -0
- package/scripts/dev/sdk-first-run.sh +21 -0
- package/scripts/dev/smoke-x402-gateway.sh +115 -0
- package/scripts/dev/start-api.sh +24 -0
- package/scripts/doctor/mcp-host.mjs +120 -0
- package/scripts/examples/produce-and-verify-jobproof.mjs +191 -0
- package/scripts/examples/sdk-first-paid-rfq.py +105 -0
- package/scripts/examples/sdk-first-verified-run.mjs +85 -0
- package/scripts/examples/sdk-first-verified-run.py +99 -0
- package/scripts/examples/sdk-tenant-analytics.mjs +103 -0
- package/scripts/examples/sdk-tenant-analytics.py +118 -0
- package/scripts/finance-pack/bundle.mjs +284 -0
- package/scripts/fixtures/generate-bundle-fixtures.mjs +877 -0
- package/scripts/governance/export.mjs +169 -0
- package/scripts/load/delivery-stress.k6.js +183 -0
- package/scripts/load/ingest-burst.k6.js +236 -0
- package/scripts/load/run-delivery-load.js +66 -0
- package/scripts/load/webhook-receiver.js +131 -0
- package/scripts/magic-link/migrate-run-records-to-db.mjs +35 -0
- package/scripts/mcp/probe.mjs +238 -0
- package/scripts/mcp/settld-mcp-http-gateway.mjs +178 -0
- package/scripts/mcp/settld-mcp-server.mjs +1511 -0
- package/scripts/openapi/write.mjs +13 -0
- package/scripts/ops/bootstrap-tenant-conformance.mjs +185 -0
- package/scripts/ops/build-x402-pilot-reliability-report.mjs +489 -0
- package/scripts/ops/check-x402-receipt-sample.mjs +181 -0
- package/scripts/ops/design-partner-run-packet.mjs +466 -0
- package/scripts/ops/dispute-finance-reconciliation-packet.mjs +313 -0
- package/scripts/ops/hosted-baseline-evidence.mjs +890 -0
- package/scripts/ops/money-rails-chargeback-evidence.mjs +509 -0
- package/scripts/ops/money-rails-reconcile-evidence.mjs +180 -0
- package/scripts/ops/p0-seed-money-rail-operation.mjs +432 -0
- package/scripts/ops/run-x402-hitl-smoke.mjs +607 -0
- package/scripts/pilot/finance-pack.mjs +495 -0
- package/scripts/pilot/fixtures/robot-keypair.json +4 -0
- package/scripts/pilot/fixtures/server-signer.json +4 -0
- package/scripts/policy/cli.mjs +600 -0
- package/scripts/profile/cli.mjs +1324 -0
- package/scripts/proof-bundle/job.mjs +109 -0
- package/scripts/proof-bundle/lib.mjs +92 -0
- package/scripts/proof-bundle/month.mjs +103 -0
- package/scripts/provider/conformance-run.mjs +159 -0
- package/scripts/provider/keys-generate.mjs +135 -0
- package/scripts/provider/publish.mjs +420 -0
- package/scripts/quickstart/x402.mjs +334 -0
- package/scripts/register-entity-secret.mjs +102 -0
- package/scripts/release/build-artifacts.mjs +181 -0
- package/scripts/release/generate-release-index.mjs +112 -0
- package/scripts/release/release-index-lib.mjs +232 -0
- package/scripts/release/sign-release-index.mjs +85 -0
- package/scripts/release/validate-release-assets.mjs +170 -0
- package/scripts/release/verify-release.mjs +261 -0
- package/scripts/restore-pg.sh +34 -0
- package/scripts/scaffold/create-settld-paid-tool.mjs +19 -0
- package/scripts/sdk/smoke-python.py +30 -0
- package/scripts/sdk/smoke.mjs +16 -0
- package/scripts/settlement/x402-batch-worker.mjs +1091 -0
- package/scripts/setup/circle-bootstrap.mjs +310 -0
- package/scripts/setup/host-config.mjs +617 -0
- package/scripts/setup/onboard.mjs +1337 -0
- package/scripts/setup/openclaw-onboard.mjs +423 -0
- package/scripts/setup/wizard.mjs +986 -0
- package/scripts/slo/check.mjs +239 -0
- package/scripts/smoke/k8s-smoke.mjs +214 -0
- package/scripts/spec/generate-protocol-vectors.mjs +1019 -0
- package/scripts/test/check-no-generated-artifacts.sh +12 -0
- package/scripts/test/run.sh +59 -0
- package/scripts/trust/validate-trust-file.mjs +57 -0
- package/scripts/trust-config/rotate-settld-pay.mjs +277 -0
- package/scripts/trust-config/wizard.mjs +161 -0
- package/scripts/vendor-contract-test-lib.mjs +182 -0
- package/scripts/vendor-contract-test.mjs +55 -0
- package/scripts/vercel/build-mkdocs.sh +9 -0
- package/scripts/vercel/ignore-mkdocs.sh +25 -0
- package/scripts/vercel/install-mkdocs.sh +6 -0
- package/scripts/verify-pg.js +217 -0
- package/scripts/x402/receipt-verify.mjs +289 -0
- package/services/finance-sink/src/dedupe-store.js +29 -6
- package/services/receiver/src/dedupe-store.js +29 -5
- package/services/x402-gateway/Dockerfile +13 -0
- package/services/x402-gateway/README.md +58 -0
- package/services/x402-gateway/examples/upstream-mock.js +337 -0
- package/services/x402-gateway/src/server.js +1058 -0
- package/src/api/app.js +34658 -16940
- package/src/api/maintenance.js +70 -0
- package/src/api/middleware/trust-kernel.js +114 -0
- package/src/api/openapi.js +1778 -70
- package/src/api/persistence.js +456 -0
- package/src/api/server.js +81 -5
- package/src/api/store.js +1581 -62
- package/src/api/workers/deliveries.js +99 -4
- package/src/api/workers/insolvency-sweep.js +159 -0
- package/src/core/agent-card.js +69 -0
- package/src/core/agent-wallets.js +231 -0
- package/src/core/agreement-delegation.js +549 -0
- package/src/core/billing-plans.js +40 -6
- package/src/core/circle-reserve-adapter.js +845 -0
- package/src/core/event-policy.js +21 -2
- package/src/core/maintenance-locks.js +1 -0
- package/src/core/operator-action.js +303 -0
- package/src/core/paid-tool-manifest.js +318 -0
- package/src/core/policy-decision.js +322 -0
- package/src/core/policy-packs.js +207 -0
- package/src/core/profile-fingerprint.js +27 -0
- package/src/core/profile-simulation-reasons.js +84 -0
- package/src/core/profile-templates.js +242 -0
- package/src/core/provider-publish-conformance.js +525 -0
- package/src/core/provider-publish-proof.js +396 -0
- package/src/core/provider-quote-signature.js +170 -0
- package/src/core/settld-keys.js +112 -0
- package/src/core/settld-pay-token.js +344 -0
- package/src/core/settlement-kernel.js +239 -2
- package/src/core/settlement-verifier.js +335 -0
- package/src/core/tool-call-agreement.js +112 -0
- package/src/core/tool-call-evidence.js +144 -0
- package/src/core/tool-provider-signature.js +98 -0
- package/src/core/wallet-assignment-resolver.js +129 -0
- package/src/core/wallet-provider-bootstrap.js +365 -0
- package/src/core/x402-escalation-override.js +258 -0
- package/src/core/x402-gate.js +118 -0
- package/src/core/x402-provider-refund-decision.js +220 -0
- package/src/core/x402-receipt-verifier.js +708 -0
- package/src/core/x402-reversal-command.js +251 -0
- package/src/core/x402-wallet-issuer-decision.js +252 -0
- package/src/core/zk-verifier.js +300 -0
- package/src/db/migrations/029_reputation_event_index.sql +54 -0
- package/src/db/migrations/030_artifacts_source_event_unique_job_only.sql +15 -0
- package/src/db/pg.js +18 -7
- 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.
|