---
name: krawl-crypto
description: Crypto and DeFi deep-research agent. Analyze tokens, research protocols, track smart-money wallets, surface emerging narratives, assess risk, and find yield strategies — each returns a structured markdown report with dozens of on-chain and social sources, fully cited and inline citations. Use when asked to research a token, protocol, or crypto narrative in depth.
metadata:
  api_base: https://api.krawl.sh
---

# Krawl Crypto Research

Krawl's crypto-specialized research modes turn a single API call into a fully-cited
markdown report that fuses on-chain data (CoinGecko, DeFiLlama), X/Twitter sentiment,
GitHub activity, and the broader web. Built for agents that need a defensible,
sourced answer about a token, protocol, or narrative — not just raw price data.

Base URL: `https://api.krawl.sh`

## Authentication

Get a key at [krawl.sh](https://krawl.sh) or call `POST /auth/demo-key` for a free
demo key (no signup). Keyless agents can pay per call with x402 (USDC on Base).
Include the key as `X-API-Key: your_api_key`. See [auth.md](https://krawl.sh/auth.md).

## Crypto research modes

Pass one of these as `mode` to `POST /research`:

| Mode | Use case |
|------|----------|
| `crypto` | General crypto/DeFi research across on-chain + social + web |
| `token-analysis` | Deep dive on a single token (fundamentals, holders, momentum) |
| `protocol-research` | Protocol deep dive (TVL, revenue, governance, risks) |
| `whale-tracking` | Smart-money / large-holder movement analysis |
| `narrative` | Emerging-narrative discovery and tracking |
| `risk-assessment` | Token/protocol risk scoring with cited evidence |
| `yield-strategy` | Yield opportunity discovery across protocols |

## Example — token analysis

```bash
curl -N https://api.krawl.sh/research \
  -H "X-API-Key: $KRAWL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query": "Is EIGEN undervalued vs comparable restaking tokens?", "mode": "token-analysis"}'
```

The response is a Server-Sent Events stream; the terminal `result` event carries a
markdown report plus a `sources` array with credibility tiers and a `learnings` list.

## MCP

The same capabilities are exposed over MCP (Streamable HTTP) at
`https://api.krawl.sh/mcp` via the `research` tool with `mode: "crypto"`. See
[/.well-known/mcp/manifest.json](https://krawl.sh/.well-known/mcp/manifest.json).

## When to use

Use Krawl crypto research when a user asks you to *evaluate*, *compare*, or
*investigate* a token, protocol, or trend and expects sourced reasoning — not when
they only need a spot price (use a price API for that).

## Evidence time and access

Research sources carry optional `retrieved_at` (UTC), `published_date`,
`updated_date`, date provenance, `access_status`, `source_record_id` and
`temporal_status`. Missing fields on older reports mean unknown; never assign
export time as retrieval time. Access states are `inspected_text`,
`partial_excerpt`, `provider_summary`, `metadata_only`, `fetch_failed`, or
`unknown`. These describe available evidence, not claim support or truth.
A recent fetch does not make an old article current. Summary/metadata-only
results do not establish that the original text was read.

Optional `source_policy.as_of` sets a UTC evidence cutoff; dates after it are
quarantined in `quarantined_sources`, outside synthesis. Without it the cutoff
is research start. This is not a historical web archive; undated content
remains uncertain. See [evidence methodology](https://docs.krawl.sh/docs/trust#evidence-time-and-access).

## Evidence coverage

The optional `evidence_coverage` result field gives descriptive counts of unique
exact URLs discovered, explicitly fetched, retained, referenced in outgoing
model input, and cited. Stages overlap: a retained search snippet may never
have had its original page fetched. It also reports explicit failed/unavailable
fetches, unknown fetch/access states, retained-host concentration, missing
publication dates and their known range. A model-input reference may contain
only metadata or a short excerpt; a citation is not a support verdict.

These counts do not establish representative sampling or correct selection
bias. Hostnames do not prove independent origins; mirrors may share a publisher.

Learning records may include `corroboration` text-reuse observations. Exact and
near copies form candidate origin groups; these are not proven publishers or
independent sources. Overlapping words can contradict one another. Both
`claim_support` and `independent_origins` remain `unassessed`, and this heuristic
does not increase confidence or reject a unique primary record. Comparison is
bounded to 256 sources and 12,000 characters/1,000 tokens per source; a truncation
flag exposes incomplete comparison. These observations are not a poison detector.

Old reports without this field have unknown coverage. No extra LLM call is made;
the measured instrumentation overhead is reported as `measurement_overhead_ms`,
not a guarantee of zero added latency. See [evidence methodology](https://docs.krawl.sh/docs/trust#evidence-coverage).

## Shared run-record export

`GET /results/{id}/export?format=run-record` exports an owned, retained result as
a versioned JSON run record, also available through MCP `export_result` with
`format: "run-record"`. Claim candidates are `unassessed`: support checks have
not run. Missing saved copies and per-call costs remain explicit gaps. This
read-only export uses the same authentication and ownership as other exports;
it does not retain ZDR results. Schema: https://krawl.sh/schemas/run-record/bundle.schema.json.

MCP compatibility: legacy `2025-06-18` remains the default. The `2026-07-28` stateless transport is experimental and disabled until modern authorization and reference-client acceptance pass. See https://docs.krawl.sh/docs/agents-mcp#protocol-compatibility.

## Evidence-pack export

`GET /results/{id}/export?format=evidence-pack` downloads an owned result as an
unsigned ZIP with its run record, SHA-256 manifest, and an offline-verifier
README. Hosted raw page copies are unavailable and explicitly unverifiable.
For streamed/ZDR results, `POST /exports/evidence-pack` with `{"result": ...}`
exports the caller-supplied full result in memory. No queries, digests, copies
or response bodies are persisted by this endpoint. MCP `export_result` accepts
`format: "evidence-pack"` with exactly one of `result_id` or inline `result`.
Verification checks bytes and cited passages, not publisher identity or truth.
Research SSE and MCP emit the required identity, request and elapsed-time
metadata. A result ID is not a persistence receipt. Inline exports preserve
the cutoff and quarantined source observations.
Details and verifier: https://docs.krawl.sh/docs/export#evidence-pack.

## Account audit export

Signed-in humans may download `GET /auth/me/audit/export` with their account
session cookie. API keys do not grant account-wide audit access. The paginated
version 1 export contains bounded operational events for keys, usage metering
and recorded deletion requests. It excludes research text, source URLs/hashes,
free-text metadata, IP addresses, raw keys and billing identifiers. Existing
retention limits apply at read time, and no export is retained. Missing events
are unknown; a recorded meter event is not proof of payment. See
https://docs.krawl.sh/docs/authentication#audit-export.
