Contract
{
"type": "object",
"required": [
"q"
],
"properties": {
"q": {
"type": "string",
"maxLength": 100,
"minLength": 2,
"description": "Exact token ticker symbol to resolve (case-insensitive), like USDC or PEPE. NOT a contract address, trading pair, or fuzzy token name. Example: USDC."
},
"chain": {
"enum": [
"ethereum",
"base",
"bsc",
"arbitrum",
"solana",
"polygon",
"optimism",
"avalanche",
"fantom",
"tron",
"linea",
"mantle",
"blast",
"gnosis",
"zksync",
"scroll"
],
"type": "string",
"description": "Restrict resolution to one supported chain. Omit to search all supported chains. Example: solana."
},
"limit": {
"type": "integer",
"default": 20,
"maximum": 100,
"minimum": 1,
"description": "Results per page. Example: 20. Defaults to 20."
},
"offset": {
"type": "integer",
"default": 0,
"maximum": 9007199254740991,
"minimum": 0,
"description": "Pagination offset. Example: 0. Defaults to 0."
}
},
"additionalProperties": false
}{
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"chain": {
"type": "string",
"description": "Chain the candidate contract lives on, e.g. 'ethereum', 'solana'."
},
"symbol": {
"type": "string",
"description": "Echoes the requested ticker symbol, uppercased."
},
"address": {
"type": "string",
"description": "The candidate contract address on that chain. The same ticker symbol can return more than one address on the SAME chain -- observed on the USDC fixture (two distinct fantom addresses, two distinct solana addresses, two distinct zksync addresses) -- confirm the right one against another source rather than trusting a single candidate blindly."
},
"decimals": {
"type": "integer",
"description": "Token decimal precision on that chain."
},
"volume_usd": {
"type": "number",
"description": "Recent trading volume in USD. Observed as 0 on every candidate in the only populated fixture captured; whether a nonzero value ever appears is unconfirmed."
}
},
"additionalProperties": false
},
"description": "One entry per contract address candidate matching the requested ticker symbol. Empty when no candidate was found on any supported chain (observed on the zero-result fixture)."
},
"meta": {
"type": "object",
"properties": {
"limit": {
"type": "integer",
"description": "Echoes the requested (or defaulted) limit."
},
"total": {
"type": "integer",
"description": "Total matching candidates available for the query."
},
"cached": {
"type": "boolean",
"description": "Whether this response was served from the provider's cache."
},
"offset": {
"type": "integer",
"description": "Echoes the requested (or defaulted) offset."
},
"empty_reason": {
"type": "string",
"description": "A human-readable explanation of why zero candidates were found, including the list of chains searched and a pointer to a broader project-lookup endpoint. Observed only on the zero-result fixture; absent whenever at least one candidate is returned."
}
},
"additionalProperties": false
}
},
"description": "The token search response, as returned at routing.responseResultPath ($.output).",
"additionalProperties": false
}Pricing
Every real charge, itemised. A model that quietly omits one is a slow financial leak, so nothing here is rolled up, and a charge that only applies to some inputs says so rather than being added in.
Prices in this catalog are the provider's own list price, not your bill: Omnial MCP charges provider cost plus a platform markup on top, so what you are charged is higher than the figure shown. For the exact amount a specific call will cost, run omnial_execute with dry_run: true; that number includes the markup and is what we hold while the call runs. It is a quote, not a cap on the charge.
| Charge | Rate |
|---|---|
Per call Flat, regardless of what comes back | $0.00819 |
- Cost basis
- Not recorded
This tool's catalog entry does not record how its final bill is determined, so we will not tell you whether its cost is fixed before the call or reported by the provider afterwards. Either way what is held is a quote rather than a cap: you are charged what the call actually costs, bounded at 2x the quote.
- Updated
- Sep 23, 2026
