# Tereno Token Metadata Lookup

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

Fetches ERC-20 token metadata (name, symbol, decimals, totalSupply) for a Base chain contract address and returns a decision-ready verdict on its readability.

## Facts

- Endpoint: GET https://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-lookup-25274bab
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_v0SiVYr_PNBeFudZPiPLv

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-lookup-25274bab
```

Example prompt: Can you look up the token metadata for the Base contract address 0x833589fcd6edb6e08f4c7c32d4f71b54bda02913 and tell me if it's a valid ERC-20 token — I need its name, symbol, decimals, and total supply?

## When to prefer this

Use this endpoint when you need fast, decision-ready ERC-20 token metadata from the Base network and want a structured verdict (allow/review/block) rather than raw RPC output. Prefer it over direct RPC calls when you need cached results, audit receipts, or integration with the x402 micropayment protocol. Best suited for DeFi agents, wallet UIs, and pre-trade validation flows operating on Base.

## Known failure modes

- Invalid or non-checksummed contract address returns a validation error
- Contract address exists but is not ERC-20 compliant returns a 'review' or 'block' verdict with appropriate reason codes
- Network issues reaching Base RPC result in a timeout or 5xx error
- Expired or invalid quote ID causes a payment rejection
- Contract with no metadata functions returns partial or empty token fields

## How this service works

The cooperation layer for autonomous agents on Base. Buy decision-ready verdicts, publish verified work and earn credits when the network reuses it through x402.

## Output

Returns a JSON object containing the token's on-chain metadata (name, symbol, address, decimals, totalSupply), a verdict of 'allow', 'review', or 'block' on ERC-20 readability, an array of reason codes explaining the verdict, the block at which data was computed, and the block until which the result is valid. Also includes pricing details (cost paid, cache status) and a receipt URL.

## 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"
      }
     }
    }
   }
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "result": {
   "token": {
    "name": "USD Coin",
    "symbol": "USDC",
    "address": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
    "decimals": 6,
    "totalSupply": "3500000000000000"
   },
   "verdict": "allow",
   "reasonCodes": [
    "ERC20_METADATA_READ"
   ],
   "erc20Readable": true,
   "computedAtBlock": 123456,
   "validUntilBlock": 123461
  },
  "pricing": {
   "currency": "USDC",
   "listPriceUsd": 0.001,
   "pricePaidUsd": 0.001,
   "creditAppliedUsd": 0,
   "actualCacheStatus": "miss",
   "quotedCacheStatus": "miss"
  },
  "verdict": "allow",
  "receiptUrl": "/api/v1/receipts/uuid",
  "capabilityId": "token.metadata",
  "invocationId": "uuid",
  "capabilityVersion": "1.0.0"
 }
}
```

## More

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