# Scanna Risk Score

> Scanna Risk Score is a paid API for AI agents from api.scanna.xyz, paid per call via x402, $0.02001/call, status unknown (last checked 2026-09-14).

Returns a 6-factor A-F risk grade (plus 0-100 weighted score) for a single Polymarket market, served entirely from in-memory caches with no upstream calls or writes.

## Facts

- Endpoint: GET https://api.scanna.xyz/risk-score
- Price: $0.02001/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/scanna-risk-score-c9151041
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_ck8Yv9drbN6nzHKcTAqtM

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability scanna-risk-score-c9151041
```

Example prompt: What's the risk grade for Polymarket market 0x1234abcd? I want to see the full breakdown of all six risk factors and any warnings before I trade it.

## When to prefer this

Choose this endpoint when you need a fast, structured, multi-factor risk grade for a specific Polymarket market and do not need real-time order-book data or write operations. It is ideal for pre-trade screening, automated risk filtering, or dashboards where sub-60-second staleness is acceptable. Avoid it for Kalshi markets (spread/category factors will be placeholders) or markets outside the top ~100 Polymarket listings if accurate spread scoring is critical.

## Known failure modes

- 400 Bad Request if market_id query parameter is absent
- 404 market_not_found if the market_id is not in the live in-memory cache
- 200 returned with placeholder-heavy scores for markets outside the top ~100 Polymarket order-book coverage — still billed at $0.02001
- All Kalshi market IDs will return placeholder spread and category factors (no Kalshi order-book data)
- Scores can be up to ~60 seconds stale due to cache-only architecture

## How this service works

Returns a 6-factor A-F risk grade for one market_id from in-memory caches only: no DB, no upstream call, no write. Market data is up to ~60s stale; order-book depth covers only the top ~100 Polymarket markets, so most ids (and all Kalshi) score with placeholder spread/category factors. Unknown id is 404, but a placeholder-heavy score still returns 200 and bills.

## Output

A JSON object containing: the market_id and question text, a letter grade from A (low risk) to F (high risk), an integer overall_score from 0–100 (higher = riskier), and six named factor objects each with a score (0–100), weight (fixed per factor, all six sum to 1), and a human-readable reason string. Also includes a warnings array of threshold-triggered sentences (empty if none apply). Data is served from in-memory cache, up to ~60 seconds stale; order-book depth covers only the top ~100 Polymarket markets, so spread and category factors may use placeholders for other markets.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "required": [
      "market_id"
     ],
     "properties": {
      "market_id": {
       "type": "string",
       "description": "Condition ID from markets[].condition_id. Absent is 400; not in the live cache is 404 market_not_found."
      }
     },
     "additionalProperties": false
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "required": [
      "market_id",
      "question",
      "grade",
      "overall_score",
      "factors",
      "warnings"
     ],
     "properties": {
      "grade": {
       "enum": [
        "A",
        "B",
        "C",
        "D",
        "F"
       ],
       "type": "string",
       "description": "A = low risk, F = high risk"
      },
      "factors": {
       "type": "object",
       "required": [
        "resolution_clarity",
        "liquidity",
        "time_risk",
        "volume_quality",
        "spread",
        "category_risk"
       ],
       "description": "All six are always present — a missing input scores a placeholder, it does not drop the key",
       "additionalProperties": {
        "type": "object",
        "required": [
         "score",
         "weight",
         "reason"
        ],
        "properties": {
         "score": {
          "type": "number",
          "description": "0-100, higher is riskier"
         },
         "reason": {
          "type": "string",
          "description": "Human-readable sentence, not a machine token"
         },
         "weight": {
          "type": "number",
          "description": "Fixed per factor; the six sum to 1"
         }
        }
       }
      },
      "question": {
       "type": "string"
      },
      "warnings": {
       "type": "array",
       "items": {
        "type": "string"
       },
       "description": "Threshold-triggered sentences; empty when none fire"
      },
      "market_id": {
       "type": "string"
      },
      "overall_score": {
       "
… (truncated)
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/scanna-risk-score-c9151041/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from api.scanna.xyz](https://www.zero.xyz/host/api.scanna.xyz/llms.txt)
