# get_as_of — the issuer record, as of any date, with the receipt.

As Of · on Data Vintage · Replay

- 6 sealed years (2021 → 2026)
- 1 markets sealed (us)
- 9 receipts written (get_as_of reads, receipted)

read at render: the shelf ledger (shelf/state.json, tools.replay) and the gate's receipt counter · ledger 2026-10-28

get_as_of is the issuer record as it stood on a date: an issuer by ticker, ISIN or LEI plus a date returns the signed record of that day — every field with its source and read date, the sealed disclosure lines of the market-year up to that date — signed by the node of the issuer's market and receipted, so a backtest can show what it read and when. Nothing is restated and nothing is filled backwards: before the record existed the answer says before_record; in a market-year not yet sealed it says not_sealed and names the earliest sealed date.

## 1 What it is

- **1.1** Built specifically so an AI agent can read the issuer record as it stood on any date since 2021, with the proof that it read it.
- **1.2** Any agent gets in; it pays in the call. A firm licenses the vintage.
- **1.3** Sealed years, 2021 forward, done. Each market lights as its vintage seals.

## 2 What it is not

Not a price. Not a terminal. Not a news feed. Not a restated dataset.

## 3 The tool

| field | specification |
| --- | --- |
| Input | issuer (ticker, ISIN or LEI) · as_of (ISO date) · market (optional; the owning node resolves it if absent) |
| Output | The signed issuer record version whose validity covers as_of: every field with value, source page, read date and effective date; version id; node signature and key id (kid); the RCO receipt (id, hash) |
| Receipt | Written on every cleared read under the Allooloo writer key; the receipt id is returned in the answer. |

| typed error | when |
| --- | --- |
| unknown_issuer | no issuer on the register for this identifier |
| before_record | the record did not exist on that date; nothing is inferred backwards |
| not_sealed | the market-year is not yet sealed; the answer names the earliest sealed date (and, in the current year, the date it is sealed through); no partial vintage is served as final |
| not_found | the market or record asked for is not on this door |

- **3.1** One call: 
```
{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_as_of","arguments":{"issuer":"NASDAQ:MSFT","as_of":"2023-03-15"}}}
```
 at `https://mcp.getasof.ai/mcp` .
- **3.2** Nothing is answered from memory. Identity fields answer on the read-date clock: a field is held only if the record had read it by the date asked; the disclosure lines are the sealed vintage — public filings dated on or before that date, each with its source and read date, each signed.
- **3.3** Paying for a read: every read is free unless the agent asks for the offer (header `x402-pay: 1`); the door then answers HTTP 402 with a signed offer and the same call carries the payment and the receipt — [data-paygo.ai](https://data-paygo.ai/).

## 4 The edge

Point-in-time fundamentals exist as premium products elsewhere; replay exists on terminals. "As of a date" alone is not the edge. The edge is five things the record already has by construction, which no feed vendor built:

| property | what it means for a quant |
| --- | --- |
| Two clocks | Every fact carries when it was true in the world (effective) and when the record learned it (read date). get_as_of answers on the second clock — what was knowable that day. That is the only honest basis for a backtest; most feeds have one clock and overwrite. |
| Append-only, signed versions | Nothing is restated in place. A change is a new signed version; the old one is kept. The as-of answer is a lookup, never a recomputation, so it is the same answer forever. |
| Per-field provenance | Source page and read date on every field. A regulator's restatement and our re-read are distinguishable. |
| Receipts (RCO) | Every read writes an RCO-10060 receipt chaining the answer hash. The firm can prove what a model relied on. |
| Agent-native, open | MCP door, verb-object tool name, human page free to read, x402 to pay. Built for the reader that is actually arriving — an agent — not a human with a seat. |

Others sell point-in-time data; Allooloo sells point-in-time proof.

## 5 The proof

- **5.1** Each get_as_of read is cleared and receipted: subject, jurisdiction, rule version, the stated time of the read, the hash of the signed answer, and the link to the previous receipt in the chain. The door signs the receipt; the producing node signs the content under the record key.
- **5.2** verify_receipt is public. Anyone holding the receipt and the answer can confirm the answer is the one that was served, unaltered.
- **5.3** A firm's own auditor key (issue_auditor_key) lets model-risk, internal audit or an external auditor list and verify every as-of read behind a model — the signed input list of a backtest, replayable to any date.
- **5.4** The quant's artefact is therefore not a CSV. It is a receipt chain: a signed, chained statement of every record the model read, as of when, and what it said. Model validation, MiFID II record-keeping and SR 11-7 style reviews want exactly this and have never been able to buy it.
- **5.5** KYP the facts · Issuerwire the news · RCO the proof.

## 6 Access

Any MCP client that speaks Streamable HTTP:

```
{
  "mcpServers": {
    "getasof": {
      "type": "http",
      "url": "https://mcp.getasof.ai/mcp"
    }
  }
}
```

Claude Code:

```
claude mcp add --transport http getasof https://mcp.getasof.ai/mcp
```

- **6.1** Door: `https://mcp.getasof.ai/mcp` — the same router as `https://mcp.getissuer.ai/mcp` : same index, no second copy of the history; read-only, no authentication, no account. get_as_of is routed to the node of the issuer's listing; the node signs and receipts; the router forwards.
- **6.2** Agent Card (A2A): [`https://agent.getasof.ai/.well-known/agent-card.json`](https://agent.getasof.ai/.well-known/agent-card.json) .
- **6.3** Tools: `get_as_of`, with `resolve_issuer` · `list_events_since` · `list_nodes` on the same door. list_events_since stays where it is; get_as_of reads the same history.
- **6.4** Regional doors: every node door answers get_as_of for its own market (`mcp.<market>-cm-kg.ai/mcp`, `<market>.eu-cm-kg.ai/mcp`).
- **6.5** Registry entry: `registry.modelcontextprotocol.io · io.github.allooloo/getasof`.

## 7 Lanes

| lane | what | where |
| --- | --- | --- |
| Agent, per read | x402 on the existing per-call till. USDC and Open USD on Base. | data-paygo.ai |
| Firm, licence | Data Vintage enterprise licence. | data-licence.ai |
| Audit | issue_auditor_key — the firm's own key to list and verify its receipt chain. | rco-records.ai |

## 8 Data path

- **8.1** Store: the Replay store under [Data Vintage](https://data-vintage.ai/) — sealed market-years, 2021 forward. get_as_of is a read over it. No new store, no second copy of the history.
- **8.2** Index: the router holds an index only; the record is served by the owning node's regional door in its own jurisdiction. getasof.ai routes the same way.
- **8.3** Nightly: the OpsAgents re-slate the trading day; a sealed year is immutable thereafter. Receipts chain per writer.
- **8.4** Two clouds: Azure primary, AWS warm standby ([Data Ark](https://data-ark.ai/)). The vintage and the receipt chain are both in the ark.
- **8.5** Markets light one by one as each vintage seals (us first, then the roster). The door answers not_sealed until then rather than guessing.

## 9 Markets

| node | market | sealed vintage | state |
| --- | --- | --- | --- |
| ae-cm-kg | United Arab Emirates | not sealed yet — the door answers not_sealed | live |
| at-cm-kg | Austria | not sealed yet — the door answers not_sealed | live |
| au-cm-kg | Australia | not sealed yet — the door answers not_sealed | live |
| be-cm-kg | Belgium | not sealed yet — the door answers not_sealed | live |
| bm-cm-kg | Bermuda | not sealed yet — the door answers not_sealed | live |
| br-cm-kg | Brazil | not sealed yet — the door answers not_sealed | live |
| ca-cm-kg | Canada | not sealed yet — the door answers not_sealed | live |
| ch-cm-kg | Switzerland | not sealed yet — the door answers not_sealed | live |
| cz-cm-kg | Czech Republic | not sealed yet — the door answers not_sealed | live |
| de-cm-kg | Germany | not sealed yet — the door answers not_sealed | live |
| dk-cm-kg | Denmark | not sealed yet — the door answers not_sealed | live |
| es-cm-kg | Spain | not sealed yet — the door answers not_sealed | live |
| fi-cm-kg | Finland | not sealed yet — the door answers not_sealed | live |
| fr-cm-kg | France | not sealed yet — the door answers not_sealed | live |
| gr-cm-kg | Greece | not sealed yet — the door answers not_sealed | live |
| hk-cm-kg | Hong Kong | not sealed yet — the door answers not_sealed | live |
| ie-cm-kg | Ireland | not sealed yet — the door answers not_sealed | live |
| in-cm-kg | India | not sealed yet — the door answers not_sealed | live |
| it-cm-kg | Italy | not sealed yet — the door answers not_sealed | live |
| je-cm-kg | Jersey | not sealed yet — the door answers not_sealed | live |
| jp-cm-kg | Japan | not sealed yet — the door answers not_sealed | live |
| kr-cm-kg | South Korea | not sealed yet — the door answers not_sealed | live |
| ky-cm-kg | Cayman Islands | not sealed yet — the door answers not_sealed | live |
| lu-cm-kg | Luxembourg | not sealed yet — the door answers not_sealed | live |
| mx-cm-kg | Mexico | not sealed yet — the door answers not_sealed | live |
| nl-cm-kg | Netherlands | not sealed yet — the door answers not_sealed | live |
| no-cm-kg | Norway | not sealed yet — the door answers not_sealed | live |
| pl-cm-kg | Poland | not sealed yet — the door answers not_sealed | live |
| pt-cm-kg | Portugal | not sealed yet — the door answers not_sealed | live |
| se-cm-kg | Sweden | not sealed yet — the door answers not_sealed | live |
| sg-cm-kg | Singapore | not sealed yet — the door answers not_sealed | live |
| tw-cm-kg | Taiwan | not sealed yet — the door answers not_sealed | live |
| uk-cm-kg | United Kingdom | not sealed yet — the door answers not_sealed | live |
| us-cm-kg | United States | 2021 → 2026 | live |

source: list_nodes at `https://mcp.getissuer.ai/mcp` and the shelf ledger, read at render

## 10 Machine kit

- **10.1** [`/llms.txt`](/llms.txt) · [`/index.md`](/index.md) · [`/facts.json`](/facts.json) · [`/.well-known/agent-card.json`](/.well-known/agent-card.json) · [`/.well-known/mcp.json`](/.well-known/mcp.json) · [`/.well-known/x402.json`](/.well-known/x402.json) · [`/.well-known/security.txt`](/.well-known/security.txt) · [`/sitemap.xml`](/sitemap.xml) · [`/robots.txt`](/robots.txt) · [`/mcp.json`](/mcp.json)
- **10.2** Forwards here (301, whole zone): getasof.com, getasof.org, getasof.io.
## Contact Us
(contact form: https://allooloo.io/#contact)

---
Allooloo Technologies Corp. · https://getasof.ai/ · public-record only · version 2026-11-05.2
