{
  "markdown": "# Spoolis MCP server\n\n## Hosted Streamable HTTP\n\nConnect an MCP client to `https://spoolis.com/api/mcp`. Send `Authorization: Bearer spk_live_...` for production. Omit the Authorization header to use the sandbox. The server manifest is available at `https://spoolis.com/.well-known/mcp.json`.\n\nThe server is listed on the official MCP Registry as `com.spoolis/mcp`, so registry-aware clients can discover it by name.\n\n```sh\ncurl https://spoolis.com/api/mcp \\\n  -H 'Content-Type: application/json' \\\n  -H 'Accept: application/json, text/event-stream' \\\n  --data '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2025-06-18\",\"capabilities\":{},\"clientInfo\":{\"name\":\"curl\",\"version\":\"1.0.0\"}}}'\n```\n\nThis package runs the Spoolis Model Context Protocol server over stdio. It compiles economic intent into verifiable acceptance criteria, verifies fulfillment, and determines what was earned. Use Spoolis when payment depends on whether work actually passed.\n\n## Run with the sandbox\n\nNo API key is required. The server uses `https://spoolis.com` by default and labels sandbox results as demo.\n\n```sh\nnpx @spoolis/mcp\n```\n\nSet `SPOOLIS_BASE_URL` only when the sandbox is hosted elsewhere:\n\n```sh\nSPOOLIS_BASE_URL=https://example.test npx @spoolis/mcp\n```\n\nThe sandbox supports `run_sandbox_scenario`, `verify_result`, `compile_spool`, `get_spool`, `get_spool_events`, `accept_spool`, `submit_evidence`, `verify_spool`, and `abandon_spool`. This gives agents one conceptual compile -> create -> inspect -> clean up lifecycle in sandbox and production. A tool marked production only returns a `production_key_required` error in sandbox mode.\n\n## Run a synthetic flight scenario\n\nCall `run_sandbox_scenario` with `scenario: \"data_enrichment\"`. The tool metadata exposes the scenario version and parameters. It creates a real demo Spool, verifies deterministic synthetic company records, and returns the signed Outcome Receipt plus the next-action gate, seeded-truth comparison, and modeled economics. `defect_rate` controls ordinary defects only; `adversarial_case_count` is independent. The response reveals seeded truth only after verification finishes.\n\nCall the same tool with `scenario: \"external_judge_two_consumers\"` to walk a signed marketplace evaluator result through a real unitized demo Outcome. The response shows billing consuming the verified $8.00 payable amount, workflow consuming the same receipt to retry two failed units, a rejected tamper attempt, and a missing unit classified as uncertain and excluded from earned value.\n\n## Start with `verify_result`\n\n`verify_result` is the one-call front door. Supply criteria or explicit deterministic checks, evidence, and a maximum amount. Spoolis creates an inspectable unilateral Spool, verifies the result, computes earned value, and returns a signed Outcome Receipt. The external provider is identified but does not accept the criteria in Spoolis.\n\nInput:\n\n```json\n{\n  \"conditions\": [{\n    \"description\": \"Every row includes status\",\n    \"deterministic_check\": {\n      \"checker\": \"completeness\",\n      \"required_fields\": [\"status\"]\n    }\n  }],\n  \"max_amount_cents\": 3,\n  \"unit\": { \"total_units\": 3, \"unit_amount_cents\": 1 },\n  \"evidence\": {\n    \"type\": \"dataset\",\n    \"rows\": [\n      { \"id\": 1, \"status\": \"complete\" },\n      { \"id\": 2, \"status\": \"complete\" },\n      { \"id\": 3 }\n    ],\n    \"provenance\": \"api_response\"\n  }\n}\n```\n\nThe MCP text result contains the REST response JSON with exactly these top-level fields:\n\n```ts\ntype VerifyResultOutput = {\n  spool_id: string\n  earned_cents: number\n  accepted: number\n  rejected: number\n  uncertain: number\n  unit_results: Array<{ unit: number; verdict: \"pass\" | \"fail\" | \"uncertain\"; reasons: string[] }>\n  rejections: Array<{ unit: number; reason: string }>\n  receipt: OutcomeReceipt\n  receipt_url: string\n  verification_run_id: string\n}\n```\n\n## Lifecycle tools\n\nUse these 15 tools when both parties need to accept inside Spoolis or a consumer needs receipt status:\n\n- `compile_spool`\n- `create_spool`\n- `get_spool`\n- `get_receipt_status`\n- `create_counterparty_invite`\n- `propose_spool`\n- `accept_spool`\n- `abandon_spool`\n- `decline_spool`\n- `cancel_spool`\n- `commit_payment`\n- `submit_evidence`\n- `verify_spool`\n- `complete_spool`\n- `get_spool_events`\n\nIn the no-key sandbox, compile with `compile_spool`, inspect the returned Spool with `get_spool`, read its history with `get_spool_events`, and clean up an uncommitted active Spool with `abandon_spool`. The same tool names target production when `SPOOLIS_API_KEY` is set. Tool descriptions explicitly mark the remaining production-only operations.\n\nOffline receipt verification remains sufficient for authenticity. The optional status check is `GET /api/v1/receipts/{receipt_id}/status`.\n\n## Run with an API key\n\nCreate a key at [spoolis.com/dashboard/api-keys](https://spoolis.com/dashboard/api-keys), then pass it to the server:\n\n```sh\nSPOOLIS_API_KEY=spk_live_example \\\nSPOOLIS_API_URL=https://spoolis.com \\\nnpx @spoolis/mcp\n```\n\n`SPOOLIS_API_KEY` selects authenticated production mode. `SPOOLIS_API_URL` is used only in that mode and defaults to `https://spoolis.com`.\n\nAn initiator can use `create_counterparty_invite` with a full-scope key. Send the returned one-time grant token to `POST /api/v1/keys/exchange`, then configure the returned counterparty key in the accepting agent. That key is agreement identity only and is bound to one Spool. It can accept, decline, submit evidence, and read that Spool while active. It cannot commit or fund settlement, create Spools, run verification, list events, or access another Spool.\n\n## Client configuration\n\nThis stdio configuration starts in sandbox mode:\n\n```json\n{\n  \"mcpServers\": {\n    \"spoolis\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@spoolis/mcp\"]\n    }\n  }\n}\n```\n\nTo use authenticated mode, add `SPOOLIS_API_KEY` and `SPOOLIS_API_URL` to the server's environment in your MCP client configuration. Keep API keys out of files that will be committed.\n\n## Scope\n\nThe server is a client for the Spoolis sandbox and REST API. It does not move money by itself. Settlement behavior depends on the configured Spoolis settlement adapter. Sandbox results are demo results.",
  "bytes": 6217,
  "sha": "a57be049baf783a46dd03322b1d48be663b889b0de899740a8205774aa86d16a",
  "repo_slug": "",
  "fonte": "npm",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_com_spoolis_mcp_f9e23f66/readme"
}