# Ondo Global Markets

> Issuer catalog, exact chain deployments, display prices, historical candles and corporate actions.

Ondo data is available through the Philidor API and the [Ondo catalog](https://philidor.io/ondo). The catalog reconciles the authenticated issuer metadata with Ondo's official address registry, including entries present in only one source. The issuer credential remains on the backend.

These endpoints provide issuer data. Catalog membership does not establish a reviewed Philidor assessment. Prices are display-only and are not oracle or risk-scoring inputs. For core USDY and OUSG coverage, use the [RWA endpoints](/docs/api-reference/rwa).

## Catalog

```http
GET /v1/ondo/global-markets?page=1&limit=50&search=Tesla
```

| Parameter | Default | Meaning                                                         |
| --------- | ------- | --------------------------------------------------------------- |
| `page`    | `1`     | Positive safe integer                                           |
| `limit`   | `50`    | Page size, from 1 to 100                                        |
| `search`  | omitted | Name, token symbol or underlying ticker; at most 100 characters |

The response contains `data`, pagination `meta`, and `context`. Preserve the context when storing or forwarding results. `sourcePresence` distinguishes `api_and_csv`, `api_only` and `csv_only`. Each asset includes its exact deployments, market freshness and any identity conflict.

## Asset

```http
GET /v1/ondo/global-markets/SPYon
```

Use the exact, case-sensitive catalog symbol. The response contains `data` and `context`, including issuer display observations, underlying exposure, portfolio constituent symbols, notices and exact deployments.

An `assessmentUrl` is an exact chain/address lookup, not a claim that the deployment has a reviewed score. A null link means that chain is not supported by that assessment route. Do not transfer an assessment between deployments or from constituents to a portfolio. Portfolio constituent symbols do not establish current weights.

## Pair activity and session limits

Catalog and asset records also contain:

- `tickerMarket`: last pair price in `targetCurrency` per unit of `baseCurrency`, plus 24-hour volume in each currency. `volumeScope: issuer_pair` does not represent all exchange trading. Numeric source values are serialized as decimal strings without adding precision. Ondo supplies no observation timestamp; `sourceUpdatedAt` is null and `collectionFreshness` describes only retrieval age.
- `sessionLimits`: theoretical per-user ceilings for each of the five sessions. `maxAttestationCount` caps concurrent unexpired, unexecuted attestations; `maxActiveNotionalValue` caps their outstanding USD notional. These are static configuration values, not remaining capacity or global liquidity. `sourceUpdatedAt` dates the configuration change, so an old configuration timestamp alone is not a stale observation. `sourceClock` identifies missing or future timestamps.
- `tradingContext`: a conservative combination of global sessions, token session support, static tradability and issuer notices. Conventional closure can coexist with an open off-hours session. Active pauses and limits remain restrictions; unresolved notices, identity conflicts, stale observations or collection failure prevent an open result. Portfolios require additional checks for their own schedule and constituent closures.

`session_reported_open` is an issuer-data summary, not account eligibility, available execution capacity or a quote. `basis` is always `issuer_reports_not_execution_eligibility`. Dynamic credential-specific limits remain private. Missing ticker or session records are `not_reported`; CSV-only entries are `not_supported`.

## History and supplemental data

```http
GET /v1/ondo/global-markets/SPYon/data?interval=1day&range=all
```

| Interval                | Supported ranges                   |
| ----------------------- | ---------------------------------- |
| `1min`, `5min`, `15min` | `1day`                             |
| `1hour`, `4hour`        | `1month`                           |
| `12hour`                | `3month`                           |
| `1day`                  | `3month`, `6month`, `1year`, `all` |

The default window is `1hour` / `1month`. Other combinations return `400`.

The response includes:

- `ohlc`: token and underlying candles for the requested window, with latest-candle timestamps. A missing underlying series does not remove available token history.
- `dividends`: underlying dividend yield, frequency, last cash amount and payment date. Yield is a decimal (`0.05` means 5%), and is not the token's distribution yield.
- `sharesMultiplier`: historical multiplier values and change timestamps.
- `tokenInfo`: supply for each exact deployment, in token units and with `supplyScope: single_chain`. Supply is not USD value or a holder census.

Decimal values remain strings. The current market's `priceChangePct24h` is already in percentage points; do not multiply it by 100. The dividend yield uses the decimal convention described above.

## Availability and timestamps

`available` means that a family was collected, `unavailable` means it could not be collected, and `not_supported` means the issuer endpoint does not support that entry or network. Token info can also be `not_reported`: the issuer returned a successful response with no token record. None of these absent states means zero.

`context.source.csvOrigin` identifies a persisted or bundled official CSV baseline. The dedicated daily collector archives the issuer CSV and stages new identities; removals or changed prior addresses are quarantined for review. `csvCollectionStatus` and `csvLastAttemptAt` expose collection failures independently of `csvFreshness`. A fallback never renews the original retrieval time.

`fetchedAt` describes collection time. Source observation timestamps, `sourceClock`, market freshness, CSV freshness and latest-candle times describe different aspects of age. A recent fetch does not make an old observation current. Token supply has no issuer observation timestamp; its `sourceUpdatedAt` remains null.

During an issuer outage, a bounded last-good catalog may be returned with its original timestamps and `context.upstreamStatus: unavailable`. If there is no usable catalog, the API returns `503`, not an empty list. Supplemental collection uses bounded process-local caching and concurrency; capacity exhaustion returns `503` with `Retry-After`. Clients should back off rather than fan out across the full catalog.

Unknown symbols return `404`. Conflicting identities prevent supplemental collection with `409`. Public responses use `Cache-Control: no-store`; normal API authentication and rate limits still apply.

Credential-specific trading limits and transaction-authorizing operations are not part of these public responses. Session labels alone do not establish that a user can execute a trade.

## Latest stream observations

```http
GET /v1/ondo/global-markets/SPYon/stream
```

This endpoint reads the latest retained price and minute-OHLC observations. It does not open an issuer subscription. The response contains `data` and the same catalog `context`. Prices and OHLC values remain decimal strings. `sourceTimestampNs` preserves the issuer nanoseconds; `sourceAt` is its millisecond-resolution display timestamp. OHLC source time is the minute bucket start, and `isClosed` distinguishes final from partial candles.

Each family reports `status`: `missing`, `fresh`, `stale`, `future`, `conflicted`, `disconnected` or `identity_conflict`. `fresh` means both source and receipt clocks are within 120 seconds at `evaluatedAt`, with an active collector and an observation from its current session. It does not establish continuous coverage or execution availability. Retained stale/disconnected values remain labeled; future, conflicting or identity-mismatched values are withheld as null. Missing data is not zero and does not prove collection is disabled. Source and receipt age are separate fields; an active collector does not make an old observation fresh.

A current issuer catalog is required to bind observations to an exact symbol. Conflicting catalog identity returns `409`, unavailable identity or storage returns `503`, and an unknown symbol in a complete inventory returns `404`. Responses are not cached. The asset page shows a snapshot with its check time; reload for another check. Stream gaps are not backfilled, and this endpoint does not replace historical candles.

## CLI and MCP

```bash
philidor ondo list --search Tesla --json
philidor ondo asset SPYon --json
philidor ondo stream SPYon --json
philidor ondo data MAG7Xon --interval 1day --range all --json
```

JSON preserves the full response envelope. Table and CSV detail output summarize availability; use JSON for complete observations and histories. The standalone CLI sends these public requests anonymously and needs no Ondo credential.

MCP clients can use `list_ondo_assets`, `get_ondo_asset`, `get_ondo_asset_stream` and `get_ondo_asset_data`. These tools return the public response and its context, using the existing Philidor client identity and rate limits. See [MCP tools](/docs/mcp/tools).