Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 3 additions & 15 deletions website/src/openApi/tokenApi.json
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did you manually edit this file? Normally, you would run the fetch-remote-docs script in the website package (cd website && pnpm fetch-remote-docs).

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes i did as it looked pretty straight forward to be removed.

Original file line number Diff line number Diff line change
Expand Up @@ -6436,7 +6436,7 @@
"get": {
"operationId": "getV1EvmNftCollections",
"summary": "NFT Collection",
"description": "Returns NFT collection metadata, supply stats, owner count, and transfer history.\n\nThe `spam_status` flag indicates if the NFT is likely spam. If status shows `pending`, retry in a few seconds.\n\nSpam detection is supported for:\n\n* mainnet\n* base\n* polygon\n* arbitrum-one\n* avalanche\n* optimism\n* bsc",
"description": "Returns NFT collection metadata, supply stats, owner count, and transfer history.",
"tags": [
"EVM NFTs"
],
Expand Down Expand Up @@ -6518,16 +6518,6 @@
"polygon",
"unichain"
]
},
"spam_status": {
"type": "string",
"enum": [
"spam",
"not_spam",
"pending",
"not_supported",
"error"
]
}
},
"required": [
Expand All @@ -6540,8 +6530,7 @@
"total_supply",
"total_unique_supply",
"total_transfers",
"network",
"spam_status"
"network"
]
}
},
Expand Down Expand Up @@ -6613,8 +6602,7 @@
"total_supply": 8888,
"total_unique_supply": 8888,
"total_transfers": 193641,
"network": "mainnet",
"spam_status": "pending"
"network": "mainnet"
}
]
}
Expand Down
3 changes: 2 additions & 1 deletion website/src/pages/en/ai-suite/_meta-titles.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"ai-introduction": "The Graph's AI",
"subgraph-mcp": "Subgraph MCP",
"token-api-mcp": "Token API MCP"
"token-api-mcp": "Token API MCP",
"token-api-skills": "Token API Skills"
}
1 change: 1 addition & 0 deletions website/src/pages/en/ai-suite/_meta.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,5 @@ export default {
'ai-introduction': titles['ai-introduction'],
'subgraph-mcp': titles['subgraph-mcp'],
'token-api-mcp': titles['token-api-mcp'],
'token-api-skills': titles['token-api-skills'],
}
3 changes: 3 additions & 0 deletions website/src/pages/en/ai-suite/token-api-skills/_meta.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export default {
'quick-setup': '',
}
35 changes: 35 additions & 0 deletions website/src/pages/en/ai-suite/token-api-skills/quick-setup.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
---
title: Quick Setup
---

## Quick Setup

1. Create the skill directory and download the file:

```bash
mkdir -p ~/.claude/skills/token-api
curl -o ~/.claude/skills/token-api/SKILL.md https://token-api.thegraph.com/skills.md
```

2. Verify it works by typing `/token-api` in Claude Code.

That's it.

## Where Skills Live

| Location | Path | Scope |
| -------- | ---------------------------------- | -------------------- |
| Personal | `~/.claude/skills/<name>/SKILL.md` | All your projects |
| Project | `.claude/skills/<name>/SKILL.md` | Current project only |

For project-scoped usage (committed to Git so teammates get it too), use `.claude/skills/` in your repository.

## How It Works

- Claude Code auto-discovers `SKILL.md` files in `.claude/skills/` directories.
- Skills are invoked with `/skill-name` (e.g., `/token-api`).
- Skills can also be triggered automatically by Claude when relevant to your request.

## Keeping It Updated

If the remote file changes, re-run the `curl` command to fetch the latest version. You could also script this if needed.
12 changes: 0 additions & 12 deletions website/src/pages/en/token-api/evm-nfts/collections.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,3 @@ template:
---

Returns NFT collection metadata, supply stats, owner count, and transfer history.

The `spam_status` flag indicates if the NFT is likely spam. If status shows `pending`, retry in a few seconds.

Spam detection is supported for:

- Arbitrum One
- Avalanche C-Chain
- Base Mainnet
- BSC Mainnet
- Ethereum Mainnet
- Optimism Mainnet
- Polygon Mainnet
36 changes: 0 additions & 36 deletions website/src/pages/en/token-api/faq.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -305,42 +305,6 @@ No, these are optional. MCP is an advanced feature allowing AI assistants to int

Yes, you need to provide your Token API token to the MCP for authenticating with the Token API. The MCP makes API requests on your behalf when your LLM interacts with it.

## NFT Spam Detection

### What is NFT spam detection?

NFT collections on supported chains contain a spam status field indicating whether the collection is likely spam or not spam.

### How do I retrieve the spam status for a collection?

See the spam_status field on the [`/v1/evm/nft/collections/`](/token-api/evm-nfts/collections/) endpoint.

### Why am I seeing "pending" spam status?

There are millions of collections and we only analyze for spam on demand. If you see a pending status, query it again after 5-10 seconds and the status should be updated.

### What chains contain NFT spam detection?

NFT spam detection is currently supported for the following chains:

- Arbitrum One
- Avalanche C-Chain
- Base Mainnet
- BSC Mainnet
- Ethereum Mainnet
- Optimism Mainnet
- Polygon Mainnet

We are working on fine-tuning the model to enable more chains.

### How is the spam status of a collection determined?

We determine a collection’s spam score using a variety of features drawn from transfers data and metadata. We have several AI models that analyze these features in different ways. We then aggregate the results from the various models into a combined score, which is reported back.

### How can I report an issue with a collection that was incorrectly labeled as spam or not spam?

Reach out on [Discord](https://discord.gg/graphprotocol) in the [Token API](https://discord.com/channels/438038660412342282/1354235849532903625) channel.

## Advanced Topics

### I keep seeing a smart contract with addresses like `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` and `0x0000000000000000000000000000000000000000`. What is this?
Expand Down