> ## Documentation Index
> Fetch the complete documentation index at: https://docs.signalium.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Posts

> Evaluate an X URL — runs gatekeeper + writer in 0G Compute TEE.

## POST /posts/evaluate

Pulls an X post via RapidAPI's `twitter241`, scores it with the gatekeeper model, and (if eligible) runs the writer to draft a market proposal. Seals the judge prompt to 0G Storage and persists the proposal in SQLite, keyed by the resulting merkle root.

Body:

```json theme={null}
{ "url": "https://x.com/Cointelegraph/status/2049122930903089617" }
```

Response (eligible):

```json theme={null}
{
  "eligible": true,
  "score": {
    "falsifiability": 0.9,
    "clarity": 0.85,
    "specificity": 0.8,
    "signal": 0.7,
    "novelty": 0.65,
    "composite": 0.78
  },
  "proposal": {
    "question": "Will State Street launch tokenized fund servicing from Luxembourg by 2026-12-31?",
    "description": "...",
    "resolutionCriteria": "...",
    "resolutionDate": "2026-12-31T23:59:59.000Z",
    "judgePrompt": "...",
    "aiProbability": 65,
    "sourcePostUrl": "https://x.com/Cointelegraph/status/2049122930903089617"
  },
  "judgeStorageRoot": "0xdd46c0bec323abf314e65f98d7fb986dfc8f2d4ad03b8e32a5a250ba41e1d30e",
  "postMetadata": { /* … same shape as Market.postMetadata … */ }
}
```

Response (rejected): `{ "eligible": false, "score": {...}, "reason": "..." }`.

The frontend takes the `judgeStorageRoot` and feeds it into `MarketFactory.createMarket(...)` so the on-chain market and the API's cached proposal stay linked.
