Skip to content
FREE TOOL · PORTFOLIO SNAPSHOT

A whole portfolio of risk, in one pass

Lenders, insurers, pool issuers: paste a list of CVINs, one per line (a CVIN is a public identifier, not a serial number). Get registry status, identity level, data composition and encumbrance signals per device — plus the short list of what needs attention now. Up to 200 devices per batch, free.

This list is not stored. The server computes and returns; nothing is written to disk, linked to your IP, or rolled into any report. A CVIN is already public (anyone can look up a single device), so unlike serial numbers there is nothing to hash — but your portfolio composition is commercially sensitive, and we do not collect it.
01

What this page is not

A photo, not a monitor

It ends when you close the tab

What you see is a photograph of this moment. If a device goes dark tomorrow, or gets pledged a second time the day after, this page will not tell you. Knowing at the moment it happens is what the subscription is: periodic signed verification, liveness alerts, lien-change webhooks, $0.60/device/month. Fee schedule.

Not a due-diligence report

Unsigned, unnumbered, not for the file

Lienholder names, principal amounts and contract references sit behind the risk subscription. A numbered, ed25519-signed report you can hand to an auditor is $2/device. This page only tells you whether that report is worth buying.

No verdict

Facts, not scores

No risk score, no weighted total. A weighted number cannot be independently checked and nobody should lend on one — so you get verifiable facts, and the verdict stays yours.

02

How to read the exceptions

Unregistered: no record at all. That is not "no risk found", it is "cannot be assessed" — you are taking collateral nobody can trace.
No real observation: records exist, but all of them are demo seeds or test writes. That history cannot be relied on.
Stale / dormant: last observation 30 / 90+ days ago. When a device stops talking, nobody knows whether it is still on the rack.
Duplicate pledge (real): two or more distinct lenders hold active liens at the same time — the category that warrants a phone call today.
Duplicate pledge (seed only): the flag rests entirely on launch-time demo liens. Shown in grey, not red: it proves the pipe works, not that the machine is in trouble.

03

After the snapshot

Stay watched

Portfolio monitoring

Periodic signed verification, liveness alerts, lien-change webhooks — $0.60/device/month. API side: POST /v1/watch (a $10/30-day risk key is self-serve).

For the file

Signed report per device

Numbered, signature-verifiable reports at $2/device; batch with cover summary and monthly risk reports goes through the enterprise lane.

Into your own stack

One call, not 200

This page is built on POST /v1/resolve/batch: up to 200 devices per call, returning a summary, an exception list and per-device detail. Same aggregation as this page — one portfolio should not produce two different answers in two systems.

04

What the paid layer actually does

Monitoring cannot rest on "we will keep an eye on it". The table below is also machine-readable (GET /v1/watch/capabilities) — and you can fire it yourself before subscribing.

EventWhen it firesStatus
new_observationA new observation lands on a watched device (any type)live
lien.createdSomeone records a lien on the device — a second lender means duplicate pledgelive
lien.releasedLien released (original record kept, release appended)live
liveness.gapNo observation for 30 days (precursor to going dark)live
liveness.dormantNo observation for 90 days — declared dormantlive
asset.relocated · attestation.stopped · spec.conflictRelocation / attestation stopped / spec conflictnot yet — subscribing is rejected
Why list what is not built: those three are in the spec but not wired. Subscribing to them is rejected outright (409) rather than accepted-and-never-fired — the worst kind of promise, because the customer believes an alert is on its way.
Verify

Every delivery is signed

ed25519 over timestamp + "." + raw body, public key published in capabilities. A receiver can prove the alert came from us — not from anyone who merely knows the callback URL.

Self-test

Fire it before you pay

POST /v1/watch/test sends one test event immediately — no device quota, no commitment to $0.60/device first. Whether the pipe works should be known before payment.

Delivery log

You can check what was sent

Every attempt is logged: GET /v1/watch/deliveries with status, error, latency and success rate. Failures retry 3 times (immediate / 30s / 5min) with the same delivery id — dedupe on it so one blip does not become two alerts.

Billing

You can recompute the bill

$0.60/device/month is not a slogan: GET /v1/watch/usage?month=YYYY-MM returns device-days, amount and delivery counts per subscription (the bill doubles as a receipt for service delivered). The rule is fixed: UTC calendar days, partial day counts as one, daily rate = monthly ÷ 30. Anyone with created_at / deactivated_at can recompute the same figure. Deactivating never erases the record — usage and delivery history stay queryable. And when you want to pay, there is a place to pay: POST /v1/watch/usage/settle settles the bill on-chain for its current balance (x402 · USDC), every payment receipt visible in the statement.

Two things must be said plainly: ① metering is live — the figures above can be computed and independently rechecked today; ② automatic charging is not connected: nothing is debited from your card or wallet, and no direct-debit authorization is ever requested. When you do want to settle: POST /v1/watch/usage/settle pays the current balance on-chain (x402 · USDC on Base); no wallet? the old path still works — email us for a formal invoice (bank transfer or USDC), answered within one business day.