# Tanod utilpeek – Crypto News Feed

> Tanod utilpeek – Crypto News Feed is a paid API for AI agents from tanod.dev, paid per call via x402, $0.001/call, status unknown (last checked 2026-10-30).

Fetches and returns recent cryptocurrency news headlines from major crypto outlets with sentiment tone analysis, optional topic filtering, and cursor-based pagination for incremental polling.

## Facts

- Endpoint: POST https://tanod.dev/v1/news/crypto?utm_source=zero.xyz
- Price: $0.001/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-30
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/tanod-utilpeek-crypto-news-feed-c8ba368d
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_ZoFYmRQxFffmNpXn9fKRi

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 tanod-utilpeek-crypto-news-feed-c8ba368d -d '<json body>'
```

Example prompt: Pull the 20 most recent crypto news headlines from the last 12 hours that mention Ethereum, and tell me whether the overall tone is positive, negative, or neutral.

## When to prefer this

Choose this endpoint when you need aggregated, multi-outlet crypto news with built-in sentiment scoring and cursor-based incremental fetching — ideal for scheduled agents that poll for new stories without re-fetching already-seen content. Prefer it over general web search when you want structured, pre-normalized results from a fixed set of reputable crypto outlets rather than open-web results, and when per-story tone analysis is valuable. Best for crypto-specific use cases; do not use for general finance or non-crypto topics.

## Known failure modes

- Invalid ISO 8601 format for 'since' returns a 400 validation error
- 'limit' outside 1-50 range is rejected with a validation error
- Unknown or misspelled topic keyword returns an empty stories array rather than an error
- Payment not included or insufficient USDC causes a 402 Payment Required response
- RSS feeds temporarily unavailable may return stale or reduced results
- Rate limits may apply if the daily free tier is exhausted

## How this service works

Use when an agent must decide which crypto stories to react to: top headlines ranked by outlet coverage, new ones only. utilpeek (Tanod) ranked crypto news headlines from seven outlets: stories grouped across outlets, links, first-seen time, tone, topic filter and only-new cursor.

## Output

Returns a JSON object containing: a list of deduplicated story objects (rank, headline, sentiment tone/score, contributing outlets, per-source URLs and timestamps, first_seen), an overall tone summary across all returned headlines (label + compound score + method description), total stories matched in the window, a cursor for incremental polling, source attribution, and metadata fields (as_of, count, since, topic, window_hours).

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "limit": {
   "type": "integer",
   "default": 20,
   "maximum": 50,
   "minimum": 1,
   "description": "Most stories to return, 1-50 (default 20)."
  },
  "since": {
   "anyOf": [
    {
     "type": "string",
     "maxLength": 40,
     "minLength": 1
    },
    {
     "type": "null"
    }
   ],
   "default": null,
   "description": "Optional: an ISO 8601 time (2026-10-11T08:00:00Z) or the `cursor` of your last reply. Only stories first seen after it are returned, so a scheduled agent pays only for what is new."
  },
  "topic": {
   "anyOf": [
    {
     "type": "string",
     "maxLength": 40,
     "minLength": 1
    },
    {
     "type": "null"
    }
   ],
   "default": null,
   "description": "Optional: only stories whose headline mentions this topic, such as ethereum, Base or solana lending (all words must appear; a few coin names also match their ticker)."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "tone": {
   "label": "neutral",
   "score": 0,
   "method": "VADER lexicon and rules on each headline (heuristic, English). score = compound -1..1, the mean of the headlines; positive >= 0.05, negative <= -0.05.",
   "stories": 1
  },
  "as_of": "2026-10-11T03:35:28Z",
  "count": 1,
  "since": null,
  "topic": null,
  "cursor": "cur_20261011T033528Z",
  "source": "Public RSS feeds of Cointelegraph, CoinDesk, The Block, Decrypt, The Defiant, Bitcoin Magazine and CryptoSlate",
  "stories": [
   {
    "rank": 1,
    "tone": {
     "label": "neutral",
     "score": 0
    },
    "outlets": [
     "Cointelegraph",
     "Decrypt"
    ],
    "sources": [
     {
      "url": "https://cointelegraph.com/news/sam-altman-backed-bitcoin-life-insurer-meanwhile-raises-more-funds",
      "title": "Sam Altman-backed Bitcoin life insurer, Meanwhile, raises more funds",
      "outlet": "Cointelegraph",
      "published_at": "2026-10-10T07:10:43Z"
     },
     {
      "url": "https://decrypt.co/380633/sam-altman-backed-life-insurer-bitcoin-raise",
      "title": "This Sam Altman-Backed Life Insurer Runs Entirely on Bitcoin, and Just Raised $37.5 Million",
      "outlet": "Decrypt",
      "published_at": "2026-10-10T16:01:04Z"
     }
    ],
    "headline": "Sam Altman-backed Bitcoin life insurer, Meanwhile, raises more funds",
    "first_seen": "2026-10-10T07:10:43Z",
    "outlet_count": 2
   }
  ],
  "window_hours": 12,
  "stories_matched": 14,
  "untrusted_content": true
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/tanod-utilpeek-crypto-news-feed-c8ba368d/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from tanod.dev](https://www.zero.xyz/host/tanod.dev/llms.txt)
