# Get Token Details — Codex

> Fetches current price, market cap, volume, liquidity, and metadata for one or more specific tokens by contract address. Use this when you already know the token address(es) and want to look up their current data. To discover tokens by name…

- Key: `codex-get-token-details`
- Type: Action (Read-only)
- Version: 0.0.2
- App: Codex (`codex`) — https://pipedream.com/apps/codex.md
- This page (HTML): https://pipedream.com/apps/codex/actions/get-token-details
- Hints: read-only · open-world
- Source: https://github.com/PipedreamHQ/pipedream/blob/master/components/codex/actions/get-token-details/get-token-details.mjs

## Description

Fetches current price, market cap, volume, liquidity, and metadata for one or more specific tokens by contract address. Use this when you already know the token address(es) and want to look up their current data. To discover tokens by name or ranking instead, use **Filter Tokens**. Use **Get Networks** first to resolve the numeric `networkId` if needed. Accepts a JSON array of `{address, networkId}` objects — example: `[{"address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", "networkId": 1}]`. [See the documentation](https://docs.codex.io/api-reference/queries/tokens)

## Props

| Prop | Type | Required | Description |
|---|---|---|---|
| `tokens` | `string` | Yes | JSON array of token inputs. Each entry must have address (contract address) and networkId (numeric chain ID). Example: [{"address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", "networkId": 1}]. Use Get Networks to find the networkId for a chain. |

## Run it

**MCP**

```ts
import { Client } from "@modelcontextprotocol/sdk/client/index.js"
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js"
import { PipedreamClient } from "@pipedream/sdk"

const pd = new PipedreamClient({
  projectId: process.env.PIPEDREAM_PROJECT_ID!,
  clientId: process.env.PIPEDREAM_CLIENT_ID!,
  clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
  projectEnvironment: "production",
})

const accessToken = await pd.rawAccessToken

const transport = new StreamableHTTPClientTransport(
  new URL("https://remote.mcp.pipedream.net/v3"),
  {
    requestInit: {
      headers: {
        Authorization: `Bearer ${accessToken}`,
        "x-pd-project-id": process.env.PIPEDREAM_PROJECT_ID!,
        "x-pd-environment": "production",
        "x-pd-external-user-id": "{external_user_id}", // any stable ID for this user in your system
        "x-pd-app-slug": "codex",
      },
    },
  },
)

const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)

const { tools } = await mcp.listTools()

// listTools() hands your model this tool's input schema, so it can
// fill the arguments itself:
const result = await mcp.callTool({
  name: "codex-get-token-details",
  arguments: {
    tokens: "Tokens",
  },
})
```

**TypeScript**

```ts
import { PipedreamClient } from "@pipedream/sdk"

const pd = new PipedreamClient({
  projectId: process.env.PIPEDREAM_PROJECT_ID!,
  clientId: process.env.PIPEDREAM_CLIENT_ID!,
  clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
  projectEnvironment: "production",
})

const result = await pd.actions.run({
  id: "codex-get-token-details",
  externalUserId: "{external_user_id}", // any stable ID for this user in your system
  configuredProps: {
    codex: { authProvisionId: "apn_xxxxxxx" },
    tokens: "Tokens",
  },
})

console.log(result)
```

**cURL**

```bash
curl -X POST https://api.pipedream.com/v1/connect/{project_id}/actions/run \
  -H "Content-Type: application/json" \
  -H "X-PD-Environment: production" \
  -H "Authorization: Bearer {access_token}" \
  -d '{
    "external_user_id": "{external_user_id}",
    "id": "codex-get-token-details",
    "configured_props": {
      "codex": { "authProvisionId": "apn_xxxxxxx" },
      "tokens": "Tokens"
    }
  }'
```

---

- App: https://pipedream.com/apps/codex.md · All apps: https://pipedream.com/apps
