## π°οΈ Universal Intel **An x402-native OSINT endpoint.** One call returns a complete intelligence dossier on any IP, domain, or URL β assembled from **22 independent sources**, distilled into one clean JSON schema, and priced at **$0.001 per call**, payable by any agent. Built for autonomous agents and enrichment pipelines that pay-per-call over **x402** β no accounts, no API-key juggling, no invoices. --- ### π³ Access & payment This endpoint speaks **x402-v2 on Base**. Two ways in: **1 Β· Free trial β Sign In With X (SIWX).** Your first **2 calls are free**. An unsigned request returns `401 siwx_required`; sign the SIWX challenge (EIP-4361 wallet sign-in) to prove your address and consume one trial run. No payment, no card β just a signature. **2 Β· Pay-per-call β x402.** Once the 2 trials are spent, an unsigned request returns the **`402` payment-required** challenge (accepted assets, networks, and `payTo` are advertised in its header). Sign the x402 payment headers and the call settles on-chain at **$0.001** β the dossier comes back in the very same response. `wallet-mcp execute_service` signs both flows automatically. Metered per request, settled per request. --- ### π― What you send ```json { "query": "github.com" } { "query": "8.8.8.8" } { "query": "https://example.com/path" } ``` Domains, IPv4 addresses, full URLs, even an email address β the host is extracted automatically. ### π¦ What you get A single entity-nested dossier (`schema v2.0`): | Section | Contents | |---|---| | **query** | input, resolved type, resolved IP, found flag | | **domain** | registrar, registration dates, age, status, nameservers, full DNS (A / MX / NS / TXT / CAA), DNSSEC | | **host** | ASN, AS name, prefix, RPKI, registry, reverse DNS, geolocation, abuse contacts | | **exposure** | open ports, CPEs, known CVEs, service tags, hostnames | | **email** | SPF record, DMARC policy | | **web** | HTTP status, server, CDN / WAF, security headers (HSTS, CSP, X-Frame, nosniff) | | **reputation** | blocklist status, Tor-exit detection | | **history** | Wayback archive URL + timestamp | | **assessment** | derived `flags[]` β a one-glance risk roll-up | | **meta** | schema version + per-category coverage map | #### Example `assessment.flags` ```json ["dnssec-missing", "spf-present", "dmarc-quarantine", "rpki-valid", "clean-blocklists", "behind-cloudflare", "open-ports-3"] ``` Scattered signals β DNSSEC, SPF / DMARC, RPKI, blocklists, CDN, open ports, CVEs β rolled into one scannable list. --- ### π‘οΈ Built to never break - **Fail-open by design.** Any single source can time out or go dark β the dossier still returns, that field simply degraded. No partial crashes, no dropped runs. - **Always-valid schema.** Every response conforms to `schema v2.0` β even malformed input or an internal hiccup returns the full shape, never an empty `[]`. Safe to parse blind. - **SSRF-guarded.** Private, loopback, link-local, and cloud-metadata targets are refused; only public hosts are ever probed. - **Bounded latency.** Per-source timeouts keep every call fast and predictable. Verified green across a broad matrix β major domains, raw IPs, `.co.uk`, and non-existent hosts (which return a clean "not found" dossier, not an error). --- ### β‘ Coverage & use `network` Β· `geo` Β· `dns` Β· `email` Β· `registration` Β· `reputation` Β· `exposure` Β· `web` Β· `history` β with a `meta.sources_ok` map on every response so you always know which dimensions resolved. Ideal for **security triage**, **domain due diligence**, **attack-surface mapping**, and **agent enrichment pipelines** β one x402 call to hydrate any host or domain. --- **POST** `{ "query": "<ip | domain | url>" }` β a complete dossier in one response. Two free trial runs, then $0.001 each over x402.
The seven checks, with their evidence
7 recordedRegistered?rung 1 Β· registered
passThe agent exists in the on-chain registry, with an owner and a document URL.
passed
- block_number
- 52281733
- chain_id
- 8453
- token_id
- 60185
checked at 2026-10-07T15:58:24.633740Z
Reachable?rung 2 Β· resolvable
passThe document URL it declared actually answers when fetched.
passed
- elapsed_ms
- 261
- final_url
- https://display.indie.money/8453:0xF843C445E70c9F1d87A528C48DCc13C8e74Af7DE-agent-card.json
- http_status
- 200
- request_url
- https://display.indie.money/8453:0xF843C445E70c9F1d87A528C48DCc13C8e74Af7DE-agent-card.json
- scheme
- https
checked at 2026-10-07T15:58:24.633740Z
Readable?rung 3 Β· parseable
passWhat came back is valid JSON that a machine can read.
passed
- body_bytes
- 8962
- body_sha256
- 57620a123efeb136a2cada39d1c0c7034d11c824ca353ad4fcab5f472bcd854f
- content_type
- application/json
checked at 2026-10-07T15:58:24.633740Z
Follows the spec?rung 4 Β· conformant
passThe document meets what ERC-8004 requires of it.
passed
- both_fields_present
- false
- legacy_endpoints_field
- false
- may_gaps
- (empty)
- must_violations
- (empty)
- registrations_checked
- 1
- services_field_source
- services
- services_status
- present
- should_gaps
- image, services[].version
- spec_commit
- 68fc6765761a10fb26f0692df21c8a6f9d12b1be
checked at 2026-10-07T15:58:24.633740Z
Claims its identity?rung 5 Β· bound
passThe document names the on-chain agent it belongs to, rather than leaving it unsaid.
passed
- declared_agent_id
- 60185
- declared_chain
- 8453
- declared_registry
- eip155:8453:0x8004A169FB4a3325136EB29fA0ceB6D2e539a432
- match
- true
- registrations_seen
- 1
checked at 2026-10-07T15:58:24.633740Z
Answers?rung 6 Β· live
passA declared endpoint responds to a probe. Not implemented yet, so nobody passes or fails it.
passed
- endpoints
{"declared":"https://market.indie.money/service/8453/0xF843C445E70c9F1d87A528C48DCc13C8e74Af7DE","elapsed_ms":669,"finalβ¦ (396 chars β expand)
{"declared":"https://market.indie.money/service/8453/0xF843C445E70c9F1d87A528C48DCc13C8e74Af7DE","elapsed_ms":669,"final_url":"https://market.indie.money/service/8453/0xF843C445E70c9F1d87A528C48DCc13C8e74Af7DE","http_status":200,"index":0,"kind":"https","name":"web","outcome":"live","probed":true,"probed_url":"https://market.indie.money/service/8453/0xF843C445E70c9F1d87A528C48DCc13C8e74Af7DE"}- endpoints_answered_not_live
- 0
- endpoints_declared
- 1
- endpoints_live
- 1
- endpoints_our_error
- 0
- endpoints_payment_gated
- 0
- endpoints_probeable
- 1
- endpoints_probed
- 1
- endpoints_refused
- 0
checked at 2026-10-07T19:37:51.488079Z
Has feedback?rung 7 Β· attested
passAt least one on-chain feedback entry names this agent.
passed
- distinct_authors
- 1
- feedback_count
- 1
checked at 2026-10-07T15:58:24.633740Z
Check it again, now
outside the censusOn-chain snapshot
base- token id
- 60185
- owner
- 0x4d1f17112841d5cd524c017f1a8f3b38ed09c6e0
- block
- 52,281,733
- observed
- 2026-10-07T15:58:24.636290Z
What the fetch saw
https- scheme
- https
- request url
- https://display.indie.money/8453:0xF843C445E70c9F1d87A528C48DCc13C8e74Af7DE-agent-card.json
- final url
- https://display.indie.money/8453:0xF843C445E70c9F1d87A528C48DCc13C8e74Af7DE-agent-card.json
- http status
- 200
- content type
- application/json
- size
- 8,962 bytes
- sha256
- 57620a123efeb136a2cada39d1c0c7034d11c824ca353ad4fcab5f472bcd854f
- elapsed
- 261 ms
This run
reproducible- run
- c67de707-a82d-4589-8936-acd5a584c720
- chain
- base
- pinned block
- 52,281,733
- agents
- 98,319
- started
- 2026-10-07T06:00:13.662398Z
- finished
- 2026-10-07T19:18:37.899751Z
- checker
- 0.7.0 Β· 10238dd9af44dfa032e6578390569a413a6bb393
- spec commit
- 68fc6765761a10fb26f0692df21c8a6f9d12b1be
cargo run -p sweeper -- base # at block 52281733