{
  "generated_from": "https://x402.press/catalog.json",
  "generator": "scripts/generate_service_pages.py",
  "page": "https://x402.press/services/spiralstake/",
  "llms": "https://x402.press/services/spiralstake/llms.txt",
  "name": "spiralstake",
  "display_name": "SpiralStake",
  "host": "https://spiralstake.x402.press",
  "state": "sellable",
  "state_note": "Sellable as of 2026-10-30: GET /health answers 200 and every listed model/operation returns a 402 quote in the live handshake (measured 2026-10-30T23:10Z, see quote_basis).",
  "description": "A non-custodial Morpho leverage-execution gateway behind x402 micropayments: discover and simulate leverage strategies, and build unsigned transactions for any agentic AI.",
  "archetype": "function-toolkit",
  "maturity": "beta",
  "tags": [
    "leveraged-yield",
    "morpho",
    "non-custodial-leverage",
    "defi",
    "flash-loans",
    "x402",
    "micropayments"
  ],
  "paid_operations": [
    {
      "name": "build_leverage_tx",
      "method": "POST",
      "path": "/v1/build/leverage-tx",
      "kind": "assembly",
      "latency_class": "fast",
      "description": "Build the unsigned transaction to open a leveraged position — returns approvals, tx, and meta the user signs locally."
    },
    {
      "name": "build_manage_tx",
      "method": "POST",
      "path": "/v1/build/manage-tx",
      "kind": "assembly",
      "latency_class": "fast",
      "description": "Build the unsigned transaction to adjust or close an open position (actions: close, increase_leverage, add/remove_collateral, repay, borrow)."
    }
  ],
  "free_endpoints": [
    {
      "method": "GET",
      "path": "/v1/strategies",
      "description": "List all leverage strategies"
    },
    {
      "method": "POST",
      "path": "/v1/strategies",
      "description": "List strategies with filters"
    },
    {
      "method": "GET",
      "path": "/v1/strategies/{strategy_id}",
      "description": "Detail for one strategy (Morpho market id)"
    },
    {
      "method": "GET",
      "path": "/v1/prices",
      "description": "Current token/loan USD prices"
    },
    {
      "method": "POST",
      "path": "/v1/simulate",
      "description": "Deterministic preview of a leveraged position (no wallet)"
    },
    {
      "method": "GET",
      "path": "/v1/positions/{address}",
      "description": "A wallet's open/closed positions"
    },
    {
      "method": "GET",
      "path": "/tools",
      "description": "list all operations with input schemas"
    },
    {
      "method": "GET",
      "path": "/feedback",
      "description": "recent feedback entries"
    },
    {
      "method": "POST",
      "path": "/feedback",
      "description": "submit feedback"
    }
  ],
  "docs": {
    "llms": "https://spiralstake.x402.press/llms.txt",
    "manifest": "https://spiralstake.x402.press/.well-known/x402.json",
    "tools": "https://spiralstake.x402.press/tools",
    "openapi": "https://spiralstake.x402.press/openapi.json",
    "about": "https://spiralstake.x402.press/about",
    "persona": "https://spiralstake.x402.press/persona"
  },
  "hub_catalog": "https://x402.press/catalog.json",
  "review": {
    "url": "https://x402.review/2026/10/31/spiralstake-review/",
    "title": "SpiralStake: the agent assembles the transaction, the wallet signs it",
    "published": "2026-10-31"
  },
  "price": {
    "kind": "exact",
    "currency": "USD",
    "by_chain": {
      "base": {
        "chain_id": "eip155:8453",
        "asset": "USDC/EURC",
        "exact": "0.006125"
      },
      "arbitrum": {
        "chain_id": "eip155:42161",
        "asset": "USDC",
        "exact": "0.00525"
      },
      "polygon": {
        "chain_id": "eip155:137",
        "asset": "USDC",
        "exact": "0.004375"
      },
      "avalanche": {
        "chain_id": "eip155:43114",
        "asset": "USDC",
        "exact": "0.00175"
      },
      "ethereum": {
        "chain_id": "eip155:1",
        "asset": "USDC",
        "exact": "2.625"
      },
      "robinhood": {
        "chain_id": "eip155:4663",
        "asset": "USDG",
        "exact": "0.006125"
      },
      "arc": {
        "chain_id": "eip155:5042",
        "asset": "USDC",
        "exact": "0.006125"
      }
    },
    "cheapest": {
      "chain": "avalanche",
      "exact": "0.00175"
    },
    "measured_at": "2026-10-30T23:28:43Z",
    "method": "unpaid request -> 402 Payment-Required header (first round of the handshake only; nothing signed, nothing settled)"
  },
  "quotes": {
    "build_leverage_tx": {
      "base": {
        "exact": "0.006125",
        "asset": "USDC/EURC",
        "ceilings": []
      },
      "arbitrum": {
        "exact": "0.00525",
        "asset": "USDC",
        "ceilings": []
      },
      "polygon": {
        "exact": "0.004375",
        "asset": "USDC",
        "ceilings": []
      },
      "avalanche": {
        "exact": "0.00175",
        "asset": "USDC",
        "ceilings": []
      },
      "ethereum": {
        "exact": "2.625",
        "asset": "USDC",
        "ceilings": []
      },
      "robinhood": {
        "exact": "0.006125",
        "asset": "USDG",
        "ceilings": []
      },
      "arc": {
        "exact": "0.006125",
        "asset": "USDC",
        "ceilings": []
      }
    },
    "build_manage_tx": {
      "base": {
        "exact": "0.006125",
        "asset": "USDC/EURC",
        "ceilings": []
      },
      "arbitrum": {
        "exact": "0.00525",
        "asset": "USDC",
        "ceilings": []
      },
      "polygon": {
        "exact": "0.004375",
        "asset": "USDC",
        "ceilings": []
      },
      "avalanche": {
        "exact": "0.00175",
        "asset": "USDC",
        "ceilings": []
      },
      "ethereum": {
        "exact": "2.625",
        "asset": "USDC",
        "ceilings": []
      },
      "robinhood": {
        "exact": "0.006125",
        "asset": "USDG",
        "ceilings": []
      },
      "arc": {
        "exact": "0.006125",
        "asset": "USDC",
        "ceilings": []
      }
    }
  },
  "quote_basis": {
    "measured_at": "2026-10-30T23:28:43Z",
    "method": "unpaid request -> 402 Payment-Required header (first round of the handshake only; nothing signed, nothing settled)",
    "note": "Two request shapes per entry: one short user message with no max_tokens (the ceiling that authorises the model's whole output allowance — a worst case, never a price), and the same message with max_tokens=1000 (the ceiling a buyer budgets against). `exact` is the fixed-call price, from the same handshake. Where the service prices by prompt size or peak window, the live amount rises with the request and is always returned with the payment request.",
    "entries": {
      "build_leverage_tx": {
        "operation": "build_leverage_tx",
        "body": {},
        "ceiling_probes": []
      },
      "build_manage_tx": {
        "operation": "build_manage_tx",
        "body": {},
        "ceiling_probes": []
      }
    }
  }
}
