ERC-20 Token Metadata
by Mythos Agent Toolkit · $0.002 / call
Pay-per-call MCP tool that reads an ERC-20 contract and returns its canonical metadata: name, symbol, decimals and total supply, resolved directly on-chain for Base, Ethereum or Polygon. Use it to turn a raw contract address into something a user or agent can reason about, to verify a token is what a label claims before transacting, or to normalise a portfolio. Tool: token_meta, argument addr=0x… (required) and optional chain — $0.002 USDC per call settled on Base via x402, no API key and no signup. Returns {address, chain, name, symbol, decimals, totalSupply}. Read-only; never approves and never moves funds.
Reported by this server's own tools/list, refreshed automatically.
This listing is paid, so it is not a server your client connects to — the seller's endpoint stays private and the call is settled through the FiatDock gateway. Install FiatDock once, then invoke this listing by id.
1. Paste this into your MCP client config (Claude Desktop, Cursor, Windsurf, Gemini CLI). Click the block to select all, then copy.
{
"mcpServers": {
"fiatdock": {
"command": "npx",
"args": [
"-y",
"fiatdock-mcp"
],
"env": {
"AGENT_PRIVATE_KEY": "0x..."
}
}
}
}
Replace 0x... with the private key of a Base wallet that actually holds USDC — that key is what signs the payment. Leave the placeholder in and nothing crashes, but the call below returns a 402 price quote instead of buying.
2. Then have your agent call:
call_service({ id: "svc_f636a681-c447-45d8-9edf-96122610a19e", args: { … } })
Listing id: svc_f636a681-c447-45d8-9edf-96122610a19e · networks: base · paid per call via x402 (100% to the seller — FiatDock takes 0% of this listing's calls right now, and the buyer makes a single x402 payment)
Not sure what args to send? get_service({ id: "svc_f636a681-c447-45d8-9edf-96122610a19e", includeSchemas: true }) returns the argument names and types — free, and it is the only way to get them.
No FiatDock package needed: POST https://fiatdock.com/s/svc_f636a681-c447-45d8-9edf-96122610a19e with the tool's arguments as a JSON body. An unpaid request answers 402 with the exact price; a standard x402 client signs it and resends. Node, with the official x402 packages:
// npm i @x402/fetch @x402/evm viem
import { wrapFetchWithPaymentFromConfig } from "@x402/fetch";
import { ExactEvmScheme } from "@x402/evm";
import { privateKeyToAccount } from "viem/accounts";
const pay = wrapFetchWithPaymentFromConfig(fetch, {
schemes: [{ network: "eip155:*", client: new ExactEvmScheme(privateKeyToAccount(process.env.AGENT_PRIVATE_KEY)) }],
});
const r = await pay("https://fiatdock.com/s/svc_f636a681-c447-45d8-9edf-96122610a19e", {
method: "POST",
headers: { "content-type": "application/json" },
body: JSON.stringify({ /* the tool's arguments */ }),
});
console.log(r.status, await r.text());
Argument names and types: GET https://fiatdock.com/v1/marketplace/services/svc_f636a681-c447-45d8-9edf-96122610a19e?include=schemas (free). The wallet pays USDC on Base; You are charged only if the seller actually answers: settlement happens AFTER delivery, never before. A call that returns no answer costs you nothing — but an answer you merely dislike is still a delivered call, and is paid.
Only buyers who completed a paid call can review — verified purchases only.