# Tereno Token Metadata

> Tereno Token Metadata is a paid API for AI agents from www.tereno.xyz, paid per call via x402, $0.03/call, status unknown (last checked 2026-09-15).

Reads a Base network ERC-20 token's name, symbol, decimals, and total supply from a contract address in a single cached call.

## Facts

- Endpoint: GET https://www.tereno.xyz/api/v1/capabilities/token.metadata/invoke
- Price: $0.03/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-15
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/tereno-token-metadata-1e89b4ef
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap__htZYAei0w03EwpWlDOiG

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability tereno-token-metadata-1e89b4ef
```

Example prompt: What's the name, symbol, decimals, and total supply of the Base token at contract address 0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA?

## When to prefer this

Use this endpoint when you need fast, cheap token metadata (name, symbol, decimals, total supply) for a known Base contract address without making raw RPC calls. Ideal for agents enriching transaction data, validating token addresses before interaction, or displaying human-readable token info. Prefer over raw blockchain RPC when you want caching, structured output, and explicit freshness guarantees. Use sibling endpoints like Contract Interface Detector if you also need to confirm which ERC standard is implemented, or Contract Guard if you need safety/risk signals.

## Known failure modes

- Invalid or non-checksummed address format returns a validation error
- Contract address does not exist on Base returns erc20Readable: false with relevant reasonCodes
- Contract exists but does not implement ERC-20 interface returns erc20Readable: false
- Proxy or non-standard token may return incomplete metadata with reasonCodes explaining the gap
- Stale cache near block boundary may return slightly outdated data until next block refresh
- Payment failure or missing x402 payment header returns HTTP 402

## How this service works

What token is this? Read a Base token's name, symbol, decimals and total supply in one cheap typed call, with block-level freshness and explicit limitations. Identity is shared across agents for 7 days while total supply is re-read on every call beyond the block window the answer was quoted for. Positive-sum by design: $0.03 cold, $0.02 when the token identity is already shared, $0.01 on a shared full answer — and the wallet that seeded it earns a share of every reuse.

## Output

Returns a result object with a token sub-object containing name, symbol, decimals, and totalSupply; a boolean erc20Readable indicating whether the contract is a valid readable ERC-20; an array of reasonCodes explaining any limitations; and a validUntilBlock integer indicating block-level freshness of the cached data. Also includes pricing details, a verdict (allow/review/block), a receiptUrl, and an invocationId.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "required": [
      "address"
     ],
     "properties": {
      "quote": {
       "type": "string",
       "description": "Optional single-use quote id."
      },
      "address": {
       "type": "string",
       "pattern": "^0x[a-fA-F0-9]{40}$",
       "description": "Base token contract address to read name, symbol, decimals and totalSupply from."
      }
     },
     "additionalProperties": false
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "required": [
      "capabilityId",
      "invocationId",
      "verdict",
      "result",
      "pricing",
      "receiptUrl"
     ],
     "properties": {
      "result": {
       "type": "object",
       "required": [
        "token",
        "erc20Readable",
        "reasonCodes",
        "validUntilBlock"
       ],
       "properties": {
        "token": {
         "type": "object"
        },
        "reasonCodes": {
         "type": "array"
        },
        "erc20Readable": {
         "type": "boolean"
        },
        "validUntilBlock": {
         "type": "integer"
        }
       }
      },
      "pricing": {
       "type": "object"
      },
      "verdict": {
       "enum": [
        "allow",
        "review",
        "block"
       ]
      },
      "receiptUrl": {
       "type": "string"
      },
      "capabilityId": {
       "const": "token.metadata"
      },
      "invocationId": {
       "type": "string"
      }
     }
    }
   }
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/tereno-token-metadata-1e89b4ef/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from www.tereno.xyz](https://www.zero.xyz/host/www.tereno.xyz/llms.txt)
