Build

Evaluate it from a call, not from this page.

Four reads answer without a key, without an account and from someone else's origin. A record only one party can fetch is not a record, so the reads that prove the claim are the ones that need no permission to make.

1,731,748 observations behind these reads 146,785 subjects ledger observed 2026-10-10T00:09:33.350Z

What the decision rests on today

A marketing page about a data product.

Every one of these is believed because of who supplied it, and none of them can be checked by the engineer who has to depend on it.

the page

A page describes coverage. It never says where the coverage stops, because nobody writes that part down.

the sandbox

A sandbox is fixture data shaped to answer well. It tells you nothing about the corpus behind it.

the key

An evaluation that starts with a sales call and a key is an evaluation of the sales call.

What oddly puts on the record

Four reads. No key. Fetchable from your page, not only from ours.

Cross-origin on purpose: a receipt only our own origin can read proves nothing to anyone else.

curl -s https://myoddly.com/api/public/corpus-stats

curl -s https://myoddly.com/api/public/corpus-map

curl -s https://myoddly.com/api/public/observation

curl -s https://myoddly.com/api/public/receipt/corpus

counts

What the estate has written down, with the newest observation stamp behind the counts and the read stamp kept separate from it.

coverage

Where the record reaches and where it stops. Subjects that cannot be placed are counted and named by class rather than dropped.

one row

One observation end to end: both clocks, the gap between them, the hash of the row before it, and the day root it folds into.

The verbs

Observe. Seal. Publish. Anchor.

The same four on every surface. A product here is the record read for one decision, never a second machine.

observe

Read the source as it is published, and write down both clocks.

seal

Hash the row with its predecessor, so no receipt can move without every later one changing.

publish

Fold the day's receipts into one root and put it where anyone can read it.

anchor

Submit the root to a chain we do not run. From then on, checking us does not involve us.

One call with no key, and what it returned

This response was fetched by your browser, not captured by ours.

curl -s https://myoddly.com/api/public/observation

Make the same call and you will get the same shape, with whatever the ledger wrote most recently in it.

day root
53e09c73262ac668f4b36f1cab43f32509b0a24c4eca4237ef7ed205d028e508
anchored in block
970,446

A row above that the call did not answer for you shows nothing: this page would rather leave it out than print a value nobody fetched. The generated reference and the machine-readable contract for the keyed platform interface live at the developer reference and are not restated here.

The MCP server

Add the record to an agent by its address. No key, no account.

https://myoddly.com/api/public/mcp

Streamable HTTP, stateless and POST only. Paste the address into any MCP client that adds a server by URL. There is no key to issue and no sign-in, so there is no authentication step to configure. Every tool reads; none of them writes.

curl -s https://myoddly.com/api/public/mcp -H 'content-type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

record_subject_history
One subject's change history and current state, with both clocks and the receipt hash of every row. Takes subject_key.
record_verify_receipt
Recomputes one receipt end to end: its hash, the link to the row before it, its day root and that root's anchor. Takes receipt_hash.
record_answer
The newest observed value of one attribute of one subject, with its source, its receipt and its scope. Takes subject_key and attribute.
benchmark_categories
The product categories the commerce corpus covers, with how many observations back each. Call it first. Takes nothing.
benchmark_lookup
Observed price and assortment figures for one category: the median and the p25 to p75 band, with sample size, currency and scope. Takes category.
store_audit
The free storefront audit against a public domain: the platform, the checks that failed, and the catalogue against observed category norms. Takes url.

The full descriptions, input schemas and rates are what the server itself returns from tools/list, and the same catalogue is published as the server descriptor. An empty answer is an honest one: a subject or category the record has not observed comes back empty rather than estimated.

Read it. Build on it. Depend on it.

  1. Read it

    Free, with attribution.

  2. Build on it

    By the meter. Developers

  3. Depend on it

    By contract.

Talk to us