diff --git a/website/src/openApi/tokenApi.json b/website/src/openApi/tokenApi.json index 81028d1a1d6b..e0f73a5cc8cc 100644 --- a/website/src/openApi/tokenApi.json +++ b/website/src/openApi/tokenApi.json @@ -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" ], @@ -6518,16 +6518,6 @@ "polygon", "unichain" ] - }, - "spam_status": { - "type": "string", - "enum": [ - "spam", - "not_spam", - "pending", - "not_supported", - "error" - ] } }, "required": [ @@ -6540,8 +6530,7 @@ "total_supply", "total_unique_supply", "total_transfers", - "network", - "spam_status" + "network" ] } }, @@ -6613,8 +6602,7 @@ "total_supply": 8888, "total_unique_supply": 8888, "total_transfers": 193641, - "network": "mainnet", - "spam_status": "pending" + "network": "mainnet" } ] } diff --git a/website/src/pages/en/ai-suite/_meta-titles.json b/website/src/pages/en/ai-suite/_meta-titles.json index 405922319d53..524bebbb3902 100644 --- a/website/src/pages/en/ai-suite/_meta-titles.json +++ b/website/src/pages/en/ai-suite/_meta-titles.json @@ -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" } diff --git a/website/src/pages/en/ai-suite/_meta.js b/website/src/pages/en/ai-suite/_meta.js index db5b6fbe12fe..ec74610b8c37 100644 --- a/website/src/pages/en/ai-suite/_meta.js +++ b/website/src/pages/en/ai-suite/_meta.js @@ -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'], } diff --git a/website/src/pages/en/ai-suite/token-api-skills/_meta.js b/website/src/pages/en/ai-suite/token-api-skills/_meta.js new file mode 100644 index 000000000000..2bce33552b7c --- /dev/null +++ b/website/src/pages/en/ai-suite/token-api-skills/_meta.js @@ -0,0 +1,3 @@ +export default { + 'quick-setup': '', +} diff --git a/website/src/pages/en/ai-suite/token-api-skills/quick-setup.mdx b/website/src/pages/en/ai-suite/token-api-skills/quick-setup.mdx new file mode 100644 index 000000000000..b12833b6531a --- /dev/null +++ b/website/src/pages/en/ai-suite/token-api-skills/quick-setup.mdx @@ -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//SKILL.md` | All your projects | +| Project | `.claude/skills//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. diff --git a/website/src/pages/en/token-api/evm-nfts/collections.mdx b/website/src/pages/en/token-api/evm-nfts/collections.mdx index 8da849fcffb1..8d542c83fde3 100644 --- a/website/src/pages/en/token-api/evm-nfts/collections.mdx +++ b/website/src/pages/en/token-api/evm-nfts/collections.mdx @@ -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 diff --git a/website/src/pages/en/token-api/faq.mdx b/website/src/pages/en/token-api/faq.mdx index 323b232dc449..21bd8de08887 100644 --- a/website/src/pages/en/token-api/faq.mdx +++ b/website/src/pages/en/token-api/faq.mdx @@ -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?