{
  "openapi": "3.1.0",
  "info": {
    "title": "Coil Scanner Agent API",
    "version": "1.1.0",
    "description": "The Coil Scanner board, sold per read to AI agents over the x402 payment protocol. The Equities book (S&P 500, Nasdaq-100, and Macro — ~560 names) plus the Crypto book (BTC, ETH — long-only trend signals evaluated on the UTC daily close), every name scored for opportunity, entry state, and hold strength, with per-book regime verdicts, sector boards, and buy-list lanes. Refreshed roughly every 5 minutes during US market hours (best-effort, honestly timestamped via computed_at); morning snapshot otherwise — crypto trades 24/7 but this board refreshes on US weekdays only. Impersonal research publication — identical for every buyer, not individualized investment advice; scores describe historical/technical structure, not future returns. Markets can lose money; crypto is highly volatile and can lose value rapidly, including total loss.\n\nNO WALLET? This endpoint is paid, but the same board is FREE two other ways, with no payment, account, or key: the MCP server at https://coil.trade/mcp (`claude mcp add --transport http coil https://coil.trade/mcp`, full board one market day delayed), and https://coil.trade/api/board/agent?preview=1 (identical schema and LIVE intraday timestamps, trimmed to the top 3 names per book — the trim is the limit, there is no call cap). Humans/agents without crypto can subscribe at https://coil.trade/scanner.",
    "x-guidance": "GET /api/board/agent without a payment header returns HTTP 402 with x402 v2 payment requirements (also base64-encoded in the PAYMENT-REQUIRED response header): $0.25 per read in USDC on Base (eip155:8453), scheme 'exact'. Pay with any x402 client (@x402/fetch + @x402/evm, Coinbase AgentKit, or the x402 MCP bridge) and the same request returns the full scored board as JSON plus an on-chain settlement receipt in the PAYMENT-RESPONSE header. Rank names by opp_pct (opportunity percentile) or opp_score; entry states are READY/SETUP/WAIT/CHASE/FALLING; hold_q is hold strength 0-100; each book carries a regime verdict (NAMES_ON/SELECTIVE/SECTORS_ON/INDEX_ONLY/RISK_OFF) that gates how far down the green goes. Sample the shape for free first at GET /api/board/free (previous day's top-3 per book, no payment). Human docs: https://coil.trade/agents",
    "contact": {
      "email": "support@coil.trade",
      "url": "https://coil.trade/agents"
    },
    "x-polling-contract": "Every response (paid AND the free preview) carries a freshness block — market_open, data_age_seconds, next_refresh_at, and a plain-language poll_hint — plus the same values in the X-Coil-Market-Open / X-Coil-Next-Refresh / X-Coil-Data-Age response headers. It tells you when the board will actually change, so you poll only when there is new data instead of re-buying an identical payload. When the US market is shut it says so and gives the next session time. Market holidays are not modelled (a holiday reads as open while the board simply will not advance — data_age_seconds still reveals it)."
  },
  "servers": [
    {
      "url": "https://coil.trade"
    }
  ],
  "paths": {
    "/api/board/agent": {
      "get": {
        "operationId": "getBoardAgent",
        "summary": "Buy one read of the full Coil Scanner board (x402, USDC on Base)",
        "tags": [
          "Market Data"
        ],
        "x-payment-info": {
          "intent": "charge",
          "method": "x402",
          "amount": "250000",
          "currency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "description": "Buy one read of the full Coil Scanner board (x402, USDC on Base) — x402 'exact' charge, USDC on Base (eip155:8453). Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api",
          "offers": [
            {
              "intent": "charge",
              "method": "x402",
              "amount": "250000",
              "currency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
              "description": "Buy one read of the full Coil Scanner board (x402, USDC on Base) — x402 'exact' charge, USDC on Base (eip155:8453). Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            },
            {
              "intent": "charge",
              "method": "x402",
              "amount": "250000",
              "currency": "31566704",
              "description": "Buy one read of the full Coil Scanner board (x402, USDC on Base) — x402 'exact' charge, USDCa on Algorand mainnet. Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            },
            {
              "intent": "charge",
              "method": "x402",
              "amount": "250000",
              "currency": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
              "description": "Buy one read of the full Coil Scanner board (x402, USDC on Base) — x402 'exact' charge, USDC on Solana mainnet. Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            }
          ],
          "protocols": [
            "x402",
            "mpp"
          ],
          "mpp": {
            "method": "usdc",
            "intent": "charge",
            "challenge": "WWW-Authenticate: Payment",
            "credential": "Authorization: Payment",
            "network": "eip155:8453"
          },
          "nanopayments": {
            "rail": "circle-gateway",
            "scheme": "exact",
            "network": "eip155:8453",
            "select": "the accepts entry with extra.name=GatewayWalletBatched",
            "note": "Gasless batched USDC from a unified Circle Gateway balance — sign with @circle-fin/x402-batching (registerBatchScheme); settles offchain to the seller's Gateway balance."
          }
        },
        "responses": {
          "402": {
            "description": "Payment Required — x402 v2 payment requirements in the JSON body and the PAYMENT-REQUIRED header"
          },
          "200": {
            "description": "The full scored board (fresh; carries computed_at + intraday flag). Settlement receipt in the PAYMENT-RESPONSE header. Includes a `freshness` object (market_open, data_age_seconds, next_refresh_at, poll_hint) so a client polls only when the board has actually changed.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "product": {
                      "type": "string",
                      "const": "coil-board"
                    },
                    "asof_daily": {
                      "type": "string",
                      "description": "trading day of the scan, YYYY-MM-DD"
                    },
                    "computed_at": {
                      "type": "string",
                      "description": "when this scan was computed (PT)"
                    },
                    "intraday": {
                      "type": "boolean"
                    },
                    "book_order": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "books": {
                      "type": "object",
                      "description": "per-book regime verdict, index/sector cards, buy-list lanes"
                    },
                    "names": {
                      "type": "array",
                      "description": "~560 scored names",
                      "items": {
                        "type": "object",
                        "properties": {
                          "sym": {
                            "type": "string"
                          },
                          "name": {
                            "type": "string"
                          },
                          "sector": {
                            "type": "string"
                          },
                          "price": {
                            "type": "number"
                          },
                          "chg_pct": {
                            "type": "number"
                          },
                          "opp_score": {
                            "type": "number",
                            "description": "0-100 opportunity blend"
                          },
                          "opp_pct": {
                            "type": "number",
                            "description": "cross-sectional percentile"
                          },
                          "state": {
                            "type": "string",
                            "description": "entry state: READY/SETUP/WAIT/CHASE/FALLING (plus firing/cold light)"
                          },
                          "entry_q": {
                            "type": "number"
                          },
                          "hold_q": {
                            "type": "number"
                          },
                          "hold_label": {
                            "type": "string"
                          },
                          "is_leader": {
                            "type": "boolean"
                          }
                        }
                      }
                    },
                    "disclaimer": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "headers": {
              "X-Coil-Market-Open": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "true",
                    "false"
                  ]
                },
                "description": "Whether the US equity market is open right now. When false the board will not change until the next session."
              },
              "X-Coil-Next-Refresh": {
                "schema": {
                  "type": "string",
                  "format": "date-time"
                },
                "description": "When the next board is expected. Do not re-buy before this time — you would receive an identical payload."
              },
              "X-Coil-Data-Age": {
                "schema": {
                  "type": "string"
                },
                "description": "Age of the served board in seconds."
              }
            }
          }
        },
        "parameters": [
          {
            "name": "preview",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "1"
              ]
            },
            "description": "Set to 1 for a FREE sample in the identical schema to the paid board (previous day, top-3 names per book) — validate your parser before paying. No payment header needed."
          },
          {
            "name": "preview",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "1"
              ]
            },
            "description": "preview=1 returns a FREE identical-schema preview (previous day, top-3 per book) — no payment."
          }
        ],
        "description": "NO WALLET? This endpoint is paid, but the same board is FREE two other ways, with no payment, account, or key: the MCP server at https://coil.trade/mcp (`claude mcp add --transport http coil https://coil.trade/mcp`, full board one market day delayed), and https://coil.trade/api/board/agent?preview=1 (identical schema, previous day, top-3 per book). Humans/agents without crypto can subscribe at https://coil.trade/scanner."
      }
    },
    "/api/board/free": {
      "get": {
        "operationId": "getBoardFree",
        "summary": "Free sample — previous day's top-3 per book (no payment required)",
        "tags": [
          "Market Data"
        ],
        "responses": {
          "200": {
            "description": "Previous publish's top-3 names per book with regime lines; one day delayed by construction.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/api/board/regime": {
      "get": {
        "operationId": "getBoardRegime",
        "summary": "Buy the market-regime verdict only (x402, USDC on Base)",
        "tags": [
          "Market Data"
        ],
        "x-payment-info": {
          "intent": "charge",
          "method": "x402",
          "amount": "5000",
          "currency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "description": "Buy the market-regime verdict only (x402, USDC on Base) — x402 'exact' charge, USDC on Base (eip155:8453). Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api",
          "offers": [
            {
              "intent": "charge",
              "method": "x402",
              "amount": "5000",
              "currency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
              "description": "Buy the market-regime verdict only (x402, USDC on Base) — x402 'exact' charge, USDC on Base (eip155:8453). Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            },
            {
              "intent": "charge",
              "method": "x402",
              "amount": "5000",
              "currency": "31566704",
              "description": "Buy the market-regime verdict only (x402, USDC on Base) — x402 'exact' charge, USDCa on Algorand mainnet. Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            },
            {
              "intent": "charge",
              "method": "x402",
              "amount": "5000",
              "currency": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
              "description": "Buy the market-regime verdict only (x402, USDC on Base) — x402 'exact' charge, USDC on Solana mainnet. Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            }
          ],
          "protocols": [
            "x402",
            "mpp"
          ],
          "mpp": {
            "method": "usdc",
            "intent": "charge",
            "challenge": "WWW-Authenticate: Payment",
            "credential": "Authorization: Payment",
            "network": "eip155:8453"
          },
          "nanopayments": {
            "rail": "circle-gateway",
            "scheme": "exact",
            "network": "eip155:8453",
            "select": "the accepts entry with extra.name=GatewayWalletBatched",
            "note": "Gasless batched USDC from a unified Circle Gateway balance — sign with @circle-fin/x402-batching (registerBatchScheme); settles offchain to the seller's Gateway balance."
          }
        },
        "responses": {
          "402": {
            "description": "Payment Required — x402 v2 payment requirements in the JSON body and the PAYMENT-REQUIRED header"
          },
          "200": {
            "description": "Regime verdict per book — risk-on / be-selective / stand-down — plus the top-down permission ladder (index to sector to name). Settlement receipt in the PAYMENT-RESPONSE header. Includes a `freshness` object (market_open, data_age_seconds, next_refresh_at, poll_hint) so a client polls only when the board has actually changed.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "headers": {
              "X-Coil-Market-Open": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "true",
                    "false"
                  ]
                },
                "description": "Whether the US equity market is open right now. When false the board will not change until the next session."
              },
              "X-Coil-Next-Refresh": {
                "schema": {
                  "type": "string",
                  "format": "date-time"
                },
                "description": "When the next board is expected. Do not re-buy before this time — you would receive an identical payload."
              },
              "X-Coil-Data-Age": {
                "schema": {
                  "type": "string"
                },
                "description": "Age of the served board in seconds."
              }
            }
          }
        },
        "description": "NO WALLET? This endpoint is paid, but the same board is FREE two other ways, with no payment, account, or key: the MCP server at https://coil.trade/mcp (`claude mcp add --transport http coil https://coil.trade/mcp`, full board one market day delayed), and https://coil.trade/api/board/agent?preview=1 (identical schema, previous day, top-3 per book). Humans/agents without crypto can subscribe at https://coil.trade/scanner."
      }
    },
    "/api/board/buylist": {
      "get": {
        "operationId": "getBoardBuylist",
        "summary": "Buy today's ranked buy list only (x402, USDC on Base)",
        "tags": [
          "Market Data"
        ],
        "x-payment-info": {
          "intent": "charge",
          "method": "x402",
          "amount": "20000",
          "currency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "description": "Buy today's ranked buy list only (x402, USDC on Base) — x402 'exact' charge, USDC on Base (eip155:8453). Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api",
          "offers": [
            {
              "intent": "charge",
              "method": "x402",
              "amount": "20000",
              "currency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
              "description": "Buy today's ranked buy list only (x402, USDC on Base) — x402 'exact' charge, USDC on Base (eip155:8453). Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            },
            {
              "intent": "charge",
              "method": "x402",
              "amount": "20000",
              "currency": "31566704",
              "description": "Buy today's ranked buy list only (x402, USDC on Base) — x402 'exact' charge, USDCa on Algorand mainnet. Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            },
            {
              "intent": "charge",
              "method": "x402",
              "amount": "20000",
              "currency": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
              "description": "Buy today's ranked buy list only (x402, USDC on Base) — x402 'exact' charge, USDC on Solana mainnet. Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            }
          ],
          "protocols": [
            "x402",
            "mpp"
          ],
          "mpp": {
            "method": "usdc",
            "intent": "charge",
            "challenge": "WWW-Authenticate: Payment",
            "credential": "Authorization: Payment",
            "network": "eip155:8453"
          },
          "nanopayments": {
            "rail": "circle-gateway",
            "scheme": "exact",
            "network": "eip155:8453",
            "select": "the accepts entry with extra.name=GatewayWalletBatched",
            "note": "Gasless batched USDC from a unified Circle Gateway balance — sign with @circle-fin/x402-batching (registerBatchScheme); settles offchain to the seller's Gateway balance."
          }
        },
        "responses": {
          "402": {
            "description": "Payment Required — x402 v2 payment requirements in the JSON body and the PAYMENT-REQUIRED header"
          },
          "200": {
            "description": "Today's ranked candidate names per book across both lanes (risk-adjusted + swing), with entry windows and leadership flags. Settlement receipt in the PAYMENT-RESPONSE header. Includes a `freshness` object (market_open, data_age_seconds, next_refresh_at, poll_hint) so a client polls only when the board has actually changed.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "headers": {
              "X-Coil-Market-Open": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "true",
                    "false"
                  ]
                },
                "description": "Whether the US equity market is open right now. When false the board will not change until the next session."
              },
              "X-Coil-Next-Refresh": {
                "schema": {
                  "type": "string",
                  "format": "date-time"
                },
                "description": "When the next board is expected. Do not re-buy before this time — you would receive an identical payload."
              },
              "X-Coil-Data-Age": {
                "schema": {
                  "type": "string"
                },
                "description": "Age of the served board in seconds."
              }
            }
          }
        },
        "description": "NO WALLET? This endpoint is paid, but the same board is FREE two other ways, with no payment, account, or key: the MCP server at https://coil.trade/mcp (`claude mcp add --transport http coil https://coil.trade/mcp`, full board one market day delayed), and https://coil.trade/api/board/agent?preview=1 (identical schema, previous day, top-3 per book). Humans/agents without crypto can subscribe at https://coil.trade/scanner."
      }
    },
    "/api/board/status": {
      "get": {
        "operationId": "getBoardStatus",
        "summary": "Service status: reads served, last settlement, and benchmark-relative performance (free)",
        "tags": [
          "Market Data"
        ],
        "responses": {
          "200": {
            "description": "Reads served, last settlement timestamp, and the engine's benchmark-relative performance block (percentages only).",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/api/board/indices": {
      "get": {
        "operationId": "getBoardIndices",
        "summary": "Buy the index scores only (x402, USDC on Base)",
        "tags": [
          "Market Data"
        ],
        "x-payment-info": {
          "intent": "charge",
          "method": "x402",
          "amount": "5000",
          "currency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "description": "Buy the index scores only (x402, USDC on Base) — x402 'exact' charge, USDC on Base (eip155:8453). Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api",
          "offers": [
            {
              "intent": "charge",
              "method": "x402",
              "amount": "5000",
              "currency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
              "description": "Buy the index scores only (x402, USDC on Base) — x402 'exact' charge, USDC on Base (eip155:8453). Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            },
            {
              "intent": "charge",
              "method": "x402",
              "amount": "5000",
              "currency": "31566704",
              "description": "Buy the index scores only (x402, USDC on Base) — x402 'exact' charge, USDCa on Algorand mainnet. Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            },
            {
              "intent": "charge",
              "method": "x402",
              "amount": "5000",
              "currency": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
              "description": "Buy the index scores only (x402, USDC on Base) — x402 'exact' charge, USDC on Solana mainnet. Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            }
          ],
          "protocols": [
            "x402",
            "mpp"
          ],
          "mpp": {
            "method": "usdc",
            "intent": "charge",
            "challenge": "WWW-Authenticate: Payment",
            "credential": "Authorization: Payment",
            "network": "eip155:8453"
          },
          "nanopayments": {
            "rail": "circle-gateway",
            "scheme": "exact",
            "network": "eip155:8453",
            "select": "the accepts entry with extra.name=GatewayWalletBatched",
            "note": "Gasless batched USDC from a unified Circle Gateway balance — sign with @circle-fin/x402-batching (registerBatchScheme); settles offchain to the seller's Gateway balance."
          }
        },
        "responses": {
          "402": {
            "description": "Payment Required — x402 v2 payment requirements in the JSON body and the PAYMENT-REQUIRED header"
          },
          "200": {
            "description": "Scored index row per book — S&P 500 (SPY), Nasdaq-100 (QQQ), macro and BTC/ETH crypto — 0-100 opportunity score, percentile, light and entry state per index, plus each book's regime verdict. The cheapest top-down read of the tape. Settlement receipt in the PAYMENT-RESPONSE header. Includes the same `freshness` object as every Coil endpoint.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "headers": {
              "X-Coil-Market-Open": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "true",
                    "false"
                  ]
                },
                "description": "Whether the US equity market is open right now. When false the board will not change until the next session."
              },
              "X-Coil-Next-Refresh": {
                "schema": {
                  "type": "string",
                  "format": "date-time"
                },
                "description": "When the next board is expected. Do not re-buy before this time — you would receive an identical payload."
              },
              "X-Coil-Data-Age": {
                "schema": {
                  "type": "string"
                },
                "description": "Age of the served board in seconds."
              }
            }
          }
        },
        "description": "NO WALLET? This endpoint is paid, but the same board is FREE two other ways, with no payment, account, or key: the MCP server at https://coil.trade/mcp (`claude mcp add --transport http coil https://coil.trade/mcp`, full board one market day delayed), and https://coil.trade/api/board/agent?preview=1 (identical schema, previous day, top-3 per book). Humans/agents without crypto can subscribe at https://coil.trade/scanner."
      }
    },
    "/api/board/sectors": {
      "get": {
        "operationId": "getBoardSectors",
        "summary": "Buy the sector-rotation scores only (x402, USDC on Base)",
        "tags": [
          "Market Data"
        ],
        "x-payment-info": {
          "intent": "charge",
          "method": "x402",
          "amount": "10000",
          "currency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "description": "Buy the sector-rotation scores only (x402, USDC on Base) — x402 'exact' charge, USDC on Base (eip155:8453). Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api",
          "offers": [
            {
              "intent": "charge",
              "method": "x402",
              "amount": "10000",
              "currency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
              "description": "Buy the sector-rotation scores only (x402, USDC on Base) — x402 'exact' charge, USDC on Base (eip155:8453). Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            },
            {
              "intent": "charge",
              "method": "x402",
              "amount": "10000",
              "currency": "31566704",
              "description": "Buy the sector-rotation scores only (x402, USDC on Base) — x402 'exact' charge, USDCa on Algorand mainnet. Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            },
            {
              "intent": "charge",
              "method": "x402",
              "amount": "10000",
              "currency": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
              "description": "Buy the sector-rotation scores only (x402, USDC on Base) — x402 'exact' charge, USDC on Solana mainnet. Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            }
          ],
          "protocols": [
            "x402",
            "mpp"
          ],
          "mpp": {
            "method": "usdc",
            "intent": "charge",
            "challenge": "WWW-Authenticate: Payment",
            "credential": "Authorization: Payment",
            "network": "eip155:8453"
          },
          "nanopayments": {
            "rail": "circle-gateway",
            "scheme": "exact",
            "network": "eip155:8453",
            "select": "the accepts entry with extra.name=GatewayWalletBatched",
            "note": "Gasless batched USDC from a unified Circle Gateway balance — sign with @circle-fin/x402-batching (registerBatchScheme); settles offchain to the seller's Gateway balance."
          }
        },
        "responses": {
          "402": {
            "description": "Payment Required — x402 v2 payment requirements in the JSON body and the PAYMENT-REQUIRED header"
          },
          "200": {
            "description": "Every S&P 500 sector ETF (XLK, XLF, XLV, XLE…) scored 0-100 with percentile, light and entry state, plus which sectors each book's regime calls green. Settlement receipt in the PAYMENT-RESPONSE header. Includes the same `freshness` object as every Coil endpoint.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "headers": {
              "X-Coil-Market-Open": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "true",
                    "false"
                  ]
                },
                "description": "Whether the US equity market is open right now. When false the board will not change until the next session."
              },
              "X-Coil-Next-Refresh": {
                "schema": {
                  "type": "string",
                  "format": "date-time"
                },
                "description": "When the next board is expected. Do not re-buy before this time — you would receive an identical payload."
              },
              "X-Coil-Data-Age": {
                "schema": {
                  "type": "string"
                },
                "description": "Age of the served board in seconds."
              }
            }
          }
        },
        "description": "NO WALLET? This endpoint is paid, but the same board is FREE two other ways, with no payment, account, or key: the MCP server at https://coil.trade/mcp (`claude mcp add --transport http coil https://coil.trade/mcp`, full board one market day delayed), and https://coil.trade/api/board/agent?preview=1 (identical schema, previous day, top-3 per book). Humans/agents without crypto can subscribe at https://coil.trade/scanner."
      }
    },
    "/api/board/top-volume": {
      "get": {
        "operationId": "getBoardTopVolume",
        "summary": "Buy scores for the most-traded US stocks (x402, USDC on Base)",
        "tags": [
          "Market Data"
        ],
        "x-payment-info": {
          "intent": "charge",
          "method": "x402",
          "amount": "20000",
          "currency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "description": "Buy scores for the most-traded US stocks (x402, USDC on Base) — x402 'exact' charge, USDC on Base (eip155:8453). Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api",
          "offers": [
            {
              "intent": "charge",
              "method": "x402",
              "amount": "20000",
              "currency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
              "description": "Buy scores for the most-traded US stocks (x402, USDC on Base) — x402 'exact' charge, USDC on Base (eip155:8453). Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            },
            {
              "intent": "charge",
              "method": "x402",
              "amount": "20000",
              "currency": "31566704",
              "description": "Buy scores for the most-traded US stocks (x402, USDC on Base) — x402 'exact' charge, USDCa on Algorand mainnet. Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            },
            {
              "intent": "charge",
              "method": "x402",
              "amount": "20000",
              "currency": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
              "description": "Buy scores for the most-traded US stocks (x402, USDC on Base) — x402 'exact' charge, USDC on Solana mainnet. Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            }
          ],
          "protocols": [
            "x402",
            "mpp"
          ],
          "mpp": {
            "method": "usdc",
            "intent": "charge",
            "challenge": "WWW-Authenticate: Payment",
            "credential": "Authorization: Payment",
            "network": "eip155:8453"
          },
          "nanopayments": {
            "rail": "circle-gateway",
            "scheme": "exact",
            "network": "eip155:8453",
            "select": "the accepts entry with extra.name=GatewayWalletBatched",
            "note": "Gasless batched USDC from a unified Circle Gateway balance — sign with @circle-fin/x402-batching (registerBatchScheme); settles offchain to the seller's Gateway balance."
          }
        },
        "responses": {
          "402": {
            "description": "Payment Required — x402 v2 payment requirements in the JSON body and the PAYMENT-REQUIRED header"
          },
          "200": {
            "description": "Top names by 20-day average dollar volume in every sector, each scored: opportunity 0-100 + percentile, entry state, hold strength, leadership flag, and the adv20_usd figure that ranked it. Settlement receipt in the PAYMENT-RESPONSE header. Includes the same `freshness` object as every Coil endpoint.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "headers": {
              "X-Coil-Market-Open": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "true",
                    "false"
                  ]
                },
                "description": "Whether the US equity market is open right now. When false the board will not change until the next session."
              },
              "X-Coil-Next-Refresh": {
                "schema": {
                  "type": "string",
                  "format": "date-time"
                },
                "description": "When the next board is expected. Do not re-buy before this time — you would receive an identical payload."
              },
              "X-Coil-Data-Age": {
                "schema": {
                  "type": "string"
                },
                "description": "Age of the served board in seconds."
              }
            }
          }
        },
        "description": "NO WALLET? This endpoint is paid, but the same board is FREE two other ways, with no payment, account, or key: the MCP server at https://coil.trade/mcp (`claude mcp add --transport http coil https://coil.trade/mcp`, full board one market day delayed), and https://coil.trade/api/board/agent?preview=1 (identical schema, previous day, top-3 per book). Humans/agents without crypto can subscribe at https://coil.trade/scanner."
      }
    },
    "/api/board/name": {
      "get": {
        "operationId": "getBoardName",
        "summary": "Buy one stock's full score read (x402, USDC on Base)",
        "tags": [
          "Market Data"
        ],
        "x-payment-info": {
          "intent": "charge",
          "method": "x402",
          "amount": "5000",
          "currency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "description": "Buy one stock's full score read (x402, USDC on Base) — x402 'exact' charge, USDC on Base (eip155:8453). Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api",
          "offers": [
            {
              "intent": "charge",
              "method": "x402",
              "amount": "5000",
              "currency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
              "description": "Buy one stock's full score read (x402, USDC on Base) — x402 'exact' charge, USDC on Base (eip155:8453). Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            },
            {
              "intent": "charge",
              "method": "x402",
              "amount": "5000",
              "currency": "31566704",
              "description": "Buy one stock's full score read (x402, USDC on Base) — x402 'exact' charge, USDCa on Algorand mainnet. Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            },
            {
              "intent": "charge",
              "method": "x402",
              "amount": "5000",
              "currency": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
              "description": "Buy one stock's full score read (x402, USDC on Base) — x402 'exact' charge, USDC on Solana mainnet. Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            }
          ],
          "protocols": [
            "x402",
            "mpp"
          ],
          "mpp": {
            "method": "usdc",
            "intent": "charge",
            "challenge": "WWW-Authenticate: Payment",
            "credential": "Authorization: Payment",
            "network": "eip155:8453"
          },
          "nanopayments": {
            "rail": "circle-gateway",
            "scheme": "exact",
            "network": "eip155:8453",
            "select": "the accepts entry with extra.name=GatewayWalletBatched",
            "note": "Gasless batched USDC from a unified Circle Gateway balance — sign with @circle-fin/x402-batching (registerBatchScheme); settles offchain to the seller's Gateway balance."
          }
        },
        "responses": {
          "402": {
            "description": "Payment Required — x402 v2 payment requirements in the JSON body and the PAYMENT-REQUIRED header"
          },
          "200": {
            "description": "Single-name read via ?sym= (e.g. ?sym=NVDA): opportunity 0-100 + percentile, entry quality/state, hold strength, growth score, overnight gap-risk score, leadership flag, dollar volume, plus its book's regime. Unknown sym returns the valid-symbol directory. Settlement receipt in the PAYMENT-RESPONSE header.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "headers": {
              "X-Coil-Market-Open": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "true",
                    "false"
                  ]
                },
                "description": "Whether the US equity market is open right now. When false the board will not change until the next session."
              },
              "X-Coil-Next-Refresh": {
                "schema": {
                  "type": "string",
                  "format": "date-time"
                },
                "description": "When the next board is expected. Do not re-buy before this time — you would receive an identical payload."
              },
              "X-Coil-Data-Age": {
                "schema": {
                  "type": "string"
                },
                "description": "Age of the served board in seconds."
              }
            }
          }
        },
        "parameters": [
          {
            "name": "sym",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "NVDA,AMD,MSFT",
            "description": "One ticker, or up to 10 comma-separated for a batch read at the same price."
          }
        ],
        "description": "NO WALLET? This endpoint is paid, but the same board is FREE two other ways, with no payment, account, or key: the MCP server at https://coil.trade/mcp (`claude mcp add --transport http coil https://coil.trade/mcp`, full board one market day delayed), and https://coil.trade/api/board/agent?preview=1 (identical schema, previous day, top-3 per book). Humans/agents without crypto can subscribe at https://coil.trade/scanner.\n\nBatch: ?sym=NVDA,AMD,MSFT returns up to 10 scored names in a single paid read."
      }
    },
    "/api/board/leaders": {
      "get": {
        "operationId": "getBoardLeaders",
        "summary": "Buy today's ranked market leaders (x402, USDC on Base)",
        "tags": [
          "Market Data"
        ],
        "x-payment-info": {
          "intent": "charge",
          "method": "x402",
          "amount": "10000",
          "currency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "description": "Buy today's ranked market leaders (x402, USDC on Base) — x402 'exact' charge, USDC on Base (eip155:8453). Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api",
          "offers": [
            {
              "intent": "charge",
              "method": "x402",
              "amount": "10000",
              "currency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
              "description": "Buy today's ranked market leaders (x402, USDC on Base) — x402 'exact' charge, USDC on Base (eip155:8453). Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            },
            {
              "intent": "charge",
              "method": "x402",
              "amount": "10000",
              "currency": "31566704",
              "description": "Buy today's ranked market leaders (x402, USDC on Base) — x402 'exact' charge, USDCa on Algorand mainnet. Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            },
            {
              "intent": "charge",
              "method": "x402",
              "amount": "10000",
              "currency": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
              "description": "Buy today's ranked market leaders (x402, USDC on Base) — x402 'exact' charge, USDC on Solana mainnet. Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            }
          ],
          "protocols": [
            "x402",
            "mpp"
          ],
          "mpp": {
            "method": "usdc",
            "intent": "charge",
            "challenge": "WWW-Authenticate: Payment",
            "credential": "Authorization: Payment",
            "network": "eip155:8453"
          },
          "nanopayments": {
            "rail": "circle-gateway",
            "scheme": "exact",
            "network": "eip155:8453",
            "select": "the accepts entry with extra.name=GatewayWalletBatched",
            "note": "Gasless batched USDC from a unified Circle Gateway balance — sign with @circle-fin/x402-batching (registerBatchScheme); settles offchain to the seller's Gateway balance."
          }
        },
        "responses": {
          "402": {
            "description": "Payment Required — x402 v2 payment requirements in the JSON body and the PAYMENT-REQUIRED header"
          },
          "200": {
            "description": "Top 10 leadership names per book ranked by opportunity score, each with the full score read. Settlement receipt in the PAYMENT-RESPONSE header.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "headers": {
              "X-Coil-Market-Open": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "true",
                    "false"
                  ]
                },
                "description": "Whether the US equity market is open right now. When false the board will not change until the next session."
              },
              "X-Coil-Next-Refresh": {
                "schema": {
                  "type": "string",
                  "format": "date-time"
                },
                "description": "When the next board is expected. Do not re-buy before this time — you would receive an identical payload."
              },
              "X-Coil-Data-Age": {
                "schema": {
                  "type": "string"
                },
                "description": "Age of the served board in seconds."
              }
            }
          }
        },
        "description": "NO WALLET? This endpoint is paid, but the same board is FREE two other ways, with no payment, account, or key: the MCP server at https://coil.trade/mcp (`claude mcp add --transport http coil https://coil.trade/mcp`, full board one market day delayed), and https://coil.trade/api/board/agent?preview=1 (identical schema, previous day, top-3 per book). Humans/agents without crypto can subscribe at https://coil.trade/scanner."
      }
    },
    "/api/board/movers": {
      "get": {
        "operationId": "getBoardMovers",
        "summary": "Buy today's biggest movers, scored (x402, USDC on Base)",
        "tags": [
          "Market Data"
        ],
        "x-payment-info": {
          "intent": "charge",
          "method": "x402",
          "amount": "5000",
          "currency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "description": "Buy today's biggest movers, scored (x402, USDC on Base) — x402 'exact' charge, USDC on Base (eip155:8453). Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api",
          "offers": [
            {
              "intent": "charge",
              "method": "x402",
              "amount": "5000",
              "currency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
              "description": "Buy today's biggest movers, scored (x402, USDC on Base) — x402 'exact' charge, USDC on Base (eip155:8453). Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            },
            {
              "intent": "charge",
              "method": "x402",
              "amount": "5000",
              "currency": "31566704",
              "description": "Buy today's biggest movers, scored (x402, USDC on Base) — x402 'exact' charge, USDCa on Algorand mainnet. Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            },
            {
              "intent": "charge",
              "method": "x402",
              "amount": "5000",
              "currency": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
              "description": "Buy today's biggest movers, scored (x402, USDC on Base) — x402 'exact' charge, USDC on Solana mainnet. Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            }
          ],
          "protocols": [
            "x402",
            "mpp"
          ],
          "mpp": {
            "method": "usdc",
            "intent": "charge",
            "challenge": "WWW-Authenticate: Payment",
            "credential": "Authorization: Payment",
            "network": "eip155:8453"
          },
          "nanopayments": {
            "rail": "circle-gateway",
            "scheme": "exact",
            "network": "eip155:8453",
            "select": "the accepts entry with extra.name=GatewayWalletBatched",
            "note": "Gasless batched USDC from a unified Circle Gateway balance — sign with @circle-fin/x402-batching (registerBatchScheme); settles offchain to the seller's Gateway balance."
          }
        },
        "responses": {
          "402": {
            "description": "Payment Required — x402 v2 payment requirements in the JSON body and the PAYMENT-REQUIRED header"
          },
          "200": {
            "description": "Top 10 gainers and 10 losers by day % change with the full Coil read on each — which moves are chaseable structure vs falling knives. Settlement receipt in the PAYMENT-RESPONSE header.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "headers": {
              "X-Coil-Market-Open": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "true",
                    "false"
                  ]
                },
                "description": "Whether the US equity market is open right now. When false the board will not change until the next session."
              },
              "X-Coil-Next-Refresh": {
                "schema": {
                  "type": "string",
                  "format": "date-time"
                },
                "description": "When the next board is expected. Do not re-buy before this time — you would receive an identical payload."
              },
              "X-Coil-Data-Age": {
                "schema": {
                  "type": "string"
                },
                "description": "Age of the served board in seconds."
              }
            }
          }
        },
        "description": "NO WALLET? This endpoint is paid, but the same board is FREE two other ways, with no payment, account, or key: the MCP server at https://coil.trade/mcp (`claude mcp add --transport http coil https://coil.trade/mcp`, full board one market day delayed), and https://coil.trade/api/board/agent?preview=1 (identical schema, previous day, top-3 per book). Humans/agents without crypto can subscribe at https://coil.trade/scanner."
      }
    },
    "/api/board/sector": {
      "get": {
        "operationId": "getBoardSector",
        "summary": "Buy one sector's full member list, scored (x402, USDC on Base)",
        "tags": [
          "Market Data"
        ],
        "x-payment-info": {
          "intent": "charge",
          "method": "x402",
          "amount": "10000",
          "currency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "description": "Buy one sector's full member list, scored (x402, USDC on Base) — x402 'exact' charge, USDC on Base (eip155:8453). Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api",
          "offers": [
            {
              "intent": "charge",
              "method": "x402",
              "amount": "10000",
              "currency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
              "description": "Buy one sector's full member list, scored (x402, USDC on Base) — x402 'exact' charge, USDC on Base (eip155:8453). Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            },
            {
              "intent": "charge",
              "method": "x402",
              "amount": "10000",
              "currency": "31566704",
              "description": "Buy one sector's full member list, scored (x402, USDC on Base) — x402 'exact' charge, USDCa on Algorand mainnet. Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            },
            {
              "intent": "charge",
              "method": "x402",
              "amount": "10000",
              "currency": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
              "description": "Buy one sector's full member list, scored (x402, USDC on Base) — x402 'exact' charge, USDC on Solana mainnet. Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            }
          ],
          "protocols": [
            "x402",
            "mpp"
          ],
          "mpp": {
            "method": "usdc",
            "intent": "charge",
            "challenge": "WWW-Authenticate: Payment",
            "credential": "Authorization: Payment",
            "network": "eip155:8453"
          },
          "nanopayments": {
            "rail": "circle-gateway",
            "scheme": "exact",
            "network": "eip155:8453",
            "select": "the accepts entry with extra.name=GatewayWalletBatched",
            "note": "Gasless batched USDC from a unified Circle Gateway balance — sign with @circle-fin/x402-batching (registerBatchScheme); settles offchain to the seller's Gateway balance."
          }
        },
        "responses": {
          "402": {
            "description": "Payment Required — x402 v2 payment requirements in the JSON body and the PAYMENT-REQUIRED header"
          },
          "200": {
            "description": "Every member of one sector with the full Coil read, ranked by opportunity, plus the sector's ETF row. Resolve by ?name=Energy or ?etf=XLE; unknown values return the sector directory. Settlement receipt in the PAYMENT-RESPONSE header.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "headers": {
              "X-Coil-Market-Open": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "true",
                    "false"
                  ]
                },
                "description": "Whether the US equity market is open right now. When false the board will not change until the next session."
              },
              "X-Coil-Next-Refresh": {
                "schema": {
                  "type": "string",
                  "format": "date-time"
                },
                "description": "When the next board is expected. Do not re-buy before this time — you would receive an identical payload."
              },
              "X-Coil-Data-Age": {
                "schema": {
                  "type": "string"
                },
                "description": "Age of the served board in seconds."
              }
            }
          }
        },
        "parameters": [
          {
            "name": "name",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "Energy",
            "description": "Sector label (case-insensitive). One of the 20 sector groups — see the free /api/board/symbols directory."
          },
          {
            "name": "etf",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "XLE",
            "description": "Alternatively, the sector's ETF symbol (XLE, XLK, XLF…)."
          }
        ],
        "description": "NO WALLET? This endpoint is paid, but the same board is FREE two other ways, with no payment, account, or key: the MCP server at https://coil.trade/mcp (`claude mcp add --transport http coil https://coil.trade/mcp`, full board one market day delayed), and https://coil.trade/api/board/agent?preview=1 (identical schema, previous day, top-3 per book). Humans/agents without crypto can subscribe at https://coil.trade/scanner."
      }
    },
    "/api/board/symbols": {
      "get": {
        "operationId": "getBoardSymbols",
        "summary": "FREE — the purchasable-symbol directory (no payment)",
        "tags": [
          "Market Data"
        ],
        "responses": {
          "200": {
            "description": "Every purchasable symbol (sym, name, sector, book) plus sector member counts and usage pointers for the paid ?sym= / ?name= endpoints. Free, no payment header needed — learn the menu before spending.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/api/board/crypto": {
      "get": {
        "operationId": "getBoardCrypto",
        "summary": "Buy the BTC/ETH crypto trend signal (x402, USDC on Base or Algorand)",
        "tags": [
          "Market Data"
        ],
        "x-payment-info": {
          "intent": "charge",
          "method": "x402",
          "amount": "5000",
          "currency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "description": "Buy the BTC/ETH crypto trend signal (x402, USDC on Base or Algorand) — x402 'exact' charge, USDC on Base (eip155:8453). Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api",
          "offers": [
            {
              "intent": "charge",
              "method": "x402",
              "amount": "5000",
              "currency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
              "description": "Buy the BTC/ETH crypto trend signal (x402, USDC on Base or Algorand) — x402 'exact' charge, USDC on Base (eip155:8453). Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            },
            {
              "intent": "charge",
              "method": "x402",
              "amount": "5000",
              "currency": "31566704",
              "description": "Buy the BTC/ETH crypto trend signal (x402, USDC on Base or Algorand) — x402 'exact' charge, USDCa on Algorand mainnet. Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            },
            {
              "intent": "charge",
              "method": "x402",
              "amount": "5000",
              "currency": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
              "description": "Buy the BTC/ETH crypto trend signal (x402, USDC on Base or Algorand) — x402 'exact' charge, USDC on Solana mainnet. Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            }
          ],
          "protocols": [
            "x402",
            "mpp"
          ],
          "mpp": {
            "method": "usdc",
            "intent": "charge",
            "challenge": "WWW-Authenticate: Payment",
            "credential": "Authorization: Payment",
            "network": "eip155:8453"
          },
          "nanopayments": {
            "rail": "circle-gateway",
            "scheme": "exact",
            "network": "eip155:8453",
            "select": "the accepts entry with extra.name=GatewayWalletBatched",
            "note": "Gasless batched USDC from a unified Circle Gateway balance — sign with @circle-fin/x402-batching (registerBatchScheme); settles offchain to the seller's Gateway balance."
          }
        },
        "responses": {
          "402": {
            "description": "Payment Required — x402 v2 payment requirements in the JSON body and the PAYMENT-REQUIRED header"
          },
          "200": {
            "description": "Long-only trend state for BTC and ETH (LONG or CASH per sleeve), each sleeve's 50-day gate and the BTC 200-day master gate, evaluated on UTC daily closes, with price and day change. Settlement receipt in the PAYMENT-RESPONSE header.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "headers": {
              "X-Coil-Market-Open": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "true",
                    "false"
                  ]
                },
                "description": "Whether the US equity market is open right now. When false the board will not change until the next session."
              },
              "X-Coil-Next-Refresh": {
                "schema": {
                  "type": "string",
                  "format": "date-time"
                },
                "description": "When the next board is expected. Do not re-buy before this time — you would receive an identical payload."
              },
              "X-Coil-Data-Age": {
                "schema": {
                  "type": "string"
                },
                "description": "Age of the served board in seconds."
              }
            }
          }
        },
        "description": "NO WALLET? This endpoint is paid, but the same board is FREE two other ways, with no payment, account, or key: the MCP server at https://coil.trade/mcp (`claude mcp add --transport http coil https://coil.trade/mcp`, full board one market day delayed), and https://coil.trade/api/board/agent?preview=1 (identical schema, previous day, top-3 per book). Humans/agents without crypto can subscribe at https://coil.trade/scanner."
      }
    },
    "/api/board/brief": {
      "get": {
        "operationId": "getBoardBrief",
        "summary": "Buy the morning brief — the whole read in one call (x402)",
        "tags": [
          "Market Data"
        ],
        "x-payment-info": {
          "intent": "charge",
          "method": "x402",
          "amount": "20000",
          "currency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "description": "Buy the morning brief — the whole read in one call (x402) — x402 'exact' charge, USDC on Base (eip155:8453). Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api",
          "offers": [
            {
              "intent": "charge",
              "method": "x402",
              "amount": "20000",
              "currency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
              "description": "Buy the morning brief — the whole read in one call (x402) — x402 'exact' charge, USDC on Base (eip155:8453). Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            },
            {
              "intent": "charge",
              "method": "x402",
              "amount": "20000",
              "currency": "31566704",
              "description": "Buy the morning brief — the whole read in one call (x402) — x402 'exact' charge, USDCa on Algorand mainnet. Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            },
            {
              "intent": "charge",
              "method": "x402",
              "amount": "20000",
              "currency": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
              "description": "Buy the morning brief — the whole read in one call (x402) — x402 'exact' charge, USDC on Solana mainnet. Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            }
          ],
          "protocols": [
            "x402",
            "mpp"
          ],
          "mpp": {
            "method": "usdc",
            "intent": "charge",
            "challenge": "WWW-Authenticate: Payment",
            "credential": "Authorization: Payment",
            "network": "eip155:8453"
          },
          "nanopayments": {
            "rail": "circle-gateway",
            "scheme": "exact",
            "network": "eip155:8453",
            "select": "the accepts entry with extra.name=GatewayWalletBatched",
            "note": "Gasless batched USDC from a unified Circle Gateway balance — sign with @circle-fin/x402-batching (registerBatchScheme); settles offchain to the seller's Gateway balance."
          }
        },
        "responses": {
          "402": {
            "description": "Payment Required — x402 v2 payment requirements in the JSON body and the PAYMENT-REQUIRED header"
          },
          "200": {
            "description": "Regime verdict per book, today's top-5 ranked buy candidates, biggest gainers and losers, and the BTC/ETH crypto trend-gate state — one call instead of four.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "headers": {
              "X-Coil-Market-Open": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "true",
                    "false"
                  ]
                },
                "description": "Whether the US equity market is open right now. When false the board will not change until the next session."
              },
              "X-Coil-Next-Refresh": {
                "schema": {
                  "type": "string",
                  "format": "date-time"
                },
                "description": "When the next board is expected. Do not re-buy before this time — you would receive an identical payload."
              },
              "X-Coil-Data-Age": {
                "schema": {
                  "type": "string"
                },
                "description": "Age of the served board in seconds."
              }
            }
          }
        },
        "description": "NO WALLET? This endpoint is paid, but the same board is FREE two other ways, with no payment, account, or key: the MCP server at https://coil.trade/mcp (`claude mcp add --transport http coil https://coil.trade/mcp`, full board one market day delayed), and https://coil.trade/api/board/agent?preview=1 (identical schema, previous day, top-3 per book). Humans/agents without crypto can subscribe at https://coil.trade/scanner."
      }
    },
    "/api/crypto/gate": {
      "get": {
        "operationId": "getCryptoGate",
        "summary": "Buy the crypto risk-on gate check (x402)",
        "tags": [
          "Market Data"
        ],
        "x-payment-info": {
          "intent": "charge",
          "method": "x402",
          "amount": "1000",
          "currency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "description": "Buy the crypto risk-on gate check (x402) — x402 'exact' charge, USDC on Base (eip155:8453). Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api",
          "offers": [
            {
              "intent": "charge",
              "method": "x402",
              "amount": "1000",
              "currency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
              "description": "Buy the crypto risk-on gate check (x402) — x402 'exact' charge, USDC on Base (eip155:8453). Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            },
            {
              "intent": "charge",
              "method": "x402",
              "amount": "1000",
              "currency": "31566704",
              "description": "Buy the crypto risk-on gate check (x402) — x402 'exact' charge, USDCa on Algorand mainnet. Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            },
            {
              "intent": "charge",
              "method": "x402",
              "amount": "1000",
              "currency": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
              "description": "Buy the crypto risk-on gate check (x402) — x402 'exact' charge, USDC on Solana mainnet. Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            }
          ],
          "protocols": [
            "x402",
            "mpp"
          ],
          "mpp": {
            "method": "usdc",
            "intent": "charge",
            "challenge": "WWW-Authenticate: Payment",
            "credential": "Authorization: Payment",
            "network": "eip155:8453"
          },
          "nanopayments": {
            "rail": "circle-gateway",
            "scheme": "exact",
            "network": "eip155:8453",
            "select": "the accepts entry with extra.name=GatewayWalletBatched",
            "note": "Gasless batched USDC from a unified Circle Gateway balance — sign with @circle-fin/x402-batching (registerBatchScheme); settles offchain to the seller's Gateway balance."
          }
        },
        "responses": {
          "402": {
            "description": "Payment Required — x402 v2 payment requirements in the JSON body and the PAYMENT-REQUIRED header"
          },
          "200": {
            "description": "Whether the BTC 200-day master gate is open, the LONG/CASH state per sleeve, and the one-line verdict. The cheapest regime check on the menu — poll it, buy more only on change.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "headers": {
              "X-Coil-Market-Open": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "true",
                    "false"
                  ]
                },
                "description": "Whether the US equity market is open right now. When false the board will not change until the next session."
              },
              "X-Coil-Next-Refresh": {
                "schema": {
                  "type": "string",
                  "format": "date-time"
                },
                "description": "When the next board is expected. Do not re-buy before this time — you would receive an identical payload."
              },
              "X-Coil-Data-Age": {
                "schema": {
                  "type": "string"
                },
                "description": "Age of the served board in seconds."
              }
            }
          }
        },
        "description": "NO WALLET? This endpoint is paid, but the same board is FREE two other ways, with no payment, account, or key: the MCP server at https://coil.trade/mcp (`claude mcp add --transport http coil https://coil.trade/mcp`, full board one market day delayed), and https://coil.trade/api/board/agent?preview=1 (identical schema, previous day, top-3 per book). Humans/agents without crypto can subscribe at https://coil.trade/scanner."
      }
    },
    "/api/board/asof": {
      "get": {
        "operationId": "getBoardAsOf",
        "summary": "Buy point-in-time published scores for a date (x402)",
        "tags": [
          "Market Data"
        ],
        "x-payment-info": {
          "intent": "charge",
          "method": "x402",
          "amount": "20000",
          "currency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "description": "Buy point-in-time published scores for a date (x402) — x402 'exact' charge, USDC on Base (eip155:8453). Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api",
          "offers": [
            {
              "intent": "charge",
              "method": "x402",
              "amount": "20000",
              "currency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
              "description": "Buy point-in-time published scores for a date (x402) — x402 'exact' charge, USDC on Base (eip155:8453). Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            },
            {
              "intent": "charge",
              "method": "x402",
              "amount": "20000",
              "currency": "31566704",
              "description": "Buy point-in-time published scores for a date (x402) — x402 'exact' charge, USDCa on Algorand mainnet. Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            },
            {
              "intent": "charge",
              "method": "x402",
              "amount": "20000",
              "currency": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
              "description": "Buy point-in-time published scores for a date (x402) — x402 'exact' charge, USDC on Solana mainnet. Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            }
          ],
          "protocols": [
            "x402",
            "mpp"
          ],
          "mpp": {
            "method": "usdc",
            "intent": "charge",
            "challenge": "WWW-Authenticate: Payment",
            "credential": "Authorization: Payment",
            "network": "eip155:8453"
          },
          "nanopayments": {
            "rail": "circle-gateway",
            "scheme": "exact",
            "network": "eip155:8453",
            "select": "the accepts entry with extra.name=GatewayWalletBatched",
            "note": "Gasless batched USDC from a unified Circle Gateway balance — sign with @circle-fin/x402-batching (registerBatchScheme); settles offchain to the seller's Gateway balance."
          }
        },
        "responses": {
          "402": {
            "description": "Payment Required — x402 v2 payment requirements in the JSON body and the PAYMENT-REQUIRED header"
          },
          "200": {
            "description": "As-published per-name scores (opportunity percentile, entry quality, hold strength) for an archived date. Served verbatim from the append-only publish log — lookahead-bias-clean by construction. Omit ?date= for the list of archived dates.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "headers": {
              "X-Coil-Market-Open": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "true",
                    "false"
                  ]
                },
                "description": "Whether the US equity market is open right now. When false the board will not change until the next session."
              },
              "X-Coil-Next-Refresh": {
                "schema": {
                  "type": "string",
                  "format": "date-time"
                },
                "description": "When the next board is expected. Do not re-buy before this time — you would receive an identical payload."
              },
              "X-Coil-Data-Age": {
                "schema": {
                  "type": "string"
                },
                "description": "Age of the served board in seconds."
              }
            }
          }
        },
        "parameters": [
          {
            "name": "date",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            },
            "example": "2026-07-21",
            "description": "Archived publish date (YYYY-MM-DD). Omit to list archived dates."
          }
        ],
        "description": "NO WALLET? This endpoint is paid, but the same board is FREE two other ways, with no payment, account, or key: the MCP server at https://coil.trade/mcp (`claude mcp add --transport http coil https://coil.trade/mcp`, full board one market day delayed), and https://coil.trade/api/board/agent?preview=1 (identical schema, previous day, top-3 per book). Humans/agents without crypto can subscribe at https://coil.trade/scanner.\n\nImmutable archive: one new date per session, never revised."
      }
    },
    "/api/tradfi-risk": {
      "get": {
        "operationId": "getTradfiRisk",
        "summary": "Buy the TradFi risk-on/off input for a crypto agent (x402)",
        "tags": [
          "Market Data"
        ],
        "x-payment-info": {
          "intent": "charge",
          "method": "x402",
          "amount": "3000",
          "currency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "description": "Buy the TradFi risk-on/off input for a crypto agent (x402) — x402 'exact' charge, USDC on Base (eip155:8453). Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api",
          "offers": [
            {
              "intent": "charge",
              "method": "x402",
              "amount": "3000",
              "currency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
              "description": "Buy the TradFi risk-on/off input for a crypto agent (x402) — x402 'exact' charge, USDC on Base (eip155:8453). Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            },
            {
              "intent": "charge",
              "method": "x402",
              "amount": "3000",
              "currency": "31566704",
              "description": "Buy the TradFi risk-on/off input for a crypto agent (x402) — x402 'exact' charge, USDCa on Algorand mainnet. Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            },
            {
              "intent": "charge",
              "method": "x402",
              "amount": "3000",
              "currency": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
              "description": "Buy the TradFi risk-on/off input for a crypto agent (x402) — x402 'exact' charge, USDC on Solana mainnet. Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            }
          ],
          "protocols": [
            "x402",
            "mpp"
          ],
          "mpp": {
            "method": "usdc",
            "intent": "charge",
            "challenge": "WWW-Authenticate: Payment",
            "credential": "Authorization: Payment",
            "network": "eip155:8453"
          },
          "nanopayments": {
            "rail": "circle-gateway",
            "scheme": "exact",
            "network": "eip155:8453",
            "select": "the accepts entry with extra.name=GatewayWalletBatched",
            "note": "Gasless batched USDC from a unified Circle Gateway balance — sign with @circle-fin/x402-batching (registerBatchScheme); settles offchain to the seller's Gateway balance."
          }
        },
        "responses": {
          "402": {
            "description": "Payment Required — x402 v2 payment requirements in the JSON body and the PAYMENT-REQUIRED header"
          },
          "200": {
            "description": "S&P 500 + Nasdaq-100 regime state, sector breadth (green of 11), permission ladder, and the BTC/ETH trend gate — macro risk context in one call.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "headers": {
              "X-Coil-Market-Open": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "true",
                    "false"
                  ]
                },
                "description": "Whether the US equity market is open right now. When false the board will not change until the next session."
              },
              "X-Coil-Next-Refresh": {
                "schema": {
                  "type": "string",
                  "format": "date-time"
                },
                "description": "When the next board is expected. Do not re-buy before this time — you would receive an identical payload."
              },
              "X-Coil-Data-Age": {
                "schema": {
                  "type": "string"
                },
                "description": "Age of the served board in seconds."
              }
            }
          }
        },
        "description": "NO WALLET? This endpoint is paid, but the same board is FREE two other ways, with no payment, account, or key: the MCP server at https://coil.trade/mcp (`claude mcp add --transport http coil https://coil.trade/mcp`, full board one market day delayed), and https://coil.trade/api/board/agent?preview=1 (identical schema, previous day, top-3 per book). Humans/agents without crypto can subscribe at https://coil.trade/scanner."
      }
    },
    "/api/perf": {
      "get": {
        "operationId": "getEngineRecord",
        "summary": "FREE — the engine's record vs SPY and QQQ",
        "description": "Engine-only, funding-adjusted return since inception with its thin-sample note. Omitted (null) rather than estimated when unavailable. No payment, no key.",
        "responses": {
          "200": {
            "description": "Record + method + link to the proof log"
          }
        }
      }
    },
    "/api/board/proof": {
      "get": {
        "operationId": "getProofLog",
        "summary": "FREE — append-only sha256 commitments over the archive",
        "description": "Each day's published scores are committed at publish time, before the outcome is known. Ships a verification recipe that reproduces byte-identically in Python and JavaScript. ?date=YYYY-MM-DD returns one commitment.",
        "parameters": [
          {
            "name": "date",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Commitment log + recipe"
          }
        }
      }
    },
    "/api/key": {
      "post": {
        "operationId": "issueFreeKey",
        "summary": "FREE — instant API key, 25 live calls/day",
        "description": "POST {\"email\": \"you@example.com\"} and receive a key immediately: ~25 live calls/day (enforced approximately) on regime, indices, movers, crypto gate, crypto night, tradfi-risk and hold state, sent as the X-Coil-Key header. Email is stored only as a salted hash. Keys expire after 90 days of inactivity; re-request with the same email.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "email"
                ],
                "properties": {
                  "email": {
                    "type": "string",
                    "format": "email"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The key + its limits"
          }
        }
      }
    },
    "/api/board/state": {
      "get": {
        "operationId": "getBoardState",
        "summary": "FREE — has the board materially changed?",
        "description": "Returns a hash of the material state (each book's regime mode and ladder rung, plus the firing/ready candidate set) and nothing else. Poll it free and unlimited; buy a paid read only when the hash changes. Supports If-None-Match for a 304. Deliberately excludes the publish timestamp, which moves ~every 5 minutes without the state meaningfully changing. Also returns PER-BOOK hashes (books.spx, books.qqq, …) so an equities agent is not woken by a crypto change.",
        "parameters": [
          {
            "name": "If-None-Match",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Your last state_hash, quoted. Returns 304 when unchanged."
          },
          {
            "name": "syms",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "NVDA,AMD",
            "description": "Up to 25 tickers — returns a per-symbol hash so a watchlist agent polls only its own names."
          }
        ],
        "responses": {
          "200": {
            "description": "state_hash + freshness + where to buy when it moves"
          },
          "304": {
            "description": "Unchanged since your last read"
          }
        }
      }
    },
    "/api/board/signal-audit": {
      "get": {
        "summary": "FREE — forward-return audit of our own published scores",
        "description": "Marks every committed score to market: top-decile and entry-quality cohorts vs the board median AND a sector-matched ETF control, 1-day and 5-day forward. Methodology was frozen before the first result and we publish it even when it reads negative. Free, no payment or key — the point is that you can check our work before paying for it.",
        "operationId": "getSignalAudit",
        "responses": {
          "200": {
            "description": "Audit payload (or a 'computing' status before the next settle pass)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/api/board/day": {
      "get": {
        "operationId": "getDayStates",
        "summary": "Day-trade state map (~70 names, ~5-min refresh in market hours) — $0.01",
        "tags": [
          "Market Data"
        ],
        "x-payment-info": {
          "intent": "charge",
          "method": "x402",
          "amount": "10000",
          "currency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "description": "Buy the day-trade state map — intraday lights/GO/FUEL/ROOM per name (x402) — x402 'exact' charge, USDC on Base (eip155:8453). Amount in 6-decimal base units. Live offer in the endpoint's own 402 response.",
          "offers": [
            {
              "intent": "charge",
              "method": "x402",
              "amount": "10000",
              "currency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
              "description": "Buy the day-trade state map — intraday lights/GO/FUEL/ROOM per name (x402) — x402 'exact' charge, USDC on Base (eip155:8453). Amount in 6-decimal base units. Live offer in the endpoint's own 402 response."
            },
            {
              "intent": "charge",
              "method": "x402",
              "amount": "10000",
              "currency": "31566704",
              "description": "Buy the day-trade state map — intraday lights/GO/FUEL/ROOM per name (x402) — x402 'exact' charge, USDCa on Algorand mainnet. Amount in 6-decimal base units. Live offer in the endpoint's own 402 response."
            },
            {
              "intent": "charge",
              "method": "x402",
              "amount": "10000",
              "currency": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
              "description": "Buy the day-trade state map — intraday lights/GO/FUEL/ROOM per name (x402) — x402 'exact' charge, USDC on Solana mainnet. Amount in 6-decimal base units. Live offer in the endpoint's own 402 response."
            }
          ],
          "protocols": [
            "x402",
            "mpp"
          ],
          "mpp": {
            "method": "usdc",
            "intent": "charge",
            "challenge": "WWW-Authenticate: Payment",
            "credential": "Authorization: Payment",
            "network": "eip155:8453"
          },
          "nanopayments": {
            "rail": "circle-gateway",
            "scheme": "exact",
            "network": "eip155:8453",
            "select": "the accepts entry with extra.name=GatewayWalletBatched",
            "note": "Gasless batched USDC from a unified Circle Gateway balance — sign with @circle-fin/x402-batching (registerBatchScheme); settles offchain to the seller's Gateway balance."
          }
        },
        "responses": {
          "402": {
            "description": "Payment Required — x402 v2 payment requirements in the JSON body and the PAYMENT-REQUIRED header"
          },
          "200": {
            "description": "The day-trade state map: per-name intraday lights grid, GO, FUEL vs the tab's anchor ETF, entry-window state and ROOM for ~70 liquid names, plus the reading_guide honesty block. Settlement receipt in the PAYMENT-RESPONSE header.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "headers": {
              "X-Coil-Market-Open": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "true",
                    "false"
                  ]
                },
                "description": "Whether the US equity market is open right now. When false the board will not change until the next session."
              },
              "X-Coil-Next-Refresh": {
                "schema": {
                  "type": "string",
                  "format": "date-time"
                },
                "description": "When the next board is expected. Do not re-buy before this time — you would receive an identical payload."
              },
              "X-Coil-Data-Age": {
                "schema": {
                  "type": "string"
                },
                "description": "Age of the served board in seconds."
              }
            }
          }
        },
        "description": "Intraday multi-timeframe STATE MAP: per-name 18-cell lights grid (price/RSI/MACD x 5m-1D), GO (lights x fuel), FUEL vs the tab's anchor ETF, efficiency, ATR%, 20-day vs SPY, entry-window state, and ROOM (% + estimated 5m bars to the nearest overhead level; null = AIR/extended). A state map, NOT a ranking — the pre-registered backtest refuted GO as a ranking and fully-lit boards were LATE (ext:true flags them). Cohort tabs (AI/semis vs SOXX, software vs IGV) measure FUEL against their own anchor ETF. x402: $0.01 per read in USDC on Base, Solana, or Algorand."
      }
    },
    "/api/board/hold": {
      "get": {
        "operationId": "getHoldState",
        "summary": "Buy per-symbol hold-state reads — up to 10 names, one price (x402, USDC on Base)",
        "tags": [
          "Market Data"
        ],
        "parameters": [
          {
            "name": "sym",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Ticker, e.g. NVDA — or up to 10 comma-separated (NVDA,AMD,BTC-USD). Unknown symbols return the valid-symbol directory."
          }
        ],
        "x-payment-info": {
          "intent": "charge",
          "method": "x402",
          "amount": "5000",
          "currency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "description": "Buy per-symbol hold-state reads — trend state, hold strength, gap-risk per name (x402) — x402 'exact' charge, USDC on Base (eip155:8453). Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api",
          "offers": [
            {
              "intent": "charge",
              "method": "x402",
              "amount": "5000",
              "currency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
              "description": "Buy per-symbol hold-state reads — trend state, hold strength, gap-risk per name (x402) — x402 'exact' charge, USDC on Base (eip155:8453). Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            },
            {
              "intent": "charge",
              "method": "x402",
              "amount": "5000",
              "currency": "31566704",
              "description": "Buy per-symbol hold-state reads — trend state, hold strength, gap-risk per name (x402) — x402 'exact' charge, USDCa on Algorand mainnet. Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            },
            {
              "intent": "charge",
              "method": "x402",
              "amount": "5000",
              "currency": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
              "description": "Buy per-symbol hold-state reads — trend state, hold strength, gap-risk per name (x402) — x402 'exact' charge, USDC on Solana mainnet. Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            }
          ],
          "protocols": [
            "x402",
            "mpp"
          ],
          "mpp": {
            "method": "usdc",
            "intent": "charge",
            "challenge": "WWW-Authenticate: Payment",
            "credential": "Authorization: Payment",
            "network": "eip155:8453"
          },
          "nanopayments": {
            "rail": "circle-gateway",
            "scheme": "exact",
            "network": "eip155:8453",
            "select": "the accepts entry with extra.name=GatewayWalletBatched",
            "note": "Gasless batched USDC from a unified Circle Gateway balance — sign with @circle-fin/x402-batching (registerBatchScheme); settles offchain to the seller's Gateway balance."
          }
        },
        "responses": {
          "402": {
            "description": "Payment Required — x402 v2 payment requirements in the JSON body and the PAYMENT-REQUIRED header"
          },
          "200": {
            "description": "Per-symbol hold state for up to 10 names: published trend state, hold strength 0-100, readiness, maturity-late flag, overnight gap-risk grade and each book's regime, with the mechanical rules the states flip on (BTC-USD/ETH-USD return the crypto book's IN|CASH daily-close state). Impersonal publication — never ingests a buyer's entry or size. Settlement receipt in the PAYMENT-RESPONSE header. Includes a `freshness` object (market_open, data_age_seconds, next_refresh_at, poll_hint).",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "headers": {
              "X-Coil-Market-Open": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "true",
                    "false"
                  ]
                },
                "description": "Whether the US equity market is open right now. When false the board will not change until the next session."
              },
              "X-Coil-Next-Refresh": {
                "schema": {
                  "type": "string",
                  "format": "date-time"
                },
                "description": "When the next board is expected. Do not re-buy before this time — you would receive an identical payload."
              },
              "X-Coil-Data-Age": {
                "schema": {
                  "type": "string"
                },
                "description": "Age of the served board in seconds."
              }
            }
          }
        },
        "description": "Per-symbol HOLD-STATE read for names already tracked: GET /api/board/hold?sym=NVDA (or ?sym=NVDA,AMD,BTC-USD — up to 10 names, one price) returns each name's published trend state, hold strength, readiness, maturity-late flag, overnight gap-risk grade and its book's regime, plus the mechanical rules the states flip on. Refreshed ~5 min in US market hours. Scores and states only, never stop/target prices; an impersonal publication identical for every reader — it never reads a buyer's entry price or position size. Unknown symbols return the valid-symbol directory."
      }
    },
    "/api/crypto/day": {
      "get": {
        "operationId": "getCryptoDayBoard",
        "summary": "Buy the 24/7 crypto day-state board — 81 coins, ~15-min refresh (x402, USDC on Base)",
        "tags": [
          "Market Data"
        ],
        "x-payment-info": {
          "intent": "charge",
          "method": "x402",
          "amount": "5000",
          "currency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "description": "Buy the 24/7 crypto day-state board — 81 coins, trend/tape/rank states (x402) — x402 'exact' charge, USDC on Base (eip155:8453). Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api",
          "offers": [
            {
              "intent": "charge",
              "method": "x402",
              "amount": "5000",
              "currency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
              "description": "Buy the 24/7 crypto day-state board — 81 coins, trend/tape/rank states (x402) — x402 'exact' charge, USDC on Base (eip155:8453). Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            },
            {
              "intent": "charge",
              "method": "x402",
              "amount": "5000",
              "currency": "31566704",
              "description": "Buy the 24/7 crypto day-state board — 81 coins, trend/tape/rank states (x402) — x402 'exact' charge, USDCa on Algorand mainnet. Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            },
            {
              "intent": "charge",
              "method": "x402",
              "amount": "5000",
              "currency": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
              "description": "Buy the 24/7 crypto day-state board — 81 coins, trend/tape/rank states (x402) — x402 'exact' charge, USDC on Solana mainnet. Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            }
          ],
          "protocols": [
            "x402",
            "mpp"
          ],
          "mpp": {
            "method": "usdc",
            "intent": "charge",
            "challenge": "WWW-Authenticate: Payment",
            "credential": "Authorization: Payment",
            "network": "eip155:8453"
          },
          "nanopayments": {
            "rail": "circle-gateway",
            "scheme": "exact",
            "network": "eip155:8453",
            "select": "the accepts entry with extra.name=GatewayWalletBatched",
            "note": "Gasless batched USDC from a unified Circle Gateway balance — sign with @circle-fin/x402-batching (registerBatchScheme); settles offchain to the seller's Gateway balance."
          }
        },
        "responses": {
          "402": {
            "description": "Payment Required — x402 v2 payment requirements in the JSON body and the PAYMENT-REQUIRED header"
          },
          "200": {
            "description": "The 24/7 crypto day-state board: 81 Robinhood-tradable coins with trend distances, tape lights, ATR%, relative strength vs BTC, room, volume z-score, UP/CHOP/DOWN state and cross-sectional ranks, plus the daily BTC/ETH gate and breadth. Self-dated: the payload carries computed_at and its own cadence block (no X-Coil equity-freshness headers — this board is not tied to US market hours). Before the first publish it returns {available:false} with the cadence note. Settlement receipt in the PAYMENT-RESPONSE header."
          }
        },
        "description": "24/7 crypto day-state board for the Robinhood-tradable universe (81 coins): per coin price, 24h/7d change, trend distance vs the 20/50/200-day, ATR%, relative strength vs BTC, multi-timeframe tape lights, volume z-score, room to the 20-day high, mechanical UP/CHOP/DOWN state and cross-sectional rank — plus the daily BTC/ETH gate regime and breadth counts. A state map, not a ranking; distances and percentages only, never price levels. Refreshed about every 15 minutes around the clock, every day (writes skipped when nothing changed). x402: $0.005 per read in USDC on Base, Solana, or Algorand."
      }
    },
    "/api/crypto/night": {
      "get": {
        "operationId": "getCryptoNightRead",
        "summary": "Buy the overnight crypto continuation read — top-5 momentum into the 20:00 UTC signal (x402, USDC on Base)",
        "tags": [
          "Market Data"
        ],
        "x-payment-info": {
          "intent": "charge",
          "method": "x402",
          "amount": "1000",
          "currency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "description": "Buy the overnight crypto continuation read — top-5 session momentum + regime gate + study receipts (x402) — x402 'exact' charge, USDC on Base (eip155:8453). Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api",
          "offers": [
            {
              "intent": "charge",
              "method": "x402",
              "amount": "1000",
              "currency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
              "description": "Buy the overnight crypto continuation read — top-5 session momentum + regime gate + study receipts (x402) — x402 'exact' charge, USDC on Base (eip155:8453). Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            },
            {
              "intent": "charge",
              "method": "x402",
              "amount": "1000",
              "currency": "31566704",
              "description": "Buy the overnight crypto continuation read — top-5 session momentum + regime gate + study receipts (x402) — x402 'exact' charge, USDCa on Algorand mainnet. Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            },
            {
              "intent": "charge",
              "method": "x402",
              "amount": "1000",
              "currency": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
              "description": "Buy the overnight crypto continuation read — top-5 session momentum + regime gate + study receipts (x402) — x402 'exact' charge, USDC on Solana mainnet. Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            }
          ],
          "protocols": [
            "x402",
            "mpp"
          ],
          "mpp": {
            "method": "usdc",
            "intent": "charge",
            "challenge": "WWW-Authenticate: Payment",
            "credential": "Authorization: Payment",
            "network": "eip155:8453"
          },
          "nanopayments": {
            "rail": "circle-gateway",
            "scheme": "exact",
            "network": "eip155:8453",
            "select": "the accepts entry with extra.name=GatewayWalletBatched",
            "note": "Gasless batched USDC from a unified Circle Gateway balance — sign with @circle-fin/x402-batching (registerBatchScheme); settles offchain to the seller's Gateway balance."
          }
        },
        "responses": {
          "402": {
            "description": "Payment Required — x402 v2 payment requirements in the JSON body and the PAYMENT-REQUIRED header"
          },
          "200": {
            "description": "The overnight continuation read: night_board (the 20:00 UTC signal clock, pre/post-signal phase, BTC 200-day gate state, eligible count, the top-5 session-momentum coins, the registered rule prose and the study block — gross edge, null comparison, the retail-fee REFUTATION, breakeven bps) plus universe/eligible counts. Self-dated via computed_at; before the night board's first publish it returns {available:false} with the cadence note. Settlement receipt in the PAYMENT-RESPONSE header."
          }
        },
        "description": "Pre-registered overnight continuation read for the Robinhood-tradable crypto universe (81 coins): the top-5 session-momentum coins heading into the 20:00 UTC signal, the BTC 200-day regime gate, the pre/post-signal phase and the cold-study receipts attached to every read — the ranking beat its random null at every fee tier, and at Robinhood retail taker fees the studied trade was REFUTED (breakeven ~19 bps/side). A state read with its refutation attached, not advice; scores and percentages only, never price levels. Refreshed about every 15 minutes around the clock, every day. x402: $0.001 per read in USDC on Base, Solana, or Algorand — the poll-gate tier."
      }
    },
    "/api/auth/nonce": {
      "get": {
        "operationId": "getWalletAuthNonce",
        "summary": "SIWX wallet auth, step 1 — get the message to sign",
        "description": "Sign In With X (CAIP-122): returns the exact message the wallet must sign, with a stateless server-bound nonce. Free, no payment. Chains: base (any EVM signer), solana, algorand.",
        "parameters": [
          {
            "name": "address",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The wallet address signing in"
          },
          {
            "name": "chain",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "base",
                "evm",
                "solana",
                "algorand"
              ],
              "default": "base"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The message to sign, its nonce, and issued_at (10-minute window)."
          }
        }
      }
    },
    "/api/auth/verify": {
      "post": {
        "operationId": "verifyWalletAuth",
        "summary": "SIWX wallet auth, step 2 — verify the signature, mint a free-tier key",
        "description": "Verifies the wallet signature over the issued message (EVM personal_sign via keccak/secp256k1 recovery; Solana/Algorand ed25519) and mints a coilwallet_ free-tier key — 25 calls/day on regime, indices, movers, crypto gate, crypto night, tradfi-risk and hold state, sent as the X-Coil-Key header. One key per address; re-verifying returns the same key. The signature is a message, not a transaction — no funds move.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "address",
                  "issued_at",
                  "signature"
                ],
                "properties": {
                  "chain": {
                    "type": "string",
                    "enum": [
                      "base",
                      "evm",
                      "solana",
                      "algorand"
                    ],
                    "default": "base"
                  },
                  "address": {
                    "type": "string"
                  },
                  "issued_at": {
                    "type": "string",
                    "description": "issued_at from /api/auth/nonce, verbatim"
                  },
                  "signature": {
                    "type": "string",
                    "description": "hex (EVM), base64, or base58"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The coilwallet_ key, its daily limit, and the endpoints it opens."
          },
          "401": {
            "description": "Signature does not verify for this address."
          }
        }
      }
    },
    "/api/crypto/setup": {
      "get": {
        "operationId": "getCryptoSetupScan",
        "summary": "Buy the crypto SETUP scan — washed-shape hits across 81 RH-tradable coins (x402, USDC)",
        "tags": [
          "Market Data"
        ],
        "x-payment-info": {
          "intent": "charge",
          "method": "x402",
          "amount": "50000",
          "currency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "description": "Buy the crypto SETUP scan — washed-shape hits across 81 coins (x402) — x402 'exact' charge, USDC on Base (eip155:8453). Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api",
          "offers": [
            {
              "intent": "charge",
              "method": "x402",
              "amount": "50000",
              "currency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
              "description": "Buy the crypto SETUP scan — washed-shape hits across 81 coins (x402) — x402 'exact' charge, USDC on Base (eip155:8453). Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            },
            {
              "intent": "charge",
              "method": "x402",
              "amount": "50000",
              "currency": "31566704",
              "description": "Buy the crypto SETUP scan — washed-shape hits across 81 coins (x402) — x402 'exact' charge, USDCa on Algorand mainnet. Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            },
            {
              "intent": "charge",
              "method": "x402",
              "amount": "50000",
              "currency": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
              "description": "Buy the crypto SETUP scan — washed-shape hits across 81 coins (x402) — x402 'exact' charge, USDC on Solana mainnet. Amount in 6-decimal base units. Live offer document: GET https://coil.trade/api"
            }
          ],
          "protocols": [
            "x402",
            "mpp"
          ],
          "mpp": {
            "method": "usdc",
            "intent": "charge",
            "challenge": "WWW-Authenticate: Payment",
            "credential": "Authorization: Payment",
            "network": "eip155:8453"
          },
          "nanopayments": {
            "rail": "circle-gateway",
            "scheme": "exact",
            "network": "eip155:8453",
            "select": "the accepts entry with extra.name=GatewayWalletBatched",
            "note": "Gasless batched USDC from a unified Circle Gateway balance — sign with @circle-fin/x402-batching (registerBatchScheme); settles offchain to the seller's Gateway balance."
          }
        },
        "responses": {
          "402": {
            "description": "Payment Required — x402 v2 payment requirements in the JSON body and the PAYMENT-REQUIRED header"
          },
          "200": {
            "description": "The 24/7 crypto day-state board: 81 Robinhood-tradable coins with trend distances, tape lights, ATR%, relative strength vs BTC, room, volume z-score, UP/CHOP/DOWN state and cross-sectional ranks, plus the daily BTC/ETH gate and breadth. Self-dated: the payload carries computed_at and its own cadence block (no X-Coil equity-freshness headers — this board is not tied to US market hours). Before the first publish it returns {available:false} with the cadence note. Settlement receipt in the PAYMENT-RESPONSE header."
          }
        },
        "description": "One paid read scans all 81 Robinhood-tradable coins for the two washed-shape SETUP patterns (daily uptrend + washed-out 5-minute tape) and returns every hit with GO, fuel multiple vs BTC, grade and room, plus the setup column for the full universe. Recomputed ~5 minutes, 24/7. Shapes were backtest-confirmed on equities; on crypto they are forward-graded and disclosed per read. $0.05 per read over x402. Research, not advice."
      }
    },
    "/api/live/feed": {
      "get": {
        "summary": "Coil Live — the engine-grade board feed",
        "description": "The feed the live record trades, served to your agent: per-name structural stops, targets, conviction, lanes, plus a served candidates[] entry pool (a read-time join of READY picks and day-board grades — an empty list means the discipline is working, not an outage). Refreshed every 5–9 minutes in market hours. Payload carries field_notes, timestamps_note and freshness.is_stale so an agent never has to guess at the vocabulary or do clock math. Subscription only — never sold per-call over x402.",
        "operationId": "getLiveFeed",
        "tags": [
          "Coil Live"
        ],
        "security": [
          {
            "licenseKey": []
          }
        ],
        "parameters": [
          {
            "name": "symbols",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "example": "NVDA,MU"
            },
            "description": "Comma-separated tickers for a small poll read. candidates[] always rides whole regardless. Unfiltered the payload is ~700KB — read once, then filter."
          }
        ],
        "responses": {
          "200": {
            "description": "The engine-grade feed.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "No or invalid license key. Body: {\"error\":\"subscription_required\",\"note\":\"Coil Live ($29/mo or $249/yr) — subscribe at https://coil.trade/live-feed, then send the license as X-License-Key.\"}",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "subscription_required"
                    },
                    "note": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/live/setup": {
      "get": {
        "summary": "Coil Live — how to connect (free, no key)",
        "description": "Unauthenticated discovery: returns the product name, price, checkout URL and the exact header/MCP instructions for connecting an agent. Call this first.",
        "operationId": "getLiveSetup",
        "tags": [
          "Coil Live"
        ],
        "responses": {
          "200": {
            "description": "Connection instructions.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "product": {
                      "type": "string",
                      "example": "coil-live"
                    },
                    "price": {
                      "type": "string",
                      "example": "$29/mo or $249/yr"
                    },
                    "checkout": {
                      "type": "string",
                      "example": "https://coil.trade/live-feed"
                    },
                    "how": {
                      "type": "string"
                    },
                    "docs": {
                      "type": "string",
                      "example": "https://coil.trade/agents"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/live/rules": {
      "get": {
        "operationId": "getLiveRules",
        "summary": "Coil Live — the served trading discipline (versioned rulebook)",
        "description": "The versioned rulebook a subscriber's agent runs against /api/live/feed: cycle order, exits-first, the three entry guards (gap-down / broken-read / chase), sizing precedence with the PDT bound, and fail-closed staleness. The response carries rules_version and a changelog; agents finish open positions under the version they were opened under and adopt new versions for new entries. Also served over MCP as the get_live_rules tool. Requires an active Coil Live subscription (X-License-Key).",
        "security": [
          {
            "licenseKey": []
          }
        ],
        "responses": {
          "200": {
            "description": "The served discipline",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "product": {
                      "type": "string",
                      "example": "coil-live-rules"
                    },
                    "rules_version": {
                      "type": "string",
                      "example": "1.3.0"
                    },
                    "changelog": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "version": {
                            "type": "string"
                          },
                          "date": {
                            "type": "string"
                          },
                          "note": {
                            "type": "string"
                          }
                        }
                      }
                    },
                    "rules": {
                      "type": "string",
                      "description": "The full rulebook, markdown"
                    }
                  },
                  "required": [
                    "rules_version",
                    "rules"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "No or invalid license key. Body: {\"error\":\"subscription_required\",\"note\":\"Coil Live ($29/mo or $249/yr) — subscribe at https://coil.trade/live-feed, then send the license as X-License-Key.\"}",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "subscription_required"
                    },
                    "note": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "invalid_license"
          }
        }
      }
    },
    "/api/board/rotation": {
      "get": {
        "operationId": "getRotation",
        "summary": "Sector + macro rotation map (~50 ETFs, ~5-min refresh in market hours) — $0.005",
        "tags": [
          "Market Data"
        ],
        "x-payment-info": {
          "intent": "charge",
          "method": "x402",
          "amount": "5000",
          "currency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "description": "Buy the rotation map — sector + macro X/SPY leadership states (x402) — x402 'exact' charge, USDC on Base (eip155:8453). Amount in 6-decimal base units. Live offer in the endpoint's own 402 response.",
          "offers": [
            {
              "intent": "charge",
              "method": "x402",
              "amount": "5000",
              "currency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
              "description": "Buy the day-trade state map — intraday lights/GO/FUEL/ROOM per name (x402) — x402 'exact' charge, USDC on Base (eip155:8453). Amount in 6-decimal base units. Live offer in the endpoint's own 402 response."
            },
            {
              "intent": "charge",
              "method": "x402",
              "amount": "5000",
              "currency": "31566704",
              "description": "Buy the day-trade state map — intraday lights/GO/FUEL/ROOM per name (x402) — x402 'exact' charge, USDCa on Algorand mainnet. Amount in 6-decimal base units. Live offer in the endpoint's own 402 response."
            },
            {
              "intent": "charge",
              "method": "x402",
              "amount": "5000",
              "currency": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
              "description": "Buy the day-trade state map — intraday lights/GO/FUEL/ROOM per name (x402) — x402 'exact' charge, USDC on Solana mainnet. Amount in 6-decimal base units. Live offer in the endpoint's own 402 response."
            }
          ],
          "protocols": [
            "x402",
            "mpp"
          ],
          "mpp": {
            "method": "usdc",
            "intent": "charge",
            "challenge": "WWW-Authenticate: Payment",
            "credential": "Authorization: Payment",
            "network": "eip155:8453"
          },
          "nanopayments": {
            "rail": "circle-gateway",
            "scheme": "exact",
            "network": "eip155:8453",
            "select": "the accepts entry with extra.name=GatewayWalletBatched",
            "note": "Gasless batched USDC from a unified Circle Gateway balance — sign with @circle-fin/x402-batching (registerBatchScheme); settles offchain to the seller's Gateway balance."
          }
        },
        "responses": {
          "402": {
            "description": "Payment Required — x402 v2 payment requirements in the JSON body and the PAYMENT-REQUIRED header"
          },
          "200": {
            "description": "The day-trade state map: per-name intraday lights grid, GO, FUEL vs the tab's anchor ETF, entry-window state and ROOM for ~70 liquid names, plus the reading_guide honesty block. Settlement receipt in the PAYMENT-RESPONSE header.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "headers": {
              "X-Coil-Market-Open": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "true",
                    "false"
                  ]
                },
                "description": "Whether the US equity market is open right now. When false the board will not change until the next session."
              },
              "X-Coil-Next-Refresh": {
                "schema": {
                  "type": "string",
                  "format": "date-time"
                },
                "description": "When the next board is expected. Do not re-buy before this time — you would receive an identical payload."
              },
              "X-Coil-Data-Age": {
                "schema": {
                  "type": "string"
                },
                "description": "Age of the served board in seconds."
              }
            }
          }
        },
        "description": "Sector + macro ROTATION map: each of ~50 sector/macro ETFs scored on its own X/SPY ratio versus that ratio's 50-day and labelled GO (money already here), HOLDING (here but paused), TURNING (money arriving) or OUT (money left), with distance-to-50d %, 20-day slope % and ratio RSI — a state map, not a buy list; confirmed rotation is LATE for a pullback buyer."
      }
    }
  },
  "components": {
    "securitySchemes": {
      "walletAuth": {
        "type": "apiKey",
        "in": "header",
        "name": "X-Coil-Key",
        "description": "Wallet auth, two interoperable lanes. (1) STANDARD x402 SIWX extension (docs.x402.org/extensions/sign-in-with-x): every 402 declares extensions['sign-in-with-x'] with nonce/domain/uri and supportedChains (eip191 + ed25519); construct the CAIP-122/SIWE message, sign with the wallet, send base64 {message, signature, chainId, type} as the SIGN-IN-WITH-X header — the free-tier products serve directly, no mint step. (2) KEY-MINT convenience: GET /api/auth/nonce?address=&chain=base|solana|algorand, sign, POST /api/auth/verify to mint a durable coilwallet_ key sent as X-Coil-Key. Both grant the same free tier (25 calls/day on regime, indices, movers, crypto gate, crypto night, tradfi-risk, hold state). Signatures are messages, not transactions — no funds move."
      },
      "licenseKey": {
        "type": "apiKey",
        "in": "header",
        "name": "X-License-Key",
        "description": "Gumroad license key for a Coil subscription. Coil Live ($29/mo or $249/yr) unlocks /api/live/*; the Coil Scanner key ($12/mo) unlocks the live board endpoints. Sent as a raw header value, no scheme prefix."
      }
    }
  }
}