temsor API
← Guides

Data sources and method: where every number comes from

Every source we read, how often we read it, what we keep, how we catch ourselves being wrong — and an explicit list of what we do not cover.

Updated 2026-08-09

An API that answers with a number is asking you to trust it. This page exists so you do not have to: it lists every source we read, how often we read it, what we store alongside each value, the checks that are designed to make us fail loudly rather than quietly — and, at the bottom, the things we do not have. That last section is the one worth reading first.

Sources

ArchiveSourceRead
Sanctions — six official lists US OFAC (SDN.XML) · UN Security Council consolidated · EU FSD consolidated · UK OFSI ConList · Switzerland SECO · Canada SEMA daily, 06:20 Europe/Istanbul
Exchange rates TCMB (Central Bank of the Republic of Türkiye) daily bulletin every business day, 15:45
Turkish fuel prices Distributor dealer price lists, 81 provinces × 7 products, back to 2009 daily, 06:20
LLM prices & lifecycle OpenRouter model catalogue (400+ models, 50+ providers) daily, 04:10
MCP tool surfaces Official Model Context Protocol registry, then each remote server's own tools/list daily, 03:20

What is stored with every value

A number on its own is worthless in an audit three years later. Every point in the time-series archive carries three extra fields:

Corrections are written in place rather than appended, so a late fix to a source does not leave two contradictory answers — but the observation date is preserved either way.

How we try to catch ourselves being wrong

A scraped table must prove its shape

Fuel prices are read from an HTML table. If the publisher reorders or renames a column, the naive scraper keeps working and starts writing the wrong number into the right field — and price data has no way back once it is wrong. So the column header is verified before any row is accepted; if the header is not what we expect, the job fails and writes nothing. A broken ingest is recoverable. A silently wrong one is not.

A response that violates its own schema is refunded

Every endpoint declares an output schema and the response is validated against it before it leaves the process. If a handler returns something that does not match, the call fails with output_contract_violation and the credits are returned automatically. You are never charged for an answer that did not keep its own promise.

Point-in-time answers admit their own limits

asOf screens against the lists as they stood on a past date. Our archive only goes back as far as we have been running — so if you ask for a date before it begins, you do not get a confident wrong answer. You get the earliest snapshot we hold plus an explicit warning saying so, and the coverage window is reported in the response.

The MCP index never calls anything

Indexing MCP servers means connecting to other people's infrastructure. The measurement boundary is hard-coded: only initialize and tools/list are ever sent — tools/call is never invoked, so indexing can never trigger an action on an indexed server. Requests are spaced per host rather than fired in parallel.

The archive is backed up because it cannot be rebuilt

Today's sanctions list can be downloaded by anyone. Last March's cannot — the sources publish the current state and overwrite it. That makes the daily snapshot the one asset here that money cannot re-create, so it is dumped nightly and copied to storage outside the server.

What we do not have

Read this before integrating. We would rather lose the sale than the trust.

Corrections

If a value here is wrong, that is a defect and we want it. Use the feedback endpoint or the address on the docs page; reports that include the request id are fastest to trace, because every response carries one.

Frequently asked

Where does the sanctions data come from?

Six official publishers, read directly and daily: US OFAC, the UN Security Council, the EU consolidated list, UK OFSI, Switzerland (SECO) and Canada (SEMA). The lists are free and public; what is sold is the reduction of six unlike XML schemas into one model, transliteration-aware matching, and the dated snapshot of each day.

Do you screen politically exposed persons (PEP)?

No. PEP data is a separate dataset and we do not hold it. Screening covers sanctions lists only.

How far back does the point-in-time (asOf) archive go?

Only as far back as we have been collecting, and the response tells you where that boundary is. Asking for an earlier date returns the earliest snapshot held together with an explicit warning rather than a confident wrong answer.

What happens if a source changes its format?

For scraped tables the column header is verified before rows are accepted; if it does not match, the ingest fails and writes nothing. A failed ingest is recoverable, a silently wrong one is not.

Does indexing MCP servers execute anything on them?

No. Only initialize and tools/list are sent. tools/call is never invoked, so indexing cannot trigger an action on an indexed server.

Endpoints used here

/v1/sanctions/screen

Open the reference, run it in the browser, no key required.

/v1/tr/fuel/prices

Open the reference, run it in the browser, no key required.

/v1/series/history

Open the reference, run it in the browser, no key required.

/v1/model/archive

Open the reference, run it in the browser, no key required.

/v1/mcp/index

Open the reference, run it in the browser, no key required.