From cd9ae21bd995e6cf89695b3cc716a5a2d645a846 Mon Sep 17 00:00:00 2001
From: AK <58132405+0xa3k5@users.noreply.github.com>
Date: Thu, 12 Jun 2025 23:50:34 +0300
Subject: [PATCH 01/36] update callout link on supported networks page (#982)

---
 website/src/supportedNetworks/NetworksTable.tsx | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/website/src/supportedNetworks/NetworksTable.tsx b/website/src/supportedNetworks/NetworksTable.tsx
index 316709e443a1..f7a4ec8627bc 100644
--- a/website/src/supportedNetworks/NetworksTable.tsx
+++ b/website/src/supportedNetworks/NetworksTable.tsx
@@ -58,7 +58,7 @@ export function NetworksTable({ networks }: { networks: SupportedNetwork[] }) {
       <Callout variant="info" className="mb-6">
         <p>
           {t('index.supportedNetworks.infoText')}{' '}
-          <ExperimentalLink href="/indexing/chain-integration-overview/">
+          <ExperimentalLink href="https://edgeandnode.typeform.com/to/b3507xSL">
             {t('index.supportedNetworks.infoLink')}
           </ExperimentalLink>
           .

From 130c55128b07feb2042d6126fa68282a37d7ded0 Mon Sep 17 00:00:00 2001
From: Idalith <126833353+idalithb@users.noreply.github.com>
Date: Thu, 12 Jun 2025 15:02:28 -0700
Subject: [PATCH 02/36] Updating from "Intro" to "How-to" (#956)

* Updating

* build

* fix
---
 .../en/subgraphs/querying/introduction.mdx    | 32 +++++++++++++------
 1 file changed, 22 insertions(+), 10 deletions(-)

diff --git a/website/src/pages/en/subgraphs/querying/introduction.mdx b/website/src/pages/en/subgraphs/querying/introduction.mdx
index 8094339d889d..db102bb4d4dc 100644
--- a/website/src/pages/en/subgraphs/querying/introduction.mdx
+++ b/website/src/pages/en/subgraphs/querying/introduction.mdx
@@ -1,31 +1,43 @@
 ---
-title: Querying The Graph
-sidebarTitle: Introduction
+title: How to Query a Subgraph Using The Graph
+sidebarTitle: How to Query
 ---
 
-To start querying right away, visit [The Graph Explorer](https://thegraph.com/explorer).
+To start querying right away, visit [Graph Explorer](https://thegraph.com/explorer). This guide shows you how to find a [Subgraph](/subgraphs/developing/subgraphs/), generate a unique URL, and run queries.
 
 ## Overview
 
-When a Subgraph is published to The Graph Network, you can visit its Subgraph details page on Graph Explorer and use the "Query" tab to explore the deployed GraphQL API for each Subgraph.
+Querying a Subgraph with The Graph lets you access onchain data in a fast, reliable, and structured way, without running your own indexing infrastructure. This guide shows you how to get started so you can power your dapp or analysis with blockchain data.
 
-## Specifics
+## Steps
 
-Each Subgraph published to The Graph Network has a unique query URL in Graph Explorer to make direct queries. You can find it by navigating to the Subgraph details page and clicking on the "Query" button in the top right corner.
+### Step 1: Locate Your Subgraph
+
+After a Subgraph is published to The Graph Network, you can visit its Subgraph details page on Graph Explorer.
+
+### Step 2: Retrieve the Query URL
+
+On the Subgraph details page, click Query (top right) or scroll down. Each Subgraph published to The Graph Network has a unique query URL in Graph Explorer to make direct queries.
 
 ![Query Subgraph Button](/img/query-button-screenshot.png)
 
 ![Query Subgraph URL](/img/query-url-screenshot.png)
 
-You will notice that this query URL must use a unique API key. You can create and manage your API keys in [Subgraph Studio](https://thegraph.com/studio), under the "API Keys" section. Learn more about how to use Subgraph Studio [here](/deploying/subgraph-studio/).
+> Please see the [Query API](/subgraphs/querying/graphql-api/) for a complete reference on how to query the Subgraph's entities.
+
+### Step 3: Manage Your API Key
+
+Each query URL requires a valid API key. In [Subgraph Studio](https://thegraph.com/studio), locate the **API Keys** section to create or manage your keys. Learn more about how to use Subgraph Studio [here](/subgraphs/developing/deploying/using-subgraph-studio/).
+
+### Step 4: Check Your Usage Plan
 
 Subgraph Studio users start on a Free Plan, which allows them to make 100,000 queries per month. Additional queries are available on the Growth Plan, which offers usage based pricing for additional queries, payable by credit card, or GRT on Arbitrum. You can learn more about billing [here](/subgraphs/billing/).
 
-> Please see the [Query API](/subgraphs/querying/graphql-api/) for a complete reference on how to query the Subgraph's entities.
+## Handling Errors
 
-> Note: If you encounter 405 errors with a GET request to the Graph Explorer URL, please switch to a POST request instead.
+If you encounter 405 errors with a GET request to the Graph Explorer URL, please switch to a POST request instead.
 
-### Additional Resources
+## Additional Resources
 
 - Use [GraphQL querying best practices](/subgraphs/querying/best-practices/).
 - To query from an application, click [here](/subgraphs/querying/from-an-application/).

From 16dfb15c771fa845468ae96161ec55ff6af01268 Mon Sep 17 00:00:00 2001
From: Andrew <36178664+UrsaPolarisRecords@users.noreply.github.com>
Date: Mon, 16 Jun 2025 16:34:16 -0700
Subject: [PATCH 03/36] Update quick-start.mdx (#983)

* Update quick-start.mdx

Edited support matrix: Arbitrum-one now caught up

* Update quick-start.mdx

hopefully fixed prettier

* Update quick-start.mdx

Prettier attempt #2
---
 .../src/pages/en/token-api/quick-start.mdx    | 20 +++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/website/src/pages/en/token-api/quick-start.mdx b/website/src/pages/en/token-api/quick-start.mdx
index 62d55d22fbb7..d43d2b5d2d86 100644
--- a/website/src/pages/en/token-api/quick-start.mdx
+++ b/website/src/pages/en/token-api/quick-start.mdx
@@ -66,16 +66,16 @@ Make sure to replace `<token>` with the JWT Token generated from your API key.
 
 ## Chain and Feature Support
 
-| Network          | evm-tokens  | evm-uniswaps | evm-nft-tokens |
-| ---------------- | :---------: | :----------: | :------------: |
-| Ethereum Mainnet |     ✅      |      ✅      |       ✅       |
-| BSC              |    ✅\*     |      ✅      |       ✅       |
-| Base             |     ✅      |      ✅      |       ✅       |
-| Unichain         |     ✅      |      ✅      |       ✅       |
-| Arbitrum-One     | Ingesting\* | Ingesting\*  |  Ingesting\*   |
-| Optimism         |     ✅      |      ✅      |       ✅       |
-| Polygon          |     ✅      |      ✅      |       ✅       |
-| Avalanche        |     ✅      |      ✅      |       ✅       |
+| Network          | evm-tokens | evm-uniswaps | evm-nft-tokens |
+| ---------------- | :--------: | :----------: | :------------: |
+| Ethereum Mainnet |     ✅     |      ✅      |       ✅       |
+| BSC              |    ✅\*    |      ✅      |       ✅       |
+| Base             |     ✅     |      ✅      |       ✅       |
+| Unichain         |     ✅     |      ✅      |       ✅       |
+| Arbitrum-One     |    ✅\*    |     ✅\*     |      ✅\*      |
+| Optimism         |     ✅     |      ✅      |       ✅       |
+| Polygon          |     ✅     |      ✅      |       ✅       |
+| Avalanche        |     ✅     |      ✅      |       ✅       |
 
 \*Some chains are still in the process of syncing. You may encounter `bad_database_response` errors or incorrect response values until data is fully synced.
 

From 6e2347bf5057fc4682ad7acf43787f03947f4716 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Beno=C3=AEt=20Rouleau?= <benoit.rouleau@icloud.com>
Date: Fri, 20 Jun 2025 13:12:01 -0400
Subject: [PATCH 04/36] Update Token API MCP URL (#986)

---
 website/src/pages/ar/resources/claude-mcp.mdx | 2 +-
 website/src/pages/ar/token-api/faq.mdx        | 2 +-
 website/src/pages/ar/token-api/mcp/claude.mdx | 4 ++--
 website/src/pages/ar/token-api/mcp/cline.mdx  | 4 ++--
 website/src/pages/ar/token-api/mcp/cursor.mdx | 4 ++--
 website/src/pages/cs/resources/claude-mcp.mdx | 2 +-
 website/src/pages/cs/token-api/faq.mdx        | 2 +-
 website/src/pages/cs/token-api/mcp/claude.mdx | 4 ++--
 website/src/pages/cs/token-api/mcp/cline.mdx  | 4 ++--
 website/src/pages/cs/token-api/mcp/cursor.mdx | 4 ++--
 website/src/pages/de/resources/claude-mcp.mdx | 2 +-
 website/src/pages/de/token-api/faq.mdx        | 2 +-
 website/src/pages/de/token-api/mcp/claude.mdx | 4 ++--
 website/src/pages/de/token-api/mcp/cline.mdx  | 4 ++--
 website/src/pages/de/token-api/mcp/cursor.mdx | 4 ++--
 website/src/pages/en/resources/claude-mcp.mdx | 2 +-
 website/src/pages/en/token-api/faq.mdx        | 2 +-
 website/src/pages/en/token-api/mcp/claude.mdx | 4 ++--
 website/src/pages/en/token-api/mcp/cline.mdx  | 4 ++--
 website/src/pages/en/token-api/mcp/cursor.mdx | 4 ++--
 website/src/pages/es/resources/claude-mcp.mdx | 2 +-
 website/src/pages/es/token-api/faq.mdx        | 2 +-
 website/src/pages/es/token-api/mcp/claude.mdx | 4 ++--
 website/src/pages/es/token-api/mcp/cline.mdx  | 4 ++--
 website/src/pages/es/token-api/mcp/cursor.mdx | 4 ++--
 website/src/pages/fr/resources/claude-mcp.mdx | 2 +-
 website/src/pages/fr/token-api/faq.mdx        | 2 +-
 website/src/pages/fr/token-api/mcp/claude.mdx | 4 ++--
 website/src/pages/fr/token-api/mcp/cline.mdx  | 4 ++--
 website/src/pages/fr/token-api/mcp/cursor.mdx | 4 ++--
 website/src/pages/hi/resources/claude-mcp.mdx | 2 +-
 website/src/pages/hi/token-api/faq.mdx        | 2 +-
 website/src/pages/hi/token-api/mcp/claude.mdx | 4 ++--
 website/src/pages/hi/token-api/mcp/cline.mdx  | 4 ++--
 website/src/pages/hi/token-api/mcp/cursor.mdx | 4 ++--
 website/src/pages/it/resources/claude-mcp.mdx | 2 +-
 website/src/pages/it/token-api/faq.mdx        | 2 +-
 website/src/pages/it/token-api/mcp/claude.mdx | 4 ++--
 website/src/pages/it/token-api/mcp/cline.mdx  | 4 ++--
 website/src/pages/it/token-api/mcp/cursor.mdx | 4 ++--
 website/src/pages/ja/resources/claude-mcp.mdx | 2 +-
 website/src/pages/ja/token-api/faq.mdx        | 2 +-
 website/src/pages/ja/token-api/mcp/claude.mdx | 4 ++--
 website/src/pages/ja/token-api/mcp/cline.mdx  | 4 ++--
 website/src/pages/ja/token-api/mcp/cursor.mdx | 4 ++--
 website/src/pages/ko/resources/claude-mcp.mdx | 2 +-
 website/src/pages/ko/token-api/faq.mdx        | 2 +-
 website/src/pages/ko/token-api/mcp/claude.mdx | 4 ++--
 website/src/pages/ko/token-api/mcp/cline.mdx  | 4 ++--
 website/src/pages/ko/token-api/mcp/cursor.mdx | 4 ++--
 website/src/pages/mr/resources/claude-mcp.mdx | 2 +-
 website/src/pages/mr/token-api/faq.mdx        | 2 +-
 website/src/pages/mr/token-api/mcp/claude.mdx | 4 ++--
 website/src/pages/mr/token-api/mcp/cline.mdx  | 4 ++--
 website/src/pages/mr/token-api/mcp/cursor.mdx | 4 ++--
 website/src/pages/nl/resources/claude-mcp.mdx | 2 +-
 website/src/pages/nl/token-api/faq.mdx        | 2 +-
 website/src/pages/nl/token-api/mcp/claude.mdx | 4 ++--
 website/src/pages/nl/token-api/mcp/cline.mdx  | 4 ++--
 website/src/pages/nl/token-api/mcp/cursor.mdx | 4 ++--
 website/src/pages/pl/resources/claude-mcp.mdx | 2 +-
 website/src/pages/pl/token-api/faq.mdx        | 2 +-
 website/src/pages/pl/token-api/mcp/claude.mdx | 4 ++--
 website/src/pages/pl/token-api/mcp/cline.mdx  | 4 ++--
 website/src/pages/pl/token-api/mcp/cursor.mdx | 4 ++--
 website/src/pages/pt/resources/claude-mcp.mdx | 2 +-
 website/src/pages/pt/token-api/faq.mdx        | 2 +-
 website/src/pages/pt/token-api/mcp/claude.mdx | 4 ++--
 website/src/pages/pt/token-api/mcp/cline.mdx  | 4 ++--
 website/src/pages/pt/token-api/mcp/cursor.mdx | 4 ++--
 website/src/pages/ro/resources/claude-mcp.mdx | 2 +-
 website/src/pages/ro/token-api/faq.mdx        | 2 +-
 website/src/pages/ro/token-api/mcp/claude.mdx | 4 ++--
 website/src/pages/ro/token-api/mcp/cline.mdx  | 4 ++--
 website/src/pages/ro/token-api/mcp/cursor.mdx | 4 ++--
 website/src/pages/ru/resources/claude-mcp.mdx | 2 +-
 website/src/pages/ru/token-api/faq.mdx        | 2 +-
 website/src/pages/ru/token-api/mcp/claude.mdx | 4 ++--
 website/src/pages/ru/token-api/mcp/cline.mdx  | 4 ++--
 website/src/pages/ru/token-api/mcp/cursor.mdx | 4 ++--
 website/src/pages/sv/resources/claude-mcp.mdx | 2 +-
 website/src/pages/sv/token-api/faq.mdx        | 2 +-
 website/src/pages/sv/token-api/mcp/claude.mdx | 4 ++--
 website/src/pages/sv/token-api/mcp/cline.mdx  | 4 ++--
 website/src/pages/sv/token-api/mcp/cursor.mdx | 4 ++--
 website/src/pages/tr/resources/claude-mcp.mdx | 2 +-
 website/src/pages/tr/token-api/faq.mdx        | 2 +-
 website/src/pages/tr/token-api/mcp/claude.mdx | 4 ++--
 website/src/pages/tr/token-api/mcp/cline.mdx  | 4 ++--
 website/src/pages/tr/token-api/mcp/cursor.mdx | 4 ++--
 website/src/pages/uk/resources/claude-mcp.mdx | 2 +-
 website/src/pages/uk/token-api/faq.mdx        | 2 +-
 website/src/pages/uk/token-api/mcp/claude.mdx | 4 ++--
 website/src/pages/uk/token-api/mcp/cline.mdx  | 4 ++--
 website/src/pages/uk/token-api/mcp/cursor.mdx | 4 ++--
 website/src/pages/ur/resources/claude-mcp.mdx | 2 +-
 website/src/pages/ur/token-api/faq.mdx        | 2 +-
 website/src/pages/ur/token-api/mcp/claude.mdx | 4 ++--
 website/src/pages/ur/token-api/mcp/cline.mdx  | 4 ++--
 website/src/pages/ur/token-api/mcp/cursor.mdx | 4 ++--
 website/src/pages/vi/resources/claude-mcp.mdx | 2 +-
 website/src/pages/vi/token-api/faq.mdx        | 2 +-
 website/src/pages/vi/token-api/mcp/claude.mdx | 4 ++--
 website/src/pages/vi/token-api/mcp/cline.mdx  | 4 ++--
 website/src/pages/vi/token-api/mcp/cursor.mdx | 4 ++--
 website/src/pages/zh/resources/claude-mcp.mdx | 2 +-
 website/src/pages/zh/token-api/faq.mdx        | 2 +-
 website/src/pages/zh/token-api/mcp/claude.mdx | 4 ++--
 website/src/pages/zh/token-api/mcp/cline.mdx  | 4 ++--
 website/src/pages/zh/token-api/mcp/cursor.mdx | 4 ++--
 110 files changed, 176 insertions(+), 176 deletions(-)

diff --git a/website/src/pages/ar/resources/claude-mcp.mdx b/website/src/pages/ar/resources/claude-mcp.mdx
index 5b55bbcbe0a4..44ed075cffda 100644
--- a/website/src/pages/ar/resources/claude-mcp.mdx
+++ b/website/src/pages/ar/resources/claude-mcp.mdx
@@ -42,7 +42,7 @@ Replace the contents of the existing config file with:
   "mcpServers": {
     "token-api": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "ACCESS_TOKEN"
       }
diff --git a/website/src/pages/ar/token-api/faq.mdx b/website/src/pages/ar/token-api/faq.mdx
index 8c1032894ddb..2e523e4e3776 100644
--- a/website/src/pages/ar/token-api/faq.mdx
+++ b/website/src/pages/ar/token-api/faq.mdx
@@ -98,7 +98,7 @@ While recommended, `Accept: application/json` isn't strictly required as the API
 
 ### MCP integration with Claude/Cline/Cursor shows errors like "ENOENT" or "Server disconnected". How do I fix this?
 
-For "ENOENT" errors, ensure Node.js 18+ is installed and the path to `npx`/`bunx` is correct (consider using full paths in config). "Server disconnected" usually indicates authentication or connectivity issues – verify your `ACCESS_TOKEN` is set correctly and your network allows access to `https://token-api.thegraph.com/sse`.
+For "ENOENT" errors, ensure Node.js 18+ is installed and the path to `npx`/`bunx` is correct (consider using full paths in config). "Server disconnected" usually indicates authentication or connectivity issues – verify your `ACCESS_TOKEN` is set correctly and your network allows access to `https://token-api.mcp.thegraph.com/sse`.
 
 ### Is the Token API part of The Graph's GraphQL service?
 
diff --git a/website/src/pages/ar/token-api/mcp/claude.mdx b/website/src/pages/ar/token-api/mcp/claude.mdx
index 12a036b6fc24..3e21f4d7e165 100644
--- a/website/src/pages/ar/token-api/mcp/claude.mdx
+++ b/website/src/pages/ar/token-api/mcp/claude.mdx
@@ -27,7 +27,7 @@ Create or edit your `claude_desktop_config.json` file.
   "mcpServers": {
     "token-api": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<https://thegraph.market JWT Access Token>"
       }
@@ -53,6 +53,6 @@ Try to use the full path of the command instead:
 
 ![Connection error notification in Claude Desktop displaying 'Server disconnected' message.](/img/claude-server-disconnect.png)
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
 
 > You can always have a look at the full logs under `Claude/logs/mcp.log` and `Claude/logs/mcp-server-pinax.log` for more details.
diff --git a/website/src/pages/ar/token-api/mcp/cline.mdx b/website/src/pages/ar/token-api/mcp/cline.mdx
index ef98e45939fe..e885d21366cd 100644
--- a/website/src/pages/ar/token-api/mcp/cline.mdx
+++ b/website/src/pages/ar/token-api/mcp/cline.mdx
@@ -23,7 +23,7 @@ Create or edit your `cline_mcp_settings.json` file.
   "mcpServers": {
     "mcp-pinax": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
       }
@@ -49,4 +49,4 @@ Try to use the full path of the command instead:
 
 ![Cline connection error notification displaying server disconnection warning.](/img/cline-missing-variables.png)
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/ar/token-api/mcp/cursor.mdx b/website/src/pages/ar/token-api/mcp/cursor.mdx
index 658108d1337b..68fe2fdb201c 100644
--- a/website/src/pages/ar/token-api/mcp/cursor.mdx
+++ b/website/src/pages/ar/token-api/mcp/cursor.mdx
@@ -23,7 +23,7 @@ Create or edit your `~/.cursor/mcp.json` file.
   "mcpServers": {
     "mcp-pinax": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
       }
@@ -47,4 +47,4 @@ Try to use the full path of the command instead:
 
 ### Server disconnected
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/cs/resources/claude-mcp.mdx b/website/src/pages/cs/resources/claude-mcp.mdx
index 5b55bbcbe0a4..44ed075cffda 100644
--- a/website/src/pages/cs/resources/claude-mcp.mdx
+++ b/website/src/pages/cs/resources/claude-mcp.mdx
@@ -42,7 +42,7 @@ Replace the contents of the existing config file with:
   "mcpServers": {
     "token-api": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "ACCESS_TOKEN"
       }
diff --git a/website/src/pages/cs/token-api/faq.mdx b/website/src/pages/cs/token-api/faq.mdx
index 83196959be14..e7e5881a7d8d 100644
--- a/website/src/pages/cs/token-api/faq.mdx
+++ b/website/src/pages/cs/token-api/faq.mdx
@@ -98,7 +98,7 @@ While recommended, `Accept: application/json` isn't strictly required as the API
 
 ### MCP integration with Claude/Cline/Cursor shows errors like "ENOENT" or "Server disconnected". How do I fix this?
 
-For "ENOENT" errors, ensure Node.js 18+ is installed and the path to `npx`/`bunx` is correct (consider using full paths in config). "Server disconnected" usually indicates authentication or connectivity issues – verify your `ACCESS_TOKEN` is set correctly and your network allows access to `https://token-api.thegraph.com/sse`.
+For "ENOENT" errors, ensure Node.js 18+ is installed and the path to `npx`/`bunx` is correct (consider using full paths in config). "Server disconnected" usually indicates authentication or connectivity issues – verify your `ACCESS_TOKEN` is set correctly and your network allows access to `https://token-api.mcp.thegraph.com/sse`.
 
 ### Is the Token API part of The Graph's GraphQL service?
 
diff --git a/website/src/pages/cs/token-api/mcp/claude.mdx b/website/src/pages/cs/token-api/mcp/claude.mdx
index aabd9c69d69a..17f93a9bbb39 100644
--- a/website/src/pages/cs/token-api/mcp/claude.mdx
+++ b/website/src/pages/cs/token-api/mcp/claude.mdx
@@ -27,7 +27,7 @@ Create or edit your `claude_desktop_config.json` file.
   "mcpServers": {
     "token-api": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<https://thegraph.market JWT Access Token>"
       }
@@ -53,6 +53,6 @@ Try to use the full path of the command instead:
 
 ![Connection error notification in Claude Desktop displaying 'Server disconnected' message.](/img/claude-server-disconnect.png)
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
 
 > You can always have a look at the full logs under `Claude/logs/mcp.log` and `Claude/logs/mcp-server-pinax.log` for more details.
diff --git a/website/src/pages/cs/token-api/mcp/cline.mdx b/website/src/pages/cs/token-api/mcp/cline.mdx
index 2e8f478f68c1..7d98c8650c2d 100644
--- a/website/src/pages/cs/token-api/mcp/cline.mdx
+++ b/website/src/pages/cs/token-api/mcp/cline.mdx
@@ -23,7 +23,7 @@ Create or edit your `cline_mcp_settings.json` file.
   "mcpServers": {
     "mcp-pinax": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
       }
@@ -49,4 +49,4 @@ Try to use the full path of the command instead:
 
 ![Cline connection error notification displaying server disconnection warning.](/img/cline-missing-variables.png)
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/cs/token-api/mcp/cursor.mdx b/website/src/pages/cs/token-api/mcp/cursor.mdx
index fac3a1a1af73..35cd7d044430 100644
--- a/website/src/pages/cs/token-api/mcp/cursor.mdx
+++ b/website/src/pages/cs/token-api/mcp/cursor.mdx
@@ -23,7 +23,7 @@ Create or edit your `~/.cursor/mcp.json` file.
   "mcpServers": {
     "mcp-pinax": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
       }
@@ -47,4 +47,4 @@ Try to use the full path of the command instead:
 
 ### Server disconnected
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/de/resources/claude-mcp.mdx b/website/src/pages/de/resources/claude-mcp.mdx
index 5b55bbcbe0a4..44ed075cffda 100644
--- a/website/src/pages/de/resources/claude-mcp.mdx
+++ b/website/src/pages/de/resources/claude-mcp.mdx
@@ -42,7 +42,7 @@ Replace the contents of the existing config file with:
   "mcpServers": {
     "token-api": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "ACCESS_TOKEN"
       }
diff --git a/website/src/pages/de/token-api/faq.mdx b/website/src/pages/de/token-api/faq.mdx
index c90af204668f..1546ba39c454 100644
--- a/website/src/pages/de/token-api/faq.mdx
+++ b/website/src/pages/de/token-api/faq.mdx
@@ -98,7 +98,7 @@ While recommended, `Accept: application/json` isn't strictly required as the API
 
 ### MCP integration with Claude/Cline/Cursor shows errors like "ENOENT" or "Server disconnected". How do I fix this?
 
-For "ENOENT" errors, ensure Node.js 18+ is installed and the path to `npx`/`bunx` is correct (consider using full paths in config). "Server disconnected" usually indicates authentication or connectivity issues – verify your `ACCESS_TOKEN` is set correctly and your network allows access to `https://token-api.thegraph.com/sse`.
+For "ENOENT" errors, ensure Node.js 18+ is installed and the path to `npx`/`bunx` is correct (consider using full paths in config). "Server disconnected" usually indicates authentication or connectivity issues – verify your `ACCESS_TOKEN` is set correctly and your network allows access to `https://token-api.mcp.thegraph.com/sse`.
 
 ### Is the Token API part of The Graph's GraphQL service?
 
diff --git a/website/src/pages/de/token-api/mcp/claude.mdx b/website/src/pages/de/token-api/mcp/claude.mdx
index 8c151e39a608..2e1ddca9cce7 100644
--- a/website/src/pages/de/token-api/mcp/claude.mdx
+++ b/website/src/pages/de/token-api/mcp/claude.mdx
@@ -27,7 +27,7 @@ Create or edit your `claude_desktop_config.json` file.
   "mcpServers": {
     "token-api": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<https://thegraph.market JWT Access Token>"
       }
@@ -53,6 +53,6 @@ Try to use the full path of the command instead:
 
 ![Connection error notification in Claude Desktop displaying 'Server disconnected' message.](/img/claude-server-disconnect.png)
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
 
 > You can always have a look at the full logs under `Claude/logs/mcp.log` and `Claude/logs/mcp-server-pinax.log` for more details.
diff --git a/website/src/pages/de/token-api/mcp/cline.mdx b/website/src/pages/de/token-api/mcp/cline.mdx
index d0269aa67aff..08d2f943ae4c 100644
--- a/website/src/pages/de/token-api/mcp/cline.mdx
+++ b/website/src/pages/de/token-api/mcp/cline.mdx
@@ -23,7 +23,7 @@ Create or edit your `cline_mcp_settings.json` file.
   "mcpServers": {
     "mcp-pinax": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
       }
@@ -49,4 +49,4 @@ Try to use the full path of the command instead:
 
 ![Cline connection error notification displaying server disconnection warning.](/img/cline-missing-variables.png)
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/de/token-api/mcp/cursor.mdx b/website/src/pages/de/token-api/mcp/cursor.mdx
index 953d283fd2b3..93fd886ddfbb 100644
--- a/website/src/pages/de/token-api/mcp/cursor.mdx
+++ b/website/src/pages/de/token-api/mcp/cursor.mdx
@@ -23,7 +23,7 @@ Create or edit your `~/.cursor/mcp.json` file.
   "mcpServers": {
     "mcp-pinax": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
       }
@@ -47,4 +47,4 @@ Try to use the full path of the command instead:
 
 ### Server disconnected
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/en/resources/claude-mcp.mdx b/website/src/pages/en/resources/claude-mcp.mdx
index 5b55bbcbe0a4..44ed075cffda 100644
--- a/website/src/pages/en/resources/claude-mcp.mdx
+++ b/website/src/pages/en/resources/claude-mcp.mdx
@@ -42,7 +42,7 @@ Replace the contents of the existing config file with:
   "mcpServers": {
     "token-api": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "ACCESS_TOKEN"
       }
diff --git a/website/src/pages/en/token-api/faq.mdx b/website/src/pages/en/token-api/faq.mdx
index 3bf60c0cda8f..58de6c1e30f3 100644
--- a/website/src/pages/en/token-api/faq.mdx
+++ b/website/src/pages/en/token-api/faq.mdx
@@ -122,7 +122,7 @@ While recommended, `Accept: application/json` isn't strictly required as the API
 
 ### MCP integration with Claude/Cline/Cursor shows errors like "ENOENT" or "Server disconnected". How do I fix this?
 
-For "ENOENT" errors, ensure Node.js 18+ is installed and the path to `npx`/`bunx` is correct (consider using full paths in config). "Server disconnected" usually indicates authentication or connectivity issues – verify your `ACCESS_TOKEN` is set correctly and your network allows access to `https://token-api.thegraph.com/sse`.
+For "ENOENT" errors, ensure Node.js 18+ is installed and the path to `npx`/`bunx` is correct (consider using full paths in config). "Server disconnected" usually indicates authentication or connectivity issues – verify your `ACCESS_TOKEN` is set correctly and your network allows access to `https://token-api.mcp.thegraph.com/sse`.
 
 ### Is the Token API part of The Graph's GraphQL service?
 
diff --git a/website/src/pages/en/token-api/mcp/claude.mdx b/website/src/pages/en/token-api/mcp/claude.mdx
index 12a036b6fc24..3e21f4d7e165 100644
--- a/website/src/pages/en/token-api/mcp/claude.mdx
+++ b/website/src/pages/en/token-api/mcp/claude.mdx
@@ -27,7 +27,7 @@ Create or edit your `claude_desktop_config.json` file.
   "mcpServers": {
     "token-api": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<https://thegraph.market JWT Access Token>"
       }
@@ -53,6 +53,6 @@ Try to use the full path of the command instead:
 
 ![Connection error notification in Claude Desktop displaying 'Server disconnected' message.](/img/claude-server-disconnect.png)
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
 
 > You can always have a look at the full logs under `Claude/logs/mcp.log` and `Claude/logs/mcp-server-pinax.log` for more details.
diff --git a/website/src/pages/en/token-api/mcp/cline.mdx b/website/src/pages/en/token-api/mcp/cline.mdx
index ef98e45939fe..e885d21366cd 100644
--- a/website/src/pages/en/token-api/mcp/cline.mdx
+++ b/website/src/pages/en/token-api/mcp/cline.mdx
@@ -23,7 +23,7 @@ Create or edit your `cline_mcp_settings.json` file.
   "mcpServers": {
     "mcp-pinax": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
       }
@@ -49,4 +49,4 @@ Try to use the full path of the command instead:
 
 ![Cline connection error notification displaying server disconnection warning.](/img/cline-missing-variables.png)
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/en/token-api/mcp/cursor.mdx b/website/src/pages/en/token-api/mcp/cursor.mdx
index 658108d1337b..68fe2fdb201c 100644
--- a/website/src/pages/en/token-api/mcp/cursor.mdx
+++ b/website/src/pages/en/token-api/mcp/cursor.mdx
@@ -23,7 +23,7 @@ Create or edit your `~/.cursor/mcp.json` file.
   "mcpServers": {
     "mcp-pinax": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
       }
@@ -47,4 +47,4 @@ Try to use the full path of the command instead:
 
 ### Server disconnected
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/es/resources/claude-mcp.mdx b/website/src/pages/es/resources/claude-mcp.mdx
index 5b55bbcbe0a4..44ed075cffda 100644
--- a/website/src/pages/es/resources/claude-mcp.mdx
+++ b/website/src/pages/es/resources/claude-mcp.mdx
@@ -42,7 +42,7 @@ Replace the contents of the existing config file with:
   "mcpServers": {
     "token-api": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "ACCESS_TOKEN"
       }
diff --git a/website/src/pages/es/token-api/faq.mdx b/website/src/pages/es/token-api/faq.mdx
index 6178aee33e86..df35c790e961 100644
--- a/website/src/pages/es/token-api/faq.mdx
+++ b/website/src/pages/es/token-api/faq.mdx
@@ -98,7 +98,7 @@ While recommended, `Accept: application/json` isn't strictly required as the API
 
 ### MCP integration with Claude/Cline/Cursor shows errors like "ENOENT" or "Server disconnected". How do I fix this?
 
-For "ENOENT" errors, ensure Node.js 18+ is installed and the path to `npx`/`bunx` is correct (consider using full paths in config). "Server disconnected" usually indicates authentication or connectivity issues – verify your `ACCESS_TOKEN` is set correctly and your network allows access to `https://token-api.thegraph.com/sse`.
+For "ENOENT" errors, ensure Node.js 18+ is installed and the path to `npx`/`bunx` is correct (consider using full paths in config). "Server disconnected" usually indicates authentication or connectivity issues – verify your `ACCESS_TOKEN` is set correctly and your network allows access to `https://token-api.mcp.thegraph.com/sse`.
 
 ### Is the Token API part of The Graph's GraphQL service?
 
diff --git a/website/src/pages/es/token-api/mcp/claude.mdx b/website/src/pages/es/token-api/mcp/claude.mdx
index ae0f71aa800b..78a48fa92844 100644
--- a/website/src/pages/es/token-api/mcp/claude.mdx
+++ b/website/src/pages/es/token-api/mcp/claude.mdx
@@ -27,7 +27,7 @@ Create or edit your `claude_desktop_config.json` file.
   "mcpServers": {
     "token-api": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<https://thegraph.market JWT Access Token>"
       }
@@ -53,6 +53,6 @@ Try to use the full path of the command instead:
 
 ![Connection error notification in Claude Desktop displaying 'Server disconnected' message.](/img/claude-server-disconnect.png)
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
 
 > You can always have a look at the full logs under `Claude/logs/mcp.log` and `Claude/logs/mcp-server-pinax.log` for more details.
diff --git a/website/src/pages/es/token-api/mcp/cline.mdx b/website/src/pages/es/token-api/mcp/cline.mdx
index 085427f14744..776a978f2eb0 100644
--- a/website/src/pages/es/token-api/mcp/cline.mdx
+++ b/website/src/pages/es/token-api/mcp/cline.mdx
@@ -23,7 +23,7 @@ Create or edit your `cline_mcp_settings.json` file.
   "mcpServers": {
     "mcp-pinax": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
       }
@@ -49,4 +49,4 @@ Try to use the full path of the command instead:
 
 ![Cline connection error notification displaying server disconnection warning.](/img/cline-missing-variables.png)
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/es/token-api/mcp/cursor.mdx b/website/src/pages/es/token-api/mcp/cursor.mdx
index 70e68aaf8d33..34f990fac24d 100644
--- a/website/src/pages/es/token-api/mcp/cursor.mdx
+++ b/website/src/pages/es/token-api/mcp/cursor.mdx
@@ -23,7 +23,7 @@ Create or edit your `~/.cursor/mcp.json` file.
   "mcpServers": {
     "mcp-pinax": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
       }
@@ -47,4 +47,4 @@ Try to use the full path of the command instead:
 
 ### Server disconnected
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/fr/resources/claude-mcp.mdx b/website/src/pages/fr/resources/claude-mcp.mdx
index 5b55bbcbe0a4..44ed075cffda 100644
--- a/website/src/pages/fr/resources/claude-mcp.mdx
+++ b/website/src/pages/fr/resources/claude-mcp.mdx
@@ -42,7 +42,7 @@ Replace the contents of the existing config file with:
   "mcpServers": {
     "token-api": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "ACCESS_TOKEN"
       }
diff --git a/website/src/pages/fr/token-api/faq.mdx b/website/src/pages/fr/token-api/faq.mdx
index 55125891c079..ea49e94b2b6f 100644
--- a/website/src/pages/fr/token-api/faq.mdx
+++ b/website/src/pages/fr/token-api/faq.mdx
@@ -98,7 +98,7 @@ While recommended, `Accept: application/json` isn't strictly required as the API
 
 ### MCP integration with Claude/Cline/Cursor shows errors like "ENOENT" or "Server disconnected". How do I fix this?
 
-For "ENOENT" errors, ensure Node.js 18+ is installed and the path to `npx`/`bunx` is correct (consider using full paths in config). "Server disconnected" usually indicates authentication or connectivity issues – verify your `ACCESS_TOKEN` is set correctly and your network allows access to `https://token-api.thegraph.com/sse`.
+For "ENOENT" errors, ensure Node.js 18+ is installed and the path to `npx`/`bunx` is correct (consider using full paths in config). "Server disconnected" usually indicates authentication or connectivity issues – verify your `ACCESS_TOKEN` is set correctly and your network allows access to `https://token-api.mcp.thegraph.com/sse`.
 
 ### Is the Token API part of The Graph's GraphQL service?
 
diff --git a/website/src/pages/fr/token-api/mcp/claude.mdx b/website/src/pages/fr/token-api/mcp/claude.mdx
index 3c7c756d5b31..2ee7b0330a14 100644
--- a/website/src/pages/fr/token-api/mcp/claude.mdx
+++ b/website/src/pages/fr/token-api/mcp/claude.mdx
@@ -27,7 +27,7 @@ Create or edit your `claude_desktop_config.json` file.
   "mcpServers": {
     "token-api": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<https://thegraph.market JWT Access Token>"
       }
@@ -53,6 +53,6 @@ Try to use the full path of the command instead:
 
 ![Connection error notification in Claude Desktop displaying 'Server disconnected' message.](/img/claude-server-disconnect.png)
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
 
 > You can always have a look at the full logs under `Claude/logs/mcp.log` and `Claude/logs/mcp-server-pinax.log` for more details.
diff --git a/website/src/pages/fr/token-api/mcp/cline.mdx b/website/src/pages/fr/token-api/mcp/cline.mdx
index e4952d58a1d9..8ded5ee70feb 100644
--- a/website/src/pages/fr/token-api/mcp/cline.mdx
+++ b/website/src/pages/fr/token-api/mcp/cline.mdx
@@ -23,7 +23,7 @@ Create or edit your `cline_mcp_settings.json` file.
   "mcpServers": {
     "mcp-pinax": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
       }
@@ -49,4 +49,4 @@ Try to use the full path of the command instead:
 
 ![Cline connection error notification displaying server disconnection warning.](/img/cline-missing-variables.png)
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/fr/token-api/mcp/cursor.mdx b/website/src/pages/fr/token-api/mcp/cursor.mdx
index ae68e7ff6cf9..76377688bb1a 100644
--- a/website/src/pages/fr/token-api/mcp/cursor.mdx
+++ b/website/src/pages/fr/token-api/mcp/cursor.mdx
@@ -23,7 +23,7 @@ Create or edit your `~/.cursor/mcp.json` file.
   "mcpServers": {
     "mcp-pinax": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
       }
@@ -47,4 +47,4 @@ Try to use the full path of the command instead:
 
 ### Server disconnected
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/hi/resources/claude-mcp.mdx b/website/src/pages/hi/resources/claude-mcp.mdx
index 5b55bbcbe0a4..44ed075cffda 100644
--- a/website/src/pages/hi/resources/claude-mcp.mdx
+++ b/website/src/pages/hi/resources/claude-mcp.mdx
@@ -42,7 +42,7 @@ Replace the contents of the existing config file with:
   "mcpServers": {
     "token-api": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "ACCESS_TOKEN"
       }
diff --git a/website/src/pages/hi/token-api/faq.mdx b/website/src/pages/hi/token-api/faq.mdx
index 5d8d28b2e970..1e6133a3aa4b 100644
--- a/website/src/pages/hi/token-api/faq.mdx
+++ b/website/src/pages/hi/token-api/faq.mdx
@@ -98,7 +98,7 @@ While recommended, `Accept: application/json` isn't strictly required as the API
 
 ### MCP integration with Claude/Cline/Cursor shows errors like "ENOENT" or "Server disconnected". How do I fix this?
 
-For "ENOENT" errors, ensure Node.js 18+ is installed and the path to `npx`/`bunx` is correct (consider using full paths in config). "Server disconnected" usually indicates authentication or connectivity issues – verify your `ACCESS_TOKEN` is set correctly and your network allows access to `https://token-api.thegraph.com/sse`.
+For "ENOENT" errors, ensure Node.js 18+ is installed and the path to `npx`/`bunx` is correct (consider using full paths in config). "Server disconnected" usually indicates authentication or connectivity issues – verify your `ACCESS_TOKEN` is set correctly and your network allows access to `https://token-api.mcp.thegraph.com/sse`.
 
 ### Is the Token API part of The Graph's GraphQL service?
 
diff --git a/website/src/pages/hi/token-api/mcp/claude.mdx b/website/src/pages/hi/token-api/mcp/claude.mdx
index 7174103725e8..43cdf594ab75 100644
--- a/website/src/pages/hi/token-api/mcp/claude.mdx
+++ b/website/src/pages/hi/token-api/mcp/claude.mdx
@@ -27,7 +27,7 @@ Create or edit your `claude_desktop_config.json` file.
   "mcpServers": {
     "token-api": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<https://thegraph.market JWT Access Token>"
       }
@@ -53,6 +53,6 @@ Try to use the full path of the command instead:
 
 ![Connection error notification in Claude Desktop displaying 'Server disconnected' message.](/img/claude-server-disconnect.png)
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
 
 > You can always have a look at the full logs under `Claude/logs/mcp.log` and `Claude/logs/mcp-server-pinax.log` for more details.
diff --git a/website/src/pages/hi/token-api/mcp/cline.mdx b/website/src/pages/hi/token-api/mcp/cline.mdx
index 39d4715e1186..c52404b0c7a6 100644
--- a/website/src/pages/hi/token-api/mcp/cline.mdx
+++ b/website/src/pages/hi/token-api/mcp/cline.mdx
@@ -23,7 +23,7 @@ Create or edit your `cline_mcp_settings.json` file.
   "mcpServers": {
     "mcp-pinax": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
       }
@@ -49,4 +49,4 @@ Try to use the full path of the command instead:
 
 ![Cline connection error notification displaying server disconnection warning.](/img/cline-missing-variables.png)
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/hi/token-api/mcp/cursor.mdx b/website/src/pages/hi/token-api/mcp/cursor.mdx
index d8e9a09816fa..a77bda66e5e5 100644
--- a/website/src/pages/hi/token-api/mcp/cursor.mdx
+++ b/website/src/pages/hi/token-api/mcp/cursor.mdx
@@ -23,7 +23,7 @@ Create or edit your `~/.cursor/mcp.json` file.
   "mcpServers": {
     "mcp-pinax": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
       }
@@ -47,4 +47,4 @@ Try to use the full path of the command instead:
 
 ### Server disconnected
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/it/resources/claude-mcp.mdx b/website/src/pages/it/resources/claude-mcp.mdx
index 5b55bbcbe0a4..44ed075cffda 100644
--- a/website/src/pages/it/resources/claude-mcp.mdx
+++ b/website/src/pages/it/resources/claude-mcp.mdx
@@ -42,7 +42,7 @@ Replace the contents of the existing config file with:
   "mcpServers": {
     "token-api": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "ACCESS_TOKEN"
       }
diff --git a/website/src/pages/it/token-api/faq.mdx b/website/src/pages/it/token-api/faq.mdx
index 6178aee33e86..df35c790e961 100644
--- a/website/src/pages/it/token-api/faq.mdx
+++ b/website/src/pages/it/token-api/faq.mdx
@@ -98,7 +98,7 @@ While recommended, `Accept: application/json` isn't strictly required as the API
 
 ### MCP integration with Claude/Cline/Cursor shows errors like "ENOENT" or "Server disconnected". How do I fix this?
 
-For "ENOENT" errors, ensure Node.js 18+ is installed and the path to `npx`/`bunx` is correct (consider using full paths in config). "Server disconnected" usually indicates authentication or connectivity issues – verify your `ACCESS_TOKEN` is set correctly and your network allows access to `https://token-api.thegraph.com/sse`.
+For "ENOENT" errors, ensure Node.js 18+ is installed and the path to `npx`/`bunx` is correct (consider using full paths in config). "Server disconnected" usually indicates authentication or connectivity issues – verify your `ACCESS_TOKEN` is set correctly and your network allows access to `https://token-api.mcp.thegraph.com/sse`.
 
 ### Is the Token API part of The Graph's GraphQL service?
 
diff --git a/website/src/pages/it/token-api/mcp/claude.mdx b/website/src/pages/it/token-api/mcp/claude.mdx
index 12a036b6fc24..3e21f4d7e165 100644
--- a/website/src/pages/it/token-api/mcp/claude.mdx
+++ b/website/src/pages/it/token-api/mcp/claude.mdx
@@ -27,7 +27,7 @@ Create or edit your `claude_desktop_config.json` file.
   "mcpServers": {
     "token-api": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<https://thegraph.market JWT Access Token>"
       }
@@ -53,6 +53,6 @@ Try to use the full path of the command instead:
 
 ![Connection error notification in Claude Desktop displaying 'Server disconnected' message.](/img/claude-server-disconnect.png)
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
 
 > You can always have a look at the full logs under `Claude/logs/mcp.log` and `Claude/logs/mcp-server-pinax.log` for more details.
diff --git a/website/src/pages/it/token-api/mcp/cline.mdx b/website/src/pages/it/token-api/mcp/cline.mdx
index ef98e45939fe..e885d21366cd 100644
--- a/website/src/pages/it/token-api/mcp/cline.mdx
+++ b/website/src/pages/it/token-api/mcp/cline.mdx
@@ -23,7 +23,7 @@ Create or edit your `cline_mcp_settings.json` file.
   "mcpServers": {
     "mcp-pinax": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
       }
@@ -49,4 +49,4 @@ Try to use the full path of the command instead:
 
 ![Cline connection error notification displaying server disconnection warning.](/img/cline-missing-variables.png)
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/it/token-api/mcp/cursor.mdx b/website/src/pages/it/token-api/mcp/cursor.mdx
index 658108d1337b..68fe2fdb201c 100644
--- a/website/src/pages/it/token-api/mcp/cursor.mdx
+++ b/website/src/pages/it/token-api/mcp/cursor.mdx
@@ -23,7 +23,7 @@ Create or edit your `~/.cursor/mcp.json` file.
   "mcpServers": {
     "mcp-pinax": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
       }
@@ -47,4 +47,4 @@ Try to use the full path of the command instead:
 
 ### Server disconnected
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/ja/resources/claude-mcp.mdx b/website/src/pages/ja/resources/claude-mcp.mdx
index 5b55bbcbe0a4..44ed075cffda 100644
--- a/website/src/pages/ja/resources/claude-mcp.mdx
+++ b/website/src/pages/ja/resources/claude-mcp.mdx
@@ -42,7 +42,7 @@ Replace the contents of the existing config file with:
   "mcpServers": {
     "token-api": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "ACCESS_TOKEN"
       }
diff --git a/website/src/pages/ja/token-api/faq.mdx b/website/src/pages/ja/token-api/faq.mdx
index 6178aee33e86..df35c790e961 100644
--- a/website/src/pages/ja/token-api/faq.mdx
+++ b/website/src/pages/ja/token-api/faq.mdx
@@ -98,7 +98,7 @@ While recommended, `Accept: application/json` isn't strictly required as the API
 
 ### MCP integration with Claude/Cline/Cursor shows errors like "ENOENT" or "Server disconnected". How do I fix this?
 
-For "ENOENT" errors, ensure Node.js 18+ is installed and the path to `npx`/`bunx` is correct (consider using full paths in config). "Server disconnected" usually indicates authentication or connectivity issues – verify your `ACCESS_TOKEN` is set correctly and your network allows access to `https://token-api.thegraph.com/sse`.
+For "ENOENT" errors, ensure Node.js 18+ is installed and the path to `npx`/`bunx` is correct (consider using full paths in config). "Server disconnected" usually indicates authentication or connectivity issues – verify your `ACCESS_TOKEN` is set correctly and your network allows access to `https://token-api.mcp.thegraph.com/sse`.
 
 ### Is the Token API part of The Graph's GraphQL service?
 
diff --git a/website/src/pages/ja/token-api/mcp/claude.mdx b/website/src/pages/ja/token-api/mcp/claude.mdx
index c44f99914138..85f766b41550 100644
--- a/website/src/pages/ja/token-api/mcp/claude.mdx
+++ b/website/src/pages/ja/token-api/mcp/claude.mdx
@@ -27,7 +27,7 @@ Create or edit your `claude_desktop_config.json` file.
   "mcpServers": {
     "token-api": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<https://thegraph.market JWT Access Token>"
       }
@@ -53,6 +53,6 @@ Try to use the full path of the command instead:
 
 ![Connection error notification in Claude Desktop displaying 'Server disconnected' message.](/img/claude-server-disconnect.png)
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
 
 > You can always have a look at the full logs under `Claude/logs/mcp.log` and `Claude/logs/mcp-server-pinax.log` for more details.
diff --git a/website/src/pages/ja/token-api/mcp/cline.mdx b/website/src/pages/ja/token-api/mcp/cline.mdx
index 64f32deea38f..1ab2d75261e0 100644
--- a/website/src/pages/ja/token-api/mcp/cline.mdx
+++ b/website/src/pages/ja/token-api/mcp/cline.mdx
@@ -23,7 +23,7 @@ Create or edit your `cline_mcp_settings.json` file.
   "mcpServers": {
     "mcp-pinax": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
       }
@@ -49,4 +49,4 @@ Try to use the full path of the command instead:
 
 ![Cline connection error notification displaying server disconnection warning.](/img/cline-missing-variables.png)
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/ja/token-api/mcp/cursor.mdx b/website/src/pages/ja/token-api/mcp/cursor.mdx
index 1c4da59b67bc..5ecf8867b84c 100644
--- a/website/src/pages/ja/token-api/mcp/cursor.mdx
+++ b/website/src/pages/ja/token-api/mcp/cursor.mdx
@@ -23,7 +23,7 @@ Create or edit your `~/.cursor/mcp.json` file.
   "mcpServers": {
     "mcp-pinax": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
       }
@@ -47,4 +47,4 @@ Try to use the full path of the command instead:
 
 ### Server disconnected
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/ko/resources/claude-mcp.mdx b/website/src/pages/ko/resources/claude-mcp.mdx
index 5b55bbcbe0a4..44ed075cffda 100644
--- a/website/src/pages/ko/resources/claude-mcp.mdx
+++ b/website/src/pages/ko/resources/claude-mcp.mdx
@@ -42,7 +42,7 @@ Replace the contents of the existing config file with:
   "mcpServers": {
     "token-api": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "ACCESS_TOKEN"
       }
diff --git a/website/src/pages/ko/token-api/faq.mdx b/website/src/pages/ko/token-api/faq.mdx
index 6178aee33e86..df35c790e961 100644
--- a/website/src/pages/ko/token-api/faq.mdx
+++ b/website/src/pages/ko/token-api/faq.mdx
@@ -98,7 +98,7 @@ While recommended, `Accept: application/json` isn't strictly required as the API
 
 ### MCP integration with Claude/Cline/Cursor shows errors like "ENOENT" or "Server disconnected". How do I fix this?
 
-For "ENOENT" errors, ensure Node.js 18+ is installed and the path to `npx`/`bunx` is correct (consider using full paths in config). "Server disconnected" usually indicates authentication or connectivity issues – verify your `ACCESS_TOKEN` is set correctly and your network allows access to `https://token-api.thegraph.com/sse`.
+For "ENOENT" errors, ensure Node.js 18+ is installed and the path to `npx`/`bunx` is correct (consider using full paths in config). "Server disconnected" usually indicates authentication or connectivity issues – verify your `ACCESS_TOKEN` is set correctly and your network allows access to `https://token-api.mcp.thegraph.com/sse`.
 
 ### Is the Token API part of The Graph's GraphQL service?
 
diff --git a/website/src/pages/ko/token-api/mcp/claude.mdx b/website/src/pages/ko/token-api/mcp/claude.mdx
index 12a036b6fc24..3e21f4d7e165 100644
--- a/website/src/pages/ko/token-api/mcp/claude.mdx
+++ b/website/src/pages/ko/token-api/mcp/claude.mdx
@@ -27,7 +27,7 @@ Create or edit your `claude_desktop_config.json` file.
   "mcpServers": {
     "token-api": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<https://thegraph.market JWT Access Token>"
       }
@@ -53,6 +53,6 @@ Try to use the full path of the command instead:
 
 ![Connection error notification in Claude Desktop displaying 'Server disconnected' message.](/img/claude-server-disconnect.png)
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
 
 > You can always have a look at the full logs under `Claude/logs/mcp.log` and `Claude/logs/mcp-server-pinax.log` for more details.
diff --git a/website/src/pages/ko/token-api/mcp/cline.mdx b/website/src/pages/ko/token-api/mcp/cline.mdx
index ef98e45939fe..e885d21366cd 100644
--- a/website/src/pages/ko/token-api/mcp/cline.mdx
+++ b/website/src/pages/ko/token-api/mcp/cline.mdx
@@ -23,7 +23,7 @@ Create or edit your `cline_mcp_settings.json` file.
   "mcpServers": {
     "mcp-pinax": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
       }
@@ -49,4 +49,4 @@ Try to use the full path of the command instead:
 
 ![Cline connection error notification displaying server disconnection warning.](/img/cline-missing-variables.png)
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/ko/token-api/mcp/cursor.mdx b/website/src/pages/ko/token-api/mcp/cursor.mdx
index 658108d1337b..68fe2fdb201c 100644
--- a/website/src/pages/ko/token-api/mcp/cursor.mdx
+++ b/website/src/pages/ko/token-api/mcp/cursor.mdx
@@ -23,7 +23,7 @@ Create or edit your `~/.cursor/mcp.json` file.
   "mcpServers": {
     "mcp-pinax": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
       }
@@ -47,4 +47,4 @@ Try to use the full path of the command instead:
 
 ### Server disconnected
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/mr/resources/claude-mcp.mdx b/website/src/pages/mr/resources/claude-mcp.mdx
index 5b55bbcbe0a4..44ed075cffda 100644
--- a/website/src/pages/mr/resources/claude-mcp.mdx
+++ b/website/src/pages/mr/resources/claude-mcp.mdx
@@ -42,7 +42,7 @@ Replace the contents of the existing config file with:
   "mcpServers": {
     "token-api": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "ACCESS_TOKEN"
       }
diff --git a/website/src/pages/mr/token-api/faq.mdx b/website/src/pages/mr/token-api/faq.mdx
index d7683aa77768..f5190f267970 100644
--- a/website/src/pages/mr/token-api/faq.mdx
+++ b/website/src/pages/mr/token-api/faq.mdx
@@ -98,7 +98,7 @@ While recommended, `Accept: application/json` isn't strictly required as the API
 
 ### MCP integration with Claude/Cline/Cursor shows errors like "ENOENT" or "Server disconnected". How do I fix this?
 
-For "ENOENT" errors, ensure Node.js 18+ is installed and the path to `npx`/`bunx` is correct (consider using full paths in config). "Server disconnected" usually indicates authentication or connectivity issues – verify your `ACCESS_TOKEN` is set correctly and your network allows access to `https://token-api.thegraph.com/sse`.
+For "ENOENT" errors, ensure Node.js 18+ is installed and the path to `npx`/`bunx` is correct (consider using full paths in config). "Server disconnected" usually indicates authentication or connectivity issues – verify your `ACCESS_TOKEN` is set correctly and your network allows access to `https://token-api.mcp.thegraph.com/sse`.
 
 ### Is the Token API part of The Graph's GraphQL service?
 
diff --git a/website/src/pages/mr/token-api/mcp/claude.mdx b/website/src/pages/mr/token-api/mcp/claude.mdx
index bd3781333707..fc064a528787 100644
--- a/website/src/pages/mr/token-api/mcp/claude.mdx
+++ b/website/src/pages/mr/token-api/mcp/claude.mdx
@@ -27,7 +27,7 @@ Create or edit your `claude_desktop_config.json` file.
   "mcpServers": {
     "token-api": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<https://thegraph.market JWT Access Token>"
       }
@@ -53,6 +53,6 @@ Try to use the full path of the command instead:
 
 ![Connection error notification in Claude Desktop displaying 'Server disconnected' message.](/img/claude-server-disconnect.png)
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
 
 > You can always have a look at the full logs under `Claude/logs/mcp.log` and `Claude/logs/mcp-server-pinax.log` for more details.
diff --git a/website/src/pages/mr/token-api/mcp/cline.mdx b/website/src/pages/mr/token-api/mcp/cline.mdx
index 970df7997b52..730efa8a99de 100644
--- a/website/src/pages/mr/token-api/mcp/cline.mdx
+++ b/website/src/pages/mr/token-api/mcp/cline.mdx
@@ -23,7 +23,7 @@ Create or edit your `cline_mcp_settings.json` file.
   "mcpServers": {
     "mcp-pinax": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
       }
@@ -49,4 +49,4 @@ Try to use the full path of the command instead:
 
 ![Cline connection error notification displaying server disconnection warning.](/img/cline-missing-variables.png)
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/mr/token-api/mcp/cursor.mdx b/website/src/pages/mr/token-api/mcp/cursor.mdx
index a243820cf998..2b9b400d3e13 100644
--- a/website/src/pages/mr/token-api/mcp/cursor.mdx
+++ b/website/src/pages/mr/token-api/mcp/cursor.mdx
@@ -23,7 +23,7 @@ Create or edit your `~/.cursor/mcp.json` file.
   "mcpServers": {
     "mcp-pinax": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
       }
@@ -47,4 +47,4 @@ Try to use the full path of the command instead:
 
 ### Server disconnected
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/nl/resources/claude-mcp.mdx b/website/src/pages/nl/resources/claude-mcp.mdx
index 5b55bbcbe0a4..44ed075cffda 100644
--- a/website/src/pages/nl/resources/claude-mcp.mdx
+++ b/website/src/pages/nl/resources/claude-mcp.mdx
@@ -42,7 +42,7 @@ Replace the contents of the existing config file with:
   "mcpServers": {
     "token-api": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "ACCESS_TOKEN"
       }
diff --git a/website/src/pages/nl/token-api/faq.mdx b/website/src/pages/nl/token-api/faq.mdx
index 6178aee33e86..df35c790e961 100644
--- a/website/src/pages/nl/token-api/faq.mdx
+++ b/website/src/pages/nl/token-api/faq.mdx
@@ -98,7 +98,7 @@ While recommended, `Accept: application/json` isn't strictly required as the API
 
 ### MCP integration with Claude/Cline/Cursor shows errors like "ENOENT" or "Server disconnected". How do I fix this?
 
-For "ENOENT" errors, ensure Node.js 18+ is installed and the path to `npx`/`bunx` is correct (consider using full paths in config). "Server disconnected" usually indicates authentication or connectivity issues – verify your `ACCESS_TOKEN` is set correctly and your network allows access to `https://token-api.thegraph.com/sse`.
+For "ENOENT" errors, ensure Node.js 18+ is installed and the path to `npx`/`bunx` is correct (consider using full paths in config). "Server disconnected" usually indicates authentication or connectivity issues – verify your `ACCESS_TOKEN` is set correctly and your network allows access to `https://token-api.mcp.thegraph.com/sse`.
 
 ### Is the Token API part of The Graph's GraphQL service?
 
diff --git a/website/src/pages/nl/token-api/mcp/claude.mdx b/website/src/pages/nl/token-api/mcp/claude.mdx
index 12a036b6fc24..3e21f4d7e165 100644
--- a/website/src/pages/nl/token-api/mcp/claude.mdx
+++ b/website/src/pages/nl/token-api/mcp/claude.mdx
@@ -27,7 +27,7 @@ Create or edit your `claude_desktop_config.json` file.
   "mcpServers": {
     "token-api": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<https://thegraph.market JWT Access Token>"
       }
@@ -53,6 +53,6 @@ Try to use the full path of the command instead:
 
 ![Connection error notification in Claude Desktop displaying 'Server disconnected' message.](/img/claude-server-disconnect.png)
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
 
 > You can always have a look at the full logs under `Claude/logs/mcp.log` and `Claude/logs/mcp-server-pinax.log` for more details.
diff --git a/website/src/pages/nl/token-api/mcp/cline.mdx b/website/src/pages/nl/token-api/mcp/cline.mdx
index ef98e45939fe..e885d21366cd 100644
--- a/website/src/pages/nl/token-api/mcp/cline.mdx
+++ b/website/src/pages/nl/token-api/mcp/cline.mdx
@@ -23,7 +23,7 @@ Create or edit your `cline_mcp_settings.json` file.
   "mcpServers": {
     "mcp-pinax": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
       }
@@ -49,4 +49,4 @@ Try to use the full path of the command instead:
 
 ![Cline connection error notification displaying server disconnection warning.](/img/cline-missing-variables.png)
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/nl/token-api/mcp/cursor.mdx b/website/src/pages/nl/token-api/mcp/cursor.mdx
index 658108d1337b..68fe2fdb201c 100644
--- a/website/src/pages/nl/token-api/mcp/cursor.mdx
+++ b/website/src/pages/nl/token-api/mcp/cursor.mdx
@@ -23,7 +23,7 @@ Create or edit your `~/.cursor/mcp.json` file.
   "mcpServers": {
     "mcp-pinax": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
       }
@@ -47,4 +47,4 @@ Try to use the full path of the command instead:
 
 ### Server disconnected
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/pl/resources/claude-mcp.mdx b/website/src/pages/pl/resources/claude-mcp.mdx
index 5b55bbcbe0a4..44ed075cffda 100644
--- a/website/src/pages/pl/resources/claude-mcp.mdx
+++ b/website/src/pages/pl/resources/claude-mcp.mdx
@@ -42,7 +42,7 @@ Replace the contents of the existing config file with:
   "mcpServers": {
     "token-api": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "ACCESS_TOKEN"
       }
diff --git a/website/src/pages/pl/token-api/faq.mdx b/website/src/pages/pl/token-api/faq.mdx
index 6178aee33e86..df35c790e961 100644
--- a/website/src/pages/pl/token-api/faq.mdx
+++ b/website/src/pages/pl/token-api/faq.mdx
@@ -98,7 +98,7 @@ While recommended, `Accept: application/json` isn't strictly required as the API
 
 ### MCP integration with Claude/Cline/Cursor shows errors like "ENOENT" or "Server disconnected". How do I fix this?
 
-For "ENOENT" errors, ensure Node.js 18+ is installed and the path to `npx`/`bunx` is correct (consider using full paths in config). "Server disconnected" usually indicates authentication or connectivity issues – verify your `ACCESS_TOKEN` is set correctly and your network allows access to `https://token-api.thegraph.com/sse`.
+For "ENOENT" errors, ensure Node.js 18+ is installed and the path to `npx`/`bunx` is correct (consider using full paths in config). "Server disconnected" usually indicates authentication or connectivity issues – verify your `ACCESS_TOKEN` is set correctly and your network allows access to `https://token-api.mcp.thegraph.com/sse`.
 
 ### Is the Token API part of The Graph's GraphQL service?
 
diff --git a/website/src/pages/pl/token-api/mcp/claude.mdx b/website/src/pages/pl/token-api/mcp/claude.mdx
index 12a036b6fc24..3e21f4d7e165 100644
--- a/website/src/pages/pl/token-api/mcp/claude.mdx
+++ b/website/src/pages/pl/token-api/mcp/claude.mdx
@@ -27,7 +27,7 @@ Create or edit your `claude_desktop_config.json` file.
   "mcpServers": {
     "token-api": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<https://thegraph.market JWT Access Token>"
       }
@@ -53,6 +53,6 @@ Try to use the full path of the command instead:
 
 ![Connection error notification in Claude Desktop displaying 'Server disconnected' message.](/img/claude-server-disconnect.png)
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
 
 > You can always have a look at the full logs under `Claude/logs/mcp.log` and `Claude/logs/mcp-server-pinax.log` for more details.
diff --git a/website/src/pages/pl/token-api/mcp/cline.mdx b/website/src/pages/pl/token-api/mcp/cline.mdx
index ef98e45939fe..e885d21366cd 100644
--- a/website/src/pages/pl/token-api/mcp/cline.mdx
+++ b/website/src/pages/pl/token-api/mcp/cline.mdx
@@ -23,7 +23,7 @@ Create or edit your `cline_mcp_settings.json` file.
   "mcpServers": {
     "mcp-pinax": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
       }
@@ -49,4 +49,4 @@ Try to use the full path of the command instead:
 
 ![Cline connection error notification displaying server disconnection warning.](/img/cline-missing-variables.png)
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/pl/token-api/mcp/cursor.mdx b/website/src/pages/pl/token-api/mcp/cursor.mdx
index 658108d1337b..68fe2fdb201c 100644
--- a/website/src/pages/pl/token-api/mcp/cursor.mdx
+++ b/website/src/pages/pl/token-api/mcp/cursor.mdx
@@ -23,7 +23,7 @@ Create or edit your `~/.cursor/mcp.json` file.
   "mcpServers": {
     "mcp-pinax": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
       }
@@ -47,4 +47,4 @@ Try to use the full path of the command instead:
 
 ### Server disconnected
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/pt/resources/claude-mcp.mdx b/website/src/pages/pt/resources/claude-mcp.mdx
index 5b55bbcbe0a4..44ed075cffda 100644
--- a/website/src/pages/pt/resources/claude-mcp.mdx
+++ b/website/src/pages/pt/resources/claude-mcp.mdx
@@ -42,7 +42,7 @@ Replace the contents of the existing config file with:
   "mcpServers": {
     "token-api": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "ACCESS_TOKEN"
       }
diff --git a/website/src/pages/pt/token-api/faq.mdx b/website/src/pages/pt/token-api/faq.mdx
index f4ec27549974..a220592a5ecf 100644
--- a/website/src/pages/pt/token-api/faq.mdx
+++ b/website/src/pages/pt/token-api/faq.mdx
@@ -98,7 +98,7 @@ While recommended, `Accept: application/json` isn't strictly required as the API
 
 ### MCP integration with Claude/Cline/Cursor shows errors like "ENOENT" or "Server disconnected". How do I fix this?
 
-For "ENOENT" errors, ensure Node.js 18+ is installed and the path to `npx`/`bunx` is correct (consider using full paths in config). "Server disconnected" usually indicates authentication or connectivity issues – verify your `ACCESS_TOKEN` is set correctly and your network allows access to `https://token-api.thegraph.com/sse`.
+For "ENOENT" errors, ensure Node.js 18+ is installed and the path to `npx`/`bunx` is correct (consider using full paths in config). "Server disconnected" usually indicates authentication or connectivity issues – verify your `ACCESS_TOKEN` is set correctly and your network allows access to `https://token-api.mcp.thegraph.com/sse`.
 
 ### Is the Token API part of The Graph's GraphQL service?
 
diff --git a/website/src/pages/pt/token-api/mcp/claude.mdx b/website/src/pages/pt/token-api/mcp/claude.mdx
index a8e16b168fbc..d515884fb9a3 100644
--- a/website/src/pages/pt/token-api/mcp/claude.mdx
+++ b/website/src/pages/pt/token-api/mcp/claude.mdx
@@ -27,7 +27,7 @@ Create or edit your `claude_desktop_config.json` file.
   "mcpServers": {
     "token-api": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<https://thegraph.market JWT Access Token>"
       }
@@ -53,6 +53,6 @@ Try to use the full path of the command instead:
 
 ![Connection error notification in Claude Desktop displaying 'Server disconnected' message.](/img/claude-server-disconnect.png)
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
 
 > You can always have a look at the full logs under `Claude/logs/mcp.log` and `Claude/logs/mcp-server-pinax.log` for more details.
diff --git a/website/src/pages/pt/token-api/mcp/cline.mdx b/website/src/pages/pt/token-api/mcp/cline.mdx
index 1cb7b422906f..c782519bc6ed 100644
--- a/website/src/pages/pt/token-api/mcp/cline.mdx
+++ b/website/src/pages/pt/token-api/mcp/cline.mdx
@@ -23,7 +23,7 @@ Create or edit your `cline_mcp_settings.json` file.
   "mcpServers": {
     "mcp-pinax": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
       }
@@ -49,4 +49,4 @@ Try to use the full path of the command instead:
 
 ![Cline connection error notification displaying server disconnection warning.](/img/cline-missing-variables.png)
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/pt/token-api/mcp/cursor.mdx b/website/src/pages/pt/token-api/mcp/cursor.mdx
index 5a9d70c3052a..9ce73d91a9eb 100644
--- a/website/src/pages/pt/token-api/mcp/cursor.mdx
+++ b/website/src/pages/pt/token-api/mcp/cursor.mdx
@@ -23,7 +23,7 @@ Create or edit your `~/.cursor/mcp.json` file.
   "mcpServers": {
     "mcp-pinax": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
       }
@@ -47,4 +47,4 @@ Try to use the full path of the command instead:
 
 ### Server disconnected
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/ro/resources/claude-mcp.mdx b/website/src/pages/ro/resources/claude-mcp.mdx
index 5b55bbcbe0a4..44ed075cffda 100644
--- a/website/src/pages/ro/resources/claude-mcp.mdx
+++ b/website/src/pages/ro/resources/claude-mcp.mdx
@@ -42,7 +42,7 @@ Replace the contents of the existing config file with:
   "mcpServers": {
     "token-api": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "ACCESS_TOKEN"
       }
diff --git a/website/src/pages/ro/token-api/faq.mdx b/website/src/pages/ro/token-api/faq.mdx
index 6178aee33e86..df35c790e961 100644
--- a/website/src/pages/ro/token-api/faq.mdx
+++ b/website/src/pages/ro/token-api/faq.mdx
@@ -98,7 +98,7 @@ While recommended, `Accept: application/json` isn't strictly required as the API
 
 ### MCP integration with Claude/Cline/Cursor shows errors like "ENOENT" or "Server disconnected". How do I fix this?
 
-For "ENOENT" errors, ensure Node.js 18+ is installed and the path to `npx`/`bunx` is correct (consider using full paths in config). "Server disconnected" usually indicates authentication or connectivity issues – verify your `ACCESS_TOKEN` is set correctly and your network allows access to `https://token-api.thegraph.com/sse`.
+For "ENOENT" errors, ensure Node.js 18+ is installed and the path to `npx`/`bunx` is correct (consider using full paths in config). "Server disconnected" usually indicates authentication or connectivity issues – verify your `ACCESS_TOKEN` is set correctly and your network allows access to `https://token-api.mcp.thegraph.com/sse`.
 
 ### Is the Token API part of The Graph's GraphQL service?
 
diff --git a/website/src/pages/ro/token-api/mcp/claude.mdx b/website/src/pages/ro/token-api/mcp/claude.mdx
index 12a036b6fc24..3e21f4d7e165 100644
--- a/website/src/pages/ro/token-api/mcp/claude.mdx
+++ b/website/src/pages/ro/token-api/mcp/claude.mdx
@@ -27,7 +27,7 @@ Create or edit your `claude_desktop_config.json` file.
   "mcpServers": {
     "token-api": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<https://thegraph.market JWT Access Token>"
       }
@@ -53,6 +53,6 @@ Try to use the full path of the command instead:
 
 ![Connection error notification in Claude Desktop displaying 'Server disconnected' message.](/img/claude-server-disconnect.png)
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
 
 > You can always have a look at the full logs under `Claude/logs/mcp.log` and `Claude/logs/mcp-server-pinax.log` for more details.
diff --git a/website/src/pages/ro/token-api/mcp/cline.mdx b/website/src/pages/ro/token-api/mcp/cline.mdx
index ef98e45939fe..e885d21366cd 100644
--- a/website/src/pages/ro/token-api/mcp/cline.mdx
+++ b/website/src/pages/ro/token-api/mcp/cline.mdx
@@ -23,7 +23,7 @@ Create or edit your `cline_mcp_settings.json` file.
   "mcpServers": {
     "mcp-pinax": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
       }
@@ -49,4 +49,4 @@ Try to use the full path of the command instead:
 
 ![Cline connection error notification displaying server disconnection warning.](/img/cline-missing-variables.png)
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/ro/token-api/mcp/cursor.mdx b/website/src/pages/ro/token-api/mcp/cursor.mdx
index 658108d1337b..68fe2fdb201c 100644
--- a/website/src/pages/ro/token-api/mcp/cursor.mdx
+++ b/website/src/pages/ro/token-api/mcp/cursor.mdx
@@ -23,7 +23,7 @@ Create or edit your `~/.cursor/mcp.json` file.
   "mcpServers": {
     "mcp-pinax": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
       }
@@ -47,4 +47,4 @@ Try to use the full path of the command instead:
 
 ### Server disconnected
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/ru/resources/claude-mcp.mdx b/website/src/pages/ru/resources/claude-mcp.mdx
index 5b55bbcbe0a4..44ed075cffda 100644
--- a/website/src/pages/ru/resources/claude-mcp.mdx
+++ b/website/src/pages/ru/resources/claude-mcp.mdx
@@ -42,7 +42,7 @@ Replace the contents of the existing config file with:
   "mcpServers": {
     "token-api": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "ACCESS_TOKEN"
       }
diff --git a/website/src/pages/ru/token-api/faq.mdx b/website/src/pages/ru/token-api/faq.mdx
index 78b478d6d7ef..9d6edb42b482 100644
--- a/website/src/pages/ru/token-api/faq.mdx
+++ b/website/src/pages/ru/token-api/faq.mdx
@@ -98,7 +98,7 @@ While recommended, `Accept: application/json` isn't strictly required as the API
 
 ### MCP integration with Claude/Cline/Cursor shows errors like "ENOENT" or "Server disconnected". How do I fix this?
 
-For "ENOENT" errors, ensure Node.js 18+ is installed and the path to `npx`/`bunx` is correct (consider using full paths in config). "Server disconnected" usually indicates authentication or connectivity issues – verify your `ACCESS_TOKEN` is set correctly and your network allows access to `https://token-api.thegraph.com/sse`.
+For "ENOENT" errors, ensure Node.js 18+ is installed and the path to `npx`/`bunx` is correct (consider using full paths in config). "Server disconnected" usually indicates authentication or connectivity issues – verify your `ACCESS_TOKEN` is set correctly and your network allows access to `https://token-api.mcp.thegraph.com/sse`.
 
 ### Is the Token API part of The Graph's GraphQL service?
 
diff --git a/website/src/pages/ru/token-api/mcp/claude.mdx b/website/src/pages/ru/token-api/mcp/claude.mdx
index 25a29164f8cb..be15cbb0fee1 100644
--- a/website/src/pages/ru/token-api/mcp/claude.mdx
+++ b/website/src/pages/ru/token-api/mcp/claude.mdx
@@ -27,7 +27,7 @@ Create or edit your `claude_desktop_config.json` file.
   "mcpServers": {
     "token-api": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<https://thegraph.market JWT Access Token>"
       }
@@ -53,6 +53,6 @@ Try to use the full path of the command instead:
 
 ![Connection error notification in Claude Desktop displaying 'Server disconnected' message.](/img/claude-server-disconnect.png)
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
 
 > You can always have a look at the full logs under `Claude/logs/mcp.log` and `Claude/logs/mcp-server-pinax.log` for more details.
diff --git a/website/src/pages/ru/token-api/mcp/cline.mdx b/website/src/pages/ru/token-api/mcp/cline.mdx
index 374877608d17..b264b1300266 100644
--- a/website/src/pages/ru/token-api/mcp/cline.mdx
+++ b/website/src/pages/ru/token-api/mcp/cline.mdx
@@ -23,7 +23,7 @@ Create or edit your `cline_mcp_settings.json` file.
   "mcpServers": {
     "mcp-pinax": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
       }
@@ -49,4 +49,4 @@ Try to use the full path of the command instead:
 
 ![Cline connection error notification displaying server disconnection warning.](/img/cline-missing-variables.png)
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/ru/token-api/mcp/cursor.mdx b/website/src/pages/ru/token-api/mcp/cursor.mdx
index 5dc411608825..16250c0cae94 100644
--- a/website/src/pages/ru/token-api/mcp/cursor.mdx
+++ b/website/src/pages/ru/token-api/mcp/cursor.mdx
@@ -23,7 +23,7 @@ Create or edit your `~/.cursor/mcp.json` file.
   "mcpServers": {
     "mcp-pinax": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
       }
@@ -47,4 +47,4 @@ Try to use the full path of the command instead:
 
 ### Server disconnected
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/sv/resources/claude-mcp.mdx b/website/src/pages/sv/resources/claude-mcp.mdx
index 5b55bbcbe0a4..44ed075cffda 100644
--- a/website/src/pages/sv/resources/claude-mcp.mdx
+++ b/website/src/pages/sv/resources/claude-mcp.mdx
@@ -42,7 +42,7 @@ Replace the contents of the existing config file with:
   "mcpServers": {
     "token-api": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "ACCESS_TOKEN"
       }
diff --git a/website/src/pages/sv/token-api/faq.mdx b/website/src/pages/sv/token-api/faq.mdx
index 8a5f3bbd358a..123b4867805e 100644
--- a/website/src/pages/sv/token-api/faq.mdx
+++ b/website/src/pages/sv/token-api/faq.mdx
@@ -98,7 +98,7 @@ While recommended, `Accept: application/json` isn't strictly required as the API
 
 ### MCP integration with Claude/Cline/Cursor shows errors like "ENOENT" or "Server disconnected". How do I fix this?
 
-For "ENOENT" errors, ensure Node.js 18+ is installed and the path to `npx`/`bunx` is correct (consider using full paths in config). "Server disconnected" usually indicates authentication or connectivity issues – verify your `ACCESS_TOKEN` is set correctly and your network allows access to `https://token-api.thegraph.com/sse`.
+For "ENOENT" errors, ensure Node.js 18+ is installed and the path to `npx`/`bunx` is correct (consider using full paths in config). "Server disconnected" usually indicates authentication or connectivity issues – verify your `ACCESS_TOKEN` is set correctly and your network allows access to `https://token-api.mcp.thegraph.com/sse`.
 
 ### Is the Token API part of The Graph's GraphQL service?
 
diff --git a/website/src/pages/sv/token-api/mcp/claude.mdx b/website/src/pages/sv/token-api/mcp/claude.mdx
index bc3dbe28ecb3..47a477b1511e 100644
--- a/website/src/pages/sv/token-api/mcp/claude.mdx
+++ b/website/src/pages/sv/token-api/mcp/claude.mdx
@@ -27,7 +27,7 @@ Create or edit your `claude_desktop_config.json` file.
   "mcpServers": {
     "token-api": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<https://thegraph.market JWT Access Token>"
       }
@@ -53,6 +53,6 @@ Try to use the full path of the command instead:
 
 ![Connection error notification in Claude Desktop displaying 'Server disconnected' message.](/img/claude-server-disconnect.png)
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
 
 > You can always have a look at the full logs under `Claude/logs/mcp.log` and `Claude/logs/mcp-server-pinax.log` for more details.
diff --git a/website/src/pages/sv/token-api/mcp/cline.mdx b/website/src/pages/sv/token-api/mcp/cline.mdx
index 15c9980df7a6..dbd4cf5f7b90 100644
--- a/website/src/pages/sv/token-api/mcp/cline.mdx
+++ b/website/src/pages/sv/token-api/mcp/cline.mdx
@@ -23,7 +23,7 @@ Create or edit your `cline_mcp_settings.json` file.
   "mcpServers": {
     "mcp-pinax": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
       }
@@ -49,4 +49,4 @@ Try to use the full path of the command instead:
 
 ![Cline connection error notification displaying server disconnection warning.](/img/cline-missing-variables.png)
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/sv/token-api/mcp/cursor.mdx b/website/src/pages/sv/token-api/mcp/cursor.mdx
index 1364cca2cca5..01e75bf7e400 100644
--- a/website/src/pages/sv/token-api/mcp/cursor.mdx
+++ b/website/src/pages/sv/token-api/mcp/cursor.mdx
@@ -23,7 +23,7 @@ Create or edit your `~/.cursor/mcp.json` file.
   "mcpServers": {
     "mcp-pinax": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
       }
@@ -47,4 +47,4 @@ Try to use the full path of the command instead:
 
 ### Server disconnected
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/tr/resources/claude-mcp.mdx b/website/src/pages/tr/resources/claude-mcp.mdx
index 5b55bbcbe0a4..44ed075cffda 100644
--- a/website/src/pages/tr/resources/claude-mcp.mdx
+++ b/website/src/pages/tr/resources/claude-mcp.mdx
@@ -42,7 +42,7 @@ Replace the contents of the existing config file with:
   "mcpServers": {
     "token-api": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "ACCESS_TOKEN"
       }
diff --git a/website/src/pages/tr/token-api/faq.mdx b/website/src/pages/tr/token-api/faq.mdx
index caacf8d1b035..ba8708e750c4 100644
--- a/website/src/pages/tr/token-api/faq.mdx
+++ b/website/src/pages/tr/token-api/faq.mdx
@@ -98,7 +98,7 @@ While recommended, `Accept: application/json` isn't strictly required as the API
 
 ### MCP integration with Claude/Cline/Cursor shows errors like "ENOENT" or "Server disconnected". How do I fix this?
 
-For "ENOENT" errors, ensure Node.js 18+ is installed and the path to `npx`/`bunx` is correct (consider using full paths in config). "Server disconnected" usually indicates authentication or connectivity issues – verify your `ACCESS_TOKEN` is set correctly and your network allows access to `https://token-api.thegraph.com/sse`.
+For "ENOENT" errors, ensure Node.js 18+ is installed and the path to `npx`/`bunx` is correct (consider using full paths in config). "Server disconnected" usually indicates authentication or connectivity issues – verify your `ACCESS_TOKEN` is set correctly and your network allows access to `https://token-api.mcp.thegraph.com/sse`.
 
 ### Is the Token API part of The Graph's GraphQL service?
 
diff --git a/website/src/pages/tr/token-api/mcp/claude.mdx b/website/src/pages/tr/token-api/mcp/claude.mdx
index f937a6ee6ae8..008e0ea6a9a4 100644
--- a/website/src/pages/tr/token-api/mcp/claude.mdx
+++ b/website/src/pages/tr/token-api/mcp/claude.mdx
@@ -27,7 +27,7 @@ Create or edit your `claude_desktop_config.json` file.
   "mcpServers": {
     "token-api": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<https://thegraph.market JWT Access Token>"
       }
@@ -53,6 +53,6 @@ Try to use the full path of the command instead:
 
 ![Connection error notification in Claude Desktop displaying 'Server disconnected' message.](/img/claude-server-disconnect.png)
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
 
 > You can always have a look at the full logs under `Claude/logs/mcp.log` and `Claude/logs/mcp-server-pinax.log` for more details.
diff --git a/website/src/pages/tr/token-api/mcp/cline.mdx b/website/src/pages/tr/token-api/mcp/cline.mdx
index 688b650fbf51..b7dfca87fbdd 100644
--- a/website/src/pages/tr/token-api/mcp/cline.mdx
+++ b/website/src/pages/tr/token-api/mcp/cline.mdx
@@ -23,7 +23,7 @@ Create or edit your `cline_mcp_settings.json` file.
   "mcpServers": {
     "mcp-pinax": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
       }
@@ -49,4 +49,4 @@ Try to use the full path of the command instead:
 
 ![Cline connection error notification displaying server disconnection warning.](/img/cline-missing-variables.png)
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/tr/token-api/mcp/cursor.mdx b/website/src/pages/tr/token-api/mcp/cursor.mdx
index 14b948fbabb8..121073c02e13 100644
--- a/website/src/pages/tr/token-api/mcp/cursor.mdx
+++ b/website/src/pages/tr/token-api/mcp/cursor.mdx
@@ -23,7 +23,7 @@ Create or edit your `~/.cursor/mcp.json` file.
   "mcpServers": {
     "mcp-pinax": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
       }
@@ -47,4 +47,4 @@ Try to use the full path of the command instead:
 
 ### Server disconnected
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/uk/resources/claude-mcp.mdx b/website/src/pages/uk/resources/claude-mcp.mdx
index 5b55bbcbe0a4..44ed075cffda 100644
--- a/website/src/pages/uk/resources/claude-mcp.mdx
+++ b/website/src/pages/uk/resources/claude-mcp.mdx
@@ -42,7 +42,7 @@ Replace the contents of the existing config file with:
   "mcpServers": {
     "token-api": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "ACCESS_TOKEN"
       }
diff --git a/website/src/pages/uk/token-api/faq.mdx b/website/src/pages/uk/token-api/faq.mdx
index 6178aee33e86..df35c790e961 100644
--- a/website/src/pages/uk/token-api/faq.mdx
+++ b/website/src/pages/uk/token-api/faq.mdx
@@ -98,7 +98,7 @@ While recommended, `Accept: application/json` isn't strictly required as the API
 
 ### MCP integration with Claude/Cline/Cursor shows errors like "ENOENT" or "Server disconnected". How do I fix this?
 
-For "ENOENT" errors, ensure Node.js 18+ is installed and the path to `npx`/`bunx` is correct (consider using full paths in config). "Server disconnected" usually indicates authentication or connectivity issues – verify your `ACCESS_TOKEN` is set correctly and your network allows access to `https://token-api.thegraph.com/sse`.
+For "ENOENT" errors, ensure Node.js 18+ is installed and the path to `npx`/`bunx` is correct (consider using full paths in config). "Server disconnected" usually indicates authentication or connectivity issues – verify your `ACCESS_TOKEN` is set correctly and your network allows access to `https://token-api.mcp.thegraph.com/sse`.
 
 ### Is the Token API part of The Graph's GraphQL service?
 
diff --git a/website/src/pages/uk/token-api/mcp/claude.mdx b/website/src/pages/uk/token-api/mcp/claude.mdx
index 12a036b6fc24..3e21f4d7e165 100644
--- a/website/src/pages/uk/token-api/mcp/claude.mdx
+++ b/website/src/pages/uk/token-api/mcp/claude.mdx
@@ -27,7 +27,7 @@ Create or edit your `claude_desktop_config.json` file.
   "mcpServers": {
     "token-api": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<https://thegraph.market JWT Access Token>"
       }
@@ -53,6 +53,6 @@ Try to use the full path of the command instead:
 
 ![Connection error notification in Claude Desktop displaying 'Server disconnected' message.](/img/claude-server-disconnect.png)
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
 
 > You can always have a look at the full logs under `Claude/logs/mcp.log` and `Claude/logs/mcp-server-pinax.log` for more details.
diff --git a/website/src/pages/uk/token-api/mcp/cline.mdx b/website/src/pages/uk/token-api/mcp/cline.mdx
index ef98e45939fe..e885d21366cd 100644
--- a/website/src/pages/uk/token-api/mcp/cline.mdx
+++ b/website/src/pages/uk/token-api/mcp/cline.mdx
@@ -23,7 +23,7 @@ Create or edit your `cline_mcp_settings.json` file.
   "mcpServers": {
     "mcp-pinax": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
       }
@@ -49,4 +49,4 @@ Try to use the full path of the command instead:
 
 ![Cline connection error notification displaying server disconnection warning.](/img/cline-missing-variables.png)
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/uk/token-api/mcp/cursor.mdx b/website/src/pages/uk/token-api/mcp/cursor.mdx
index 658108d1337b..68fe2fdb201c 100644
--- a/website/src/pages/uk/token-api/mcp/cursor.mdx
+++ b/website/src/pages/uk/token-api/mcp/cursor.mdx
@@ -23,7 +23,7 @@ Create or edit your `~/.cursor/mcp.json` file.
   "mcpServers": {
     "mcp-pinax": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
       }
@@ -47,4 +47,4 @@ Try to use the full path of the command instead:
 
 ### Server disconnected
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/ur/resources/claude-mcp.mdx b/website/src/pages/ur/resources/claude-mcp.mdx
index 5b55bbcbe0a4..44ed075cffda 100644
--- a/website/src/pages/ur/resources/claude-mcp.mdx
+++ b/website/src/pages/ur/resources/claude-mcp.mdx
@@ -42,7 +42,7 @@ Replace the contents of the existing config file with:
   "mcpServers": {
     "token-api": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "ACCESS_TOKEN"
       }
diff --git a/website/src/pages/ur/token-api/faq.mdx b/website/src/pages/ur/token-api/faq.mdx
index 6178aee33e86..df35c790e961 100644
--- a/website/src/pages/ur/token-api/faq.mdx
+++ b/website/src/pages/ur/token-api/faq.mdx
@@ -98,7 +98,7 @@ While recommended, `Accept: application/json` isn't strictly required as the API
 
 ### MCP integration with Claude/Cline/Cursor shows errors like "ENOENT" or "Server disconnected". How do I fix this?
 
-For "ENOENT" errors, ensure Node.js 18+ is installed and the path to `npx`/`bunx` is correct (consider using full paths in config). "Server disconnected" usually indicates authentication or connectivity issues – verify your `ACCESS_TOKEN` is set correctly and your network allows access to `https://token-api.thegraph.com/sse`.
+For "ENOENT" errors, ensure Node.js 18+ is installed and the path to `npx`/`bunx` is correct (consider using full paths in config). "Server disconnected" usually indicates authentication or connectivity issues – verify your `ACCESS_TOKEN` is set correctly and your network allows access to `https://token-api.mcp.thegraph.com/sse`.
 
 ### Is the Token API part of The Graph's GraphQL service?
 
diff --git a/website/src/pages/ur/token-api/mcp/claude.mdx b/website/src/pages/ur/token-api/mcp/claude.mdx
index 8289b2947386..62db0553be05 100644
--- a/website/src/pages/ur/token-api/mcp/claude.mdx
+++ b/website/src/pages/ur/token-api/mcp/claude.mdx
@@ -27,7 +27,7 @@ Create or edit your `claude_desktop_config.json` file.
   "mcpServers": {
     "token-api": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<https://thegraph.market JWT Access Token>"
       }
@@ -53,6 +53,6 @@ Try to use the full path of the command instead:
 
 ![Connection error notification in Claude Desktop displaying 'Server disconnected' message.](/img/claude-server-disconnect.png)
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
 
 > You can always have a look at the full logs under `Claude/logs/mcp.log` and `Claude/logs/mcp-server-pinax.log` for more details.
diff --git a/website/src/pages/ur/token-api/mcp/cline.mdx b/website/src/pages/ur/token-api/mcp/cline.mdx
index 2711235c8985..a39dfd6d2400 100644
--- a/website/src/pages/ur/token-api/mcp/cline.mdx
+++ b/website/src/pages/ur/token-api/mcp/cline.mdx
@@ -23,7 +23,7 @@ Create or edit your `cline_mcp_settings.json` file.
   "mcpServers": {
     "mcp-pinax": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
       }
@@ -49,4 +49,4 @@ Try to use the full path of the command instead:
 
 ![Cline connection error notification displaying server disconnection warning.](/img/cline-missing-variables.png)
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/ur/token-api/mcp/cursor.mdx b/website/src/pages/ur/token-api/mcp/cursor.mdx
index fdab852890ac..58afdbc0b33c 100644
--- a/website/src/pages/ur/token-api/mcp/cursor.mdx
+++ b/website/src/pages/ur/token-api/mcp/cursor.mdx
@@ -23,7 +23,7 @@ Create or edit your `~/.cursor/mcp.json` file.
   "mcpServers": {
     "mcp-pinax": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
       }
@@ -47,4 +47,4 @@ Try to use the full path of the command instead:
 
 ### Server disconnected
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/vi/resources/claude-mcp.mdx b/website/src/pages/vi/resources/claude-mcp.mdx
index 5b55bbcbe0a4..44ed075cffda 100644
--- a/website/src/pages/vi/resources/claude-mcp.mdx
+++ b/website/src/pages/vi/resources/claude-mcp.mdx
@@ -42,7 +42,7 @@ Replace the contents of the existing config file with:
   "mcpServers": {
     "token-api": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "ACCESS_TOKEN"
       }
diff --git a/website/src/pages/vi/token-api/faq.mdx b/website/src/pages/vi/token-api/faq.mdx
index b2dcec14d671..59313e1da8b4 100644
--- a/website/src/pages/vi/token-api/faq.mdx
+++ b/website/src/pages/vi/token-api/faq.mdx
@@ -98,7 +98,7 @@ While recommended, `Accept: application/json` isn't strictly required as the API
 
 ### MCP integration with Claude/Cline/Cursor shows errors like "ENOENT" or "Server disconnected". How do I fix this?
 
-For "ENOENT" errors, ensure Node.js 18+ is installed and the path to `npx`/`bunx` is correct (consider using full paths in config). "Server disconnected" usually indicates authentication or connectivity issues – verify your `ACCESS_TOKEN` is set correctly and your network allows access to `https://token-api.thegraph.com/sse`.
+For "ENOENT" errors, ensure Node.js 18+ is installed and the path to `npx`/`bunx` is correct (consider using full paths in config). "Server disconnected" usually indicates authentication or connectivity issues – verify your `ACCESS_TOKEN` is set correctly and your network allows access to `https://token-api.mcp.thegraph.com/sse`.
 
 ### Is the Token API part of The Graph's GraphQL service?
 
diff --git a/website/src/pages/vi/token-api/mcp/claude.mdx b/website/src/pages/vi/token-api/mcp/claude.mdx
index 12a036b6fc24..3e21f4d7e165 100644
--- a/website/src/pages/vi/token-api/mcp/claude.mdx
+++ b/website/src/pages/vi/token-api/mcp/claude.mdx
@@ -27,7 +27,7 @@ Create or edit your `claude_desktop_config.json` file.
   "mcpServers": {
     "token-api": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<https://thegraph.market JWT Access Token>"
       }
@@ -53,6 +53,6 @@ Try to use the full path of the command instead:
 
 ![Connection error notification in Claude Desktop displaying 'Server disconnected' message.](/img/claude-server-disconnect.png)
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
 
 > You can always have a look at the full logs under `Claude/logs/mcp.log` and `Claude/logs/mcp-server-pinax.log` for more details.
diff --git a/website/src/pages/vi/token-api/mcp/cline.mdx b/website/src/pages/vi/token-api/mcp/cline.mdx
index ef98e45939fe..e885d21366cd 100644
--- a/website/src/pages/vi/token-api/mcp/cline.mdx
+++ b/website/src/pages/vi/token-api/mcp/cline.mdx
@@ -23,7 +23,7 @@ Create or edit your `cline_mcp_settings.json` file.
   "mcpServers": {
     "mcp-pinax": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
       }
@@ -49,4 +49,4 @@ Try to use the full path of the command instead:
 
 ![Cline connection error notification displaying server disconnection warning.](/img/cline-missing-variables.png)
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/vi/token-api/mcp/cursor.mdx b/website/src/pages/vi/token-api/mcp/cursor.mdx
index 658108d1337b..68fe2fdb201c 100644
--- a/website/src/pages/vi/token-api/mcp/cursor.mdx
+++ b/website/src/pages/vi/token-api/mcp/cursor.mdx
@@ -23,7 +23,7 @@ Create or edit your `~/.cursor/mcp.json` file.
   "mcpServers": {
     "mcp-pinax": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
       }
@@ -47,4 +47,4 @@ Try to use the full path of the command instead:
 
 ### Server disconnected
 
-Double-check your API key otherwise look in your navigator if `https://token-api.thegraph.com/sse` is reachable.
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/zh/resources/claude-mcp.mdx b/website/src/pages/zh/resources/claude-mcp.mdx
index 5b55bbcbe0a4..44ed075cffda 100644
--- a/website/src/pages/zh/resources/claude-mcp.mdx
+++ b/website/src/pages/zh/resources/claude-mcp.mdx
@@ -42,7 +42,7 @@ Replace the contents of the existing config file with:
   "mcpServers": {
     "token-api": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "ACCESS_TOKEN"
       }
diff --git a/website/src/pages/zh/token-api/faq.mdx b/website/src/pages/zh/token-api/faq.mdx
index 99e1466c9952..a20b3420b380 100644
--- a/website/src/pages/zh/token-api/faq.mdx
+++ b/website/src/pages/zh/token-api/faq.mdx
@@ -98,7 +98,7 @@ While recommended, `Accept: application/json` isn't strictly required as the API
 
 ### MCP integration with Claude/Cline/Cursor shows errors like "ENOENT" or "Server disconnected". How do I fix this?
 
-For "ENOENT" errors, ensure Node.js 18+ is installed and the path to `npx`/`bunx` is correct (consider using full paths in config). "Server disconnected" usually indicates authentication or connectivity issues – verify your `ACCESS_TOKEN` is set correctly and your network allows access to `https://token-api.thegraph.com/sse`.
+For "ENOENT" errors, ensure Node.js 18+ is installed and the path to `npx`/`bunx` is correct (consider using full paths in config). "Server disconnected" usually indicates authentication or connectivity issues – verify your `ACCESS_TOKEN` is set correctly and your network allows access to `https://token-api.mcp.thegraph.com/sse`.
 
 ### Is the Token API part of The Graph's GraphQL service?
 
diff --git a/website/src/pages/zh/token-api/mcp/claude.mdx b/website/src/pages/zh/token-api/mcp/claude.mdx
index 1287a7754a1c..276fb287cbd1 100644
--- a/website/src/pages/zh/token-api/mcp/claude.mdx
+++ b/website/src/pages/zh/token-api/mcp/claude.mdx
@@ -27,7 +27,7 @@ sidebarTitle: Claude 桌面
   "mcpServers": {
     "token-api": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<https://thegraph.market JWT Access Token>"
       }
@@ -53,6 +53,6 @@ sidebarTitle: Claude 桌面
 
 ![Claude 桌面中显示“服务器断开连接”消息的连接错误通知。](/img/claude-server-disconnect.png)
 
-如果`https://token-api.thegraph.com/sse`，请在导航器中以其他方式检查您的 API 密钥。
+如果`https://token-api.mcp.thegraph.com/sse`，请在导航器中以其他方式检查您的 API 密钥。
 
 > 您总是可以查看`Claude/logs/mcp.log`和`Claude/logs/mcp-server-pinax.log`下的完整日志以了解更多详情。
diff --git a/website/src/pages/zh/token-api/mcp/cline.mdx b/website/src/pages/zh/token-api/mcp/cline.mdx
index 43c2552b9291..9f7edd2a5e5e 100644
--- a/website/src/pages/zh/token-api/mcp/cline.mdx
+++ b/website/src/pages/zh/token-api/mcp/cline.mdx
@@ -23,7 +23,7 @@ sidebarTitle: Cline
   "mcpServers": {
     "mcp-pinax": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
       }
@@ -49,4 +49,4 @@ sidebarTitle: Cline
 
 ![Cline 连接错误通知显示服务器断开连接警告。](/img/cline-missing-variables.png)
 
-如果`https://token-api.thegraph.com/sse`，请在导航器中以其他方式检查您的 API 密钥。
+如果`https://token-api.mcp.thegraph.com/sse`，请在导航器中以其他方式检查您的 API 密钥。
diff --git a/website/src/pages/zh/token-api/mcp/cursor.mdx b/website/src/pages/zh/token-api/mcp/cursor.mdx
index b9295d7cb315..6623607e565c 100644
--- a/website/src/pages/zh/token-api/mcp/cursor.mdx
+++ b/website/src/pages/zh/token-api/mcp/cursor.mdx
@@ -23,7 +23,7 @@ Create or edit your `~/.cursor/mcp.json` file.
   "mcpServers": {
     "mcp-pinax": {
       "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.thegraph.com/sse"],
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
       "env": {
         "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
       }
@@ -47,4 +47,4 @@ Create or edit your `~/.cursor/mcp.json` file.
 
 ### 与服务器连接已断开
 
-如果`https://token-api.thegraph.com/sse`，请在导航器中以其他方式检查您的 API 密钥。
+如果`https://token-api.mcp.thegraph.com/sse`，请在导航器中以其他方式检查您的 API 密钥。

From b890e079e6762f78f6edffccc593ff1306b65dd2 Mon Sep 17 00:00:00 2001
From: Andrew <36178664+UrsaPolarisRecords@users.noreply.github.com>
Date: Mon, 23 Jun 2025 15:38:57 -0700
Subject: [PATCH 05/36] Update faq.mdx (#988)

Missed a spot (added Avalanche)
---
 website/src/pages/en/token-api/faq.mdx | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/website/src/pages/en/token-api/faq.mdx b/website/src/pages/en/token-api/faq.mdx
index 58de6c1e30f3..1fc4525c0ea8 100644
--- a/website/src/pages/en/token-api/faq.mdx
+++ b/website/src/pages/en/token-api/faq.mdx
@@ -8,7 +8,7 @@ Get fast answers to easily integrate and scale with The Graph's high-performance
 
 ### Which blockchains are supported by the Token API?
 
-Currently, the Token API supports Ethereum, BNB Smart Chain (BSC), Polygon, Optimism, Base, Unichain, and Arbitrum One.
+Currently, the Token API supports Ethereum, BNB Smart Chain (BSC), Polygon, Optimism, Base, Unichain, Avalanche, and Arbitrum One.
 
 ### Does the Token API support NFTs?
 

From 391a7d0c8b0bce7754ba5cf4fa1724f80126fa53 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Beno=C3=AEt=20Rouleau?= <benoit.rouleau@icloud.com>
Date: Thu, 26 Jun 2025 11:40:13 -0400
Subject: [PATCH 06/36] Auto-expand/collapse nav items + some other
 improvements (#992)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* Update dependencies + colocate MDX plugins

“MDX plugins” meaning rehype and remark plugins; move them to the `website` package and convert them to TypeScript

* Callout style tweaks

* Replace check emojis by GDS (phosphor) check icon

* Auto-expand/collapse nav items

* Run `pnpm check:fix`
---
 Dockerfile                                    |    2 +-
 package.json                                  |   12 +-
 packages/og-image/package.json                |    6 +-
 packages/og-image/scripts/copy-wasm.ts        |    4 +-
 packages/rehype-unwrap-images/package.json    |   15 -
 packages/remark-callouts/package.json         |   12 -
 pnpm-lock.yaml                                | 1928 ++++++++---------
 website/next.config.js                        |    9 +-
 website/package.json                          |   31 +-
 website/route-lockfile.txt                    |   80 +
 website/scripts/fetch-remote-docs.ts          |   61 +-
 website/src/HomePage.tsx                      |    4 +-
 website/src/components/Callout.tsx            |    8 +-
 website/src/components/Image.tsx              |    9 +-
 website/src/components/Navigation.tsx         |   42 +-
 website/src/components/Table.tsx              |    1 +
 website/src/components/TimeIcon.tsx           |    2 +-
 website/src/layout/Layout.tsx                 |  405 ++--
 website/src/layout/shared.ts                  |    1 -
 .../src/mdxPlugins/rehypeUnwrapImages.ts      |   47 +-
 .../src/mdxPlugins/remarkCallouts.ts          |   21 +-
 .../mdxPlugins/remarkTransformRemoteDocs.ts   |   61 +
 .../ar/archived/arbitrum/arbitrum-faq.mdx     |    1 -
 website/src/pages/ar/indexing/overview.mdx    |    3 -
 website/src/pages/ar/indexing/tap.mdx         |    4 -
 website/src/pages/ar/resources/glossary.mdx   |    2 -
 .../roles/delegating/undelegating.mdx         |    5 -
 .../best-practices/grafting-hotfix.mdx        |    6 -
 .../developing/creating/install-the-cli.mdx   |    2 -
 .../managing/deleting-a-subgraph.mdx          |    1 -
 website/src/pages/ar/subgraphs/explorer.mdx   |    1 -
 website/src/pages/ar/subgraphs/mcp/claude.mdx |    1 -
 .../src/pages/ar/subgraphs/quick-start.mdx    |    2 -
 .../cs/archived/arbitrum/arbitrum-faq.mdx     |    1 -
 website/src/pages/cs/indexing/overview.mdx    |    3 -
 website/src/pages/cs/indexing/tap.mdx         |    4 -
 website/src/pages/cs/resources/glossary.mdx   |    2 -
 .../roles/delegating/undelegating.mdx         |    5 -
 .../best-practices/grafting-hotfix.mdx        |    6 -
 .../developing/creating/install-the-cli.mdx   |    2 -
 .../managing/deleting-a-subgraph.mdx          |    1 -
 website/src/pages/cs/subgraphs/explorer.mdx   |    1 -
 website/src/pages/cs/subgraphs/mcp/claude.mdx |    1 -
 .../src/pages/cs/subgraphs/quick-start.mdx    |    2 -
 .../de/archived/arbitrum/arbitrum-faq.mdx     |    1 -
 website/src/pages/de/indexing/overview.mdx    |    3 -
 website/src/pages/de/indexing/tap.mdx         |    4 -
 website/src/pages/de/resources/glossary.mdx   |    2 -
 .../roles/delegating/undelegating.mdx         |    5 -
 .../best-practices/grafting-hotfix.mdx        |    6 -
 .../developing/creating/install-the-cli.mdx   |    2 -
 .../managing/deleting-a-subgraph.mdx          |    1 -
 website/src/pages/de/subgraphs/explorer.mdx   |    1 -
 website/src/pages/de/subgraphs/mcp/claude.mdx |    1 -
 .../src/pages/de/subgraphs/quick-start.mdx    |    2 -
 .../en/archived/arbitrum/arbitrum-faq.mdx     |    1 -
 website/src/pages/en/indexing/overview.mdx    |    3 -
 .../supported-network-requirements.mdx        |   26 +-
 website/src/pages/en/indexing/tap.mdx         |    4 -
 website/src/pages/en/resources/glossary.mdx   |    2 -
 .../roles/delegating/undelegating.mdx         |    1 -
 .../best-practices/grafting-hotfix.mdx        |    6 -
 .../developing/creating/install-the-cli.mdx   |    2 -
 .../managing/deleting-a-subgraph.mdx          |    1 -
 website/src/pages/en/subgraphs/mcp/claude.mdx |    1 -
 .../src/pages/en/token-api/quick-start.mdx    |   22 +-
 .../es/archived/arbitrum/arbitrum-faq.mdx     |    1 -
 website/src/pages/es/indexing/overview.mdx    |    3 -
 website/src/pages/es/indexing/tap.mdx         |    4 -
 website/src/pages/es/resources/glossary.mdx   |    2 -
 .../roles/delegating/undelegating.mdx         |    5 -
 .../best-practices/grafting-hotfix.mdx        |    6 -
 .../developing/creating/install-the-cli.mdx   |    2 -
 .../managing/deleting-a-subgraph.mdx          |    1 -
 website/src/pages/es/subgraphs/explorer.mdx   |    1 -
 website/src/pages/es/subgraphs/mcp/claude.mdx |    1 -
 .../src/pages/es/subgraphs/quick-start.mdx    |    2 -
 .../fr/archived/arbitrum/arbitrum-faq.mdx     |    1 -
 website/src/pages/fr/indexing/overview.mdx    |    3 -
 website/src/pages/fr/indexing/tap.mdx         |    4 -
 website/src/pages/fr/resources/glossary.mdx   |    2 -
 .../roles/delegating/undelegating.mdx         |    5 -
 .../best-practices/grafting-hotfix.mdx        |    6 -
 .../developing/creating/install-the-cli.mdx   |    2 -
 .../managing/deleting-a-subgraph.mdx          |    1 -
 website/src/pages/fr/subgraphs/explorer.mdx   |    1 -
 website/src/pages/fr/subgraphs/mcp/claude.mdx |    1 -
 .../src/pages/fr/subgraphs/quick-start.mdx    |    2 -
 .../hi/archived/arbitrum/arbitrum-faq.mdx     |    1 -
 website/src/pages/hi/indexing/overview.mdx    |    3 -
 website/src/pages/hi/indexing/tap.mdx         |    4 -
 website/src/pages/hi/resources/glossary.mdx   |    3 -
 .../roles/delegating/undelegating.mdx         |    5 -
 .../best-practices/grafting-hotfix.mdx        |    6 -
 .../developing/creating/install-the-cli.mdx   |    2 -
 .../managing/deleting-a-subgraph.mdx          |    1 -
 website/src/pages/hi/subgraphs/explorer.mdx   |    1 -
 website/src/pages/hi/subgraphs/mcp/claude.mdx |    1 -
 .../src/pages/hi/subgraphs/quick-start.mdx    |    2 -
 .../it/archived/arbitrum/arbitrum-faq.mdx     |    1 -
 website/src/pages/it/indexing/overview.mdx    |    3 -
 website/src/pages/it/indexing/tap.mdx         |    4 -
 website/src/pages/it/resources/glossary.mdx   |    2 -
 .../roles/delegating/undelegating.mdx         |    5 -
 .../best-practices/grafting-hotfix.mdx        |    6 -
 .../developing/creating/install-the-cli.mdx   |    2 -
 .../managing/deleting-a-subgraph.mdx          |    1 -
 website/src/pages/it/subgraphs/explorer.mdx   |    1 -
 website/src/pages/it/subgraphs/mcp/claude.mdx |    1 -
 .../src/pages/it/subgraphs/quick-start.mdx    |    2 -
 .../ja/archived/arbitrum/arbitrum-faq.mdx     |    1 -
 website/src/pages/ja/indexing/overview.mdx    |    3 -
 website/src/pages/ja/indexing/tap.mdx         |    4 -
 website/src/pages/ja/resources/glossary.mdx   |    2 -
 .../roles/delegating/undelegating.mdx         |    5 -
 .../best-practices/grafting-hotfix.mdx        |    6 -
 .../developing/creating/install-the-cli.mdx   |    2 -
 .../managing/deleting-a-subgraph.mdx          |    1 -
 website/src/pages/ja/subgraphs/explorer.mdx   |    1 -
 website/src/pages/ja/subgraphs/mcp/claude.mdx |    1 -
 .../src/pages/ja/subgraphs/quick-start.mdx    |    2 -
 .../ko/archived/arbitrum/arbitrum-faq.mdx     |    1 -
 website/src/pages/ko/indexing/overview.mdx    |    3 -
 website/src/pages/ko/indexing/tap.mdx         |    4 -
 website/src/pages/ko/resources/glossary.mdx   |    2 -
 .../roles/delegating/undelegating.mdx         |    5 -
 .../best-practices/grafting-hotfix.mdx        |    6 -
 .../developing/creating/install-the-cli.mdx   |    2 -
 .../managing/deleting-a-subgraph.mdx          |    1 -
 website/src/pages/ko/subgraphs/explorer.mdx   |    1 -
 website/src/pages/ko/subgraphs/mcp/claude.mdx |    1 -
 .../src/pages/ko/subgraphs/quick-start.mdx    |    2 -
 .../mr/archived/arbitrum/arbitrum-faq.mdx     |    1 -
 website/src/pages/mr/indexing/overview.mdx    |    3 -
 website/src/pages/mr/indexing/tap.mdx         |    4 -
 website/src/pages/mr/resources/glossary.mdx   |    2 -
 .../roles/delegating/undelegating.mdx         |    5 -
 .../best-practices/grafting-hotfix.mdx        |    6 -
 .../developing/creating/install-the-cli.mdx   |    2 -
 .../managing/deleting-a-subgraph.mdx          |    1 -
 website/src/pages/mr/subgraphs/explorer.mdx   |    1 -
 website/src/pages/mr/subgraphs/mcp/claude.mdx |    1 -
 .../src/pages/mr/subgraphs/quick-start.mdx    |    2 -
 .../nl/archived/arbitrum/arbitrum-faq.mdx     |    1 -
 website/src/pages/nl/indexing/overview.mdx    |    3 -
 website/src/pages/nl/indexing/tap.mdx         |    4 -
 website/src/pages/nl/resources/glossary.mdx   |    2 -
 .../roles/delegating/undelegating.mdx         |    5 -
 .../best-practices/grafting-hotfix.mdx        |    6 -
 .../developing/creating/install-the-cli.mdx   |    2 -
 .../managing/deleting-a-subgraph.mdx          |    1 -
 website/src/pages/nl/subgraphs/explorer.mdx   |    1 -
 website/src/pages/nl/subgraphs/mcp/claude.mdx |    1 -
 .../src/pages/nl/subgraphs/quick-start.mdx    |    2 -
 .../pl/archived/arbitrum/arbitrum-faq.mdx     |    1 -
 website/src/pages/pl/indexing/overview.mdx    |    3 -
 website/src/pages/pl/indexing/tap.mdx         |    4 -
 website/src/pages/pl/resources/glossary.mdx   |    2 -
 .../roles/delegating/undelegating.mdx         |    5 -
 .../best-practices/grafting-hotfix.mdx        |    6 -
 .../developing/creating/install-the-cli.mdx   |    2 -
 .../managing/deleting-a-subgraph.mdx          |    1 -
 website/src/pages/pl/subgraphs/explorer.mdx   |    1 -
 website/src/pages/pl/subgraphs/mcp/claude.mdx |    1 -
 .../src/pages/pl/subgraphs/quick-start.mdx    |    2 -
 .../pt/archived/arbitrum/arbitrum-faq.mdx     |    1 -
 website/src/pages/pt/indexing/overview.mdx    |    3 -
 website/src/pages/pt/indexing/tap.mdx         |    4 -
 website/src/pages/pt/resources/glossary.mdx   |    2 -
 .../roles/delegating/undelegating.mdx         |    5 -
 .../best-practices/grafting-hotfix.mdx        |    6 -
 .../developing/creating/install-the-cli.mdx   |    2 -
 .../managing/deleting-a-subgraph.mdx          |    1 -
 website/src/pages/pt/subgraphs/explorer.mdx   |    1 -
 website/src/pages/pt/subgraphs/mcp/claude.mdx |    1 -
 .../src/pages/pt/subgraphs/quick-start.mdx    |    2 -
 .../ro/archived/arbitrum/arbitrum-faq.mdx     |    1 -
 website/src/pages/ro/indexing/overview.mdx    |    3 -
 website/src/pages/ro/indexing/tap.mdx         |    4 -
 website/src/pages/ro/resources/glossary.mdx   |    2 -
 .../roles/delegating/undelegating.mdx         |    5 -
 .../best-practices/grafting-hotfix.mdx        |    6 -
 .../developing/creating/install-the-cli.mdx   |    2 -
 .../managing/deleting-a-subgraph.mdx          |    1 -
 website/src/pages/ro/subgraphs/explorer.mdx   |    1 -
 website/src/pages/ro/subgraphs/mcp/claude.mdx |    1 -
 .../src/pages/ro/subgraphs/quick-start.mdx    |    2 -
 .../ru/archived/arbitrum/arbitrum-faq.mdx     |    1 -
 website/src/pages/ru/indexing/overview.mdx    |    3 -
 website/src/pages/ru/indexing/tap.mdx         |    4 -
 website/src/pages/ru/resources/glossary.mdx   |    2 -
 .../roles/delegating/undelegating.mdx         |    5 -
 .../best-practices/grafting-hotfix.mdx        |    6 -
 .../developing/creating/install-the-cli.mdx   |    2 -
 .../managing/deleting-a-subgraph.mdx          |    1 -
 website/src/pages/ru/subgraphs/explorer.mdx   |    1 -
 website/src/pages/ru/subgraphs/mcp/claude.mdx |    1 -
 .../src/pages/ru/subgraphs/quick-start.mdx    |    2 -
 .../sv/archived/arbitrum/arbitrum-faq.mdx     |    1 -
 website/src/pages/sv/indexing/overview.mdx    |    3 -
 website/src/pages/sv/indexing/tap.mdx         |    4 -
 website/src/pages/sv/resources/glossary.mdx   |    2 -
 .../roles/delegating/undelegating.mdx         |    5 -
 .../best-practices/grafting-hotfix.mdx        |    6 -
 .../developing/creating/install-the-cli.mdx   |    2 -
 .../managing/deleting-a-subgraph.mdx          |    1 -
 website/src/pages/sv/subgraphs/explorer.mdx   |    1 -
 website/src/pages/sv/subgraphs/mcp/claude.mdx |    1 -
 .../src/pages/sv/subgraphs/quick-start.mdx    |    2 -
 .../tr/archived/arbitrum/arbitrum-faq.mdx     |    1 -
 website/src/pages/tr/indexing/overview.mdx    |    3 -
 website/src/pages/tr/indexing/tap.mdx         |    4 -
 website/src/pages/tr/resources/glossary.mdx   |    2 -
 .../roles/delegating/undelegating.mdx         |    5 -
 .../best-practices/grafting-hotfix.mdx        |    6 -
 .../developing/creating/install-the-cli.mdx   |    2 -
 .../managing/deleting-a-subgraph.mdx          |    1 -
 website/src/pages/tr/subgraphs/explorer.mdx   |    1 -
 website/src/pages/tr/subgraphs/mcp/claude.mdx |    1 -
 .../src/pages/tr/subgraphs/quick-start.mdx    |    2 -
 .../uk/archived/arbitrum/arbitrum-faq.mdx     |    1 -
 website/src/pages/uk/indexing/overview.mdx    |    3 -
 website/src/pages/uk/indexing/tap.mdx         |    4 -
 website/src/pages/uk/resources/glossary.mdx   |    2 -
 .../roles/delegating/undelegating.mdx         |    5 -
 .../best-practices/grafting-hotfix.mdx        |    6 -
 .../developing/creating/install-the-cli.mdx   |    2 -
 .../managing/deleting-a-subgraph.mdx          |    1 -
 website/src/pages/uk/subgraphs/explorer.mdx   |    1 -
 website/src/pages/uk/subgraphs/mcp/claude.mdx |    1 -
 .../src/pages/uk/subgraphs/quick-start.mdx    |    2 -
 .../ur/archived/arbitrum/arbitrum-faq.mdx     |    1 -
 website/src/pages/ur/indexing/overview.mdx    |    3 -
 website/src/pages/ur/indexing/tap.mdx         |    4 -
 website/src/pages/ur/resources/glossary.mdx   |    2 -
 .../roles/delegating/undelegating.mdx         |    5 -
 .../best-practices/grafting-hotfix.mdx        |    6 -
 .../developing/creating/install-the-cli.mdx   |    2 -
 .../managing/deleting-a-subgraph.mdx          |    1 -
 website/src/pages/ur/subgraphs/explorer.mdx   |    1 -
 website/src/pages/ur/subgraphs/mcp/claude.mdx |    1 -
 .../src/pages/ur/subgraphs/quick-start.mdx    |    2 -
 .../vi/archived/arbitrum/arbitrum-faq.mdx     |    1 -
 website/src/pages/vi/indexing/overview.mdx    |    3 -
 website/src/pages/vi/indexing/tap.mdx         |    4 -
 website/src/pages/vi/resources/glossary.mdx   |    2 -
 .../roles/delegating/undelegating.mdx         |    5 -
 .../best-practices/grafting-hotfix.mdx        |    6 -
 .../developing/creating/install-the-cli.mdx   |    2 -
 .../managing/deleting-a-subgraph.mdx          |    1 -
 website/src/pages/vi/subgraphs/explorer.mdx   |    1 -
 website/src/pages/vi/subgraphs/mcp/claude.mdx |    1 -
 .../src/pages/vi/subgraphs/quick-start.mdx    |    2 -
 .../zh/archived/arbitrum/arbitrum-faq.mdx     |    1 -
 website/src/pages/zh/indexing/overview.mdx    |    3 -
 website/src/pages/zh/indexing/tap.mdx         |    4 -
 website/src/pages/zh/resources/glossary.mdx   |    2 -
 .../roles/delegating/undelegating.mdx         |    5 -
 .../best-practices/grafting-hotfix.mdx        |    6 -
 .../developing/creating/install-the-cli.mdx   |    2 -
 .../managing/deleting-a-subgraph.mdx          |    1 -
 website/src/pages/zh/subgraphs/explorer.mdx   |    1 -
 website/src/pages/zh/subgraphs/mcp/claude.mdx |    1 -
 .../src/pages/zh/subgraphs/quick-start.mdx    |    2 -
 website/src/remarkTransformRemoteGitHub.js    |   67 -
 website/src/remoteDocs/index.ts               |   28 +
 .../src/supportedNetworks/NetworksTable.tsx   |    3 +-
 .../supportedNetworks/{index.tsx => index.ts} |    0
 268 files changed, 1517 insertions(+), 2000 deletions(-)
 delete mode 100644 packages/rehype-unwrap-images/package.json
 delete mode 100644 packages/remark-callouts/package.json
 rename packages/rehype-unwrap-images/index.js => website/src/mdxPlugins/rehypeUnwrapImages.ts (63%)
 rename packages/remark-callouts/index.js => website/src/mdxPlugins/remarkCallouts.ts (71%)
 create mode 100644 website/src/mdxPlugins/remarkTransformRemoteDocs.ts
 delete mode 100644 website/src/remarkTransformRemoteGitHub.js
 create mode 100644 website/src/remoteDocs/index.ts
 rename website/src/supportedNetworks/{index.tsx => index.ts} (100%)

diff --git a/Dockerfile b/Dockerfile
index e05fac2a3a5d..80e857c82e94 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -7,7 +7,7 @@ ENV ENVIRONMENT=$ENVIRONMENT
 ENV ORIGIN=$ORIGIN
 
 ENV PNPM_HOME="/usr/bin"
-ENV NODE_OPTIONS="--max_old_space_size=8192"
+ENV NODE_OPTIONS="--max-old-space-size=8192"
 
 RUN apk add --no-cache git
 RUN npm install -g corepack@latest
diff --git a/package.json b/package.json
index 3fbba8223f21..ef163fc97e95 100644
--- a/package.json
+++ b/package.json
@@ -2,10 +2,10 @@
   "name": "graph-docs",
   "private": true,
   "version": "1.0.0",
-  "packageManager": "pnpm@10.12.1",
+  "packageManager": "pnpm@10.12.3",
   "scripts": {
     "dev": "turbo run dev",
-    "build": "NODE_OPTIONS='--max_old_space_size=8192' turbo run build",
+    "build": "NODE_OPTIONS='--max-old-space-size=8192' turbo run build",
     "prebuild:ci": "turbo run prebuild:ci",
     "check": "pnpm typecheck && pnpm lint && pnpm prettier:check",
     "check:fix": "pnpm lint:fix; pnpm prettier",
@@ -21,11 +21,11 @@
   },
   "devDependencies": {
     "@edgeandnode/eslint-config": "^2.0.3",
-    "@types/node": "^22.15.31",
+    "@types/node": "^22.15.33",
     "eslint": "^8.57.1",
-    "eslint-plugin-mdx": "^3.4.2",
-    "prettier": "^3.5.3",
-    "prettier-plugin-tailwindcss": "^0.6.12",
+    "eslint-plugin-mdx": "^3.5.0",
+    "prettier": "^3.6.1",
+    "prettier-plugin-tailwindcss": "^0.6.13",
     "remark-frontmatter": "^5.0.0",
     "remark-lint-first-heading-level": "^4.0.1",
     "remark-lint-heading-increment": "^4.0.1",
diff --git a/packages/og-image/package.json b/packages/og-image/package.json
index 173d52cb8185..6666c73f6868 100644
--- a/packages/og-image/package.json
+++ b/packages/og-image/package.json
@@ -16,13 +16,13 @@
     "yoga-wasm-web": "^0.3.3"
   },
   "devDependencies": {
-    "@cloudflare/workers-types": "^4.20250610.0",
+    "@cloudflare/workers-types": "^4.20250620.0",
     "@types/react": "^18.3.23",
     "jest-image-snapshot": "^6.5.1",
-    "tsx": "^4.19.4",
+    "tsx": "^4.20.3",
     "typescript": "^5.8.3",
     "vitest": "^2.1.9",
-    "wrangler": "^3.114.9"
+    "wrangler": "^3.114.10"
   },
   "sideEffects": false
 }
diff --git a/packages/og-image/scripts/copy-wasm.ts b/packages/og-image/scripts/copy-wasm.ts
index a93ba951ffca..1fccfb1974b2 100644
--- a/packages/og-image/scripts/copy-wasm.ts
+++ b/packages/og-image/scripts/copy-wasm.ts
@@ -1,12 +1,12 @@
 import { readFile, writeFile } from 'node:fs/promises'
 import { createRequire } from 'node:module'
-import { join } from 'node:path'
+import path from 'node:path'
 
 const require = createRequire(import.meta.url)
 const __dirname = new URL('.', import.meta.url).pathname
 
 await writeFile(
-  join(__dirname, '../vendor/index_bg.wasm'),
+  path.join(__dirname, '../vendor/index_bg.wasm'),
   await readFile(require.resolve('@resvg/resvg-wasm/index_bg.wasm')),
 )
 
diff --git a/packages/rehype-unwrap-images/package.json b/packages/rehype-unwrap-images/package.json
deleted file mode 100644
index 840cb136f675..000000000000
--- a/packages/rehype-unwrap-images/package.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
-  "name": "rehype-unwrap-images",
-  "private": true,
-  "version": "0.0.0",
-  "type": "module",
-  "main": "index.js",
-  "author": "Titus Wormer <tituswormer@gmail.com> (https://wooorm.com)",
-  "dependencies": {
-    "@types/hast": "^3.0.4",
-    "hast-util-interactive": "^3.0.0",
-    "hast-util-whitespace": "^3.0.0",
-    "unist-util-visit": "^5.0.0"
-  },
-  "sideEffects": false
-}
diff --git a/packages/remark-callouts/package.json b/packages/remark-callouts/package.json
deleted file mode 100644
index b4c241d98811..000000000000
--- a/packages/remark-callouts/package.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "name": "remark-callouts",
-  "private": true,
-  "version": "0.0.0",
-  "type": "module",
-  "main": "index.js",
-  "author": "Benoît Rouleau <benoit@edgeandnode.com>",
-  "dependencies": {
-    "unist-util-visit": "^5.0.0"
-  },
-  "sideEffects": false
-}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 01d75f8798fd..ad41d31ff629 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -15,20 +15,20 @@ importers:
         specifier: ^2.0.3
         version: 2.0.3(eslint@8.57.1)(typescript@5.8.3)
       '@types/node':
-        specifier: ^22.15.31
-        version: 22.15.31
+        specifier: ^22.15.33
+        version: 22.15.33
       eslint:
         specifier: ^8.57.1
         version: 8.57.1
       eslint-plugin-mdx:
-        specifier: ^3.4.2
-        version: 3.4.2(eslint@8.57.1)
+        specifier: ^3.5.0
+        version: 3.5.0(eslint@8.57.1)
       prettier:
-        specifier: ^3.5.3
-        version: 3.5.3
+        specifier: ^3.6.1
+        version: 3.6.1
       prettier-plugin-tailwindcss:
-        specifier: ^0.6.12
-        version: 0.6.12(prettier@3.5.3)
+        specifier: ^0.6.13
+        version: 0.6.13(prettier@3.6.1)
       remark-frontmatter:
         specifier: ^5.0.0
         version: 5.0.0
@@ -67,8 +67,8 @@ importers:
         version: 0.3.3
     devDependencies:
       '@cloudflare/workers-types':
-        specifier: ^4.20250610.0
-        version: 4.20250610.0
+        specifier: ^4.20250620.0
+        version: 4.20250620.0
       '@types/react':
         specifier: ^18.3.23
         version: 18.3.23
@@ -76,38 +76,17 @@ importers:
         specifier: ^6.5.1
         version: 6.5.1
       tsx:
-        specifier: ^4.19.4
-        version: 4.19.4
+        specifier: ^4.20.3
+        version: 4.20.3
       typescript:
         specifier: ^5.8.3
         version: 5.8.3
       vitest:
         specifier: ^2.1.9
-        version: 2.1.9(@types/node@22.15.31)(jsdom@24.1.3)
+        version: 2.1.9(@types/node@22.15.33)(jsdom@24.1.3)
       wrangler:
-        specifier: ^3.114.9
-        version: 3.114.9(@cloudflare/workers-types@4.20250610.0)
-
-  packages/rehype-unwrap-images:
-    dependencies:
-      '@types/hast':
-        specifier: ^3.0.4
-        version: 3.0.4
-      hast-util-interactive:
-        specifier: ^3.0.0
-        version: 3.0.0
-      hast-util-whitespace:
-        specifier: ^3.0.0
-        version: 3.0.0
-      unist-util-visit:
-        specifier: ^5.0.0
-        version: 5.0.0
-
-  packages/remark-callouts:
-    dependencies:
-      unist-util-visit:
-        specifier: ^5.0.0
-        version: 5.0.0
+        specifier: ^3.114.10
+        version: 3.114.10(@cloudflare/workers-types@4.20250620.0)
 
   packages/remark-lint-restrict-elements:
     dependencies:
@@ -122,22 +101,22 @@ importers:
     dependencies:
       '@docsearch/react':
         specifier: ^3.9.0
-        version: 3.9.0(@algolia/client-search@5.27.0)(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)
+        version: 3.9.0(@algolia/client-search@5.29.0)(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)
       '@edgeandnode/common':
         specifier: ^7.0.4
-        version: 7.0.4(hardhat@2.24.2(typescript@5.8.3))
+        version: 7.0.4(hardhat@2.25.0(typescript@5.8.3))
       '@edgeandnode/gds':
-        specifier: ^6.5.15
-        version: 6.5.15(@emotion/is-prop-valid@0.8.8)(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(@theme-ui/core@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(dayjs@1.11.13)(hardhat@2.24.2(typescript@5.8.3))(next@14.2.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)(theme-ui@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(typescript@5.8.3)
+        specifier: ^6.6.2
+        version: 6.6.2(@emotion/is-prop-valid@0.8.8)(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(@theme-ui/core@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(dayjs@1.11.13)(hardhat@2.25.0(typescript@5.8.3))(next@14.2.30(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)(theme-ui@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(typescript@5.8.3)
       '@edgeandnode/go':
-        specifier: ^10.1.1
-        version: 10.1.1(ae149f031949f9aa05d727c3c6926441)
+        specifier: ^10.2.3
+        version: 10.2.3(f31233e6aec53dd14ecd91b56887af79)
       '@emotion/react':
         specifier: ^11.14.0
         version: 11.14.0(@types/react@18.3.23)(react@18.3.1)
       '@graphprotocol/contracts':
-        specifier: ^7.1.2
-        version: 7.1.2
+        specifier: ^7.3.0
+        version: 7.3.0
       '@pinax/graph-networks-registry':
         specifier: ^0.6.7
         version: 0.6.7
@@ -153,27 +132,39 @@ importers:
       fetch-har:
         specifier: ^11.1.1
         version: 11.1.1
+      hast:
+        specifier: ^1.0.0
+        version: 1.0.0
+      hast-util-whitespace:
+        specifier: ^3.0.0
+        version: 3.0.0
       lodash:
         specifier: ^4.17.21
         version: 4.17.21
+      mdast-util-mdx-jsx:
+        specifier: ^3.2.0
+        version: 3.2.0
+      mdast-util-to-hast:
+        specifier: ^13.2.0
+        version: 13.2.0
       mixpanel-browser:
         specifier: ^2.65.0
         version: 2.65.0
       motion:
-        specifier: ^12.16.0
-        version: 12.16.0(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+        specifier: ^12.19.1
+        version: 12.19.1(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       next:
-        specifier: ^14.2.29
-        version: 14.2.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+        specifier: ^14.2.30
+        version: 14.2.30(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       next-seo:
         specifier: ^6.8.0
-        version: 6.8.0(next@14.2.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+        version: 6.8.0(next@14.2.30(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       next-sitemap:
         specifier: ^4.2.3
-        version: 4.2.3(next@14.2.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1))
+        version: 4.2.3(next@14.2.30(react-dom@18.3.1(react@18.3.1))(react@18.3.1))
       nextra:
         specifier: ^3.3.1
-        version: 3.3.1(@types/react@18.3.23)(acorn@8.15.0)(next@14.2.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3)
+        version: 3.3.1(@types/react@18.3.23)(acorn@8.15.0)(next@14.2.30(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3)
       openapi-types:
         specifier: ^12.1.3
         version: 12.1.3
@@ -192,25 +183,25 @@ importers:
       rehype-mdx-code-props:
         specifier: ^3.0.1
         version: 3.0.1
-      rehype-unwrap-images:
-        specifier: workspace:*
-        version: link:../packages/rehype-unwrap-images
-      remark-callouts:
-        specifier: workspace:*
-        version: link:../packages/remark-callouts
       theme-ui:
         specifier: ^0.17.2
         version: 0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)
       unist-util-visit:
         specifier: ^5.0.0
         version: 5.0.0
+      vfile:
+        specifier: ^6.0.3
+        version: 6.0.3
       zod:
-        specifier: ^3.25.57
-        version: 3.25.57
+        specifier: ^3.25.67
+        version: 3.25.67
     devDependencies:
+      '@types/hast':
+        specifier: ^3.0.4
+        version: 3.0.4
       '@types/lodash':
-        specifier: ^4.17.17
-        version: 4.17.17
+        specifier: ^4.17.19
+        version: 4.17.19
       '@types/mdast':
         specifier: ^4.0.4
         version: 4.0.4
@@ -218,32 +209,35 @@ importers:
         specifier: ^2.60.0
         version: 2.60.0
       '@types/node':
-        specifier: ^22.15.31
-        version: 22.15.31
+        specifier: ^22.15.33
+        version: 22.15.33
       '@types/react':
         specifier: ^18.3.23
         version: 18.3.23
       '@types/react-dom':
         specifier: ^18.3.7
         version: 18.3.7(@types/react@18.3.23)
+      '@types/vfile':
+        specifier: ^4.0.0
+        version: 4.0.0
       autoprefixer:
         specifier: ^10.4.21
-        version: 10.4.21(postcss@8.5.4)
+        version: 10.4.21(postcss@8.5.6)
       fast-xml-parser:
         specifier: ^5.2.5
         version: 5.2.5
       postcss:
-        specifier: ^8.5.4
-        version: 8.5.4
+        specifier: ^8.5.6
+        version: 8.5.6
       tailwindcss:
         specifier: ^3.4.17
         version: 3.4.17
       tsup:
         specifier: ^8.5.0
-        version: 8.5.0(jiti@1.21.7)(postcss@8.5.4)(tsx@4.19.4)(typescript@5.8.3)(yaml@2.8.0)
+        version: 8.5.0(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.8.0)
       tsx:
-        specifier: ^4.19.4
-        version: 4.19.4
+        specifier: ^4.20.3
+        version: 4.20.3
 
 packages:
 
@@ -273,56 +267,56 @@ packages:
       '@algolia/client-search': '>= 4.9.1 < 6'
       algoliasearch: '>= 4.9.1 < 6'
 
-  '@algolia/client-abtesting@5.27.0':
-    resolution: {integrity: sha512-SITU5umoknxETtw67TxJu9njyMkWiH8pM+Bvw4dzfuIrIAT6Y1rmwV4y0A0didWoT+6xVuammIykbtBMolBcmg==}
+  '@algolia/client-abtesting@5.29.0':
+    resolution: {integrity: sha512-AM/6LYMSTnZvAT5IarLEKjYWOdV+Fb+LVs8JRq88jn8HH6bpVUtjWdOZXqX1hJRXuCAY8SdQfb7F8uEiMNXdYQ==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/client-analytics@5.27.0':
-    resolution: {integrity: sha512-go1b9qIZK5vYEQ7jD2bsfhhhVsoh9cFxQ5xF8TzTsg2WOCZR3O92oXCkq15SOK0ngJfqDU6a/k0oZ4KuEnih1Q==}
+  '@algolia/client-analytics@5.29.0':
+    resolution: {integrity: sha512-La34HJh90l0waw3wl5zETO8TuukeUyjcXhmjYZL3CAPLggmKv74mobiGRIb+mmBENybiFDXf/BeKFLhuDYWMMQ==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/client-common@5.27.0':
-    resolution: {integrity: sha512-tnFOzdNuMzsz93kOClj3fKfuYoF3oYaEB5bggULSj075GJ7HUNedBEm7a6ScrjtnOaOtipbnT7veUpHA4o4wEQ==}
+  '@algolia/client-common@5.29.0':
+    resolution: {integrity: sha512-T0lzJH/JiCxQYtCcnWy7Jf1w/qjGDXTi2npyF9B9UsTvXB97GRC6icyfXxe21mhYvhQcaB1EQ/J2575FXxi2rA==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/client-insights@5.27.0':
-    resolution: {integrity: sha512-y1qgw39qZijjQBXrqZTiwK1cWgWGRiLpJNWBv9w36nVMKfl9kInrfsYmdBAfmlhVgF/+Woe0y1jQ7pa4HyShAw==}
+  '@algolia/client-insights@5.29.0':
+    resolution: {integrity: sha512-A39F1zmHY9aev0z4Rt3fTLcGN5AG1VsVUkVWy6yQG5BRDScktH+U5m3zXwThwniBTDV1HrPgiGHZeWb67GkR2Q==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/client-personalization@5.27.0':
-    resolution: {integrity: sha512-XluG9qPZKEbiLoIfXTKbABsWDNOMPx0t6T2ImJTTeuX+U/zBdmfcqqgcgkqXp+vbXof/XX/4of9Eqo1JaqEmKw==}
+  '@algolia/client-personalization@5.29.0':
+    resolution: {integrity: sha512-ibxmh2wKKrzu5du02gp8CLpRMeo+b/75e4ORct98CT7mIxuYFXowULwCd6cMMkz/R0LpKXIbTUl15UL5soaiUQ==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/client-query-suggestions@5.27.0':
-    resolution: {integrity: sha512-V8/To+SsAl2sdw2AAjeLJuCW1L+xpz+LAGerJK7HKqHzE5yQhWmIWZTzqYQcojkii4iBMYn0y3+uReWqT8XVSQ==}
+  '@algolia/client-query-suggestions@5.29.0':
+    resolution: {integrity: sha512-VZq4/AukOoJC2WSwF6J5sBtt+kImOoBwQc1nH3tgI+cxJBg7B77UsNC+jT6eP2dQCwGKBBRTmtPLUTDDnHpMgA==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/client-search@5.27.0':
-    resolution: {integrity: sha512-EJJ7WmvmUXZdchueKFCK8UZFyLqy4Hz64snNp0cTc7c0MKaSeDGYEDxVsIJKp15r7ORaoGxSyS4y6BGZMXYuCg==}
+  '@algolia/client-search@5.29.0':
+    resolution: {integrity: sha512-cZ0Iq3OzFUPpgszzDr1G1aJV5UMIZ4VygJ2Az252q4Rdf5cQMhYEIKArWY/oUjMhQmosM8ygOovNq7gvA9CdCg==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/ingestion@1.27.0':
-    resolution: {integrity: sha512-xNCyWeqpmEo4EdmpG57Fs1fJIQcPwt5NnJ6MBdXnUdMVXF4f5PHgza+HQWQQcYpCsune96jfmR0v7us6gRIlCw==}
+  '@algolia/ingestion@1.29.0':
+    resolution: {integrity: sha512-scBXn0wO5tZCxmO6evfa7A3bGryfyOI3aoXqSQBj5SRvNYXaUlFWQ/iKI70gRe/82ICwE0ICXbHT/wIvxOW7vw==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/monitoring@1.27.0':
-    resolution: {integrity: sha512-P0NDiEFyt9UYQLBI0IQocIT7xHpjMpoFN3UDeerbztlkH9HdqT0GGh1SHYmNWpbMWIGWhSJTtz6kSIWvFu4+pw==}
+  '@algolia/monitoring@1.29.0':
+    resolution: {integrity: sha512-FGWWG9jLFhsKB7YiDjM2dwQOYnWu//7Oxrb2vT96N7+s+hg1mdHHfHNRyEudWdxd4jkMhBjeqNA21VbTiOIPVg==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/recommend@5.27.0':
-    resolution: {integrity: sha512-cqfTMF1d1cc7hg0vITNAFxJZas7MJ4Obc36WwkKpY23NOtGb+4tH9X7UKlQa2PmTgbXIANoJ/DAQTeiVlD2I4Q==}
+  '@algolia/recommend@5.29.0':
+    resolution: {integrity: sha512-xte5+mpdfEARAu61KXa4ewpjchoZuJlAlvQb8ptK6hgHlBHDnYooy1bmOFpokaAICrq/H9HpoqNUX71n+3249A==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/requester-browser-xhr@5.27.0':
-    resolution: {integrity: sha512-ErenYTcXl16wYXtf0pxLl9KLVxIztuehqXHfW9nNsD8mz9OX42HbXuPzT7y6JcPiWJpc/UU/LY5wBTB65vsEUg==}
+  '@algolia/requester-browser-xhr@5.29.0':
+    resolution: {integrity: sha512-og+7Em75aPHhahEUScq2HQ3J7ULN63Levtd87BYMpn6Im5d5cNhaC4QAUsXu6LWqxRPgh4G+i+wIb6tVhDhg2A==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/requester-fetch@5.27.0':
-    resolution: {integrity: sha512-CNOvmXsVi+IvT7z1d+6X7FveVkgEQwTNgipjQCHTIbF9KSMfZR7tUsJC+NpELrm10ALdOMauah84ybs9rw1cKQ==}
+  '@algolia/requester-fetch@5.29.0':
+    resolution: {integrity: sha512-JCxapz7neAy8hT/nQpCvOrI5JO8VyQ1kPvBiaXWNC1prVq0UMYHEL52o1BsPvtXfdQ7BVq19OIq6TjOI06mV/w==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/requester-node-http@5.27.0':
-    resolution: {integrity: sha512-Nx9EdLYZDsaYFTthqmc0XcVvsx6jqeEX8fNiYOB5i2HboQwl8pJPj1jFhGqoGd0KG7KFR+sdPO5/e0EDDAru2Q==}
+  '@algolia/requester-node-http@5.29.0':
+    resolution: {integrity: sha512-lVBD81RBW5VTdEYgnzCz7Pf9j2H44aymCP+/eHGJu4vhU+1O8aKf3TVBgbQr5UM6xoe8IkR/B112XY6YIG2vtg==}
     engines: {node: '>= 14.0.0'}
 
   '@alloc/quick-lru@5.2.0':
@@ -335,8 +329,8 @@ packages:
   '@antfu/utils@8.1.1':
     resolution: {integrity: sha512-Mex9nXf9vR6AhcXmMrlz/HVgYYZpVGJ6YlPgwl7UnaFpnshXs6EK/oa5Gpf3CzENMjkvEx2tQtntGnb7UtSTOQ==}
 
-  '@apidevtools/json-schema-ref-parser@13.0.4':
-    resolution: {integrity: sha512-uL4dmc/lM3EA0i6oTflN1GZpMmZWYKllmcbGAzwYO/Wp9r+RGoTw4RBstCh0ri/yqoQo+itAt3GWLLgW8RIEEg==}
+  '@apidevtools/json-schema-ref-parser@13.0.5':
+    resolution: {integrity: sha512-xfh4xVJD62gG6spIc7lwxoWT+l16nZu1ELyU8FkjaP/oD2yP09EvLAU6KhtudN9aML2Khhs9pY6Slr7KGTES3w==}
     engines: {node: '>= 16'}
 
   '@asamuzakjp/css-color@3.2.0':
@@ -459,8 +453,8 @@ packages:
     cpu: [x64]
     os: [win32]
 
-  '@cloudflare/workers-types@4.20250610.0':
-    resolution: {integrity: sha512-HxnUoey3QxCEfy07pUm7J42jBi9YPHq/hA3fw6JmOqYLHdviHI28OA8lup+2RUaHwDzh6q1DSfrBvvDqde645A==}
+  '@cloudflare/workers-types@4.20250620.0':
+    resolution: {integrity: sha512-EVvRB/DJEm6jhdKg+A4Qm4y/ry1cIvylSgSO3/f/Bv161vldDRxaXM2YoQQWFhLOJOw0qtrHsKOD51KYxV1XCw==}
 
   '@corex/deepmerge@4.0.43':
     resolution: {integrity: sha512-N8uEMrMPL0cu/bdboEWpQYb/0i2K5Qn8eCsxzOmxSggJbbQte7ljMRoXm917AbntqTGOzdTu+vP3KOOzoC70HQ==}
@@ -520,8 +514,8 @@ packages:
   '@edgeandnode/common@7.0.4':
     resolution: {integrity: sha512-R5i6tPnmUY00nbaWKvrLlfToFciJSm7Kk5boql16f+NzZnvsk6+SxFWi7b/hmQfEbaXm74isD/yfVcLPX6h+Aw==}
 
-  '@edgeandnode/ens@2.2.0':
-    resolution: {integrity: sha512-ESl34YCcGjPyjcAO/evV0YebRCizNXRyrzR6QNoPgzaC05sAWkRoRl07INwsX6G//KsQE1G13n1LhgcUcR/UiQ==}
+  '@edgeandnode/ens@2.3.0':
+    resolution: {integrity: sha512-/yR49B7zOwErCDjV21COTmpu7JsGqRtgDV7AnlzXU4CWtuYJlyzJ3len8fzPocKrk2C55yXc530kFwBknAQ9Og==}
     peerDependencies:
       viem: ^2.30.0
 
@@ -534,8 +528,8 @@ packages:
       typescript:
         optional: true
 
-  '@edgeandnode/gds@6.5.15':
-    resolution: {integrity: sha512-++Ptbf1OFqAUTeU31k17Bw+pfyX0Je4Itr9EdrRN1HWQAWrACK2BiBVAZKsp0YGThxFkgLuQ0CZ1+KKwWuBy8Q==}
+  '@edgeandnode/gds@6.6.2':
+    resolution: {integrity: sha512-lXr4YQpnTitq+mqvRXIM6i2W36PPjtC/AHuPQsVK7uJbLXQ392ghuzHASFrtT7/XjY6nZ3vHg0zktVexFimM5Q==}
     peerDependencies:
       '@emotion/react': ^11
       dayjs: ^1.11
@@ -547,12 +541,12 @@ packages:
       next:
         optional: true
 
-  '@edgeandnode/go@10.1.1':
-    resolution: {integrity: sha512-5dXn2i/f/cnb2QwSP86piHd24VPDjvCc9lyCJ/fX/7cANhdjSebWf/iBRoQGzn3K6ntyKxE99DsrkX+/uI0P3w==}
+  '@edgeandnode/go@10.2.3':
+    resolution: {integrity: sha512-D0ouLK91Wr4ZA7Vz+ZF3F3msMxm6NcVi1K3YKBEPuHYn43wt625ON73YQZvTv6VJzZEzfUsxaFcUVbm2qS11tA==}
     peerDependencies:
       '@edgeandnode/common': ^7.0.4
-      '@edgeandnode/ens': ^2.2.0
-      '@edgeandnode/gds': ^6.5.15
+      '@edgeandnode/ens': ^2.3.0
+      '@edgeandnode/gds': ^6.6.2
       '@emotion/react': ^11
       '@tanstack/react-query': ^5
       graphql: '>=16.9'
@@ -1249,8 +1243,8 @@ packages:
   '@formatjs/intl-localematcher@0.6.1':
     resolution: {integrity: sha512-ePEgLgVCqi2BBFnTMWPfIghu6FkbZnnBVhO2sSxvLfrdFw7wCHAHiDoM2h4NRgjbaY7+B7HgOLZGkK187pZTZg==}
 
-  '@graphprotocol/contracts@7.1.2':
-    resolution: {integrity: sha512-t8o0nA+cs5HEKLxjaV0zELBtDLAPm6hoXi0o5tnpw7vigyMPoP92QQkVfbjAt9eMnkC7/AyGRWOMBfAZV9l8Og==}
+  '@graphprotocol/contracts@7.3.0':
+    resolution: {integrity: sha512-uEjgrBN4WCkJhSrUi5O64cNbU5OWI7iwy/03Er9n+J7o3WEspizpLJvSGXql8E0XtI0ygBaHBTwJfPo7SUphkg==}
 
   '@graphql-typed-document-node/core@3.2.0':
     resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==}
@@ -1444,8 +1438,8 @@ packages:
       '@types/react': '>=16'
       react: '>=16'
 
-  '@mermaid-js/parser@0.4.0':
-    resolution: {integrity: sha512-wla8XOWvQAwuqy+gxiZqY+c7FokraOTHRWMsbB4AgRx9Sy7zKslNyejy7E+a77qHfey5GXw/ik3IXv/NHMJgaA==}
+  '@mermaid-js/parser@0.5.0':
+    resolution: {integrity: sha512-AiaN7+VjXC+3BYE+GwNezkpjIcCI2qIMB/K4S2/vMWe0q/XJCBbx5+K7iteuz7VyltX9iAK4FmVTvGc9kjOV4w==}
 
   '@napi-rs/simple-git-android-arm-eabi@0.1.19':
     resolution: {integrity: sha512-XryEH/hadZ4Duk/HS/HC/cA1j0RHmqUGey3MsCf65ZS0VrWMqChXM/xlTPWuY5jfCc/rPubHaqI7DZlbexnX/g==}
@@ -1541,62 +1535,62 @@ packages:
   '@next/env@13.5.11':
     resolution: {integrity: sha512-fbb2C7HChgM7CemdCY+y3N1n8pcTKdqtQLbC7/EQtPdLvlMUT9JX/dBYl8MMZAtYG4uVMyPFHXckb68q/NRwqg==}
 
-  '@next/env@14.2.29':
-    resolution: {integrity: sha512-UzgLR2eBfhKIQt0aJ7PWH7XRPYw7SXz0Fpzdl5THjUnvxy4kfBk9OU4RNPNiETewEEtaBcExNFNn1QWH8wQTjg==}
+  '@next/env@14.2.30':
+    resolution: {integrity: sha512-KBiBKrDY6kxTQWGzKjQB7QirL3PiiOkV7KW98leHFjtVRKtft76Ra5qSA/SL75xT44dp6hOcqiiJ6iievLOYug==}
 
   '@next/eslint-plugin-next@13.4.9':
     resolution: {integrity: sha512-nDtGpa992tNyAkT/KmSMy7QkHfNZmGCBYhHtafU97DubqxzNdvLsqRtliQ4FU04CysRCtvP2hg8rRC1sAKUTUA==}
 
-  '@next/swc-darwin-arm64@14.2.29':
-    resolution: {integrity: sha512-wWtrAaxCVMejxPHFb1SK/PVV1WDIrXGs9ki0C/kUM8ubKHQm+3hU9MouUywCw8Wbhj3pewfHT2wjunLEr/TaLA==}
+  '@next/swc-darwin-arm64@14.2.30':
+    resolution: {integrity: sha512-EAqfOTb3bTGh9+ewpO/jC59uACadRHM6TSA9DdxJB/6gxOpyV+zrbqeXiFTDy9uV6bmipFDkfpAskeaDcO+7/g==}
     engines: {node: '>= 10'}
     cpu: [arm64]
     os: [darwin]
 
-  '@next/swc-darwin-x64@14.2.29':
-    resolution: {integrity: sha512-7Z/jk+6EVBj4pNLw/JQrvZVrAh9Bv8q81zCFSfvTMZ51WySyEHWVpwCEaJY910LyBftv2F37kuDPQm0w9CEXyg==}
+  '@next/swc-darwin-x64@14.2.30':
+    resolution: {integrity: sha512-TyO7Wz1IKE2kGv8dwQ0bmPL3s44EKVencOqwIY69myoS3rdpO1NPg5xPM5ymKu7nfX4oYJrpMxv8G9iqLsnL4A==}
     engines: {node: '>= 10'}
     cpu: [x64]
     os: [darwin]
 
-  '@next/swc-linux-arm64-gnu@14.2.29':
-    resolution: {integrity: sha512-o6hrz5xRBwi+G7JFTHc+RUsXo2lVXEfwh4/qsuWBMQq6aut+0w98WEnoNwAwt7hkEqegzvazf81dNiwo7KjITw==}
+  '@next/swc-linux-arm64-gnu@14.2.30':
+    resolution: {integrity: sha512-I5lg1fgPJ7I5dk6mr3qCH1hJYKJu1FsfKSiTKoYwcuUf53HWTrEkwmMI0t5ojFKeA6Vu+SfT2zVy5NS0QLXV4Q==}
     engines: {node: '>= 10'}
     cpu: [arm64]
     os: [linux]
 
-  '@next/swc-linux-arm64-musl@14.2.29':
-    resolution: {integrity: sha512-9i+JEHBOVgqxQ92HHRFlSW1EQXqa/89IVjtHgOqsShCcB/ZBjTtkWGi+SGCJaYyWkr/lzu51NTMCfKuBf7ULNw==}
+  '@next/swc-linux-arm64-musl@14.2.30':
+    resolution: {integrity: sha512-8GkNA+sLclQyxgzCDs2/2GSwBc92QLMrmYAmoP2xehe5MUKBLB2cgo34Yu242L1siSkwQkiV4YLdCnjwc/Micw==}
     engines: {node: '>= 10'}
     cpu: [arm64]
     os: [linux]
 
-  '@next/swc-linux-x64-gnu@14.2.29':
-    resolution: {integrity: sha512-B7JtMbkUwHijrGBOhgSQu2ncbCYq9E7PZ7MX58kxheiEOwdkM+jGx0cBb+rN5AeqF96JypEppK6i/bEL9T13lA==}
+  '@next/swc-linux-x64-gnu@14.2.30':
+    resolution: {integrity: sha512-8Ly7okjssLuBoe8qaRCcjGtcMsv79hwzn/63wNeIkzJVFVX06h5S737XNr7DZwlsbTBDOyI6qbL2BJB5n6TV/w==}
     engines: {node: '>= 10'}
     cpu: [x64]
     os: [linux]
 
-  '@next/swc-linux-x64-musl@14.2.29':
-    resolution: {integrity: sha512-yCcZo1OrO3aQ38B5zctqKU1Z3klOohIxug6qdiKO3Q3qNye/1n6XIs01YJ+Uf+TdpZQ0fNrOQI2HrTLF3Zprnw==}
+  '@next/swc-linux-x64-musl@14.2.30':
+    resolution: {integrity: sha512-dBmV1lLNeX4mR7uI7KNVHsGQU+OgTG5RGFPi3tBJpsKPvOPtg9poyav/BYWrB3GPQL4dW5YGGgalwZ79WukbKQ==}
     engines: {node: '>= 10'}
     cpu: [x64]
     os: [linux]
 
-  '@next/swc-win32-arm64-msvc@14.2.29':
-    resolution: {integrity: sha512-WnrfeOEtTVidI9Z6jDLy+gxrpDcEJtZva54LYC0bSKQqmyuHzl0ego+v0F/v2aXq0am67BRqo/ybmmt45Tzo4A==}
+  '@next/swc-win32-arm64-msvc@14.2.30':
+    resolution: {integrity: sha512-6MMHi2Qc1Gkq+4YLXAgbYslE1f9zMGBikKMdmQRHXjkGPot1JY3n5/Qrbg40Uvbi8//wYnydPnyvNhI1DMUW1g==}
     engines: {node: '>= 10'}
     cpu: [arm64]
     os: [win32]
 
-  '@next/swc-win32-ia32-msvc@14.2.29':
-    resolution: {integrity: sha512-vkcriFROT4wsTdSeIzbxaZjTNTFKjSYmLd8q/GVH3Dn8JmYjUKOuKXHK8n+lovW/kdcpIvydO5GtN+It2CvKWA==}
+  '@next/swc-win32-ia32-msvc@14.2.30':
+    resolution: {integrity: sha512-pVZMnFok5qEX4RT59mK2hEVtJX+XFfak+/rjHpyFh7juiT52r177bfFKhnlafm0UOSldhXjj32b+LZIOdswGTg==}
     engines: {node: '>= 10'}
     cpu: [ia32]
     os: [win32]
 
-  '@next/swc-win32-x64-msvc@14.2.29':
-    resolution: {integrity: sha512-iPPwUEKnVs7pwR0EBLJlwxLD7TTHWS/AoVZx1l9ZQzfQciqaFEr5AlYzA2uB6Fyby1IF18t4PL0nTpB+k4Tzlw==}
+  '@next/swc-win32-x64-msvc@14.2.30':
+    resolution: {integrity: sha512-4KCo8hMZXMjpTzs3HOqOGYYwAXymXIy7PEPAXNEcEOyKqkjiDlECumrWziy+JEF0Oi4ILHGxzgQ3YiMGG2t/Lg==}
     engines: {node: '>= 10'}
     cpu: [x64]
     os: [win32]
@@ -1612,10 +1606,6 @@ packages:
     resolution: {integrity: sha512-vnI7V6lFNe0tLAuJMu+2sX+FcL14TaCWy1qiczg1VwRmPrpQCdq5ESXQMqUc2tluRNf6irBXrWbl1mGN8uaU/g==}
     engines: {node: ^14.21.3 || >=16}
 
-  '@noble/curves@1.9.1':
-    resolution: {integrity: sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA==}
-    engines: {node: ^14.21.3 || >=16}
-
   '@noble/curves@1.9.2':
     resolution: {integrity: sha512-HxngEd2XUcg9xi20JkwlLCtYwfoFw4JGkuZpT+WlsPD4gB/cxkvTD8fSsoAnphGZhFdZYKeQIPCuFlWPm1uE0g==}
     engines: {node: ^14.21.3 || >=16}
@@ -1654,36 +1644,36 @@ packages:
     resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==}
     engines: {node: '>=12.4.0'}
 
-  '@nomicfoundation/edr-darwin-arm64@0.11.0':
-    resolution: {integrity: sha512-aYTVdcSs27XG7ayTzvZ4Yn9z/ABSaUwicrtrYK2NR8IH0ik4N4bWzo/qH8rax6rewVLbHUkGyGYnsy5ZN4iiMw==}
+  '@nomicfoundation/edr-darwin-arm64@0.11.2':
+    resolution: {integrity: sha512-/QU0GHeoLFOJp28qK46kkTG849NN/5Qgq9ifKzhqBas1MCqwcdjrUI3raGkvE9SWJevljWd1HdW16fFpxUrzbA==}
     engines: {node: '>= 18'}
 
-  '@nomicfoundation/edr-darwin-x64@0.11.0':
-    resolution: {integrity: sha512-RxX7UYgvJrfcyT/uHUn44Nsy1XaoW+Q1khKMdHKxeW7BrgIi+Lz+siz3bX5vhSoAnKilDPhIVLrnC8zxQhjR2A==}
+  '@nomicfoundation/edr-darwin-x64@0.11.2':
+    resolution: {integrity: sha512-Dam+k00vyYNXCkM7JZGQBm0McNaL6ilbfY8BuIdHU2mpIVO5hpAFk8IQnMnG3FRuXuPJ0JoSTkn1R495T8AKqw==}
     engines: {node: '>= 18'}
 
-  '@nomicfoundation/edr-linux-arm64-gnu@0.11.0':
-    resolution: {integrity: sha512-J0j+rs0s11FuSipt/ymqrFmpJ7c0FSz1/+FohCIlUXDxFv//+1R/8lkGPjEYFmy8DPpk/iO8mcpqHTGckREbqA==}
+  '@nomicfoundation/edr-linux-arm64-gnu@0.11.2':
+    resolution: {integrity: sha512-6Z+hZ61c0v5EPVhCAc/rV36eN20GbPRfcmUeFJ3t+RjdY20EiUQzP85YU0q3AgCuwr410W27pazoBoL73cCPbg==}
     engines: {node: '>= 18'}
 
-  '@nomicfoundation/edr-linux-arm64-musl@0.11.0':
-    resolution: {integrity: sha512-4r32zkGMN7WT/CMEuW0VjbuEdIeCskHNDMW4SSgQSJOE/N9L1KSLJCSsAbPD3aYE+e4WRDTyOwmuLjeUTcLZKQ==}
+  '@nomicfoundation/edr-linux-arm64-musl@0.11.2':
+    resolution: {integrity: sha512-AqC4AI3pR4vSsEcFyW/6rI1q16wEjIRYIR25IJO/EdBmXdsuVZgxsf/kMUCWQhhTuy89RTgIGTbMAQA0+DfSvA==}
     engines: {node: '>= 18'}
 
-  '@nomicfoundation/edr-linux-x64-gnu@0.11.0':
-    resolution: {integrity: sha512-SmdncQHLYtVNWLIMyGaY6LpAfamzTDe3fxjkirmJv3CWR5tcEyC6LMui/GsIVnJzXeNJBXAzwl8hTUAxHTM6kQ==}
+  '@nomicfoundation/edr-linux-x64-gnu@0.11.2':
+    resolution: {integrity: sha512-vz1uiof1ZIi6RnXfHZiAXRgkloLciuYGD1rNDrqm1Pp7Nf0pbxw+e4TBQLoMYKzZn0MYS4u4Fa0AV2S7NjfptQ==}
     engines: {node: '>= 18'}
 
-  '@nomicfoundation/edr-linux-x64-musl@0.11.0':
-    resolution: {integrity: sha512-w6hUqpn/trwiH6SRuRGysj37LsQVCX5XDCA3Xi81sbOaLhbHrNvK9TXWyZmcuzbdTKQQW6VNywcSxDdOiChcJg==}
+  '@nomicfoundation/edr-linux-x64-musl@0.11.2':
+    resolution: {integrity: sha512-ArAbcrWwn+8Ze8JAaA9349N2E7hfs9PYvxDgfhujEH9iVC9XI6L+OhMATPsS3wkOST/+ykxELAF1KT4YjSxcrA==}
     engines: {node: '>= 18'}
 
-  '@nomicfoundation/edr-win32-x64-msvc@0.11.0':
-    resolution: {integrity: sha512-BLmULjRKoH9BsX+c4Na2ypV7NGeJ+M6Zpqj/faPOwleVscDdSr/IhriyPaXCe8dyfwbge7lWsbekiADtPSnB2Q==}
+  '@nomicfoundation/edr-win32-x64-msvc@0.11.2':
+    resolution: {integrity: sha512-GDXBhxy5wlmZYQrTXu9Oh9OPTsi4tCdmHy1z8O9XqdH9wsP674Frh6Fb43yjVoS2Ek1F9yX11nexIrFXSuNyJQ==}
     engines: {node: '>= 18'}
 
-  '@nomicfoundation/edr@0.11.0':
-    resolution: {integrity: sha512-36WERf8ldvyHR6UAbcYsa+vpbW7tCrJGBwF4gXSsb8+STj1n66Hz85Y/O7B9+8AauX3PhglvV5dKl91tk43mWw==}
+  '@nomicfoundation/edr@0.11.2':
+    resolution: {integrity: sha512-JEFMTs5Tju+YiCsv6EO+657O/fvPaQ7bkUCkWqHFYFFbCKH1yh0PeRIaqj5h4z4O16ckxbVpAM676ZFTmvFUGQ==}
     engines: {node: '>= 18'}
 
   '@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.2':
@@ -2200,50 +2190,50 @@ packages:
   '@radix-ui/rect@1.1.1':
     resolution: {integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==}
 
-  '@react-aria/breadcrumbs@3.5.25':
-    resolution: {integrity: sha512-c8Ipp7EoFXlPKpOUJne6JlG823KwtqMyFsTpU0LS0DE9IEfnAIKanc5X+kChNmooKHq4V8QNyUxTf8WyBKU9+Q==}
+  '@react-aria/breadcrumbs@3.5.26':
+    resolution: {integrity: sha512-jybk2jy3m9KNmTpzJu87C0nkcMcGbZIyotgK1s8st8aUE2aJlxPZrvGuJTO8GUFZn9TKnCg3JjBC8qS9sizKQg==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/button@3.13.2':
-    resolution: {integrity: sha512-iPlSR225CSOit+57SrDfEF3lDuQvjRBYj1HFyGsLk91HfV3vDRgkKiou8uhOHk+B3afGJRwot8/Sr9MvNOfeQg==}
+  '@react-aria/button@3.13.3':
+    resolution: {integrity: sha512-Xn7eTssaefNPUydogI1qDf7qQWPmb+hGoS1QiCNBodPlRpVDXxlZSIhOqQFnLWHv5+z5UL+vu+joqlSPYHqOFw==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/calendar@3.8.2':
-    resolution: {integrity: sha512-RXVECPB3gP5SZvfKwlqLKCWEFzJh6AcDQQSRkArlyLyHRAHHcniKO3hW90pRWKmEUSVUAZdoCA6XkRL3dXGYXw==}
+  '@react-aria/calendar@3.8.3':
+    resolution: {integrity: sha512-1TAZADcWbfznXzo4oJEqFgX4IE1chZjWsTSJDWr03UEx3XqIJI8GXm+ylOQUiN4j8xqZ7tl4yNuuslKkzoSjMQ==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/checkbox@3.15.6':
-    resolution: {integrity: sha512-5OHrrihjCNBRB93KysXfHZBLUSGh43fC3DTfH9LWDxfpo38//VkaDXZezA0zg+a43D3kTq6tOSNgHq3sUk/Q5Q==}
+  '@react-aria/checkbox@3.15.7':
+    resolution: {integrity: sha512-L64van+K2ZEmCpx/KeZGHoxdxQvVHgfusFRFYZbh3e7YEtDcShvUrTDVKmZkINqnmuhGTDolFDQq+E8fWEpcRg==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/color@3.0.8':
-    resolution: {integrity: sha512-zGEptdwSCcLS/Z+LARmCyv4ptLIYtLIXHtgFSDAaF5ssY0whMOT0yAmOJz4T4ldnaWbBsLIz9O3PbUzNy83L2A==}
+  '@react-aria/color@3.0.9':
+    resolution: {integrity: sha512-dWyK8a3kNii8Yuj1/CQivnVVxsgkV8em+sb0oA29w04t+CFRQywpE2OVV3wZTDzOIVaz3pXx7/X012WoF6d/eQ==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/combobox@3.12.4':
-    resolution: {integrity: sha512-RvIEz2JK6Ndi0VhhNPYzfHbvq6rj7o2SwhhrcN5cKPC0lGgTXgHJheTq2kMu7ctO/C+Yx/3d0LQC/fOnbKH8zA==}
+  '@react-aria/combobox@3.12.5':
+    resolution: {integrity: sha512-mg9RrOTjxQFPy0BQrlqdp5uUC2pLevIqhZit6OfndmOr7khQ32qepDjXoSwYeeSag/jrokc2cGfXfzOwrgAFaQ==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/datepicker@3.14.4':
-    resolution: {integrity: sha512-VoVLqTSttvHE1h8nrF2L7r1SDN0VCv5UtIlYqUxK4Gk/5Z7Pboo7aY2OAhgpycm9ZUfWio/VVAtj6oMoWHjxQw==}
+  '@react-aria/datepicker@3.14.5':
+    resolution: {integrity: sha512-TeV/yXEOQ2QOYMxvetWcWUcZN83evmnmG/uSruTdk93e2nZzs227Gg/M95tzgCYRRACCzSzrGujJhNs12Nh7mg==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/dialog@3.5.26':
-    resolution: {integrity: sha512-X4KKf0OPHIje+68I0GRDkIcg+qsrBEQskl72aX7GQy6oNBta3ZTxQJrK2HTYdBDJnr1ADQdxYi+pZ5zPYDjODA==}
+  '@react-aria/dialog@3.5.27':
+    resolution: {integrity: sha512-Sp8LWQQYNxkLk2+L0bdWmAd9fz1YIrzvxbHXmAn9Tn6+/4SPnQhkOo+qQwtHFbjqe9fyS7cJZxegXd1RegIFew==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
@@ -2254,32 +2244,32 @@ packages:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/dnd@3.10.0':
-    resolution: {integrity: sha512-kW8TE4MLiTZJWnXSH+/6HeEtCOP20S+3m0BpToOzZhlpETSWJj6WcTRrM9ygt86v+lD4Vb92aQPdB75NVCbSAg==}
+  '@react-aria/dnd@3.10.1':
+    resolution: {integrity: sha512-EWiFbRoWs0zBlBbdPvd7gPyA3B8TPUtMfSUnLBCjwc+N0YaUoizZxW2VYgpAkZYAlVrPYV6n2Gs+98PHKZ8rsg==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/focus@3.20.4':
-    resolution: {integrity: sha512-E9M/kPYvF1fBZpkRXsKqMhvBVEyTY7vmkHeXLJo6tInKQOjYyYs0VeWlnGnxBjQIAH7J7ZKAORfTFQQHyhoueQ==}
+  '@react-aria/focus@3.20.5':
+    resolution: {integrity: sha512-JpFtXmWQ0Oca7FcvkqgjSyo6xEP7v3oQOLUId6o0xTvm4AD5W0mU2r3lYrbhsJ+XxdUUX4AVR5473sZZ85kU4A==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/form@3.0.17':
-    resolution: {integrity: sha512-d7Cic5OGBqI/OMUuHlPrPn6udSvjdpurrrwbnSYzrGlVhDmKLUdrLTtBL8O1MPzluAyW52azqJXSpsjwh288KA==}
+  '@react-aria/form@3.0.18':
+    resolution: {integrity: sha512-e4Ktc3NiNwV5dz82zVE7lspYmKwAnGoJfOHgc9MApS7Fy/BEAuVUuLgTjMo1x5me7dY+ADxqrIhbOpifscGGoQ==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/grid@3.14.1':
-    resolution: {integrity: sha512-znYb6S97yS36nw0liNFYFPmMyhhiUGvhtSXvkPEEU+bxw94O6jbLNwyJKrlUUSNDW3XINasIIY7EhC66QMbSFw==}
+  '@react-aria/grid@3.14.2':
+    resolution: {integrity: sha512-5oS6sLq0DishBvPVsWnxGcUdBRXyFXCj8/n02yJvjbID5Mpjn9JIHUSL4ZCZAO7QGCXpvO3PI40vB2F6QUs2VA==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/gridlist@3.13.1':
-    resolution: {integrity: sha512-tdcKDtzQcvT5U7mBbasiV/uHfwQmkYszyjKUZWigO54YNoz5Zp3RFfS14Mv6NAft2cse8Bj9oEyf8HMUT8KEZA==}
+  '@react-aria/gridlist@3.13.2':
+    resolution: {integrity: sha512-mPGhW2+Jke66LJIPrYoAdL5BBiC8iZ9orjoan7TBTCX9Xk87EK1XLm1cTxAylRqGNjnLzy+vp05Zt2fHY4QduA==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
@@ -2290,8 +2280,8 @@ packages:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/interactions@3.25.2':
-    resolution: {integrity: sha512-BWyZXBT4P17b9C9HfOIT2glDFMH9nUCfQF7vZ5FEeXNBudH/8OcSbzyBUG4Dg3XPtkOem5LP59ocaizkl32Tvg==}
+  '@react-aria/interactions@3.25.3':
+    resolution: {integrity: sha512-J1bhlrNtjPS/fe5uJQ+0c7/jiXniwa4RQlP+Emjfc/iuqpW2RhbF9ou5vROcLzWIyaW8tVMZ468J68rAs/aZ5A==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
@@ -2308,14 +2298,14 @@ packages:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/link@3.8.2':
-    resolution: {integrity: sha512-LScn5bRlBrv7yt2y06Ul3vNo8BOYHwZXjk47XCJTdt/QWhuU15oG0sRjJ1OIWgZ96jtW7u6YZ1PQtwX55gl7Dw==}
+  '@react-aria/link@3.8.3':
+    resolution: {integrity: sha512-83gS9Bb+FMa4Tae2VQrOxWixqYhqj4MDt4Bn0i3gzsP/sPWr1bwo5DJmXfw16UAXMaccl1rUKSqqHdigqaealw==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/listbox@3.14.5':
-    resolution: {integrity: sha512-6fIIr7KqJyS6+7FzRUT3TJozcImJG38kkPtzEpwhmPzWNDWEu307BOjIMw0AHs+m1pT7wspCzg3KOTppw8S4eg==}
+  '@react-aria/listbox@3.14.6':
+    resolution: {integrity: sha512-ZaYpBXiS+nUzxAmeCmXyvDcZECuZi1ZLn5y8uJ4ZFRVqSxqplVHodsQKwKqklmAM3+IVDyQx2WB4/HIKTGg2Bw==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
@@ -2323,8 +2313,8 @@ packages:
   '@react-aria/live-announcer@3.4.3':
     resolution: {integrity: sha512-nbBmx30tW53Vlbq3BbMxHGbHa7vGE9ItacI+1XAdH2UZDLtdZA5J6U9YC6lokKQCv+aEVO6Zl9YG4yp57YwnGw==}
 
-  '@react-aria/menu@3.18.4':
-    resolution: {integrity: sha512-iLioNOnHhltIq7JtLkeSXA1bFt3rUdUwnc8j20LXlzhDgH/56Xi1sxOCzaGo33mDPT16ANJG4IolVzg0+tnb2g==}
+  '@react-aria/menu@3.18.5':
+    resolution: {integrity: sha512-mOQb4PcNvDdFhyqF7nxREwc1YUg+pPTiMNcSHlz/MKFkkUteIQBYfuJJa8i72ooiE55xfYEQhPLjmrLHAOIJ+g==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
@@ -2335,14 +2325,14 @@ packages:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/numberfield@3.11.15':
-    resolution: {integrity: sha512-iQuXWn6BGneSBZrRURkntfivY9noUiq/JLs9KjtaSm9V0X4THevB9xXQLL0qLJ+n5YHOM6skRyoCRaweYY5IhA==}
+  '@react-aria/numberfield@3.11.16':
+    resolution: {integrity: sha512-AGk0BMdHXPP3gSy39UVropyvpNMxAElPGIcicjXXyD/tZdemsgLXUFT2zI4DwE0csFZS8BGgunLWT9VluMF4FQ==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/overlays@3.27.2':
-    resolution: {integrity: sha512-lWerY4caK2+AXzdPhUqAov3Di2mSfIKdaEEj+99iXeH85zzs2cbWZRvvCwwVGQ0GprypxETz1jb1Wq/55xDALw==}
+  '@react-aria/overlays@3.27.3':
+    resolution: {integrity: sha512-1hawsRI+QiM0TkPNwApNJ2+N49NQTP+48xq0JG8hdEUPChQLDoJ39cvT1sxdg0mnLDzLaAYkZrgfokq9sX6FLA==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
@@ -2353,26 +2343,26 @@ packages:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/radio@3.11.4':
-    resolution: {integrity: sha512-kxML2cuI4/5AlSSzOAwXVXoouvrICxGdWbs0ze0IHaGkw6p3oKa5By6I6tT0+8/Kxy6ZFeCL+l/PU6K/ysAdAA==}
+  '@react-aria/radio@3.11.5':
+    resolution: {integrity: sha512-6BjpeTupQnxetfvC2bqIxWUt6USMqNZoKOoOO7mUL7ESF6/Gp8ocutvQn0VnTxU+7OhdrZX5AACPg/qIQYumVw==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/searchfield@3.8.5':
-    resolution: {integrity: sha512-HLHT2xc6USM/SbqFYz2gbREq7IcWfO+845ao/GCxy6Rx8eGD3OV09jgd+JlcSNJb2WiTpKhkSeX3wf7VgzPw2g==}
+  '@react-aria/searchfield@3.8.6':
+    resolution: {integrity: sha512-fEhNOtOV5yRZ8hkWmFO5Mh8nq63/ePun2dUMLAiW1sCQXTUpN9Oo+T4vsEUabuZ25mHvqgVoCVhAFdMbvZ+W+A==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/select@3.15.6':
-    resolution: {integrity: sha512-r/XU5PJY/V8LTklaiO7n3BDG9gVg/Dp3p7IwgGCYUbLuF9+8yMh858teOEJr3FYKLPr/nZLZQE08oJuADkCLEw==}
+  '@react-aria/select@3.15.7':
+    resolution: {integrity: sha512-b1PpanLblnXgrvIeYPkL9ELdeE3GQXwoRJLNv9DSKSAyBVx+pm6+4BtzngOBdBidRCcOGEBEYxuUW8hMXjFB8w==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/selection@3.24.2':
-    resolution: {integrity: sha512-YIdCYe1yXXfbZ0snUMWrQpOxtJO0+eHHp3+PSqZ/dyvLqMlTlYnOv2j5lc36sN0r1YWfN8OEpxzK3jHdD4M6yA==}
+  '@react-aria/selection@3.24.3':
+    resolution: {integrity: sha512-QznlHCUcjFgVALUIVBK4SWJd6osaU9lVaZgU4M8uemoIfOHqnBY3zThkQvEhcw/EJ2RpuYYLPOBYZBnk1knD5A==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
@@ -2383,8 +2373,8 @@ packages:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/slider@3.7.20':
-    resolution: {integrity: sha512-ciRfI0ya89pm4R+2RE7vLhu5OjdsAQfzghVI5Eh5AHpwjajMJ41O4Vkyt2ci5KTcjwg80CFftAWmF02w2hKR5Q==}
+  '@react-aria/slider@3.7.21':
+    resolution: {integrity: sha512-eWu69KnQ7qCmpYBEkgGLjIuKfFqoHu2W6r9d7ys0ZmX81HPj9DhatGpEgHlnjRfCeSl9wL5h2FY9wnIio82cbg==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
@@ -2401,62 +2391,62 @@ packages:
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/switch@3.7.4':
-    resolution: {integrity: sha512-6Ue6GXBGMPc5uNwu6A4XHOEK5n/3OmgW/kgCmFVi2dh4QqkASSdadaizS/2uENWfgKTlEpd0Wy3PSfpubL+hCg==}
+  '@react-aria/switch@3.7.5':
+    resolution: {integrity: sha512-GV9rFYf4wRHAh9tkhptvm3uOflKcQHdgZh+eGpSAHyq2iTq0j2nEhlmtFordpcJgC4XWro7TXLNltfqUqVHtkw==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/table@3.17.4':
-    resolution: {integrity: sha512-zhqrt6Uk66wrgaIHrPUv3nguVMGMnPtqUmp0K2gibhNucN0iJ6zILoaq8vMmFH+9PmUqoiPJXq18czs2CluT6Q==}
+  '@react-aria/table@3.17.5':
+    resolution: {integrity: sha512-Q9HDr2EAhoah7HFIT6XxOOOv2fiAs0agwQQd3d1w6jqgyu9m20lM/jxcSwcCFj2O7FPKHfapSAijHDZZoc4Shg==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/tabs@3.10.4':
-    resolution: {integrity: sha512-aXY83zqLStlf/v8vP2OvlrLsujCNWGqfL3hMVDF1PNqRJGllMejzkzbZNf4fUQDTX+e2zNDv6SH4IRJ4k9sKlw==}
+  '@react-aria/tabs@3.10.5':
+    resolution: {integrity: sha512-ddmGPikXW+27W2Rx0VuEwwGJVLTo68QkNbSl8R+TEM0EUIAJo3nwHzAlQhuo5Tcb1PdK7biTjO1dyI4pno2/0Q==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/tag@3.6.1':
-    resolution: {integrity: sha512-oTEDqOejjltr64ADpgMA3eB/G4bJ2Y9TlQwW33l6XWAjtKKZScBhGrf9l10NTQphZf4QxMnucIHo8IV2eKSmjg==}
+  '@react-aria/tag@3.6.2':
+    resolution: {integrity: sha512-xO33FU0bZSpZ3Bw7bnJz7+Me0daVLJrn5dAllf18Mmf9T2cEr63Gg4AL4nR+rj6NLSq0aH8QyDtRGNqXJjo5SQ==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/textfield@3.17.4':
-    resolution: {integrity: sha512-dcQQKVgH/zv3wExcmpH7yMA2d4oPO3JF9L1HdwNvPHScnfbr404ZVEKjrIlxEvzq7V5yKky5q8171jmp+YOPyw==}
+  '@react-aria/textfield@3.17.5':
+    resolution: {integrity: sha512-HFdvqd3Mdp6WP7uYAWD64gRrL1D4Khi+Fm3dIHBhm1ANV0QjYkphJm4DYNDq/MXCZF46+CZNiOWEbL/aeviykA==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/toast@3.0.4':
-    resolution: {integrity: sha512-oH1WZfwdaryiggqxu1r1Jq1/fF8n9AVD3euamkJmXq5/t9IJUYLzct4w54QqjQ0KhtbHp+7n55QvvhZ9cW3XEg==}
+  '@react-aria/toast@3.0.5':
+    resolution: {integrity: sha512-uhwiZqPy6hqucBUL7z6uUZjAJ/ou3bNdTjZlXS+zbcm+T0dsjKDfzNkaebyZY7AX3cYkFCaRjc3N6omXwoAviw==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/toggle@3.11.4':
-    resolution: {integrity: sha512-RwWyFiM+dBsiulT1ziGdG5+cy/F/7hFVb1Ddyc90HNLqRuX2sAX3ysm0YmiiNpnHwGQR/kPd1ulTSqQ+ps9wiQ==}
+  '@react-aria/toggle@3.11.5':
+    resolution: {integrity: sha512-8+Evk/JVMQ25PNhbnHUvsAK99DAjnCWMdSBNswJ1sWseKCYQzBXsNkkF6Dl/FlSkfDBFAaRHkX9JUz02wehb9A==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/toolbar@3.0.0-beta.17':
-    resolution: {integrity: sha512-YGLDOATMla9Y7Yk2P8qK3zcTrxQClf2ZLS8Wj14RY4le/r6F2rGJqkGhVFPyoNAtwsRr4bzD7CGERe4NUAPrqQ==}
+  '@react-aria/toolbar@3.0.0-beta.18':
+    resolution: {integrity: sha512-P1fXhmTRBK4YvPQDzCY3XoZl+HiBADgvQ89jszxJ2jD4Qzs/E096ttCc+otZnbvRcoU27IxC2vWFInqK/bP31g==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/tooltip@3.8.4':
-    resolution: {integrity: sha512-WwooDvXb64mGwZUZQj4tYcJEFSXLIxDywT97K9U4fLUhrNcQ8KdxdhPjyPOEXxscPfdJDyKKckhRiKl91UoKsg==}
+  '@react-aria/tooltip@3.8.5':
+    resolution: {integrity: sha512-spGAuHHNkiqAfyOl4JWzKEK642KC1oQylioYg+LKCq2avUyaDqFlRx2JrC4a6nt3BV6E5/cJUMV9K7gMRApd5Q==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/tree@3.1.0':
-    resolution: {integrity: sha512-GBg01P04fLY16ZHLYcP9nLGis2MGQSpiP8rMG0t5jqddJdx+v8IL28f9mcHw+NSRgZm28NHQThTkH31SUxXppQ==}
+  '@react-aria/tree@3.1.1':
+    resolution: {integrity: sha512-9LIe9unStA/9HHX6idHdbxMJLjebFP9mngIjoBgbWSNaYx3oH1X3Ei2Q9qHmimebtBagEZgSjxy7M+RcEqFhlw==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
@@ -2467,8 +2457,8 @@ packages:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/visually-hidden@3.8.24':
-    resolution: {integrity: sha512-vhGhALs/PGdTs/7GD2hsy7CF1LBF9QlL57HkRSu8kfiuiA7rqRTqYg6q723OvaFsspj3DCxP2MLQhvvZSWe7Ng==}
+  '@react-aria/visually-hidden@3.8.25':
+    resolution: {integrity: sha512-9tRRFV1YMLuDId9E8PeUf0xy0KmQBoP8y/bm0PKWzXOqLOVmp/+kop9rwsjC7J6ppbBnlak7XCXTc7GoSFOCRA==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
@@ -2775,103 +2765,103 @@ packages:
     resolution: {integrity: sha512-FqALmHI8D4o6lk/LRWDnhw95z5eO+eAa6ORjVg09YRR7BkcM6oPHU9uyC0gtQG5vpFLvgpeU4+zEAz2H8APHNw==}
     engines: {node: '>= 10'}
 
-  '@rollup/rollup-android-arm-eabi@4.42.0':
-    resolution: {integrity: sha512-gldmAyS9hpj+H6LpRNlcjQWbuKUtb94lodB9uCz71Jm+7BxK1VIOo7y62tZZwxhA7j1ylv/yQz080L5WkS+LoQ==}
+  '@rollup/rollup-android-arm-eabi@4.44.0':
+    resolution: {integrity: sha512-xEiEE5oDW6tK4jXCAyliuntGR+amEMO7HLtdSshVuhFnKTYoeYMyXQK7pLouAJJj5KHdwdn87bfHAR2nSdNAUA==}
     cpu: [arm]
     os: [android]
 
-  '@rollup/rollup-android-arm64@4.42.0':
-    resolution: {integrity: sha512-bpRipfTgmGFdCZDFLRvIkSNO1/3RGS74aWkJJTFJBH7h3MRV4UijkaEUeOMbi9wxtxYmtAbVcnMtHTPBhLEkaw==}
+  '@rollup/rollup-android-arm64@4.44.0':
+    resolution: {integrity: sha512-uNSk/TgvMbskcHxXYHzqwiyBlJ/lGcv8DaUfcnNwict8ba9GTTNxfn3/FAoFZYgkaXXAdrAA+SLyKplyi349Jw==}
     cpu: [arm64]
     os: [android]
 
-  '@rollup/rollup-darwin-arm64@4.42.0':
-    resolution: {integrity: sha512-JxHtA081izPBVCHLKnl6GEA0w3920mlJPLh89NojpU2GsBSB6ypu4erFg/Wx1qbpUbepn0jY4dVWMGZM8gplgA==}
+  '@rollup/rollup-darwin-arm64@4.44.0':
+    resolution: {integrity: sha512-VGF3wy0Eq1gcEIkSCr8Ke03CWT+Pm2yveKLaDvq51pPpZza3JX/ClxXOCmTYYq3us5MvEuNRTaeyFThCKRQhOA==}
     cpu: [arm64]
     os: [darwin]
 
-  '@rollup/rollup-darwin-x64@4.42.0':
-    resolution: {integrity: sha512-rv5UZaWVIJTDMyQ3dCEK+m0SAn6G7H3PRc2AZmExvbDvtaDc+qXkei0knQWcI3+c9tEs7iL/4I4pTQoPbNL2SA==}
+  '@rollup/rollup-darwin-x64@4.44.0':
+    resolution: {integrity: sha512-fBkyrDhwquRvrTxSGH/qqt3/T0w5Rg0L7ZIDypvBPc1/gzjJle6acCpZ36blwuwcKD/u6oCE/sRWlUAcxLWQbQ==}
     cpu: [x64]
     os: [darwin]
 
-  '@rollup/rollup-freebsd-arm64@4.42.0':
-    resolution: {integrity: sha512-fJcN4uSGPWdpVmvLuMtALUFwCHgb2XiQjuECkHT3lWLZhSQ3MBQ9pq+WoWeJq2PrNxr9rPM1Qx+IjyGj8/c6zQ==}
+  '@rollup/rollup-freebsd-arm64@4.44.0':
+    resolution: {integrity: sha512-u5AZzdQJYJXByB8giQ+r4VyfZP+walV+xHWdaFx/1VxsOn6eWJhK2Vl2eElvDJFKQBo/hcYIBg/jaKS8ZmKeNQ==}
     cpu: [arm64]
     os: [freebsd]
 
-  '@rollup/rollup-freebsd-x64@4.42.0':
-    resolution: {integrity: sha512-CziHfyzpp8hJpCVE/ZdTizw58gr+m7Y2Xq5VOuCSrZR++th2xWAz4Nqk52MoIIrV3JHtVBhbBsJcAxs6NammOQ==}
+  '@rollup/rollup-freebsd-x64@4.44.0':
+    resolution: {integrity: sha512-qC0kS48c/s3EtdArkimctY7h3nHicQeEUdjJzYVJYR3ct3kWSafmn6jkNCA8InbUdge6PVx6keqjk5lVGJf99g==}
     cpu: [x64]
     os: [freebsd]
 
-  '@rollup/rollup-linux-arm-gnueabihf@4.42.0':
-    resolution: {integrity: sha512-UsQD5fyLWm2Fe5CDM7VPYAo+UC7+2Px4Y+N3AcPh/LdZu23YcuGPegQly++XEVaC8XUTFVPscl5y5Cl1twEI4A==}
+  '@rollup/rollup-linux-arm-gnueabihf@4.44.0':
+    resolution: {integrity: sha512-x+e/Z9H0RAWckn4V2OZZl6EmV0L2diuX3QB0uM1r6BvhUIv6xBPL5mrAX2E3e8N8rEHVPwFfz/ETUbV4oW9+lQ==}
     cpu: [arm]
     os: [linux]
 
-  '@rollup/rollup-linux-arm-musleabihf@4.42.0':
-    resolution: {integrity: sha512-/i8NIrlgc/+4n1lnoWl1zgH7Uo0XK5xK3EDqVTf38KvyYgCU/Rm04+o1VvvzJZnVS5/cWSd07owkzcVasgfIkQ==}
+  '@rollup/rollup-linux-arm-musleabihf@4.44.0':
+    resolution: {integrity: sha512-1exwiBFf4PU/8HvI8s80icyCcnAIB86MCBdst51fwFmH5dyeoWVPVgmQPcKrMtBQ0W5pAs7jBCWuRXgEpRzSCg==}
     cpu: [arm]
     os: [linux]
 
-  '@rollup/rollup-linux-arm64-gnu@4.42.0':
-    resolution: {integrity: sha512-eoujJFOvoIBjZEi9hJnXAbWg+Vo1Ov8n/0IKZZcPZ7JhBzxh2A+2NFyeMZIRkY9iwBvSjloKgcvnjTbGKHE44Q==}
+  '@rollup/rollup-linux-arm64-gnu@4.44.0':
+    resolution: {integrity: sha512-ZTR2mxBHb4tK4wGf9b8SYg0Y6KQPjGpR4UWwTFdnmjB4qRtoATZ5dWn3KsDwGa5Z2ZBOE7K52L36J9LueKBdOQ==}
     cpu: [arm64]
     os: [linux]
 
-  '@rollup/rollup-linux-arm64-musl@4.42.0':
-    resolution: {integrity: sha512-/3NrcOWFSR7RQUQIuZQChLND36aTU9IYE4j+TB40VU78S+RA0IiqHR30oSh6P1S9f9/wVOenHQnacs/Byb824g==}
+  '@rollup/rollup-linux-arm64-musl@4.44.0':
+    resolution: {integrity: sha512-GFWfAhVhWGd4r6UxmnKRTBwP1qmModHtd5gkraeW2G490BpFOZkFtem8yuX2NyafIP/mGpRJgTJ2PwohQkUY/Q==}
     cpu: [arm64]
     os: [linux]
 
-  '@rollup/rollup-linux-loongarch64-gnu@4.42.0':
-    resolution: {integrity: sha512-O8AplvIeavK5ABmZlKBq9/STdZlnQo7Sle0LLhVA7QT+CiGpNVe197/t8Aph9bhJqbDVGCHpY2i7QyfEDDStDg==}
+  '@rollup/rollup-linux-loongarch64-gnu@4.44.0':
+    resolution: {integrity: sha512-xw+FTGcov/ejdusVOqKgMGW3c4+AgqrfvzWEVXcNP6zq2ue+lsYUgJ+5Rtn/OTJf7e2CbgTFvzLW2j0YAtj0Gg==}
     cpu: [loong64]
     os: [linux]
 
-  '@rollup/rollup-linux-powerpc64le-gnu@4.42.0':
-    resolution: {integrity: sha512-6Qb66tbKVN7VyQrekhEzbHRxXXFFD8QKiFAwX5v9Xt6FiJ3BnCVBuyBxa2fkFGqxOCSGGYNejxd8ht+q5SnmtA==}
+  '@rollup/rollup-linux-powerpc64le-gnu@4.44.0':
+    resolution: {integrity: sha512-bKGibTr9IdF0zr21kMvkZT4K6NV+jjRnBoVMt2uNMG0BYWm3qOVmYnXKzx7UhwrviKnmK46IKMByMgvpdQlyJQ==}
     cpu: [ppc64]
     os: [linux]
 
-  '@rollup/rollup-linux-riscv64-gnu@4.42.0':
-    resolution: {integrity: sha512-KQETDSEBamQFvg/d8jajtRwLNBlGc3aKpaGiP/LvEbnmVUKlFta1vqJqTrvPtsYsfbE/DLg5CC9zyXRX3fnBiA==}
+  '@rollup/rollup-linux-riscv64-gnu@4.44.0':
+    resolution: {integrity: sha512-vV3cL48U5kDaKZtXrti12YRa7TyxgKAIDoYdqSIOMOFBXqFj2XbChHAtXquEn2+n78ciFgr4KIqEbydEGPxXgA==}
     cpu: [riscv64]
     os: [linux]
 
-  '@rollup/rollup-linux-riscv64-musl@4.42.0':
-    resolution: {integrity: sha512-qMvnyjcU37sCo/tuC+JqeDKSuukGAd+pVlRl/oyDbkvPJ3awk6G6ua7tyum02O3lI+fio+eM5wsVd66X0jQtxw==}
+  '@rollup/rollup-linux-riscv64-musl@4.44.0':
+    resolution: {integrity: sha512-TDKO8KlHJuvTEdfw5YYFBjhFts2TR0VpZsnLLSYmB7AaohJhM8ctDSdDnUGq77hUh4m/djRafw+9zQpkOanE2Q==}
     cpu: [riscv64]
     os: [linux]
 
-  '@rollup/rollup-linux-s390x-gnu@4.42.0':
-    resolution: {integrity: sha512-I2Y1ZUgTgU2RLddUHXTIgyrdOwljjkmcZ/VilvaEumtS3Fkuhbw4p4hgHc39Ypwvo2o7sBFNl2MquNvGCa55Iw==}
+  '@rollup/rollup-linux-s390x-gnu@4.44.0':
+    resolution: {integrity: sha512-8541GEyktXaw4lvnGp9m84KENcxInhAt6vPWJ9RodsB/iGjHoMB2Pp5MVBCiKIRxrxzJhGCxmNzdu+oDQ7kwRA==}
     cpu: [s390x]
     os: [linux]
 
-  '@rollup/rollup-linux-x64-gnu@4.42.0':
-    resolution: {integrity: sha512-Gfm6cV6mj3hCUY8TqWa63DB8Mx3NADoFwiJrMpoZ1uESbK8FQV3LXkhfry+8bOniq9pqY1OdsjFWNsSbfjPugw==}
+  '@rollup/rollup-linux-x64-gnu@4.44.0':
+    resolution: {integrity: sha512-iUVJc3c0o8l9Sa/qlDL2Z9UP92UZZW1+EmQ4xfjTc1akr0iUFZNfxrXJ/R1T90h/ILm9iXEY6+iPrmYB3pXKjw==}
     cpu: [x64]
     os: [linux]
 
-  '@rollup/rollup-linux-x64-musl@4.42.0':
-    resolution: {integrity: sha512-g86PF8YZ9GRqkdi0VoGlcDUb4rYtQKyTD1IVtxxN4Hpe7YqLBShA7oHMKU6oKTCi3uxwW4VkIGnOaH/El8de3w==}
+  '@rollup/rollup-linux-x64-musl@4.44.0':
+    resolution: {integrity: sha512-PQUobbhLTQT5yz/SPg116VJBgz+XOtXt8D1ck+sfJJhuEsMj2jSej5yTdp8CvWBSceu+WW+ibVL6dm0ptG5fcA==}
     cpu: [x64]
     os: [linux]
 
-  '@rollup/rollup-win32-arm64-msvc@4.42.0':
-    resolution: {integrity: sha512-+axkdyDGSp6hjyzQ5m1pgcvQScfHnMCcsXkx8pTgy/6qBmWVhtRVlgxjWwDp67wEXXUr0x+vD6tp5W4x6V7u1A==}
+  '@rollup/rollup-win32-arm64-msvc@4.44.0':
+    resolution: {integrity: sha512-M0CpcHf8TWn+4oTxJfh7LQuTuaYeXGbk0eageVjQCKzYLsajWS/lFC94qlRqOlyC2KvRT90ZrfXULYmukeIy7w==}
     cpu: [arm64]
     os: [win32]
 
-  '@rollup/rollup-win32-ia32-msvc@4.42.0':
-    resolution: {integrity: sha512-F+5J9pelstXKwRSDq92J0TEBXn2nfUrQGg+HK1+Tk7VOL09e0gBqUHugZv7SW4MGrYj41oNCUe3IKCDGVlis2g==}
+  '@rollup/rollup-win32-ia32-msvc@4.44.0':
+    resolution: {integrity: sha512-3XJ0NQtMAXTWFW8FqZKcw3gOQwBtVWP/u8TpHP3CRPXD7Pd6s8lLdH3sHWh8vqKCyyiI8xW5ltJScQmBU9j7WA==}
     cpu: [ia32]
     os: [win32]
 
-  '@rollup/rollup-win32-x64-msvc@4.42.0':
-    resolution: {integrity: sha512-LpHiJRwkaVz/LqjHjK8LCi8osq7elmpwujwbXKNW88bM8eeGxavJIKKjkjpMHAh/2xfnrt1ZSnhTv41WYUHYmA==}
+  '@rollup/rollup-win32-x64-msvc@4.44.0':
+    resolution: {integrity: sha512-Q2Mgwt+D8hd5FIPUuPDsvPR7Bguza6yTkJxspDGkZj7tBRn2y4KSWYuIXpftFSjBra76TbKerCV7rgFPQrn+wQ==}
     cpu: [x64]
     os: [win32]
 
@@ -2942,32 +2932,32 @@ packages:
   '@shikijs/core@1.29.2':
     resolution: {integrity: sha512-vju0lY9r27jJfOY4Z7+Rt/nIOjzJpZ3y+nYpqtUZInVoXQ/TJZcfGnNOGnKjFdVZb8qexiCuSlZRKcGfhhTTZQ==}
 
-  '@shikijs/core@3.6.0':
-    resolution: {integrity: sha512-9By7Xb3olEX0o6UeJyPLI1PE1scC4d3wcVepvtv2xbuN9/IThYN4Wcwh24rcFeASzPam11MCq8yQpwwzCgSBRw==}
+  '@shikijs/core@3.7.0':
+    resolution: {integrity: sha512-yilc0S9HvTPyahHpcum8eonYrQtmGTU0lbtwxhA6jHv4Bm1cAdlPFRCJX4AHebkCm75aKTjjRAW+DezqD1b/cg==}
 
   '@shikijs/engine-javascript@1.29.2':
     resolution: {integrity: sha512-iNEZv4IrLYPv64Q6k7EPpOCE/nuvGiKl7zxdq0WFuRPF5PAE9PRo2JGq/d8crLusM59BRemJ4eOqrFrC4wiQ+A==}
 
-  '@shikijs/engine-javascript@3.6.0':
-    resolution: {integrity: sha512-7YnLhZG/TU05IHMG14QaLvTW/9WiK8SEYafceccHUSXs2Qr5vJibUwsDfXDLmRi0zHdzsxrGKpSX6hnqe0k8nA==}
+  '@shikijs/engine-javascript@3.7.0':
+    resolution: {integrity: sha512-0t17s03Cbv+ZcUvv+y33GtX75WBLQELgNdVghnsdhTgU3hVcWcMsoP6Lb0nDTl95ZJfbP1mVMO0p3byVh3uuzA==}
 
   '@shikijs/engine-oniguruma@1.29.2':
     resolution: {integrity: sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA==}
 
-  '@shikijs/engine-oniguruma@3.6.0':
-    resolution: {integrity: sha512-nmOhIZ9yT3Grd+2plmW/d8+vZ2pcQmo/UnVwXMUXAKTXdi+LK0S08Ancrz5tQQPkxvjBalpMW2aKvwXfelauvA==}
+  '@shikijs/engine-oniguruma@3.7.0':
+    resolution: {integrity: sha512-5BxcD6LjVWsGu4xyaBC5bu8LdNgPCVBnAkWTtOCs/CZxcB22L8rcoWfv7Hh/3WooVjBZmFtyxhgvkQFedPGnFw==}
 
   '@shikijs/langs@1.29.2':
     resolution: {integrity: sha512-FIBA7N3LZ+223U7cJDUYd5shmciFQlYkFXlkKVaHsCPgfVLiO+e12FmQE6Tf9vuyEsFe3dIl8qGWKXgEHL9wmQ==}
 
-  '@shikijs/langs@3.6.0':
-    resolution: {integrity: sha512-IdZkQJaLBu1LCYCwkr30hNuSDfllOT8RWYVZK1tD2J03DkiagYKRxj/pDSl8Didml3xxuyzUjgtioInwEQM/TA==}
+  '@shikijs/langs@3.7.0':
+    resolution: {integrity: sha512-1zYtdfXLr9xDKLTGy5kb7O0zDQsxXiIsw1iIBcNOO8Yi5/Y1qDbJ+0VsFoqTlzdmneO8Ij35g7QKF8kcLyznCQ==}
 
   '@shikijs/themes@1.29.2':
     resolution: {integrity: sha512-i9TNZlsq4uoyqSbluIcZkmPL9Bfi3djVxRnofUHwvx/h6SRW3cwgBC5SML7vsDcWyukY0eCzVN980rqP6qNl9g==}
 
-  '@shikijs/themes@3.6.0':
-    resolution: {integrity: sha512-Fq2j4nWr1DF4drvmhqKq8x5vVQ27VncF8XZMBuHuQMZvUSS3NBgpqfwz/FoGe36+W6PvniZ1yDlg2d4kmYDU6w==}
+  '@shikijs/themes@3.7.0':
+    resolution: {integrity: sha512-VJx8497iZPy5zLiiCTSIaOChIcKQwR0FebwE9S3rcN0+J/GTWwQ1v/bqhTbpbY3zybPKeO8wdammqkpXc4NVjQ==}
 
   '@shikijs/twoslash@1.29.2':
     resolution: {integrity: sha512-2S04ppAEa477tiaLfGEn1QJWbZUmbk8UoPbAEw4PifsrxkBXtAtOflIZJNtuCwz8ptc/TPxy7CO7gW4Uoi6o/g==}
@@ -2975,8 +2965,8 @@ packages:
   '@shikijs/types@1.29.2':
     resolution: {integrity: sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw==}
 
-  '@shikijs/types@3.6.0':
-    resolution: {integrity: sha512-cLWFiToxYu0aAzJqhXTQsFiJRTFDAGl93IrMSBNaGSzs7ixkLfdG6pH11HipuWFGW5vyx4X47W8HDQ7eSrmBUg==}
+  '@shikijs/types@3.7.0':
+    resolution: {integrity: sha512-MGaLeaRlSWpnP0XSAum3kP3a8vtcTsITqoEPYdt3lQG3YCdQH4DnEhodkYcNMcU0uW0RffhoD1O3e0vG5eSBBg==}
 
   '@shikijs/vscode-textmate@10.0.2':
     resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==}
@@ -3048,22 +3038,22 @@ packages:
       react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
       react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
 
-  '@tanstack/query-core@5.80.6':
-    resolution: {integrity: sha512-nl7YxT/TAU+VTf+e2zTkObGTyY8YZBMnbgeA1ee66lIVqzKlYursAII6z5t0e6rXgwUMJSV4dshBTNacNpZHbQ==}
+  '@tanstack/query-core@5.81.2':
+    resolution: {integrity: sha512-QLYkPdrudoMATDFa3MiLEwRhNnAlzHWDf0LKaXUqJd0/+QxN8uTPi7bahRlxoAyH0UbLMBdeDbYzWALj7THOtw==}
 
-  '@tanstack/react-query@5.80.6':
-    resolution: {integrity: sha512-izX+5CnkpON3NQGcEm3/d7LfFQNo9ZpFtX2QsINgCYK9LT2VCIdi8D3bMaMSNhrAJCznRoAkFic76uvLroALBw==}
+  '@tanstack/react-query@5.81.2':
+    resolution: {integrity: sha512-pe8kFlTrL2zFLlcAj2kZk9UaYYHDk9/1hg9EBaoO3cxDhOZf1FRGJeziSXKrVZyxIfs7b3aoOj/bw7Lie0mDUg==}
     peerDependencies:
       react: ^18 || ^19
 
-  '@tanstack/react-virtual@3.13.10':
-    resolution: {integrity: sha512-nvrzk4E9mWB4124YdJ7/yzwou7IfHxlSef6ugCFcBfRmsnsma3heciiiV97sBNxyc3VuwtZvmwXd0aB5BpucVw==}
+  '@tanstack/react-virtual@3.13.11':
+    resolution: {integrity: sha512-u5EaOSJOq08T9NXFuDopMdxZBNDFuEMohIFFU45fBYDXXh9SjYdbpNq1OLFSOpQnDRPjqgmY96ipZTkzom9t9Q==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
       react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
 
-  '@tanstack/virtual-core@3.13.10':
-    resolution: {integrity: sha512-sPEDhXREou5HyZYqSWIqdU580rsF6FGeN7vpzijmP3KTiOGjOMZASz4Y6+QKjiFQwhWrR58OP8izYaNGVxvViA==}
+  '@tanstack/virtual-core@3.13.11':
+    resolution: {integrity: sha512-ORL6UyuZJ0D9X33LDR4TcgcM+K2YiS2j4xbvH1vnhhObwR1Z4dKwPTL/c0kj2Yeb4Yp2lBv1wpyVaqlohk8zpg==}
 
   '@theguild/remark-mermaid@0.1.3':
     resolution: {integrity: sha512-2FjVlaaKXK7Zj7UJAgOVTyaahn/3/EAfqYhyXg0BfDBVUl+lXcoIWRaxzqfnDr2rv8ax6GsC5mNh6hAaT86PDw==}
@@ -3233,9 +3223,6 @@ packages:
   '@types/estree-jsx@1.0.5':
     resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==}
 
-  '@types/estree@1.0.7':
-    resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==}
-
   '@types/estree@1.0.8':
     resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
 
@@ -3260,8 +3247,8 @@ packages:
   '@types/katex@0.16.7':
     resolution: {integrity: sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==}
 
-  '@types/lodash@4.17.17':
-    resolution: {integrity: sha512-RRVJ+J3J+WmyOTqnz3PiBLA501eKwXl2noseKOrNo/6+XEHjTAxO4xHvxQB6QuNm+s4WRbn6rSiap8+EA+ykFQ==}
+  '@types/lodash@4.17.19':
+    resolution: {integrity: sha512-NYqRyg/hIQrYPT9lbOeYc3kIRabJDn/k4qQHIXUpx88CBDww2fD15Sg5kbXlW86zm2XEW4g0QxkTI3/Kfkc7xQ==}
 
   '@types/lru-cache@5.1.1':
     resolution: {integrity: sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==}
@@ -3281,8 +3268,8 @@ packages:
   '@types/nlcst@2.0.3':
     resolution: {integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==}
 
-  '@types/node@22.15.31':
-    resolution: {integrity: sha512-jnVe5ULKl6tijxUhvQeNbQG/84fHfg+yMak02cT8QVhBx/F05rAVxCGBYYTh2EKz22D6JF5ktXuNwdx7b9iEGw==}
+  '@types/node@22.15.33':
+    resolution: {integrity: sha512-wzoocdnnpSxZ+6CjW4ADCK1jVmd1S/J3ArNWfn8FDDQtRm8dkDg7TA+mvek2wNrfCgwuZxqEOiB9B1XCJ6+dbw==}
 
   '@types/parse-json@4.0.2':
     resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==}
@@ -3319,6 +3306,10 @@ packages:
   '@types/unist@3.0.3':
     resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==}
 
+  '@types/vfile@4.0.0':
+    resolution: {integrity: sha512-eleP0/Cz8uVWxARDLi3Axq2+fDdN4ibAXoC6Pv8p6s7znXaUL7XvhgeIhjCiNMnvlLNP+tmCLd+RuCryGgmtEg==}
+    deprecated: This is a stub types definition. vfile provides its own type definitions, so you do not need this installed.
+
   '@typescript-eslint/eslint-plugin@6.21.0':
     resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==}
     engines: {node: ^16.0.0 || >=18.0.0}
@@ -3422,88 +3413,98 @@ packages:
     engines: {node: '>=10'}
     deprecated: Please upgrade to 1.0.1
 
-  '@unrs/resolver-binding-darwin-arm64@1.7.13':
-    resolution: {integrity: sha512-LIKeCzNSkTWwGHjtiUIfvS96+7kpuyrKq2pzw/0XT2S8ykczj40Hh27oLTbXguCX8tGrCoaD2yXxzwqMMhAzhA==}
+  '@unrs/resolver-binding-android-arm-eabi@1.9.1':
+    resolution: {integrity: sha512-dd7yIp1hfJFX9ZlVLQRrh/Re9WMUHHmF9hrKD1yIvxcyNr2BhQ3xc1upAVhy8NijadnCswAxWQu8MkkSMC1qXQ==}
+    cpu: [arm]
+    os: [android]
+
+  '@unrs/resolver-binding-android-arm64@1.9.1':
+    resolution: {integrity: sha512-EzUPcMFtDVlo5yrbzMqUsGq3HnLXw+3ZOhSd7CUaDmbTtnrzM+RO2ntw2dm2wjbbc5djWj3yX0wzbbg8pLhx8g==}
+    cpu: [arm64]
+    os: [android]
+
+  '@unrs/resolver-binding-darwin-arm64@1.9.1':
+    resolution: {integrity: sha512-nB+dna3q4kOleKFcSZJ/wDXIsAd1kpMO9XrVAt8tG3RDWJ6vi+Ic6bpz4cmg5tWNeCfHEY4KuqJCB+pKejPEmQ==}
     cpu: [arm64]
     os: [darwin]
 
-  '@unrs/resolver-binding-darwin-x64@1.7.13':
-    resolution: {integrity: sha512-GB5G3qUNrdo2l6xaZehpz1ln4wCQ75tr51HZ8OQEcX6XkBIFVL9E4ikCZvCmRmUgKGR+zP5ogyFib7ZbIMWKWA==}
+  '@unrs/resolver-binding-darwin-x64@1.9.1':
+    resolution: {integrity: sha512-aKWHCrOGaCGwZcekf3TnczQoBxk5w//W3RZ4EQyhux6rKDwBPgDU9Y2yGigCV1Z+8DWqZgVGQi+hdpnlSy3a1w==}
     cpu: [x64]
     os: [darwin]
 
-  '@unrs/resolver-binding-freebsd-x64@1.7.13':
-    resolution: {integrity: sha512-rb8gzoBgqVhDkQiKaq+MrFPhNK3x8XkSFhgU55LfgOa5skv7KIdM3dELKzQVNZNlY49DuZmm0FsEfHK5xPKKiA==}
+  '@unrs/resolver-binding-freebsd-x64@1.9.1':
+    resolution: {integrity: sha512-4dIEMXrXt0UqDVgrsUd1I+NoIzVQWXy/CNhgpfS75rOOMK/4Abn0Mx2M2gWH4Mk9+ds/ASAiCmqoUFynmMY5hA==}
     cpu: [x64]
     os: [freebsd]
 
-  '@unrs/resolver-binding-linux-arm-gnueabihf@1.7.13':
-    resolution: {integrity: sha512-bqdzngbTGzhsqhTV3SWECyZUAyvtewKtrCW4E8QPcK6yHSaN0k1h9gKwNOBxFwIqkQRsAibpm18XDum8M5AiCw==}
+  '@unrs/resolver-binding-linux-arm-gnueabihf@1.9.1':
+    resolution: {integrity: sha512-vtvS13IXPs1eE8DuS/soiosqMBeyh50YLRZ+p7EaIKAPPeevRnA9G/wu/KbVt01ZD5qiGjxS+CGIdVC7I6gTOw==}
     cpu: [arm]
     os: [linux]
 
-  '@unrs/resolver-binding-linux-arm-musleabihf@1.7.13':
-    resolution: {integrity: sha512-vkoL3DSS5tsUNLhNtBJWaqDJNNEQsMCr0o2N02sLCSpe5S8TQHz+klQT42Qgj4PqATMwnG3OF0QQ5BH0oAKIPg==}
+  '@unrs/resolver-binding-linux-arm-musleabihf@1.9.1':
+    resolution: {integrity: sha512-BfdnN6aZ7NcX8djW8SR6GOJc+K+sFhWRF4vJueVE0vbUu5N1bLnBpxJg1TGlhSyo+ImC4SR0jcNiKN0jdoxt+A==}
     cpu: [arm]
     os: [linux]
 
-  '@unrs/resolver-binding-linux-arm64-gnu@1.7.13':
-    resolution: {integrity: sha512-uNpLKxlDF+NF6aUztbAVhhFSF65zf/6QEfk5NifUgYFbpBObzvMnl2ydEsXV96spwPcmeNTpG9byvq+Twwd3HQ==}
+  '@unrs/resolver-binding-linux-arm64-gnu@1.9.1':
+    resolution: {integrity: sha512-Jhge7lFtH0QqfRz2PyJjJXWENqywPteITd+nOS0L6AhbZli+UmEyGBd2Sstt1c+l9C+j/YvKTl9wJo9PPmsFNg==}
     cpu: [arm64]
     os: [linux]
 
-  '@unrs/resolver-binding-linux-arm64-musl@1.7.13':
-    resolution: {integrity: sha512-mEFL6q7vtxA6YJ9sLbxCnKOBynOvClVOcqwUErmaCxA94hgP11rlstouySxJCGeFAb8KfUX9mui82waYrqoBlQ==}
+  '@unrs/resolver-binding-linux-arm64-musl@1.9.1':
+    resolution: {integrity: sha512-ofdK/ow+ZSbSU0pRoB7uBaiRHeaAOYQFU5Spp87LdcPL/P1RhbCTMSIYVb61XWzsVEmYKjHFtoIE0wxP6AFvrA==}
     cpu: [arm64]
     os: [linux]
 
-  '@unrs/resolver-binding-linux-ppc64-gnu@1.7.13':
-    resolution: {integrity: sha512-MjJaNk8HK3rCOIPS6AQPJXlrDfG1LaePum+CZddHZygPqDNZyVrVdWTadT+U51vIx5QOdEE0oXcgTY+7VYsU1g==}
+  '@unrs/resolver-binding-linux-ppc64-gnu@1.9.1':
+    resolution: {integrity: sha512-eC8SXVn8de67HacqU7PoGdHA+9tGbqfEdD05AEFRAB81ejeQtNi5Fx7lPcxpLH79DW0BnMAHau3hi4RVkHfSCw==}
     cpu: [ppc64]
     os: [linux]
 
-  '@unrs/resolver-binding-linux-riscv64-gnu@1.7.13':
-    resolution: {integrity: sha512-9gAuT1+ed2eIuOXHSu4SdJOe7SUEzPTpOTEuTjGePvMEoWHywY5pvlcY7xMn3d8rhKHpwMzEhl8F8Oy+rkudzA==}
+  '@unrs/resolver-binding-linux-riscv64-gnu@1.9.1':
+    resolution: {integrity: sha512-fIkwvAAQ41kfoGWfzeJ33iLGShl0JEDZHrMnwTHMErUcPkaaZRJYjQjsFhMl315NEQ4mmTlC+2nfK/J2IszDOw==}
     cpu: [riscv64]
     os: [linux]
 
-  '@unrs/resolver-binding-linux-riscv64-musl@1.7.13':
-    resolution: {integrity: sha512-CNrJythJN9jC8SIJGoawebYylzGNJuWAWTKxxxx5Fr3DGEXbex/We4U7N4u6/dQAK3cLVOuAE/9a4D2JH35JIA==}
+  '@unrs/resolver-binding-linux-riscv64-musl@1.9.1':
+    resolution: {integrity: sha512-RAAszxImSOFLk44aLwnSqpcOdce8sBcxASledSzuFAd8Q5ZhhVck472SisspnzHdc7THCvGXiUeZ2hOC7NUoBQ==}
     cpu: [riscv64]
     os: [linux]
 
-  '@unrs/resolver-binding-linux-s390x-gnu@1.7.13':
-    resolution: {integrity: sha512-J0MVXXPvM2Bv+f+gzOZHLHEmXUJNKwJqkfMDTwE763w/tD+OA7UlTMLQihrcYRXwW5jZ8nbM2cEWTeFsTiH2JQ==}
+  '@unrs/resolver-binding-linux-s390x-gnu@1.9.1':
+    resolution: {integrity: sha512-QoP9vkY+THuQdZi05bA6s6XwFd6HIz3qlx82v9bTOgxeqin/3C12Ye7f7EOD00RQ36OtOPWnhEMMm84sv7d1XQ==}
     cpu: [s390x]
     os: [linux]
 
-  '@unrs/resolver-binding-linux-x64-gnu@1.7.13':
-    resolution: {integrity: sha512-Ii2WhtIpeWUe6XG/YhPUX3JNL3PiyXe56PJzqAYDUyB0gctkk/nngpuPnNKlLMcN9FID0T39mIJPhA6YpRcGDQ==}
+  '@unrs/resolver-binding-linux-x64-gnu@1.9.1':
+    resolution: {integrity: sha512-/p77cGN/h9zbsfCseAP5gY7tK+7+DdM8fkPfr9d1ye1fsF6bmtGbtZN6e/8j4jCZ9NEIBBkT0GhdgixSelTK9g==}
     cpu: [x64]
     os: [linux]
 
-  '@unrs/resolver-binding-linux-x64-musl@1.7.13':
-    resolution: {integrity: sha512-8F5E9EhtGYkfEM1OhyVgq76+SnMF5NfZS4v5Rq9JlfuqPnqXWgUjg903hxnG54PQr4I3jmG5bEeT77pGAA3Vvg==}
+  '@unrs/resolver-binding-linux-x64-musl@1.9.1':
+    resolution: {integrity: sha512-wInTqT3Bu9u50mDStEig1v8uxEL2Ht+K8pir/YhyyrM5ordJtxoqzsL1vR/CQzOJuDunUTrDkMM0apjW/d7/PA==}
     cpu: [x64]
     os: [linux]
 
-  '@unrs/resolver-binding-wasm32-wasi@1.7.13':
-    resolution: {integrity: sha512-7RXGTyDtyR/5o1FlBcjEaQQmQ2rKvu5Jq0Uhvce3PsbreZ61M4LQ5Mey2OMomIq4opphAkfDdm/lkHhWJNKNrw==}
+  '@unrs/resolver-binding-wasm32-wasi@1.9.1':
+    resolution: {integrity: sha512-eNwqO5kUa+1k7yFIircwwiniKWA0UFHo2Cfm8LYgkh9km7uMad+0x7X7oXbQonJXlqfitBTSjhA0un+DsHIrhw==}
     engines: {node: '>=14.0.0'}
     cpu: [wasm32]
 
-  '@unrs/resolver-binding-win32-arm64-msvc@1.7.13':
-    resolution: {integrity: sha512-MomJVcaVZe3j+CvkcfIVEcQyOOzauKpJYGY8d6PoKXn1FalMVGHX9/c0kXCI0WCK+CRGMExAiQhD8jkhyUVKxg==}
+  '@unrs/resolver-binding-win32-arm64-msvc@1.9.1':
+    resolution: {integrity: sha512-Eaz1xMUnoa2mFqh20mPqSdbYl6crnk8HnIXDu6nsla9zpgZJZO8w3c1gvNN/4Eb0RXRq3K9OG6mu8vw14gIqiA==}
     cpu: [arm64]
     os: [win32]
 
-  '@unrs/resolver-binding-win32-ia32-msvc@1.7.13':
-    resolution: {integrity: sha512-pnHfzbFj6e4gUARI1Yvz0TUhmFZae248O7JOMCSmSBN3R35RJiKyHmsMuIiPrUYWDzm5jUMPTxSs+b3Ipawusw==}
+  '@unrs/resolver-binding-win32-ia32-msvc@1.9.1':
+    resolution: {integrity: sha512-H/+d+5BGlnEQif0gnwWmYbYv7HJj563PUKJfn8PlmzF8UmF+8KxdvXdwCsoOqh4HHnENnoLrav9NYBrv76x1wQ==}
     cpu: [ia32]
     os: [win32]
 
-  '@unrs/resolver-binding-win32-x64-msvc@1.7.13':
-    resolution: {integrity: sha512-tI0+FTntE3BD0UxhTP12F/iTtkeMK+qh72/2aSxPZnTlOcMR9CTJid8CdppbSjj9wenq7PNcqScLtpPENH3Lvg==}
+  '@unrs/resolver-binding-win32-x64-msvc@1.9.1':
+    resolution: {integrity: sha512-rS86wI4R6cknYM3is3grCb/laE8XBEbpWAMSIPjYfmYp75KL5dT87jXF2orDa4tQYg5aajP5G8Fgh34dRyR+Rw==}
     cpu: [x64]
     os: [win32]
 
@@ -3540,13 +3541,13 @@ packages:
   '@vitest/utils@2.1.9':
     resolution: {integrity: sha512-v0psaMSkNJ3A2NMrUEHFRzJtDPFn+/VWZ5WxImB21T9fjucJRmS7xCS3ppEnARb9y11OAzaD+P2Ps+b+BGX5iQ==}
 
-  '@web3icons/common@0.11.11':
-    resolution: {integrity: sha512-M06zqF0Dt0nIH6o+tRfvLW4DrMdKfqZUsoLKRiJF9nzE5iHrtSsrzO2lAyqJZPfSQFUyJzDxTfd2EoAtQxViqg==}
+  '@web3icons/common@0.11.13':
+    resolution: {integrity: sha512-oqgc6KZPp3b8RYC0ibS16Ds7vhGWHNUh0JKmgHa9wwJcy00QMBbggpiHfwrdxs4SCVkAJk8w6o3T0rNTpXwi9g==}
     peerDependencies:
       typescript: ^5.0.0
 
-  '@web3icons/react@4.0.14':
-    resolution: {integrity: sha512-E81eIDjJSnSj8IqBdQOMomCpeMVYtt6mzBwxxNZ5aUIBMp/J1Dcxus4i7HibTXtzfJMwssXhakbG5IIXeodaeQ==}
+  '@web3icons/react@4.0.16':
+    resolution: {integrity: sha512-RPRZxiGX53aOHNYYAHNUqNDE7HEeDCKvLwv/SeFHLk0MIRcTxVqn0Kn4w9pkjA/0aVVhFH17oBdMQPbDujMtfg==}
     peerDependencies:
       react: ^18.2.0
 
@@ -3636,8 +3637,8 @@ packages:
   ajv@8.17.1:
     resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==}
 
-  algoliasearch@5.27.0:
-    resolution: {integrity: sha512-2PvAgvxxJzA3+dB+ERfS2JPdvUsxNf89Cc2GF5iCcFupTULOwmbfinvqrC4Qj9nHJJDNf494NqEN/1f9177ZTQ==}
+  algoliasearch@5.29.0:
+    resolution: {integrity: sha512-E2l6AlTWGznM2e7vEE6T6hzObvEyXukxMOlBmVlMyixZyK1umuO/CiVc6sDBbzVH0oEviCE5IfVY1oZBmccYPQ==}
     engines: {node: '>= 14.0.0'}
 
   ansi-align@3.0.1:
@@ -3833,11 +3834,11 @@ packages:
     resolution: {integrity: sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==}
     engines: {node: '>=10'}
 
-  brace-expansion@1.1.11:
-    resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
+  brace-expansion@1.1.12:
+    resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==}
 
-  brace-expansion@2.0.1:
-    resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
+  brace-expansion@2.0.2:
+    resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==}
 
   braces@3.0.3:
     resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
@@ -3905,8 +3906,8 @@ packages:
   camelize@1.0.1:
     resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==}
 
-  caniuse-lite@1.0.30001721:
-    resolution: {integrity: sha512-cOuvmUVtKrtEaoKiO0rSc29jcjwMwX5tOHDy4MgVFEWiUXj4uBMJkwI8MDySkgXidpMiHUcviogAvFi4pA2hDQ==}
+  caniuse-lite@1.0.30001724:
+    resolution: {integrity: sha512-WqJo7p0TbHDOythNTqYujmaJTvtYRZrjpP8TCvH6Vb9CYJerJNKamKzIWOM4BkQatWj9H2lYulpdAQNBe7QhNA==}
 
   ccount@2.0.1:
     resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
@@ -4138,8 +4139,8 @@ packages:
     engines: {node: '>=4'}
     hasBin: true
 
-  cssstyle@4.4.0:
-    resolution: {integrity: sha512-W0Y2HOXlPkb2yaKrCVRjinYKciu/qSLEmK0K9mcfDei3zwlnHFEHAs/Du3cIRwPqY+J4JsiBzUjoHyc8RsJ03A==}
+  cssstyle@4.5.0:
+    resolution: {integrity: sha512-/7gw8TGrvH/0g564EnhgFZogTMVe+lifpB7LWU+PEsiq5o83TUXR3fDbzTRXOJhoJwck5IS9ez3Em5LNMMO2aw==}
     engines: {node: '>=18'}
 
   csstype@3.1.3:
@@ -4356,8 +4357,8 @@ packages:
   decimal.js@10.5.0:
     resolution: {integrity: sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==}
 
-  decode-named-character-reference@1.1.0:
-    resolution: {integrity: sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w==}
+  decode-named-character-reference@1.2.0:
+    resolution: {integrity: sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==}
 
   deep-eql@5.0.2:
     resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==}
@@ -4456,8 +4457,8 @@ packages:
   eastasianwidth@0.2.0:
     resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
 
-  electron-to-chromium@1.5.166:
-    resolution: {integrity: sha512-QPWqHL0BglzPYyJJ1zSSmwFFL6MFXhbACOCcsCdUMCkzPdS9/OIBVxg516X/Ado2qwAq8k0nJJ7phQPCqiaFAw==}
+  electron-to-chromium@1.5.172:
+    resolution: {integrity: sha512-fnKW9dGgmBfsebbYognQSv0CGGLFH1a5iV9EDYTBwmAQn+whbzHbLFlC+3XbHc8xaNtpO0etm8LOcRXs1qMRkQ==}
 
   elliptic@6.6.1:
     resolution: {integrity: sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==}
@@ -4586,8 +4587,8 @@ packages:
       eslint-plugin-import-x:
         optional: true
 
-  eslint-mdx@3.4.2:
-    resolution: {integrity: sha512-NYNGuBClNzYzTJWbPzeYSh/eCl5m4BrX1MayNuGuvxn+cItTdNirE+ykos9q1CkYhHj+ZgQz6W+6EIaHMp7/jQ==}
+  eslint-mdx@3.5.0:
+    resolution: {integrity: sha512-3iFgW201z26bnFJelrrG2D8YXx1jk9JzXBp2pN32EMIpg47ZBM20mkdneLXn2CBKp27ZMHTygEA1DJNpqMu4Pg==}
     engines: {node: '>=18.0.0'}
     peerDependencies:
       eslint: '>=8.0.0'
@@ -4596,8 +4597,8 @@ packages:
       remark-lint-file-extension:
         optional: true
 
-  eslint-module-utils@2.12.0:
-    resolution: {integrity: sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==}
+  eslint-module-utils@2.12.1:
+    resolution: {integrity: sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==}
     engines: {node: '>=4'}
     peerDependencies:
       '@typescript-eslint/parser': '*'
@@ -4617,8 +4618,8 @@ packages:
       eslint-import-resolver-webpack:
         optional: true
 
-  eslint-plugin-import@2.31.0:
-    resolution: {integrity: sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==}
+  eslint-plugin-import@2.32.0:
+    resolution: {integrity: sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==}
     engines: {node: '>=4'}
     peerDependencies:
       '@typescript-eslint/parser': '*'
@@ -4633,8 +4634,8 @@ packages:
     peerDependencies:
       eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9
 
-  eslint-plugin-mdx@3.4.2:
-    resolution: {integrity: sha512-deXcJ4hTLkQ7F2JLto74UXeDkZYXu1Xtgvy0ZHlJ4CNwCYAZier3qNvTMBwE9VEnowxN+TgB18OhMLYyaR9hXA==}
+  eslint-plugin-mdx@3.5.0:
+    resolution: {integrity: sha512-pxXH/a2eH3Pxkmp1LSTqFfizIF1ZEUJjEm99gy+k/c+rK+SITEHg04LbPZBqG0T3Z4x0tPtY7zm9miqypcPxuw==}
     engines: {node: '>=18.0.0'}
     peerDependencies:
       eslint: '>=8.0.0'
@@ -4770,8 +4771,8 @@ packages:
     resolution: {integrity: sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==}
     engines: {node: '>=12.0.0'}
 
-  exsolve@1.0.5:
-    resolution: {integrity: sha512-pz5dvkYYKQ1AHVrgOzBKWeP4u4FRb3a6DNK2ucr0OoNwYIU4QWsJ+NM36LLzORT+z845MzKHHhpXiUF5nvQoJg==}
+  exsolve@1.0.7:
+    resolution: {integrity: sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==}
 
   extend-shallow@2.0.1:
     resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==}
@@ -4892,8 +4893,8 @@ packages:
   fraction.js@4.3.7:
     resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==}
 
-  framer-motion@12.16.0:
-    resolution: {integrity: sha512-xryrmD4jSBQrS2IkMdcTmiS4aSKckbS7kLDCuhUn9110SQKG1w3zlq1RTqCblewg+ZYe+m3sdtzQA6cRwo5g8Q==}
+  framer-motion@12.19.1:
+    resolution: {integrity: sha512-nq9hwWAEKf4gzprbOZzKugLV5OVKF7zrNDY6UOVu+4D3ZgIkg8L9Jy6AMrpBM06fhbKJ6LEG6UY5+t7Eq6wNlg==}
     peerDependencies:
       '@emotion/is-prop-valid': '*'
       react: ^18.0.0 || ^19.0.0
@@ -5064,8 +5065,8 @@ packages:
     peerDependencies:
       hardhat: ^2.0.0
 
-  hardhat@2.24.2:
-    resolution: {integrity: sha512-oYt+tcN2379Z3kqIhvVw6IFgWqTm/ixcrTvyAuQdE2RbD+kknwF7hDfUeggy0akrw6xdgCtXvnw9DFrxAB70hA==}
+  hardhat@2.25.0:
+    resolution: {integrity: sha512-yBiA74Yj3VnTRj7lhnn8GalvBdvsMOqTKRrRATSy/2v0VIR2hR0Jcnmfn4aQBLtGAnr3Q2c8CxL0g3LYegUp+g==}
     hasBin: true
     peerDependencies:
       ts-node: '*'
@@ -5118,12 +5119,6 @@ packages:
   hast-util-from-parse5@8.0.3:
     resolution: {integrity: sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==}
 
-  hast-util-has-property@3.0.0:
-    resolution: {integrity: sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==}
-
-  hast-util-interactive@3.0.0:
-    resolution: {integrity: sha512-9VFa3kP6AT40BNYcPmn3jpsG+1KPDF0rUFCrFVQDUsuUXZ3YLODm8UGV0tmYzFpcOIQXTAOi2ccS3ywlj2dQTA==}
-
   hast-util-is-element@3.0.0:
     resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==}
 
@@ -5157,6 +5152,10 @@ packages:
   hast-util-whitespace@3.0.0:
     resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==}
 
+  hast@1.0.0:
+    resolution: {integrity: sha512-vFUqlRV5C+xqP76Wwq2SrM0kipnmpxJm7OfvVXpB35Fp+Fn4MV+ozr+JZr5qFvyR1q/U+Foim2x+3P+x9S1PLA==}
+    deprecated: Renamed to rehype
+
   hastscript@9.0.1:
     resolution: {integrity: sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==}
 
@@ -5682,8 +5681,8 @@ packages:
     resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
     hasBin: true
 
-  loupe@3.1.3:
-    resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==}
+  loupe@3.1.4:
+    resolution: {integrity: sha512-wJzkKwJrheKtknCOKNEtDK4iqg/MxmZheEMtSTYvnzRdEYaZzmgH976nenp8WdJRdx5Vc1X/9MO0Oszl6ezeXg==}
 
   lru-cache@10.4.3:
     resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
@@ -5784,8 +5783,8 @@ packages:
     resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
     engines: {node: '>= 8'}
 
-  mermaid@11.6.0:
-    resolution: {integrity: sha512-PE8hGUy1LDlWIHWBP05SFdqUHGmRcCcK4IzpOKPE35eOw+G9zZgcnMpyunJVUEOgb//KBORPjysKndw8bFLuRg==}
+  mermaid@11.7.0:
+    resolution: {integrity: sha512-/1/5R0rt0Z1Ak0CuznAnCF3HtQgayRXUz6SguzOwN4L+DuCobz0UxnQ+ZdTSZ3AugKVVh78tiVmsHpHWV25TCw==}
 
   mhchemparser@4.2.1:
     resolution: {integrity: sha512-kYmyrCirqJf3zZ9t/0wGgRZ4/ZJw//VwaRVGA75C4nhE60vtnIzhl9J9ndkX/h6hxSN7pjg/cE0VxbnNM+bnDQ==}
@@ -5990,14 +5989,14 @@ packages:
     engines: {node: '>= 14.0.0'}
     hasBin: true
 
-  motion-dom@12.16.0:
-    resolution: {integrity: sha512-Z2nGwWrrdH4egLEtgYMCEN4V2qQt1qxlKy/uV7w691ztyA41Q5Rbn0KNGbsNVDZr9E8PD2IOQ3hSccRnB6xWzw==}
+  motion-dom@12.19.0:
+    resolution: {integrity: sha512-m96uqq8VbwxFLU0mtmlsIVe8NGGSdpBvBSHbnnOJQxniPaabvVdGgxSamhuDwBsRhwX7xPxdICgVJlOpzn/5bw==}
 
-  motion-utils@12.12.1:
-    resolution: {integrity: sha512-f9qiqUHm7hWSLlNW8gS9pisnsN7CRFRD58vNjptKdsqFLpkVnX00TNeD6Q0d27V9KzT7ySFyK1TZ/DShfVOv6w==}
+  motion-utils@12.19.0:
+    resolution: {integrity: sha512-BuFTHINYmV07pdWs6lj6aI63vr2N4dg0vR+td0rtrdpWOhBzIkEklZyLcvKBoEtwSqx8Jg06vUB5RS0xDiUybw==}
 
-  motion@12.16.0:
-    resolution: {integrity: sha512-P3HA83fnPMEGBLfKdD5vDdjH1Aa3wM3jT3+HX3fCVpy/4/lJiqvABajLgZenBu+rzkFzmeaPkvT7ouf9Tq5tVQ==}
+  motion@12.19.1:
+    resolution: {integrity: sha512-OhoHWrht+zwDPccr2wGltJdwgz2elFBBt/sLei2g0hwICvy2hOBFUkA4Ylup3VnDgz+vUtecf694EV7bJK4XjA==}
     peerDependencies:
       '@emotion/is-prop-valid': '*'
       react: ^18.0.0 || ^19.0.0
@@ -6055,8 +6054,8 @@ packages:
     peerDependencies:
       next: '*'
 
-  next@14.2.29:
-    resolution: {integrity: sha512-s98mCOMOWLGGpGOfgKSnleXLuegvvH415qtRZXpSp00HeEgdmrxmwL9cgKU+h4XrhB16zEI5d/7BnkS3ATInsA==}
+  next@14.2.30:
+    resolution: {integrity: sha512-+COdu6HQrHHFQ1S/8BBsCag61jZacmvbuL2avHvQFbWa2Ox7bE+d8FyNgxRLjXQ5wtPyQwEmk85js/AuaG2Sbg==}
     engines: {node: '>=18.17.0'}
     hasBin: true
     peerDependencies:
@@ -6231,8 +6230,8 @@ packages:
     resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==}
     engines: {node: '>= 0.4'}
 
-  ox@0.7.1:
-    resolution: {integrity: sha512-+k9fY9PRNuAMHRFIUbiK9Nt5seYHHzSQs9Bj+iMETcGtlpS7SmBzcGSVUQO3+nqGLEiNK4598pHNFlVRaZbRsg==}
+  ox@0.8.1:
+    resolution: {integrity: sha512-e+z5epnzV+Zuz91YYujecW8cF01mzmrUtWotJ0oEPym/G82uccs7q0WDHTYL3eiONbTUEvcZrptAKLgTBD3u2A==}
     peerDependencies:
       typescript: '>=5.4.0'
     peerDependenciesMeta:
@@ -6450,16 +6449,16 @@ packages:
     resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==}
     engines: {node: ^10 || ^12 || >=14}
 
-  postcss@8.5.4:
-    resolution: {integrity: sha512-QSa9EBe+uwlGTFmHsPKokv3B/oEMQZxfqW0QqNCyhpa6mB1afzulwn8hihglqAb2pOw+BJgNlmXQ8la2VeHB7w==}
+  postcss@8.5.6:
+    resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
     engines: {node: ^10 || ^12 || >=14}
 
   prelude-ls@1.2.1:
     resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
     engines: {node: '>= 0.8.0'}
 
-  prettier-plugin-tailwindcss@0.6.12:
-    resolution: {integrity: sha512-OuTQKoqNwV7RnxTPwXWzOFXy6Jc4z8oeRZYGuMpRyG3WbuR3jjXdQFK8qFBMBx8UHWdHrddARz2fgUenild6aw==}
+  prettier-plugin-tailwindcss@0.6.13:
+    resolution: {integrity: sha512-uQ0asli1+ic8xrrSmIOaElDu0FacR4x69GynTh2oZjFY10JUt6EEumTQl5tB4fMeD6I1naKd+4rXQQ7esT2i1g==}
     engines: {node: '>=14.21.3'}
     peerDependencies:
       '@ianvs/prettier-plugin-sort-imports': '*'
@@ -6518,8 +6517,8 @@ packages:
     engines: {node: '>=10.13.0'}
     hasBin: true
 
-  prettier@3.5.3:
-    resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==}
+  prettier@3.6.1:
+    resolution: {integrity: sha512-5xGWRa90Sp2+x1dQtNpIpeOQpTDBs9cZDmA/qs2vDNN2i18PdapqY7CmBeyLlMuGqXJRIOPaCaVZTLNQRWUH/A==}
     engines: {node: '>=14'}
     hasBin: true
 
@@ -6591,8 +6590,8 @@ packages:
     resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==}
     engines: {node: '>= 0.8'}
 
-  react-aria@3.41.0:
-    resolution: {integrity: sha512-jg4aUQrsBTwgKitXlyLvEVSigzn79jNpgDP+mrrDIX8emzr+BBXx1x6WSVHDAESep72Xcp+zr9PbLmBCk3/nzQ==}
+  react-aria@3.41.1:
+    resolution: {integrity: sha512-5mujwnW6/NHvONDecb7DiWkzI27dzBO1auKt4KkgNuW+Awud1LCaK/NOlHp4xZl3fSfh1ROpdAKERHCh7nvAAQ==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
@@ -6691,8 +6690,8 @@ packages:
       react: '>=16.6.0'
       react-dom: '>=16.6.0'
 
-  react-virtuoso@4.12.8:
-    resolution: {integrity: sha512-NMMKfDBr/+xZZqCQF3tN1SZsh6FwOJkYgThlfnsPLkaEhdyQo0EuWUzu3ix6qjnI7rYwJhMwRGoJBi+aiDfGsA==}
+  react-virtuoso@4.13.0:
+    resolution: {integrity: sha512-XHv2Fglpx80yFPdjZkV9d1baACKghg/ucpDFEXwaix7z0AfVQj+mF6lM+YQR6UC/TwzXG2rJKydRMb3+7iV3PA==}
     peerDependencies:
       react: '>=16 || >=17 || >= 18 || >= 19'
       react-dom: '>=16 || >=17 || >= 18 || >=19'
@@ -6726,8 +6725,8 @@ packages:
   recharts-scale@0.4.5:
     resolution: {integrity: sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==}
 
-  recharts@2.15.3:
-    resolution: {integrity: sha512-EdOPzTwcFSuqtvkDoaM5ws/Km1+WTAO2eizL7rqiG0V2UVhTnz0m7J2i0CjVPUCdEkZImaWvXLbZDS2H5t6GFQ==}
+  recharts@2.15.4:
+    resolution: {integrity: sha512-UT/q6fwS3c1dHbXv2uFgYJ9BMFHu3fwnd7AYZaEQhXuYQ4hgsxLvsUXzGdKeZrW5xopzDCvuA2N41WJ88I7zIw==}
     engines: {node: '>=14'}
     peerDependencies:
       react: ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
@@ -6902,8 +6901,8 @@ packages:
   rollup-pluginutils@2.8.2:
     resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==}
 
-  rollup@4.42.0:
-    resolution: {integrity: sha512-LW+Vse3BJPyGJGAJt1j8pWDKPd73QM8cRXYK1IxOBgL2AGLu7Xd2YOW0M2sLUBCkF5MshXXtMApyEAEzMVMsnw==}
+  rollup@4.44.0:
+    resolution: {integrity: sha512-qHcdEzLCiktQIfwBq420pn2dP+30uzqYxv9ETm91wdt2R9AFcWfjNAmje4NWlnCIQ5RMTzVf0ZyisOKqHR6RwA==}
     engines: {node: '>=18.0.0', npm: '>=8.0.0'}
     hasBin: true
 
@@ -7020,8 +7019,8 @@ packages:
   shiki@1.29.2:
     resolution: {integrity: sha512-njXuliz/cP+67jU2hukkxCNuH1yUi4QfdZZY+sMr5PPrIyXSu5iTb/qYC4BiWWB0vZ+7TbdvYUCeL23zpwCfbg==}
 
-  shiki@3.6.0:
-    resolution: {integrity: sha512-tKn/Y0MGBTffQoklaATXmTqDU02zx8NYBGQ+F6gy87/YjKbizcLd+Cybh/0ZtOBX9r1NEnAy/GTRDKtOsc1L9w==}
+  shiki@3.7.0:
+    resolution: {integrity: sha512-ZcI4UT9n6N2pDuM2n3Jbk0sR4Swzq43nLPgS/4h0E3B/NrFn2HKElrDtceSf8Zx/OWYOo7G1SAtBLypCp+YXqg==}
 
   side-channel-list@1.0.0:
     resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==}
@@ -7246,11 +7245,11 @@ packages:
   strnum@2.1.1:
     resolution: {integrity: sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==}
 
-  style-to-js@1.1.16:
-    resolution: {integrity: sha512-/Q6ld50hKYPH3d/r6nr117TZkHR0w0kGGIVfpG9N6D8NymRPM9RqCUv4pRpJ62E5DqOYx2AFpbZMyCPnjQCnOw==}
+  style-to-js@1.1.17:
+    resolution: {integrity: sha512-xQcBGDxJb6jjFCTzvQtfiPn6YvvP2O8U1MDIPNfJQlWMYfktPy+iGsHE7cssjs7y84d9fQaK4UF3RIJaAHSoYA==}
 
-  style-to-object@1.0.8:
-    resolution: {integrity: sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==}
+  style-to-object@1.0.9:
+    resolution: {integrity: sha512-G4qppLgKu/k6FwRpHiGiKPaPTFcG3g4wNVX/Qsfu+RqQM30E7Tyu/TEgxcL9PNLF5pdRLwQdE3YKKf+KF2Dzlw==}
 
   styled-jsx@5.1.1:
     resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==}
@@ -7352,8 +7351,8 @@ packages:
     resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==}
     engines: {node: '>=12.0.0'}
 
-  tinypool@1.1.0:
-    resolution: {integrity: sha512-7CotroY9a8DKsKprEy/a14aCCm8jYVmR7aFy4fpkZM8sdpNJbKkixuNjgM50yCmip2ezc8z4N7k3oe2+rfRJCQ==}
+  tinypool@1.1.1:
+    resolution: {integrity: sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==}
     engines: {node: ^18.0.0 || >=20.0.0}
 
   tinyrainbow@1.2.0:
@@ -7457,8 +7456,8 @@ packages:
       typescript:
         optional: true
 
-  tsx@4.19.4:
-    resolution: {integrity: sha512-gK5GVzDkJK1SI1zwHf32Mqxf2tSJkNx+eYcNly5+nHvWqXUJYUkWBQtKauoESz3ymezAI++ZwT855x5p5eop+Q==}
+  tsx@4.20.3:
+    resolution: {integrity: sha512-qjbnuR9Tr+FJOMBqJCW5ehvIo/buZq7vH7qD7JziU98h6l3qGy0a/yPFjwO+y0/T7GFpNgNAvEcPPVfyT8rrPQ==}
     engines: {node: '>=18.0.0'}
     hasBin: true
 
@@ -7652,8 +7651,8 @@ packages:
     resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
     engines: {node: '>= 0.8'}
 
-  unrs-resolver@1.7.13:
-    resolution: {integrity: sha512-QUjCYKAgrdJpf3wA73zWjOrO7ra19lfnwQ8HRkNOLah5AVDqOS38UunnyhzsSL8AE+2/AGnAHxlr8cGshCP35A==}
+  unrs-resolver@1.9.1:
+    resolution: {integrity: sha512-4AZVxP05JGN6DwqIkSP4VKLOcwQa5l37SWHF/ahcuqBMbfxbpN1L1QKafEhWCziHhzKex9H/AR09H0OuVyU+9g==}
 
   update-browserslist-db@1.1.3:
     resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==}
@@ -7745,8 +7744,8 @@ packages:
   victory-vendor@36.9.2:
     resolution: {integrity: sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ==}
 
-  viem@2.31.0:
-    resolution: {integrity: sha512-U7OMQ6yqK+bRbEIarf2vqxL7unSEQvNxvML/1zG7suAmKuJmipqdVTVJGKBCJiYsm/EremyO2FS4dHIPpGv+eA==}
+  viem@2.31.4:
+    resolution: {integrity: sha512-0UZ/asvzl6p44CIBRDbwEcn3HXIQQurBZcMo5qmLhQ8s27Ockk+RYohgTLlpLvkYs8/t4UUEREAbHLuek1kXcw==}
     peerDependencies:
       typescript: '>=5.0.4'
     peerDependenciesMeta:
@@ -7925,8 +7924,8 @@ packages:
   workerpool@6.5.1:
     resolution: {integrity: sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==}
 
-  wrangler@3.114.9:
-    resolution: {integrity: sha512-1e0gL+rxLF04kM9bW4sxoDGLXpJ1x53Rx1t18JuUm6F67qadKKPISyUAXuBeIQudWrCWEBXaTVnSdLHz0yBXbA==}
+  wrangler@3.114.10:
+    resolution: {integrity: sha512-UMs4bSH+P47oXvXqgziRqD8UOT8KBF6D/4O0bB9Kyh9QrT1FGpG2p4rV4FtbKFOchDrXQozbthScND+vLc8gqw==}
     engines: {node: '>=16.17.0'}
     hasBin: true
     peerDependencies:
@@ -8037,11 +8036,11 @@ packages:
     peerDependencies:
       zod: ^3.18.0
 
-  zod-validation-error@3.4.1:
-    resolution: {integrity: sha512-1KP64yqDPQ3rupxNv7oXhf7KdhHHgaqbKuspVoiN93TT0xrBjql+Svjkdjq/Qh/7GSMmgQs3AfvBT0heE35thw==}
+  zod-validation-error@3.5.2:
+    resolution: {integrity: sha512-mdi7YOLtram5dzJ5aDtm1AG9+mxRma1iaMrZdYIpFO7epdKBUwLHIxTF8CPDeCQ828zAXYtizrKlEJAtzgfgrw==}
     engines: {node: '>=18.0.0'}
     peerDependencies:
-      zod: ^3.24.4
+      zod: ^3.25.0
 
   zod@3.22.3:
     resolution: {integrity: sha512-EjIevzuJRiRPbVH4mGc8nApb/lVLKVpmUhAaR5R5doKGfAnGJ6Gr3CViAVjP+4FWSxCsybeWQdcgCtbX+7oZug==}
@@ -8049,8 +8048,8 @@ packages:
   zod@3.23.8:
     resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==}
 
-  zod@3.25.57:
-    resolution: {integrity: sha512-6tgzLuwVST5oLUxXTmBqoinKMd3JeesgbgseXeFasKKj8Q1FCZrHnbqJOyiEvr4cVAlbug+CgIsmJ8cl/pU5FA==}
+  zod@3.25.67:
+    resolution: {integrity: sha512-idA2YXwpCdqUSKRCACDE6ItZD9TZzy3OZMtpfLoh6oPR47lipysRrJfjzMqFxQ3uJuUPyUeWe1r9vLH33xO/Qw==}
 
   zwitch@2.0.4:
     resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
@@ -8061,110 +8060,110 @@ snapshots:
 
   '@adraffy/ens-normalize@1.11.0': {}
 
-  '@algolia/autocomplete-core@1.17.9(@algolia/client-search@5.27.0)(algoliasearch@5.27.0)(search-insights@2.17.3)':
+  '@algolia/autocomplete-core@1.17.9(@algolia/client-search@5.29.0)(algoliasearch@5.29.0)(search-insights@2.17.3)':
     dependencies:
-      '@algolia/autocomplete-plugin-algolia-insights': 1.17.9(@algolia/client-search@5.27.0)(algoliasearch@5.27.0)(search-insights@2.17.3)
-      '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.27.0)(algoliasearch@5.27.0)
+      '@algolia/autocomplete-plugin-algolia-insights': 1.17.9(@algolia/client-search@5.29.0)(algoliasearch@5.29.0)(search-insights@2.17.3)
+      '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.29.0)(algoliasearch@5.29.0)
     transitivePeerDependencies:
       - '@algolia/client-search'
       - algoliasearch
       - search-insights
 
-  '@algolia/autocomplete-plugin-algolia-insights@1.17.9(@algolia/client-search@5.27.0)(algoliasearch@5.27.0)(search-insights@2.17.3)':
+  '@algolia/autocomplete-plugin-algolia-insights@1.17.9(@algolia/client-search@5.29.0)(algoliasearch@5.29.0)(search-insights@2.17.3)':
     dependencies:
-      '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.27.0)(algoliasearch@5.27.0)
+      '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.29.0)(algoliasearch@5.29.0)
       search-insights: 2.17.3
     transitivePeerDependencies:
       - '@algolia/client-search'
       - algoliasearch
 
-  '@algolia/autocomplete-preset-algolia@1.17.9(@algolia/client-search@5.27.0)(algoliasearch@5.27.0)':
+  '@algolia/autocomplete-preset-algolia@1.17.9(@algolia/client-search@5.29.0)(algoliasearch@5.29.0)':
     dependencies:
-      '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.27.0)(algoliasearch@5.27.0)
-      '@algolia/client-search': 5.27.0
-      algoliasearch: 5.27.0
+      '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.29.0)(algoliasearch@5.29.0)
+      '@algolia/client-search': 5.29.0
+      algoliasearch: 5.29.0
 
-  '@algolia/autocomplete-shared@1.17.9(@algolia/client-search@5.27.0)(algoliasearch@5.27.0)':
+  '@algolia/autocomplete-shared@1.17.9(@algolia/client-search@5.29.0)(algoliasearch@5.29.0)':
     dependencies:
-      '@algolia/client-search': 5.27.0
-      algoliasearch: 5.27.0
+      '@algolia/client-search': 5.29.0
+      algoliasearch: 5.29.0
 
-  '@algolia/client-abtesting@5.27.0':
+  '@algolia/client-abtesting@5.29.0':
     dependencies:
-      '@algolia/client-common': 5.27.0
-      '@algolia/requester-browser-xhr': 5.27.0
-      '@algolia/requester-fetch': 5.27.0
-      '@algolia/requester-node-http': 5.27.0
+      '@algolia/client-common': 5.29.0
+      '@algolia/requester-browser-xhr': 5.29.0
+      '@algolia/requester-fetch': 5.29.0
+      '@algolia/requester-node-http': 5.29.0
 
-  '@algolia/client-analytics@5.27.0':
+  '@algolia/client-analytics@5.29.0':
     dependencies:
-      '@algolia/client-common': 5.27.0
-      '@algolia/requester-browser-xhr': 5.27.0
-      '@algolia/requester-fetch': 5.27.0
-      '@algolia/requester-node-http': 5.27.0
+      '@algolia/client-common': 5.29.0
+      '@algolia/requester-browser-xhr': 5.29.0
+      '@algolia/requester-fetch': 5.29.0
+      '@algolia/requester-node-http': 5.29.0
 
-  '@algolia/client-common@5.27.0': {}
+  '@algolia/client-common@5.29.0': {}
 
-  '@algolia/client-insights@5.27.0':
+  '@algolia/client-insights@5.29.0':
     dependencies:
-      '@algolia/client-common': 5.27.0
-      '@algolia/requester-browser-xhr': 5.27.0
-      '@algolia/requester-fetch': 5.27.0
-      '@algolia/requester-node-http': 5.27.0
+      '@algolia/client-common': 5.29.0
+      '@algolia/requester-browser-xhr': 5.29.0
+      '@algolia/requester-fetch': 5.29.0
+      '@algolia/requester-node-http': 5.29.0
 
-  '@algolia/client-personalization@5.27.0':
+  '@algolia/client-personalization@5.29.0':
     dependencies:
-      '@algolia/client-common': 5.27.0
-      '@algolia/requester-browser-xhr': 5.27.0
-      '@algolia/requester-fetch': 5.27.0
-      '@algolia/requester-node-http': 5.27.0
+      '@algolia/client-common': 5.29.0
+      '@algolia/requester-browser-xhr': 5.29.0
+      '@algolia/requester-fetch': 5.29.0
+      '@algolia/requester-node-http': 5.29.0
 
-  '@algolia/client-query-suggestions@5.27.0':
+  '@algolia/client-query-suggestions@5.29.0':
     dependencies:
-      '@algolia/client-common': 5.27.0
-      '@algolia/requester-browser-xhr': 5.27.0
-      '@algolia/requester-fetch': 5.27.0
-      '@algolia/requester-node-http': 5.27.0
+      '@algolia/client-common': 5.29.0
+      '@algolia/requester-browser-xhr': 5.29.0
+      '@algolia/requester-fetch': 5.29.0
+      '@algolia/requester-node-http': 5.29.0
 
-  '@algolia/client-search@5.27.0':
+  '@algolia/client-search@5.29.0':
     dependencies:
-      '@algolia/client-common': 5.27.0
-      '@algolia/requester-browser-xhr': 5.27.0
-      '@algolia/requester-fetch': 5.27.0
-      '@algolia/requester-node-http': 5.27.0
+      '@algolia/client-common': 5.29.0
+      '@algolia/requester-browser-xhr': 5.29.0
+      '@algolia/requester-fetch': 5.29.0
+      '@algolia/requester-node-http': 5.29.0
 
-  '@algolia/ingestion@1.27.0':
+  '@algolia/ingestion@1.29.0':
     dependencies:
-      '@algolia/client-common': 5.27.0
-      '@algolia/requester-browser-xhr': 5.27.0
-      '@algolia/requester-fetch': 5.27.0
-      '@algolia/requester-node-http': 5.27.0
+      '@algolia/client-common': 5.29.0
+      '@algolia/requester-browser-xhr': 5.29.0
+      '@algolia/requester-fetch': 5.29.0
+      '@algolia/requester-node-http': 5.29.0
 
-  '@algolia/monitoring@1.27.0':
+  '@algolia/monitoring@1.29.0':
     dependencies:
-      '@algolia/client-common': 5.27.0
-      '@algolia/requester-browser-xhr': 5.27.0
-      '@algolia/requester-fetch': 5.27.0
-      '@algolia/requester-node-http': 5.27.0
+      '@algolia/client-common': 5.29.0
+      '@algolia/requester-browser-xhr': 5.29.0
+      '@algolia/requester-fetch': 5.29.0
+      '@algolia/requester-node-http': 5.29.0
 
-  '@algolia/recommend@5.27.0':
+  '@algolia/recommend@5.29.0':
     dependencies:
-      '@algolia/client-common': 5.27.0
-      '@algolia/requester-browser-xhr': 5.27.0
-      '@algolia/requester-fetch': 5.27.0
-      '@algolia/requester-node-http': 5.27.0
+      '@algolia/client-common': 5.29.0
+      '@algolia/requester-browser-xhr': 5.29.0
+      '@algolia/requester-fetch': 5.29.0
+      '@algolia/requester-node-http': 5.29.0
 
-  '@algolia/requester-browser-xhr@5.27.0':
+  '@algolia/requester-browser-xhr@5.29.0':
     dependencies:
-      '@algolia/client-common': 5.27.0
+      '@algolia/client-common': 5.29.0
 
-  '@algolia/requester-fetch@5.27.0':
+  '@algolia/requester-fetch@5.29.0':
     dependencies:
-      '@algolia/client-common': 5.27.0
+      '@algolia/client-common': 5.29.0
 
-  '@algolia/requester-node-http@5.27.0':
+  '@algolia/requester-node-http@5.29.0':
     dependencies:
-      '@algolia/client-common': 5.27.0
+      '@algolia/client-common': 5.29.0
 
   '@alloc/quick-lru@5.2.0': {}
 
@@ -8175,7 +8174,7 @@ snapshots:
 
   '@antfu/utils@8.1.1': {}
 
-  '@apidevtools/json-schema-ref-parser@13.0.4':
+  '@apidevtools/json-schema-ref-parser@13.0.5':
     dependencies:
       '@types/json-schema': 7.0.15
       js-yaml: 4.1.0
@@ -8247,7 +8246,7 @@ snapshots:
       '@babel/runtime': 7.27.6
       '@floating-ui/react': 0.27.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@floating-ui/utils': 0.2.9
-      '@react-aria/overlays': 3.27.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/overlays': 3.27.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       prop-types: 15.8.1
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
@@ -8301,7 +8300,7 @@ snapshots:
   '@cloudflare/workerd-windows-64@1.20250408.0':
     optional: true
 
-  '@cloudflare/workers-types@4.20250610.0': {}
+  '@cloudflare/workers-types@4.20250620.0': {}
 
   '@corex/deepmerge@4.0.43': {}
 
@@ -8331,12 +8330,12 @@ snapshots:
 
   '@docsearch/css@3.9.0': {}
 
-  '@docsearch/react@3.9.0(@algolia/client-search@5.27.0)(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)':
+  '@docsearch/react@3.9.0(@algolia/client-search@5.29.0)(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)':
     dependencies:
-      '@algolia/autocomplete-core': 1.17.9(@algolia/client-search@5.27.0)(algoliasearch@5.27.0)(search-insights@2.17.3)
-      '@algolia/autocomplete-preset-algolia': 1.17.9(@algolia/client-search@5.27.0)(algoliasearch@5.27.0)
+      '@algolia/autocomplete-core': 1.17.9(@algolia/client-search@5.29.0)(algoliasearch@5.29.0)(search-insights@2.17.3)
+      '@algolia/autocomplete-preset-algolia': 1.17.9(@algolia/client-search@5.29.0)(algoliasearch@5.29.0)
       '@docsearch/css': 3.9.0
-      algoliasearch: 5.27.0
+      algoliasearch: 5.29.0
     optionalDependencies:
       '@types/react': 18.3.23
       react: 18.3.1
@@ -8345,13 +8344,13 @@ snapshots:
     transitivePeerDependencies:
       - '@algolia/client-search'
 
-  '@edgeandnode/common@7.0.4(hardhat@2.24.2(typescript@5.8.3))':
+  '@edgeandnode/common@7.0.4(hardhat@2.25.0(typescript@5.8.3))':
     dependencies:
       '@ethersproject/providers': 5.8.0
       '@pinax/graph-networks-registry': 0.6.7
       '@uniswap/sdk-core': 7.7.2
       '@uniswap/v3-core': 1.0.1
-      '@uniswap/v3-sdk': 3.25.2(hardhat@2.24.2(typescript@5.8.3))
+      '@uniswap/v3-sdk': 3.25.2(hardhat@2.25.0(typescript@5.8.3))
       dataloader: 2.2.3
       dayjs: 1.11.13
       decimal.js: 10.5.0
@@ -8365,13 +8364,13 @@ snapshots:
       - hardhat
       - utf-8-validate
 
-  '@edgeandnode/ens@2.2.0(typescript@5.8.3)(viem@2.31.0(typescript@5.8.3)(zod@3.25.57))':
+  '@edgeandnode/ens@2.3.0(typescript@5.8.3)(viem@2.31.4(typescript@5.8.3)(zod@3.25.67))':
     dependencies:
-      '@ensdomains/ensjs': 4.0.2(typescript@5.8.3)(viem@2.31.0(typescript@5.8.3)(zod@3.25.57))(zod@3.25.57)
+      '@ensdomains/ensjs': 4.0.2(typescript@5.8.3)(viem@2.31.4(typescript@5.8.3)(zod@3.25.67))(zod@3.25.67)
       graphql: 16.11.0
       graphql-request: 7.2.0(graphql@16.11.0)
-      viem: 2.31.0(typescript@5.8.3)(zod@3.25.57)
-      zod: 3.25.57
+      viem: 2.31.4(typescript@5.8.3)(zod@3.25.67)
+      zod: 3.25.67
     transitivePeerDependencies:
       - encoding
       - typescript
@@ -8385,8 +8384,8 @@ snapshots:
       '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.8.3)
       eslint: 8.57.1
       eslint-import-resolver-node: 0.3.9
-      eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.31.0)(eslint@8.57.1)
-      eslint-plugin-import: 2.31.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1)
+      eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1)
+      eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1)
       eslint-plugin-jsx-a11y: 6.10.2(eslint@8.57.1)
       eslint-plugin-react: 7.37.5(eslint@8.57.1)
       eslint-plugin-react-hooks: 4.6.2(eslint@8.57.1)
@@ -8399,11 +8398,11 @@ snapshots:
       - eslint-plugin-import-x
       - supports-color
 
-  '@edgeandnode/gds@6.5.15(@emotion/is-prop-valid@0.8.8)(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(@theme-ui/core@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(dayjs@1.11.13)(hardhat@2.24.2(typescript@5.8.3))(next@14.2.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)(theme-ui@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(typescript@5.8.3)':
+  '@edgeandnode/gds@6.6.2(@emotion/is-prop-valid@0.8.8)(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(@theme-ui/core@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(dayjs@1.11.13)(hardhat@2.25.0(typescript@5.8.3))(next@14.2.30(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)(theme-ui@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(typescript@5.8.3)':
     dependencies:
       '@base-ui-components/react': 1.0.0-alpha.7(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@bramus/style-observer': 2.0.2
-      '@edgeandnode/common': 7.0.4(hardhat@2.24.2(typescript@5.8.3))
+      '@edgeandnode/common': 7.0.4(hardhat@2.25.0(typescript@5.8.3))
       '@emotion/react': 11.14.0(@types/react@18.3.23)(react@18.3.1)
       '@figma/code-connect': 1.3.3
       '@floating-ui/react-dom': 2.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -8427,7 +8426,7 @@ snapshots:
       '@tanem/react-nprogress': 5.0.55(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@theme-ui/css': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))
       '@theme-ui/match-media': 0.17.2(@theme-ui/core@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(@theme-ui/css@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1)))(react@18.3.1)
-      '@web3icons/react': 4.0.14(react@18.3.1)(typescript@5.8.3)
+      '@web3icons/react': 4.0.16(react@18.3.1)(typescript@5.8.3)
       '@xstate/react': 3.2.2(@types/react@18.3.23)(react@18.3.1)(xstate@4.38.3)
       color: 5.0.0
       dayjs: 1.11.13
@@ -8435,12 +8434,12 @@ snapshots:
       ethers: 5.8.0
       lodash: 4.17.21
       md5: 2.3.0
-      motion: 12.16.0(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      motion: 12.19.1(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       numeral: 2.0.6
       prism-react-renderer: 2.4.1(react@18.3.1)
       prismjs: 1.30.0
       react: 18.3.1
-      react-aria: 3.41.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      react-aria: 3.41.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       react-device-detect: 2.2.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       react-dom: 18.3.1(react@18.3.1)
       react-dropzone: 14.3.8(react@18.3.1)
@@ -8448,16 +8447,16 @@ snapshots:
       react-image-crop: 11.0.10(react@18.3.1)
       react-keyed-flatten-children: 5.0.0(react-is@18.3.1)(react@18.3.1)
       react-transition-group: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      react-virtuoso: 4.12.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      recharts: 2.15.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      shiki: 3.6.0
+      react-virtuoso: 4.13.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      recharts: 2.15.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      shiki: 3.7.0
       tailwindcss: 3.4.17
       theme-ui: 0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)
       typy: 3.3.0
       universal-cookie: 7.2.2
       xstate: 4.38.3
     optionalDependencies:
-      next: 14.2.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      next: 14.2.30(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
     transitivePeerDependencies:
       - '@emotion/is-prop-valid'
       - '@theme-ui/core'
@@ -8474,11 +8473,11 @@ snapshots:
       - typescript
       - utf-8-validate
 
-  '@edgeandnode/go@10.1.1(ae149f031949f9aa05d727c3c6926441)':
+  '@edgeandnode/go@10.2.3(f31233e6aec53dd14ecd91b56887af79)':
     dependencies:
-      '@edgeandnode/common': 7.0.4(hardhat@2.24.2(typescript@5.8.3))
-      '@edgeandnode/ens': 2.2.0(typescript@5.8.3)(viem@2.31.0(typescript@5.8.3)(zod@3.25.57))
-      '@edgeandnode/gds': 6.5.15(@emotion/is-prop-valid@0.8.8)(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(@theme-ui/core@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(dayjs@1.11.13)(hardhat@2.24.2(typescript@5.8.3))(next@14.2.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)(theme-ui@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(typescript@5.8.3)
+      '@edgeandnode/common': 7.0.4(hardhat@2.25.0(typescript@5.8.3))
+      '@edgeandnode/ens': 2.3.0(typescript@5.8.3)(viem@2.31.4(typescript@5.8.3)(zod@3.25.67))
+      '@edgeandnode/gds': 6.6.2(@emotion/is-prop-valid@0.8.8)(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(@theme-ui/core@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(dayjs@1.11.13)(hardhat@2.25.0(typescript@5.8.3))(next@14.2.30(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)(theme-ui@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(typescript@5.8.3)
       '@emotion/react': 11.14.0(@types/react@18.3.23)(react@18.3.1)
       '@graphql-typed-document-node/core': 3.2.0(graphql@16.11.0)
       '@radix-ui/react-collapsible': 1.1.11(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -8486,19 +8485,19 @@ snapshots:
       '@radix-ui/react-navigation-menu': 1.2.13(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@tanstack/react-query': 5.80.6(react@18.3.1)
+      '@tanstack/react-query': 5.81.2(react@18.3.1)
       '@theme-ui/css': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))
-      '@web3icons/react': 4.0.14(react@18.3.1)(typescript@5.8.3)
+      '@web3icons/react': 4.0.16(react@18.3.1)(typescript@5.8.3)
       escape-string-regexp: 5.0.0
       graphql: 16.11.0
       graphql-request: 7.2.0(graphql@16.11.0)
-      motion: 12.16.0(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      motion: 12.19.1(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
       tailwindcss: 3.4.17
       theme-ui: 0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)
     optionalDependencies:
-      next: 14.2.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      next: 14.2.30(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
     transitivePeerDependencies:
       - '@emotion/is-prop-valid'
       - '@types/react'
@@ -8618,19 +8617,19 @@ snapshots:
       dns-packet: 5.6.1
       typescript-logging: 1.0.1
 
-  '@ensdomains/ensjs@4.0.2(typescript@5.8.3)(viem@2.31.0(typescript@5.8.3)(zod@3.25.57))(zod@3.25.57)':
+  '@ensdomains/ensjs@4.0.2(typescript@5.8.3)(viem@2.31.4(typescript@5.8.3)(zod@3.25.67))(zod@3.25.67)':
     dependencies:
       '@adraffy/ens-normalize': 1.10.1
       '@ensdomains/address-encoder': 1.1.1
       '@ensdomains/content-hash': 3.1.0-rc.1
       '@ensdomains/dnsprovejs': 0.5.1
-      abitype: 1.0.8(typescript@5.8.3)(zod@3.25.57)
+      abitype: 1.0.8(typescript@5.8.3)(zod@3.25.67)
       dns-packet: 5.6.1
       graphql: 16.11.0
       graphql-request: 6.1.0(graphql@16.11.0)
       pako: 2.1.0
       ts-pattern: 5.7.1
-      viem: 2.31.0(typescript@5.8.3)(zod@3.25.57)
+      viem: 2.31.4(typescript@5.8.3)(zod@3.25.67)
     transitivePeerDependencies:
       - encoding
       - typescript
@@ -9247,7 +9246,7 @@ snapshots:
     dependencies:
       tslib: 2.8.1
 
-  '@graphprotocol/contracts@7.1.2': {}
+  '@graphprotocol/contracts@7.3.0': {}
 
   '@graphql-typed-document-node/core@3.2.0(graphql@16.11.0)':
     dependencies:
@@ -9260,9 +9259,9 @@ snapshots:
   '@headlessui/react@2.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
       '@floating-ui/react': 0.26.28(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/focus': 3.20.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/interactions': 3.25.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@tanstack/react-virtual': 3.13.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/focus': 3.20.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@tanstack/react-virtual': 3.13.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
       use-sync-external-store: 1.5.0(react@18.3.1)
@@ -9457,7 +9456,7 @@ snapshots:
       '@types/react': 18.3.23
       react: 18.3.1
 
-  '@mermaid-js/parser@0.4.0':
+  '@mermaid-js/parser@0.5.0':
     dependencies:
       langium: 3.3.1
 
@@ -9529,37 +9528,37 @@ snapshots:
 
   '@next/env@13.5.11': {}
 
-  '@next/env@14.2.29': {}
+  '@next/env@14.2.30': {}
 
   '@next/eslint-plugin-next@13.4.9':
     dependencies:
       glob: 7.1.7
 
-  '@next/swc-darwin-arm64@14.2.29':
+  '@next/swc-darwin-arm64@14.2.30':
     optional: true
 
-  '@next/swc-darwin-x64@14.2.29':
+  '@next/swc-darwin-x64@14.2.30':
     optional: true
 
-  '@next/swc-linux-arm64-gnu@14.2.29':
+  '@next/swc-linux-arm64-gnu@14.2.30':
     optional: true
 
-  '@next/swc-linux-arm64-musl@14.2.29':
+  '@next/swc-linux-arm64-musl@14.2.30':
     optional: true
 
-  '@next/swc-linux-x64-gnu@14.2.29':
+  '@next/swc-linux-x64-gnu@14.2.30':
     optional: true
 
-  '@next/swc-linux-x64-musl@14.2.29':
+  '@next/swc-linux-x64-musl@14.2.30':
     optional: true
 
-  '@next/swc-win32-arm64-msvc@14.2.29':
+  '@next/swc-win32-arm64-msvc@14.2.30':
     optional: true
 
-  '@next/swc-win32-ia32-msvc@14.2.29':
+  '@next/swc-win32-ia32-msvc@14.2.30':
     optional: true
 
-  '@next/swc-win32-x64-msvc@14.2.29':
+  '@next/swc-win32-x64-msvc@14.2.30':
     optional: true
 
   '@noble/ciphers@1.3.0': {}
@@ -9572,10 +9571,6 @@ snapshots:
     dependencies:
       '@noble/hashes': 1.7.2
 
-  '@noble/curves@1.9.1':
-    dependencies:
-      '@noble/hashes': 1.8.0
-
   '@noble/curves@1.9.2':
     dependencies:
       '@noble/hashes': 1.8.0
@@ -9604,29 +9599,29 @@ snapshots:
 
   '@nolyfill/is-core-module@1.0.39': {}
 
-  '@nomicfoundation/edr-darwin-arm64@0.11.0': {}
+  '@nomicfoundation/edr-darwin-arm64@0.11.2': {}
 
-  '@nomicfoundation/edr-darwin-x64@0.11.0': {}
+  '@nomicfoundation/edr-darwin-x64@0.11.2': {}
 
-  '@nomicfoundation/edr-linux-arm64-gnu@0.11.0': {}
+  '@nomicfoundation/edr-linux-arm64-gnu@0.11.2': {}
 
-  '@nomicfoundation/edr-linux-arm64-musl@0.11.0': {}
+  '@nomicfoundation/edr-linux-arm64-musl@0.11.2': {}
 
-  '@nomicfoundation/edr-linux-x64-gnu@0.11.0': {}
+  '@nomicfoundation/edr-linux-x64-gnu@0.11.2': {}
 
-  '@nomicfoundation/edr-linux-x64-musl@0.11.0': {}
+  '@nomicfoundation/edr-linux-x64-musl@0.11.2': {}
 
-  '@nomicfoundation/edr-win32-x64-msvc@0.11.0': {}
+  '@nomicfoundation/edr-win32-x64-msvc@0.11.2': {}
 
-  '@nomicfoundation/edr@0.11.0':
+  '@nomicfoundation/edr@0.11.2':
     dependencies:
-      '@nomicfoundation/edr-darwin-arm64': 0.11.0
-      '@nomicfoundation/edr-darwin-x64': 0.11.0
-      '@nomicfoundation/edr-linux-arm64-gnu': 0.11.0
-      '@nomicfoundation/edr-linux-arm64-musl': 0.11.0
-      '@nomicfoundation/edr-linux-x64-gnu': 0.11.0
-      '@nomicfoundation/edr-linux-x64-musl': 0.11.0
-      '@nomicfoundation/edr-win32-x64-msvc': 0.11.0
+      '@nomicfoundation/edr-darwin-arm64': 0.11.2
+      '@nomicfoundation/edr-darwin-x64': 0.11.2
+      '@nomicfoundation/edr-linux-arm64-gnu': 0.11.2
+      '@nomicfoundation/edr-linux-arm64-musl': 0.11.2
+      '@nomicfoundation/edr-linux-x64-gnu': 0.11.2
+      '@nomicfoundation/edr-linux-x64-musl': 0.11.2
+      '@nomicfoundation/edr-win32-x64-msvc': 0.11.2
 
   '@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.2':
     optional: true
@@ -10181,10 +10176,10 @@ snapshots:
 
   '@radix-ui/rect@1.1.1': {}
 
-  '@react-aria/breadcrumbs@3.5.25(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/breadcrumbs@3.5.26(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
       '@react-aria/i18n': 3.12.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/link': 3.8.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/link': 3.8.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-types/breadcrumbs': 3.7.14(react@18.3.1)
       '@react-types/shared': 3.30.0(react@18.3.1)
@@ -10192,10 +10187,10 @@ snapshots:
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/button@3.13.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/button@3.13.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@react-aria/interactions': 3.25.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/toolbar': 3.0.0-beta.17(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/toolbar': 3.0.0-beta.18(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-stately/toggle': 3.8.5(react@18.3.1)
       '@react-types/button': 3.12.2(react@18.3.1)
@@ -10204,11 +10199,11 @@ snapshots:
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/calendar@3.8.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/calendar@3.8.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
       '@internationalized/date': 3.8.2
       '@react-aria/i18n': 3.12.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/interactions': 3.25.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/live-announcer': 3.4.3
       '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-stately/calendar': 3.8.2(react@18.3.1)
@@ -10219,12 +10214,12 @@ snapshots:
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/checkbox@3.15.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/checkbox@3.15.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@react-aria/form': 3.0.17(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/interactions': 3.25.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/form': 3.0.18(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/label': 3.7.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/toggle': 3.11.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/toggle': 3.11.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-stately/checkbox': 3.6.15(react@18.3.1)
       '@react-stately/form': 3.1.5(react@18.3.1)
@@ -10235,16 +10230,16 @@ snapshots:
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/color@3.0.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/color@3.0.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
       '@react-aria/i18n': 3.12.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/interactions': 3.25.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/numberfield': 3.11.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/slider': 3.7.20(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/numberfield': 3.11.16(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/slider': 3.7.21(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/spinbutton': 3.6.16(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/textfield': 3.17.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/textfield': 3.17.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/visually-hidden': 3.8.24(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/visually-hidden': 3.8.25(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-stately/color': 3.8.6(react@18.3.1)
       '@react-stately/form': 3.1.5(react@18.3.1)
       '@react-types/color': 3.0.6(react@18.3.1)
@@ -10253,16 +10248,16 @@ snapshots:
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/combobox@3.12.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/combobox@3.12.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@react-aria/focus': 3.20.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/focus': 3.20.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/i18n': 3.12.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/listbox': 3.14.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/listbox': 3.14.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/live-announcer': 3.4.3
-      '@react-aria/menu': 3.18.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/overlays': 3.27.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/selection': 3.24.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/textfield': 3.17.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/menu': 3.18.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/overlays': 3.27.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/selection': 3.24.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/textfield': 3.17.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-stately/collections': 3.12.5(react@18.3.1)
       '@react-stately/combobox': 3.10.6(react@18.3.1)
@@ -10274,15 +10269,15 @@ snapshots:
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/datepicker@3.14.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/datepicker@3.14.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
       '@internationalized/date': 3.8.2
       '@internationalized/number': 3.6.3
       '@internationalized/string': 3.2.7
-      '@react-aria/focus': 3.20.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/form': 3.0.17(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/focus': 3.20.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/form': 3.0.18(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/i18n': 3.12.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/interactions': 3.25.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/label': 3.7.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/spinbutton': 3.6.16(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -10297,10 +10292,10 @@ snapshots:
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/dialog@3.5.26(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/dialog@3.5.27(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@react-aria/interactions': 3.25.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/overlays': 3.27.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/overlays': 3.27.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-types/dialog': 3.5.19(react@18.3.1)
       '@react-types/shared': 3.30.0(react@18.3.1)
@@ -10318,13 +10313,13 @@ snapshots:
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/dnd@3.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/dnd@3.10.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
       '@internationalized/string': 3.2.7
       '@react-aria/i18n': 3.12.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/interactions': 3.25.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/live-announcer': 3.4.3
-      '@react-aria/overlays': 3.27.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/overlays': 3.27.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-stately/collections': 3.12.5(react@18.3.1)
       '@react-stately/dnd': 3.6.0(react@18.3.1)
@@ -10334,9 +10329,9 @@ snapshots:
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/focus@3.20.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/focus@3.20.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@react-aria/interactions': 3.25.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-types/shared': 3.30.0(react@18.3.1)
       '@swc/helpers': 0.5.17
@@ -10344,9 +10339,9 @@ snapshots:
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/form@3.0.17(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/form@3.0.18(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@react-aria/interactions': 3.25.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-stately/form': 3.1.5(react@18.3.1)
       '@react-types/shared': 3.30.0(react@18.3.1)
@@ -10354,13 +10349,13 @@ snapshots:
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/grid@3.14.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/grid@3.14.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@react-aria/focus': 3.20.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/focus': 3.20.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/i18n': 3.12.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/interactions': 3.25.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/live-announcer': 3.4.3
-      '@react-aria/selection': 3.24.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/selection': 3.24.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-stately/collections': 3.12.5(react@18.3.1)
       '@react-stately/grid': 3.11.3(react@18.3.1)
@@ -10372,13 +10367,13 @@ snapshots:
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/gridlist@3.13.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/gridlist@3.13.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@react-aria/focus': 3.20.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/grid': 3.14.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/focus': 3.20.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/grid': 3.14.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/i18n': 3.12.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/interactions': 3.25.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/selection': 3.24.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/selection': 3.24.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-stately/collections': 3.12.5(react@18.3.1)
       '@react-stately/list': 3.12.3(react@18.3.1)
@@ -10401,7 +10396,7 @@ snapshots:
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/interactions@3.25.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/interactions@3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
       '@react-aria/ssr': 3.9.9(react@18.3.1)
       '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -10428,9 +10423,9 @@ snapshots:
       react-dom: 18.3.1(react@18.3.1)
       use-sync-external-store: 1.5.0(react@18.3.1)
 
-  '@react-aria/link@3.8.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/link@3.8.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@react-aria/interactions': 3.25.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-types/link': 3.6.2(react@18.3.1)
       '@react-types/shared': 3.30.0(react@18.3.1)
@@ -10438,11 +10433,11 @@ snapshots:
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/listbox@3.14.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/listbox@3.14.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@react-aria/interactions': 3.25.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/label': 3.7.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/selection': 3.24.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/selection': 3.24.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-stately/collections': 3.12.5(react@18.3.1)
       '@react-stately/list': 3.12.3(react@18.3.1)
@@ -10456,13 +10451,13 @@ snapshots:
     dependencies:
       '@swc/helpers': 0.5.17
 
-  '@react-aria/menu@3.18.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/menu@3.18.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@react-aria/focus': 3.20.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/focus': 3.20.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/i18n': 3.12.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/interactions': 3.25.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/overlays': 3.27.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/selection': 3.24.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/overlays': 3.27.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/selection': 3.24.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-stately/collections': 3.12.5(react@18.3.1)
       '@react-stately/menu': 3.9.5(react@18.3.1)
@@ -10484,12 +10479,12 @@ snapshots:
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/numberfield@3.11.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/numberfield@3.11.16(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
       '@react-aria/i18n': 3.12.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/interactions': 3.25.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/spinbutton': 3.6.16(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/textfield': 3.17.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/textfield': 3.17.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-stately/form': 3.1.5(react@18.3.1)
       '@react-stately/numberfield': 3.9.13(react@18.3.1)
@@ -10500,14 +10495,14 @@ snapshots:
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/overlays@3.27.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/overlays@3.27.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@react-aria/focus': 3.20.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/focus': 3.20.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/i18n': 3.12.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/interactions': 3.25.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/ssr': 3.9.9(react@18.3.1)
       '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/visually-hidden': 3.8.24(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/visually-hidden': 3.8.25(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-stately/overlays': 3.6.17(react@18.3.1)
       '@react-types/button': 3.12.2(react@18.3.1)
       '@react-types/overlays': 3.8.16(react@18.3.1)
@@ -10527,12 +10522,12 @@ snapshots:
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/radio@3.11.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/radio@3.11.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@react-aria/focus': 3.20.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/form': 3.0.17(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/focus': 3.20.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/form': 3.0.18(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/i18n': 3.12.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/interactions': 3.25.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/label': 3.7.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-stately/radio': 3.10.14(react@18.3.1)
@@ -10542,10 +10537,10 @@ snapshots:
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/searchfield@3.8.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/searchfield@3.8.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
       '@react-aria/i18n': 3.12.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/textfield': 3.17.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/textfield': 3.17.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-stately/searchfield': 3.5.13(react@18.3.1)
       '@react-types/button': 3.12.2(react@18.3.1)
@@ -10555,17 +10550,17 @@ snapshots:
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/select@3.15.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/select@3.15.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@react-aria/form': 3.0.17(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/form': 3.0.18(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/i18n': 3.12.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/interactions': 3.25.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/label': 3.7.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/listbox': 3.14.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/menu': 3.18.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/selection': 3.24.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/listbox': 3.14.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/menu': 3.18.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/selection': 3.24.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/visually-hidden': 3.8.24(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/visually-hidden': 3.8.25(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-stately/select': 3.6.14(react@18.3.1)
       '@react-types/button': 3.12.2(react@18.3.1)
       '@react-types/select': 3.9.13(react@18.3.1)
@@ -10574,11 +10569,11 @@ snapshots:
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/selection@3.24.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/selection@3.24.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@react-aria/focus': 3.20.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/focus': 3.20.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/i18n': 3.12.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/interactions': 3.25.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-stately/selection': 3.20.3(react@18.3.1)
       '@react-types/shared': 3.30.0(react@18.3.1)
@@ -10594,10 +10589,10 @@ snapshots:
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/slider@3.7.20(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/slider@3.7.21(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
       '@react-aria/i18n': 3.12.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/interactions': 3.25.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/label': 3.7.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-stately/slider': 3.6.5(react@18.3.1)
@@ -10623,9 +10618,9 @@ snapshots:
       '@swc/helpers': 0.5.17
       react: 18.3.1
 
-  '@react-aria/switch@3.7.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/switch@3.7.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@react-aria/toggle': 3.11.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/toggle': 3.11.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-stately/toggle': 3.8.5(react@18.3.1)
       '@react-types/shared': 3.30.0(react@18.3.1)
       '@react-types/switch': 3.5.12(react@18.3.1)
@@ -10633,15 +10628,15 @@ snapshots:
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/table@3.17.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/table@3.17.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@react-aria/focus': 3.20.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/grid': 3.14.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/focus': 3.20.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/grid': 3.14.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/i18n': 3.12.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/interactions': 3.25.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/live-announcer': 3.4.3
       '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/visually-hidden': 3.8.24(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/visually-hidden': 3.8.25(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-stately/collections': 3.12.5(react@18.3.1)
       '@react-stately/flags': 3.1.2
       '@react-stately/table': 3.14.3(react@18.3.1)
@@ -10653,11 +10648,11 @@ snapshots:
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/tabs@3.10.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/tabs@3.10.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@react-aria/focus': 3.20.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/focus': 3.20.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/i18n': 3.12.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/selection': 3.24.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/selection': 3.24.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-stately/tabs': 3.8.3(react@18.3.1)
       '@react-types/shared': 3.30.0(react@18.3.1)
@@ -10666,13 +10661,13 @@ snapshots:
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/tag@3.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/tag@3.6.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@react-aria/gridlist': 3.13.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/gridlist': 3.13.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/i18n': 3.12.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/interactions': 3.25.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/label': 3.7.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/selection': 3.24.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/selection': 3.24.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-stately/list': 3.12.3(react@18.3.1)
       '@react-types/button': 3.12.2(react@18.3.1)
@@ -10681,10 +10676,10 @@ snapshots:
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/textfield@3.17.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/textfield@3.17.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@react-aria/form': 3.0.17(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/interactions': 3.25.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/form': 3.0.18(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/label': 3.7.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-stately/form': 3.1.5(react@18.3.1)
@@ -10695,10 +10690,10 @@ snapshots:
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/toast@3.0.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/toast@3.0.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
       '@react-aria/i18n': 3.12.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/interactions': 3.25.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/landmark': 3.0.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-stately/toast': 3.1.1(react@18.3.1)
@@ -10708,9 +10703,9 @@ snapshots:
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/toggle@3.11.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/toggle@3.11.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@react-aria/interactions': 3.25.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-stately/toggle': 3.8.5(react@18.3.1)
       '@react-types/checkbox': 3.9.5(react@18.3.1)
@@ -10719,9 +10714,9 @@ snapshots:
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/toolbar@3.0.0-beta.17(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/toolbar@3.0.0-beta.18(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@react-aria/focus': 3.20.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/focus': 3.20.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/i18n': 3.12.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-types/shared': 3.30.0(react@18.3.1)
@@ -10729,9 +10724,9 @@ snapshots:
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/tooltip@3.8.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/tooltip@3.8.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@react-aria/interactions': 3.25.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-stately/tooltip': 3.5.5(react@18.3.1)
       '@react-types/shared': 3.30.0(react@18.3.1)
@@ -10740,11 +10735,11 @@ snapshots:
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/tree@3.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/tree@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@react-aria/gridlist': 3.13.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/gridlist': 3.13.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/i18n': 3.12.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/selection': 3.24.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/selection': 3.24.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-stately/tree': 3.9.0(react@18.3.1)
       '@react-types/button': 3.12.2(react@18.3.1)
@@ -10764,9 +10759,9 @@ snapshots:
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/visually-hidden@3.8.24(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/visually-hidden@3.8.25(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@react-aria/interactions': 3.25.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-types/shared': 3.30.0(react@18.3.1)
       '@swc/helpers': 0.5.17
@@ -11164,7 +11159,7 @@ snapshots:
 
   '@readme/openapi-parser@4.1.0(openapi-types@12.1.3)':
     dependencies:
-      '@apidevtools/json-schema-ref-parser': 13.0.4
+      '@apidevtools/json-schema-ref-parser': 13.0.5
       '@readme/better-ajv-errors': 2.3.2(ajv@8.17.1)
       '@readme/openapi-schemas': 3.1.0
       '@types/json-schema': 7.0.15
@@ -11176,64 +11171,64 @@ snapshots:
 
   '@resvg/resvg-wasm@2.6.2': {}
 
-  '@rollup/rollup-android-arm-eabi@4.42.0':
+  '@rollup/rollup-android-arm-eabi@4.44.0':
     optional: true
 
-  '@rollup/rollup-android-arm64@4.42.0':
+  '@rollup/rollup-android-arm64@4.44.0':
     optional: true
 
-  '@rollup/rollup-darwin-arm64@4.42.0':
+  '@rollup/rollup-darwin-arm64@4.44.0':
     optional: true
 
-  '@rollup/rollup-darwin-x64@4.42.0':
+  '@rollup/rollup-darwin-x64@4.44.0':
     optional: true
 
-  '@rollup/rollup-freebsd-arm64@4.42.0':
+  '@rollup/rollup-freebsd-arm64@4.44.0':
     optional: true
 
-  '@rollup/rollup-freebsd-x64@4.42.0':
+  '@rollup/rollup-freebsd-x64@4.44.0':
     optional: true
 
-  '@rollup/rollup-linux-arm-gnueabihf@4.42.0':
+  '@rollup/rollup-linux-arm-gnueabihf@4.44.0':
     optional: true
 
-  '@rollup/rollup-linux-arm-musleabihf@4.42.0':
+  '@rollup/rollup-linux-arm-musleabihf@4.44.0':
     optional: true
 
-  '@rollup/rollup-linux-arm64-gnu@4.42.0':
+  '@rollup/rollup-linux-arm64-gnu@4.44.0':
     optional: true
 
-  '@rollup/rollup-linux-arm64-musl@4.42.0':
+  '@rollup/rollup-linux-arm64-musl@4.44.0':
     optional: true
 
-  '@rollup/rollup-linux-loongarch64-gnu@4.42.0':
+  '@rollup/rollup-linux-loongarch64-gnu@4.44.0':
     optional: true
 
-  '@rollup/rollup-linux-powerpc64le-gnu@4.42.0':
+  '@rollup/rollup-linux-powerpc64le-gnu@4.44.0':
     optional: true
 
-  '@rollup/rollup-linux-riscv64-gnu@4.42.0':
+  '@rollup/rollup-linux-riscv64-gnu@4.44.0':
     optional: true
 
-  '@rollup/rollup-linux-riscv64-musl@4.42.0':
+  '@rollup/rollup-linux-riscv64-musl@4.44.0':
     optional: true
 
-  '@rollup/rollup-linux-s390x-gnu@4.42.0':
+  '@rollup/rollup-linux-s390x-gnu@4.44.0':
     optional: true
 
-  '@rollup/rollup-linux-x64-gnu@4.42.0':
+  '@rollup/rollup-linux-x64-gnu@4.44.0':
     optional: true
 
-  '@rollup/rollup-linux-x64-musl@4.42.0':
+  '@rollup/rollup-linux-x64-musl@4.44.0':
     optional: true
 
-  '@rollup/rollup-win32-arm64-msvc@4.42.0':
+  '@rollup/rollup-win32-arm64-msvc@4.44.0':
     optional: true
 
-  '@rollup/rollup-win32-ia32-msvc@4.42.0':
+  '@rollup/rollup-win32-ia32-msvc@4.44.0':
     optional: true
 
-  '@rollup/rollup-win32-x64-msvc@4.42.0':
+  '@rollup/rollup-win32-x64-msvc@4.44.0':
     optional: true
 
   '@rrweb/types@2.0.0-alpha.18': {}
@@ -11262,7 +11257,7 @@ snapshots:
 
   '@scure/bip32@1.7.0':
     dependencies:
-      '@noble/curves': 1.9.1
+      '@noble/curves': 1.9.2
       '@noble/hashes': 1.8.0
       '@scure/base': 1.2.6
 
@@ -11339,9 +11334,9 @@ snapshots:
       '@types/hast': 3.0.4
       hast-util-to-html: 9.0.5
 
-  '@shikijs/core@3.6.0':
+  '@shikijs/core@3.7.0':
     dependencies:
-      '@shikijs/types': 3.6.0
+      '@shikijs/types': 3.7.0
       '@shikijs/vscode-textmate': 10.0.2
       '@types/hast': 3.0.4
       hast-util-to-html: 9.0.5
@@ -11352,9 +11347,9 @@ snapshots:
       '@shikijs/vscode-textmate': 10.0.2
       oniguruma-to-es: 2.3.0
 
-  '@shikijs/engine-javascript@3.6.0':
+  '@shikijs/engine-javascript@3.7.0':
     dependencies:
-      '@shikijs/types': 3.6.0
+      '@shikijs/types': 3.7.0
       '@shikijs/vscode-textmate': 10.0.2
       oniguruma-to-es: 4.3.3
 
@@ -11363,26 +11358,26 @@ snapshots:
       '@shikijs/types': 1.29.2
       '@shikijs/vscode-textmate': 10.0.2
 
-  '@shikijs/engine-oniguruma@3.6.0':
+  '@shikijs/engine-oniguruma@3.7.0':
     dependencies:
-      '@shikijs/types': 3.6.0
+      '@shikijs/types': 3.7.0
       '@shikijs/vscode-textmate': 10.0.2
 
   '@shikijs/langs@1.29.2':
     dependencies:
       '@shikijs/types': 1.29.2
 
-  '@shikijs/langs@3.6.0':
+  '@shikijs/langs@3.7.0':
     dependencies:
-      '@shikijs/types': 3.6.0
+      '@shikijs/types': 3.7.0
 
   '@shikijs/themes@1.29.2':
     dependencies:
       '@shikijs/types': 1.29.2
 
-  '@shikijs/themes@3.6.0':
+  '@shikijs/themes@3.7.0':
     dependencies:
-      '@shikijs/types': 3.6.0
+      '@shikijs/types': 3.7.0
 
   '@shikijs/twoslash@1.29.2(typescript@5.8.3)':
     dependencies:
@@ -11398,7 +11393,7 @@ snapshots:
       '@shikijs/vscode-textmate': 10.0.2
       '@types/hast': 3.0.4
 
-  '@shikijs/types@3.6.0':
+  '@shikijs/types@3.7.0':
     dependencies:
       '@shikijs/vscode-textmate': 10.0.2
       '@types/hast': 3.0.4
@@ -11489,24 +11484,24 @@ snapshots:
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@tanstack/query-core@5.80.6': {}
+  '@tanstack/query-core@5.81.2': {}
 
-  '@tanstack/react-query@5.80.6(react@18.3.1)':
+  '@tanstack/react-query@5.81.2(react@18.3.1)':
     dependencies:
-      '@tanstack/query-core': 5.80.6
+      '@tanstack/query-core': 5.81.2
       react: 18.3.1
 
-  '@tanstack/react-virtual@3.13.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@tanstack/react-virtual@3.13.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@tanstack/virtual-core': 3.13.10
+      '@tanstack/virtual-core': 3.13.11
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@tanstack/virtual-core@3.13.10': {}
+  '@tanstack/virtual-core@3.13.11': {}
 
   '@theguild/remark-mermaid@0.1.3(react@18.3.1)':
     dependencies:
-      mermaid: 11.6.0
+      mermaid: 11.7.0
       react: 18.3.1
       unist-util-visit: 5.0.0
     transitivePeerDependencies:
@@ -11584,11 +11579,11 @@ snapshots:
 
   '@types/bn.js@5.2.0':
     dependencies:
-      '@types/node': 22.15.31
+      '@types/node': 22.15.33
 
   '@types/concat-stream@2.0.3':
     dependencies:
-      '@types/node': 22.15.31
+      '@types/node': 22.15.33
 
   '@types/cookie@0.6.0': {}
 
@@ -11719,8 +11714,6 @@ snapshots:
     dependencies:
       '@types/estree': 1.0.8
 
-  '@types/estree@1.0.7': {}
-
   '@types/estree@1.0.8': {}
 
   '@types/geojson@7946.0.16': {}
@@ -11739,7 +11732,7 @@ snapshots:
 
   '@types/katex@0.16.7': {}
 
-  '@types/lodash@4.17.17': {}
+  '@types/lodash@4.17.19': {}
 
   '@types/lru-cache@5.1.1': {}
 
@@ -11757,7 +11750,7 @@ snapshots:
     dependencies:
       '@types/unist': 3.0.3
 
-  '@types/node@22.15.31':
+  '@types/node@22.15.33':
     dependencies:
       undici-types: 6.21.0
 
@@ -11791,6 +11784,10 @@ snapshots:
 
   '@types/unist@3.0.3': {}
 
+  '@types/vfile@4.0.0':
+    dependencies:
+      vfile: 6.0.3
+
   '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3)':
     dependencies:
       '@eslint-community/regexpp': 4.12.1
@@ -11900,14 +11897,14 @@ snapshots:
       tiny-invariant: 1.3.3
       toformat: 2.0.0
 
-  '@uniswap/swap-router-contracts@1.3.1(hardhat@2.24.2(typescript@5.8.3))':
+  '@uniswap/swap-router-contracts@1.3.1(hardhat@2.25.0(typescript@5.8.3))':
     dependencies:
       '@openzeppelin/contracts': 3.4.2-solc-0.7
       '@uniswap/v2-core': 1.0.1
       '@uniswap/v3-core': 1.0.1
       '@uniswap/v3-periphery': 1.4.4
       dotenv: 14.3.2
-      hardhat-watcher: 2.5.0(hardhat@2.24.2(typescript@5.8.3))
+      hardhat-watcher: 2.5.0(hardhat@2.25.0(typescript@5.8.3))
     transitivePeerDependencies:
       - hardhat
 
@@ -11925,12 +11922,12 @@ snapshots:
       '@uniswap/v3-core': 1.0.1
       base64-sol: 1.0.1
 
-  '@uniswap/v3-sdk@3.25.2(hardhat@2.24.2(typescript@5.8.3))':
+  '@uniswap/v3-sdk@3.25.2(hardhat@2.25.0(typescript@5.8.3))':
     dependencies:
       '@ethersproject/abi': 5.8.0
       '@ethersproject/solidity': 5.8.0
       '@uniswap/sdk-core': 7.7.2
-      '@uniswap/swap-router-contracts': 1.3.1(hardhat@2.24.2(typescript@5.8.3))
+      '@uniswap/swap-router-contracts': 1.3.1(hardhat@2.25.0(typescript@5.8.3))
       '@uniswap/v3-periphery': 1.4.4
       '@uniswap/v3-staker': 1.0.0
       tiny-invariant: 1.3.3
@@ -11944,57 +11941,63 @@ snapshots:
       '@uniswap/v3-core': 1.0.0
       '@uniswap/v3-periphery': 1.4.4
 
-  '@unrs/resolver-binding-darwin-arm64@1.7.13':
+  '@unrs/resolver-binding-android-arm-eabi@1.9.1':
     optional: true
 
-  '@unrs/resolver-binding-darwin-x64@1.7.13':
+  '@unrs/resolver-binding-android-arm64@1.9.1':
     optional: true
 
-  '@unrs/resolver-binding-freebsd-x64@1.7.13':
+  '@unrs/resolver-binding-darwin-arm64@1.9.1':
     optional: true
 
-  '@unrs/resolver-binding-linux-arm-gnueabihf@1.7.13':
+  '@unrs/resolver-binding-darwin-x64@1.9.1':
     optional: true
 
-  '@unrs/resolver-binding-linux-arm-musleabihf@1.7.13':
+  '@unrs/resolver-binding-freebsd-x64@1.9.1':
     optional: true
 
-  '@unrs/resolver-binding-linux-arm64-gnu@1.7.13':
+  '@unrs/resolver-binding-linux-arm-gnueabihf@1.9.1':
     optional: true
 
-  '@unrs/resolver-binding-linux-arm64-musl@1.7.13':
+  '@unrs/resolver-binding-linux-arm-musleabihf@1.9.1':
     optional: true
 
-  '@unrs/resolver-binding-linux-ppc64-gnu@1.7.13':
+  '@unrs/resolver-binding-linux-arm64-gnu@1.9.1':
     optional: true
 
-  '@unrs/resolver-binding-linux-riscv64-gnu@1.7.13':
+  '@unrs/resolver-binding-linux-arm64-musl@1.9.1':
     optional: true
 
-  '@unrs/resolver-binding-linux-riscv64-musl@1.7.13':
+  '@unrs/resolver-binding-linux-ppc64-gnu@1.9.1':
     optional: true
 
-  '@unrs/resolver-binding-linux-s390x-gnu@1.7.13':
+  '@unrs/resolver-binding-linux-riscv64-gnu@1.9.1':
     optional: true
 
-  '@unrs/resolver-binding-linux-x64-gnu@1.7.13':
+  '@unrs/resolver-binding-linux-riscv64-musl@1.9.1':
     optional: true
 
-  '@unrs/resolver-binding-linux-x64-musl@1.7.13':
+  '@unrs/resolver-binding-linux-s390x-gnu@1.9.1':
     optional: true
 
-  '@unrs/resolver-binding-wasm32-wasi@1.7.13':
+  '@unrs/resolver-binding-linux-x64-gnu@1.9.1':
+    optional: true
+
+  '@unrs/resolver-binding-linux-x64-musl@1.9.1':
+    optional: true
+
+  '@unrs/resolver-binding-wasm32-wasi@1.9.1':
     dependencies:
       '@napi-rs/wasm-runtime': 0.2.11
     optional: true
 
-  '@unrs/resolver-binding-win32-arm64-msvc@1.7.13':
+  '@unrs/resolver-binding-win32-arm64-msvc@1.9.1':
     optional: true
 
-  '@unrs/resolver-binding-win32-ia32-msvc@1.7.13':
+  '@unrs/resolver-binding-win32-ia32-msvc@1.9.1':
     optional: true
 
-  '@unrs/resolver-binding-win32-x64-msvc@1.7.13':
+  '@unrs/resolver-binding-win32-x64-msvc@1.9.1':
     optional: true
 
   '@ver0/deep-equal@1.0.0': {}
@@ -12006,13 +12009,13 @@ snapshots:
       chai: 5.2.0
       tinyrainbow: 1.2.0
 
-  '@vitest/mocker@2.1.9(vite@5.4.19(@types/node@22.15.31))':
+  '@vitest/mocker@2.1.9(vite@5.4.19(@types/node@22.15.33))':
     dependencies:
       '@vitest/spy': 2.1.9
       estree-walker: 3.0.3
       magic-string: 0.30.17
     optionalDependencies:
-      vite: 5.4.19(@types/node@22.15.31)
+      vite: 5.4.19(@types/node@22.15.33)
 
   '@vitest/pretty-format@2.1.9':
     dependencies:
@@ -12036,16 +12039,16 @@ snapshots:
   '@vitest/utils@2.1.9':
     dependencies:
       '@vitest/pretty-format': 2.1.9
-      loupe: 3.1.3
+      loupe: 3.1.4
       tinyrainbow: 1.2.0
 
-  '@web3icons/common@0.11.11(typescript@5.8.3)':
+  '@web3icons/common@0.11.13(typescript@5.8.3)':
     dependencies:
       typescript: 5.8.3
 
-  '@web3icons/react@4.0.14(react@18.3.1)(typescript@5.8.3)':
+  '@web3icons/react@4.0.16(react@18.3.1)(typescript@5.8.3)':
     dependencies:
-      '@web3icons/common': 0.11.11(typescript@5.8.3)
+      '@web3icons/common': 0.11.13(typescript@5.8.3)
       react: 18.3.1
     transitivePeerDependencies:
       - typescript
@@ -12066,10 +12069,10 @@ snapshots:
 
   abbrev@2.0.0: {}
 
-  abitype@1.0.8(typescript@5.8.3)(zod@3.25.57):
+  abitype@1.0.8(typescript@5.8.3)(zod@3.25.67):
     optionalDependencies:
       typescript: 5.8.3
-      zod: 3.25.57
+      zod: 3.25.67
 
   acorn-jsx@5.3.2(acorn@8.15.0):
     dependencies:
@@ -12116,21 +12119,21 @@ snapshots:
       json-schema-traverse: 1.0.0
       require-from-string: 2.0.2
 
-  algoliasearch@5.27.0:
-    dependencies:
-      '@algolia/client-abtesting': 5.27.0
-      '@algolia/client-analytics': 5.27.0
-      '@algolia/client-common': 5.27.0
-      '@algolia/client-insights': 5.27.0
-      '@algolia/client-personalization': 5.27.0
-      '@algolia/client-query-suggestions': 5.27.0
-      '@algolia/client-search': 5.27.0
-      '@algolia/ingestion': 1.27.0
-      '@algolia/monitoring': 1.27.0
-      '@algolia/recommend': 5.27.0
-      '@algolia/requester-browser-xhr': 5.27.0
-      '@algolia/requester-fetch': 5.27.0
-      '@algolia/requester-node-http': 5.27.0
+  algoliasearch@5.29.0:
+    dependencies:
+      '@algolia/client-abtesting': 5.29.0
+      '@algolia/client-analytics': 5.29.0
+      '@algolia/client-common': 5.29.0
+      '@algolia/client-insights': 5.29.0
+      '@algolia/client-personalization': 5.29.0
+      '@algolia/client-query-suggestions': 5.29.0
+      '@algolia/client-search': 5.29.0
+      '@algolia/ingestion': 1.29.0
+      '@algolia/monitoring': 1.29.0
+      '@algolia/recommend': 5.29.0
+      '@algolia/requester-browser-xhr': 5.29.0
+      '@algolia/requester-fetch': 5.29.0
+      '@algolia/requester-node-http': 5.29.0
 
   ansi-align@3.0.1:
     dependencies:
@@ -12260,14 +12263,14 @@ snapshots:
 
   attr-accept@2.2.5: {}
 
-  autoprefixer@10.4.21(postcss@8.5.4):
+  autoprefixer@10.4.21(postcss@8.5.6):
     dependencies:
       browserslist: 4.25.0
-      caniuse-lite: 1.0.30001721
+      caniuse-lite: 1.0.30001724
       fraction.js: 4.3.7
       normalize-range: 0.1.2
       picocolors: 1.1.1
-      postcss: 8.5.4
+      postcss: 8.5.6
       postcss-value-parser: 4.2.0
 
   available-typed-arrays@1.0.7:
@@ -12341,12 +12344,12 @@ snapshots:
       widest-line: 3.1.0
       wrap-ansi: 7.0.0
 
-  brace-expansion@1.1.11:
+  brace-expansion@1.1.12:
     dependencies:
       balanced-match: 1.0.2
       concat-map: 0.0.1
 
-  brace-expansion@2.0.1:
+  brace-expansion@2.0.2:
     dependencies:
       balanced-match: 1.0.2
 
@@ -12360,8 +12363,8 @@ snapshots:
 
   browserslist@4.25.0:
     dependencies:
-      caniuse-lite: 1.0.30001721
-      electron-to-chromium: 1.5.166
+      caniuse-lite: 1.0.30001724
+      electron-to-chromium: 1.5.172
       node-releases: 2.0.19
       update-browserslist-db: 1.1.3(browserslist@4.25.0)
 
@@ -12410,7 +12413,7 @@ snapshots:
 
   camelize@1.0.1: {}
 
-  caniuse-lite@1.0.30001721: {}
+  caniuse-lite@1.0.30001724: {}
 
   ccount@2.0.1: {}
 
@@ -12419,7 +12422,7 @@ snapshots:
       assertion-error: 2.0.1
       check-error: 2.1.1
       deep-eql: 5.0.2
-      loupe: 3.1.3
+      loupe: 3.1.4
       pathval: 2.0.0
 
   chalk@4.1.2:
@@ -12627,7 +12630,7 @@ snapshots:
 
   cssesc@3.0.0: {}
 
-  cssstyle@4.4.0:
+  cssstyle@4.5.0:
     dependencies:
       '@asamuzakjp/css-color': 3.2.0
       rrweb-cssom: 0.8.0
@@ -12865,7 +12868,7 @@ snapshots:
 
   decimal.js@10.5.0: {}
 
-  decode-named-character-reference@1.1.0:
+  decode-named-character-reference@1.2.0:
     dependencies:
       character-entities: 2.0.2
 
@@ -12955,7 +12958,7 @@ snapshots:
 
   eastasianwidth@0.2.0: {}
 
-  electron-to-chromium@1.5.166: {}
+  electron-to-chromium@1.5.172: {}
 
   elliptic@6.6.1:
     dependencies:
@@ -13208,7 +13211,7 @@ snapshots:
     transitivePeerDependencies:
       - supports-color
 
-  eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@8.57.1):
+  eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1):
     dependencies:
       '@nolyfill/is-core-module': 1.0.39
       debug: 4.4.1(supports-color@8.1.1)
@@ -13217,13 +13220,13 @@ snapshots:
       is-bun-module: 2.0.0
       stable-hash: 0.0.5
       tinyglobby: 0.2.14
-      unrs-resolver: 1.7.13
+      unrs-resolver: 1.9.1
     optionalDependencies:
-      eslint-plugin-import: 2.31.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1)
+      eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1)
     transitivePeerDependencies:
       - supports-color
 
-  eslint-mdx@3.4.2(eslint@8.57.1):
+  eslint-mdx@3.5.0(eslint@8.57.1):
     dependencies:
       acorn: 8.15.0
       acorn-jsx: 5.3.2(acorn@8.15.0)
@@ -13234,7 +13237,6 @@ snapshots:
       remark-parse: 11.0.0
       remark-stringify: 11.0.0
       synckit: 0.11.8
-      tslib: 2.8.1
       unified: 11.0.5
       unified-engine: 11.2.2
       unist-util-visit: 5.0.0
@@ -13244,18 +13246,18 @@ snapshots:
       - bluebird
       - supports-color
 
-  eslint-module-utils@2.12.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1):
+  eslint-module-utils@2.12.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1):
     dependencies:
       debug: 3.2.7
     optionalDependencies:
       '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.8.3)
       eslint: 8.57.1
       eslint-import-resolver-node: 0.3.9
-      eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.31.0)(eslint@8.57.1)
+      eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1)
     transitivePeerDependencies:
       - supports-color
 
-  eslint-plugin-import@2.31.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1):
+  eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1):
     dependencies:
       '@rtsao/scc': 1.1.0
       array-includes: 3.1.9
@@ -13266,7 +13268,7 @@ snapshots:
       doctrine: 2.1.0
       eslint: 8.57.1
       eslint-import-resolver-node: 0.3.9
-      eslint-module-utils: 2.12.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1)
+      eslint-module-utils: 2.12.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1)
       hasown: 2.0.2
       is-core-module: 2.16.1
       is-glob: 4.0.3
@@ -13303,10 +13305,10 @@ snapshots:
       safe-regex-test: 1.1.0
       string.prototype.includes: 2.0.1
 
-  eslint-plugin-mdx@3.4.2(eslint@8.57.1):
+  eslint-plugin-mdx@3.5.0(eslint@8.57.1):
     dependencies:
       eslint: 8.57.1
-      eslint-mdx: 3.4.2(eslint@8.57.1)
+      eslint-mdx: 3.5.0(eslint@8.57.1)
       mdast-util-from-markdown: 2.0.2
       mdast-util-mdx: 3.0.0
       micromark-extension-mdxjs: 3.0.0
@@ -13314,7 +13316,6 @@ snapshots:
       remark-parse: 11.0.0
       remark-stringify: 11.0.0
       synckit: 0.11.8
-      tslib: 2.8.1
       unified: 11.0.5
       vfile: 6.0.3
     transitivePeerDependencies:
@@ -13547,7 +13548,7 @@ snapshots:
 
   expect-type@1.2.1: {}
 
-  exsolve@1.0.5: {}
+  exsolve@1.0.7: {}
 
   extend-shallow@2.0.1:
     dependencies:
@@ -13623,7 +13624,7 @@ snapshots:
     dependencies:
       magic-string: 0.30.17
       mlly: 1.7.4
-      rollup: 4.42.0
+      rollup: 4.44.0
 
   flat-cache@3.2.0:
     dependencies:
@@ -13662,10 +13663,10 @@ snapshots:
 
   fraction.js@4.3.7: {}
 
-  framer-motion@12.16.0(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+  framer-motion@12.19.1(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
     dependencies:
-      motion-dom: 12.16.0
-      motion-utils: 12.12.1
+      motion-dom: 12.19.0
+      motion-utils: 12.19.0
       tslib: 2.8.1
     optionalDependencies:
       '@emotion/is-prop-valid': 0.8.8
@@ -13850,16 +13851,16 @@ snapshots:
 
   hachure-fill@0.5.2: {}
 
-  hardhat-watcher@2.5.0(hardhat@2.24.2(typescript@5.8.3)):
+  hardhat-watcher@2.5.0(hardhat@2.25.0(typescript@5.8.3)):
     dependencies:
       chokidar: 3.6.0
-      hardhat: 2.24.2(typescript@5.8.3)
+      hardhat: 2.25.0(typescript@5.8.3)
 
-  hardhat@2.24.2(typescript@5.8.3):
+  hardhat@2.25.0(typescript@5.8.3):
     dependencies:
       '@ethereumjs/util': 9.1.0
       '@ethersproject/abi': 5.8.0
-      '@nomicfoundation/edr': 0.11.0
+      '@nomicfoundation/edr': 0.11.2
       '@nomicfoundation/solidity-analyzer': 0.1.2
       '@sentry/node': 5.30.0
       '@types/bn.js': 5.2.0
@@ -13965,15 +13966,6 @@ snapshots:
       vfile-location: 5.0.3
       web-namespaces: 2.0.1
 
-  hast-util-has-property@3.0.0:
-    dependencies:
-      '@types/hast': 3.0.4
-
-  hast-util-interactive@3.0.0:
-    dependencies:
-      '@types/hast': 3.0.4
-      hast-util-has-property: 3.0.0
-
   hast-util-is-element@3.0.0:
     dependencies:
       '@types/hast': 3.0.4
@@ -13991,7 +13983,7 @@ snapshots:
       mdast-util-mdx-jsx: 3.2.0
       property-information: 7.1.0
       space-separated-tokens: 2.0.2
-      style-to-js: 1.1.16
+      style-to-js: 1.1.17
     transitivePeerDependencies:
       - supports-color
 
@@ -14026,7 +14018,7 @@ snapshots:
       mdast-util-mdxjs-esm: 2.0.1
       property-information: 7.1.0
       space-separated-tokens: 2.0.2
-      style-to-js: 1.1.16
+      style-to-js: 1.1.17
       unist-util-position: 5.0.0
       zwitch: 2.0.4
     transitivePeerDependencies:
@@ -14060,7 +14052,7 @@ snapshots:
       mdast-util-mdxjs-esm: 2.0.1
       property-information: 7.1.0
       space-separated-tokens: 2.0.2
-      style-to-js: 1.1.16
+      style-to-js: 1.1.17
       unist-util-position: 5.0.0
       vfile-message: 4.0.2
     transitivePeerDependencies:
@@ -14091,6 +14083,8 @@ snapshots:
     dependencies:
       '@types/hast': 3.0.4
 
+  hast@1.0.0: {}
+
   hastscript@9.0.1:
     dependencies:
       '@types/hast': 3.0.4
@@ -14442,7 +14436,7 @@ snapshots:
 
   jsdom@24.1.3:
     dependencies:
-      cssstyle: 4.4.0
+      cssstyle: 4.5.0
       data-urls: 5.0.0
       decimal.js: 10.5.0
       form-data: 4.0.3
@@ -14599,7 +14593,7 @@ snapshots:
     dependencies:
       js-tokens: 4.0.0
 
-  loupe@3.1.3: {}
+  loupe@3.1.4: {}
 
   lru-cache@10.4.3: {}
 
@@ -14645,7 +14639,7 @@ snapshots:
     dependencies:
       '@types/mdast': 4.0.4
       '@types/unist': 3.0.3
-      decode-named-character-reference: 1.1.0
+      decode-named-character-reference: 1.2.0
       devlop: 1.1.0
       mdast-util-to-string: 4.0.0
       micromark: 4.0.2
@@ -14826,11 +14820,11 @@ snapshots:
 
   merge2@1.4.1: {}
 
-  mermaid@11.6.0:
+  mermaid@11.7.0:
     dependencies:
       '@braintree/sanitize-url': 7.1.1
       '@iconify/utils': 2.3.0
-      '@mermaid-js/parser': 0.4.0
+      '@mermaid-js/parser': 0.5.0
       '@types/d3': 7.4.3
       cytoscape: 3.32.0
       cytoscape-cose-bilkent: 4.1.0(cytoscape@3.32.0)
@@ -14865,7 +14859,7 @@ snapshots:
 
   micromark-core-commonmark@2.0.3:
     dependencies:
-      decode-named-character-reference: 1.1.0
+      decode-named-character-reference: 1.2.0
       devlop: 1.1.0
       micromark-factory-destination: 2.0.1
       micromark-factory-label: 2.0.1
@@ -15078,7 +15072,7 @@ snapshots:
 
   micromark-util-decode-string@2.0.1:
     dependencies:
-      decode-named-character-reference: 1.1.0
+      decode-named-character-reference: 1.2.0
       micromark-util-character: 2.1.1
       micromark-util-decode-numeric-character-reference: 2.0.2
       micromark-util-symbol: 2.0.1
@@ -15126,7 +15120,7 @@ snapshots:
     dependencies:
       '@types/debug': 4.1.12
       debug: 4.4.1(supports-color@8.1.1)
-      decode-named-character-reference: 1.1.0
+      decode-named-character-reference: 1.2.0
       devlop: 1.1.0
       micromark-core-commonmark: 2.0.3
       micromark-factory-space: 2.0.1
@@ -15184,19 +15178,19 @@ snapshots:
 
   minimatch@3.1.2:
     dependencies:
-      brace-expansion: 1.1.11
+      brace-expansion: 1.1.12
 
   minimatch@5.1.6:
     dependencies:
-      brace-expansion: 2.0.1
+      brace-expansion: 2.0.2
 
   minimatch@9.0.3:
     dependencies:
-      brace-expansion: 2.0.1
+      brace-expansion: 2.0.2
 
   minimatch@9.0.5:
     dependencies:
-      brace-expansion: 2.0.1
+      brace-expansion: 2.0.2
 
   minimist@1.2.8: {}
 
@@ -15246,15 +15240,15 @@ snapshots:
       yargs-parser: 20.2.9
       yargs-unparser: 2.0.0
 
-  motion-dom@12.16.0:
+  motion-dom@12.19.0:
     dependencies:
-      motion-utils: 12.12.1
+      motion-utils: 12.19.0
 
-  motion-utils@12.12.1: {}
+  motion-utils@12.19.0: {}
 
-  motion@12.16.0(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+  motion@12.19.1(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
     dependencies:
-      framer-motion: 12.16.0(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      framer-motion: 12.19.1(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       tslib: 2.8.1
     optionalDependencies:
       '@emotion/is-prop-valid': 0.8.8
@@ -15281,46 +15275,46 @@ snapshots:
 
   negotiator@1.0.0: {}
 
-  next-seo@6.8.0(next@14.2.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+  next-seo@6.8.0(next@14.2.30(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
     dependencies:
-      next: 14.2.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      next: 14.2.30(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  next-sitemap@4.2.3(next@14.2.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)):
+  next-sitemap@4.2.3(next@14.2.30(react-dom@18.3.1(react@18.3.1))(react@18.3.1)):
     dependencies:
       '@corex/deepmerge': 4.0.43
       '@next/env': 13.5.11
       fast-glob: 3.3.3
       minimist: 1.2.8
-      next: 14.2.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      next: 14.2.30(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
 
-  next@14.2.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+  next@14.2.30(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
     dependencies:
-      '@next/env': 14.2.29
+      '@next/env': 14.2.30
       '@swc/helpers': 0.5.5
       busboy: 1.6.0
-      caniuse-lite: 1.0.30001721
+      caniuse-lite: 1.0.30001724
       graceful-fs: 4.2.11
       postcss: 8.4.31
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
       styled-jsx: 5.1.1(react@18.3.1)
     optionalDependencies:
-      '@next/swc-darwin-arm64': 14.2.29
-      '@next/swc-darwin-x64': 14.2.29
-      '@next/swc-linux-arm64-gnu': 14.2.29
-      '@next/swc-linux-arm64-musl': 14.2.29
-      '@next/swc-linux-x64-gnu': 14.2.29
-      '@next/swc-linux-x64-musl': 14.2.29
-      '@next/swc-win32-arm64-msvc': 14.2.29
-      '@next/swc-win32-ia32-msvc': 14.2.29
-      '@next/swc-win32-x64-msvc': 14.2.29
+      '@next/swc-darwin-arm64': 14.2.30
+      '@next/swc-darwin-x64': 14.2.30
+      '@next/swc-linux-arm64-gnu': 14.2.30
+      '@next/swc-linux-arm64-musl': 14.2.30
+      '@next/swc-linux-x64-gnu': 14.2.30
+      '@next/swc-linux-x64-musl': 14.2.30
+      '@next/swc-win32-arm64-msvc': 14.2.30
+      '@next/swc-win32-ia32-msvc': 14.2.30
+      '@next/swc-win32-x64-msvc': 14.2.30
     transitivePeerDependencies:
       - '@babel/core'
       - babel-plugin-macros
 
-  nextra@3.3.1(@types/react@18.3.23)(acorn@8.15.0)(next@14.2.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3):
+  nextra@3.3.1(@types/react@18.3.23)(acorn@8.15.0)(next@14.2.30(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3):
     dependencies:
       '@formatjs/intl-localematcher': 0.5.10
       '@headlessui/react': 2.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -15343,7 +15337,7 @@ snapshots:
       mdast-util-gfm: 3.1.0
       mdast-util-to-hast: 13.2.0
       negotiator: 1.0.0
-      next: 14.2.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      next: 14.2.30(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       p-limit: 6.2.0
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
@@ -15362,8 +15356,8 @@ snapshots:
       unist-util-remove: 4.0.0
       unist-util-visit: 5.0.0
       yaml: 2.8.0
-      zod: 3.25.57
-      zod-validation-error: 3.4.1(zod@3.25.57)
+      zod: 3.25.67
+      zod-validation-error: 3.5.2(zod@3.25.67)
     transitivePeerDependencies:
       - '@types/react'
       - acorn
@@ -15533,15 +15527,15 @@ snapshots:
       object-keys: 1.1.1
       safe-push-apply: 1.0.0
 
-  ox@0.7.1(typescript@5.8.3)(zod@3.25.57):
+  ox@0.8.1(typescript@5.8.3)(zod@3.25.67):
     dependencies:
       '@adraffy/ens-normalize': 1.11.0
       '@noble/ciphers': 1.3.0
-      '@noble/curves': 1.9.1
+      '@noble/curves': 1.9.2
       '@noble/hashes': 1.8.0
       '@scure/bip32': 1.7.0
       '@scure/bip39': 1.6.0
-      abitype: 1.0.8(typescript@5.8.3)(zod@3.25.57)
+      abitype: 1.0.8(typescript@5.8.3)(zod@3.25.67)
       eventemitter3: 5.0.1
     optionalDependencies:
       typescript: 5.8.3
@@ -15586,7 +15580,7 @@ snapshots:
       '@types/unist': 2.0.11
       character-entities-legacy: 3.0.0
       character-reference-invalid: 2.0.1
-      decode-named-character-reference: 1.1.0
+      decode-named-character-reference: 1.2.0
       is-alphanumerical: 2.0.1
       is-decimal: 2.0.1
       is-hexadecimal: 2.0.1
@@ -15673,7 +15667,7 @@ snapshots:
   pkg-types@2.1.0:
     dependencies:
       confbox: 0.2.2
-      exsolve: 1.0.5
+      exsolve: 1.0.7
       pathe: 2.0.3
 
   pluralize@8.0.0: {}
@@ -15691,37 +15685,37 @@ snapshots:
 
   possible-typed-array-names@1.1.0: {}
 
-  postcss-import@15.1.0(postcss@8.5.4):
+  postcss-import@15.1.0(postcss@8.5.6):
     dependencies:
-      postcss: 8.5.4
+      postcss: 8.5.6
       postcss-value-parser: 4.2.0
       read-cache: 1.0.0
       resolve: 1.22.10
 
-  postcss-js@4.0.1(postcss@8.5.4):
+  postcss-js@4.0.1(postcss@8.5.6):
     dependencies:
       camelcase-css: 2.0.1
-      postcss: 8.5.4
+      postcss: 8.5.6
 
-  postcss-load-config@4.0.2(postcss@8.5.4):
+  postcss-load-config@4.0.2(postcss@8.5.6):
     dependencies:
       lilconfig: 3.1.3
       yaml: 2.8.0
     optionalDependencies:
-      postcss: 8.5.4
+      postcss: 8.5.6
 
-  postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.5.4)(tsx@4.19.4)(yaml@2.8.0):
+  postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.3)(yaml@2.8.0):
     dependencies:
       lilconfig: 3.1.3
     optionalDependencies:
       jiti: 1.21.7
-      postcss: 8.5.4
-      tsx: 4.19.4
+      postcss: 8.5.6
+      tsx: 4.20.3
       yaml: 2.8.0
 
-  postcss-nested@6.2.0(postcss@8.5.4):
+  postcss-nested@6.2.0(postcss@8.5.6):
     dependencies:
-      postcss: 8.5.4
+      postcss: 8.5.6
       postcss-selector-parser: 6.1.2
 
   postcss-selector-parser@6.1.2:
@@ -15737,7 +15731,7 @@ snapshots:
       picocolors: 1.1.1
       source-map-js: 1.2.1
 
-  postcss@8.5.4:
+  postcss@8.5.6:
     dependencies:
       nanoid: 3.3.11
       picocolors: 1.1.1
@@ -15745,13 +15739,13 @@ snapshots:
 
   prelude-ls@1.2.1: {}
 
-  prettier-plugin-tailwindcss@0.6.12(prettier@3.5.3):
+  prettier-plugin-tailwindcss@0.6.13(prettier@3.6.1):
     dependencies:
-      prettier: 3.5.3
+      prettier: 3.6.1
 
   prettier@2.8.8: {}
 
-  prettier@3.5.3: {}
+  prettier@3.6.1: {}
 
   printable-characters@1.0.42: {}
 
@@ -15814,49 +15808,49 @@ snapshots:
       iconv-lite: 0.4.24
       unpipe: 1.0.0
 
-  react-aria@3.41.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+  react-aria@3.41.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
     dependencies:
       '@internationalized/string': 3.2.7
-      '@react-aria/breadcrumbs': 3.5.25(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/button': 3.13.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/calendar': 3.8.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/checkbox': 3.15.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/color': 3.0.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/combobox': 3.12.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/datepicker': 3.14.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/dialog': 3.5.26(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/breadcrumbs': 3.5.26(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/button': 3.13.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/calendar': 3.8.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/checkbox': 3.15.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/color': 3.0.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/combobox': 3.12.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/datepicker': 3.14.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/dialog': 3.5.27(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/disclosure': 3.0.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/dnd': 3.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/focus': 3.20.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/gridlist': 3.13.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/dnd': 3.10.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/focus': 3.20.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/gridlist': 3.13.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/i18n': 3.12.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/interactions': 3.25.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/label': 3.7.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/landmark': 3.0.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/link': 3.8.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/listbox': 3.14.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/menu': 3.18.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/link': 3.8.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/listbox': 3.14.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/menu': 3.18.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/meter': 3.4.24(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/numberfield': 3.11.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/overlays': 3.27.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/numberfield': 3.11.16(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/overlays': 3.27.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/progress': 3.4.24(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/radio': 3.11.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/searchfield': 3.8.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/select': 3.15.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/selection': 3.24.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/radio': 3.11.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/searchfield': 3.8.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/select': 3.15.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/selection': 3.24.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/separator': 3.4.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/slider': 3.7.20(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/slider': 3.7.21(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/ssr': 3.9.9(react@18.3.1)
-      '@react-aria/switch': 3.7.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/table': 3.17.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/tabs': 3.10.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/tag': 3.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/textfield': 3.17.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/toast': 3.0.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/tooltip': 3.8.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/tree': 3.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/switch': 3.7.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/table': 3.17.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/tabs': 3.10.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/tag': 3.6.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/textfield': 3.17.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/toast': 3.0.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/tooltip': 3.8.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/tree': 3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/visually-hidden': 3.8.24(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/visually-hidden': 3.8.25(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-types/shared': 3.30.0(react@18.3.1)
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
@@ -15950,7 +15944,7 @@ snapshots:
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  react-virtuoso@4.12.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+  react-virtuoso@4.13.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
     dependencies:
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
@@ -15986,7 +15980,7 @@ snapshots:
     dependencies:
       decimal.js-light: 2.5.1
 
-  recharts@2.15.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+  recharts@2.15.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
     dependencies:
       clsx: 2.1.1
       eventemitter3: 4.0.7
@@ -16305,30 +16299,30 @@ snapshots:
     dependencies:
       estree-walker: 0.6.1
 
-  rollup@4.42.0:
+  rollup@4.44.0:
     dependencies:
-      '@types/estree': 1.0.7
+      '@types/estree': 1.0.8
     optionalDependencies:
-      '@rollup/rollup-android-arm-eabi': 4.42.0
-      '@rollup/rollup-android-arm64': 4.42.0
-      '@rollup/rollup-darwin-arm64': 4.42.0
-      '@rollup/rollup-darwin-x64': 4.42.0
-      '@rollup/rollup-freebsd-arm64': 4.42.0
-      '@rollup/rollup-freebsd-x64': 4.42.0
-      '@rollup/rollup-linux-arm-gnueabihf': 4.42.0
-      '@rollup/rollup-linux-arm-musleabihf': 4.42.0
-      '@rollup/rollup-linux-arm64-gnu': 4.42.0
-      '@rollup/rollup-linux-arm64-musl': 4.42.0
-      '@rollup/rollup-linux-loongarch64-gnu': 4.42.0
-      '@rollup/rollup-linux-powerpc64le-gnu': 4.42.0
-      '@rollup/rollup-linux-riscv64-gnu': 4.42.0
-      '@rollup/rollup-linux-riscv64-musl': 4.42.0
-      '@rollup/rollup-linux-s390x-gnu': 4.42.0
-      '@rollup/rollup-linux-x64-gnu': 4.42.0
-      '@rollup/rollup-linux-x64-musl': 4.42.0
-      '@rollup/rollup-win32-arm64-msvc': 4.42.0
-      '@rollup/rollup-win32-ia32-msvc': 4.42.0
-      '@rollup/rollup-win32-x64-msvc': 4.42.0
+      '@rollup/rollup-android-arm-eabi': 4.44.0
+      '@rollup/rollup-android-arm64': 4.44.0
+      '@rollup/rollup-darwin-arm64': 4.44.0
+      '@rollup/rollup-darwin-x64': 4.44.0
+      '@rollup/rollup-freebsd-arm64': 4.44.0
+      '@rollup/rollup-freebsd-x64': 4.44.0
+      '@rollup/rollup-linux-arm-gnueabihf': 4.44.0
+      '@rollup/rollup-linux-arm-musleabihf': 4.44.0
+      '@rollup/rollup-linux-arm64-gnu': 4.44.0
+      '@rollup/rollup-linux-arm64-musl': 4.44.0
+      '@rollup/rollup-linux-loongarch64-gnu': 4.44.0
+      '@rollup/rollup-linux-powerpc64le-gnu': 4.44.0
+      '@rollup/rollup-linux-riscv64-gnu': 4.44.0
+      '@rollup/rollup-linux-riscv64-musl': 4.44.0
+      '@rollup/rollup-linux-s390x-gnu': 4.44.0
+      '@rollup/rollup-linux-x64-gnu': 4.44.0
+      '@rollup/rollup-linux-x64-musl': 4.44.0
+      '@rollup/rollup-win32-arm64-msvc': 4.44.0
+      '@rollup/rollup-win32-ia32-msvc': 4.44.0
+      '@rollup/rollup-win32-x64-msvc': 4.44.0
       fsevents: 2.3.3
 
   roughjs@4.6.6:
@@ -16348,7 +16342,7 @@ snapshots:
 
   rrweb-snapshot@2.0.0-alpha.18:
     dependencies:
-      postcss: 8.5.4
+      postcss: 8.5.6
 
   rrweb@2.0.0-alpha.18:
     dependencies:
@@ -16503,14 +16497,14 @@ snapshots:
       '@shikijs/vscode-textmate': 10.0.2
       '@types/hast': 3.0.4
 
-  shiki@3.6.0:
+  shiki@3.7.0:
     dependencies:
-      '@shikijs/core': 3.6.0
-      '@shikijs/engine-javascript': 3.6.0
-      '@shikijs/engine-oniguruma': 3.6.0
-      '@shikijs/langs': 3.6.0
-      '@shikijs/themes': 3.6.0
-      '@shikijs/types': 3.6.0
+      '@shikijs/core': 3.7.0
+      '@shikijs/engine-javascript': 3.7.0
+      '@shikijs/engine-oniguruma': 3.7.0
+      '@shikijs/langs': 3.7.0
+      '@shikijs/themes': 3.7.0
+      '@shikijs/types': 3.7.0
       '@shikijs/vscode-textmate': 10.0.2
       '@types/hast': 3.0.4
 
@@ -16766,11 +16760,11 @@ snapshots:
 
   strnum@2.1.1: {}
 
-  style-to-js@1.1.16:
+  style-to-js@1.1.17:
     dependencies:
-      style-to-object: 1.0.8
+      style-to-object: 1.0.9
 
-  style-to-object@1.0.8:
+  style-to-object@1.0.9:
     dependencies:
       inline-style-parser: 0.2.4
 
@@ -16847,11 +16841,11 @@ snapshots:
       normalize-path: 3.0.0
       object-hash: 3.0.0
       picocolors: 1.1.1
-      postcss: 8.5.4
-      postcss-import: 15.1.0(postcss@8.5.4)
-      postcss-js: 4.0.1(postcss@8.5.4)
-      postcss-load-config: 4.0.2(postcss@8.5.4)
-      postcss-nested: 6.2.0(postcss@8.5.4)
+      postcss: 8.5.6
+      postcss-import: 15.1.0(postcss@8.5.6)
+      postcss-js: 4.0.1(postcss@8.5.6)
+      postcss-load-config: 4.0.2(postcss@8.5.6)
+      postcss-nested: 6.2.0(postcss@8.5.6)
       postcss-selector-parser: 6.1.2
       resolve: 1.22.10
       sucrase: 3.35.0
@@ -16896,7 +16890,7 @@ snapshots:
       fdir: 6.4.6(picomatch@4.0.2)
       picomatch: 4.0.2
 
-  tinypool@1.1.0: {}
+  tinypool@1.1.1: {}
 
   tinyrainbow@1.2.0: {}
 
@@ -16971,7 +16965,7 @@ snapshots:
 
   tsort@0.0.1: {}
 
-  tsup@8.5.0(jiti@1.21.7)(postcss@8.5.4)(tsx@4.19.4)(typescript@5.8.3)(yaml@2.8.0):
+  tsup@8.5.0(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.8.0):
     dependencies:
       bundle-require: 5.1.0(esbuild@0.25.5)
       cac: 6.7.14
@@ -16982,16 +16976,16 @@ snapshots:
       fix-dts-default-cjs-exports: 1.0.1
       joycon: 3.1.1
       picocolors: 1.1.1
-      postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.4)(tsx@4.19.4)(yaml@2.8.0)
+      postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.3)(yaml@2.8.0)
       resolve-from: 5.0.0
-      rollup: 4.42.0
+      rollup: 4.44.0
       source-map: 0.8.0-beta.0
       sucrase: 3.35.0
       tinyexec: 0.3.2
       tinyglobby: 0.2.14
       tree-kill: 1.2.2
     optionalDependencies:
-      postcss: 8.5.4
+      postcss: 8.5.6
       typescript: 5.8.3
     transitivePeerDependencies:
       - jiti
@@ -16999,7 +16993,7 @@ snapshots:
       - tsx
       - yaml
 
-  tsx@4.19.4:
+  tsx@4.20.3:
     dependencies:
       esbuild: 0.25.5
       get-tsconfig: 4.10.1
@@ -17120,7 +17114,7 @@ snapshots:
   unenv@2.0.0-rc.14:
     dependencies:
       defu: 6.1.4
-      exsolve: 1.0.5
+      exsolve: 1.0.7
       ohash: 2.0.11
       pathe: 2.0.3
       ufo: 1.6.1
@@ -17135,7 +17129,7 @@ snapshots:
       '@types/concat-stream': 2.0.3
       '@types/debug': 4.1.12
       '@types/is-empty': 1.2.3
-      '@types/node': 22.15.31
+      '@types/node': 22.15.33
       '@types/unist': 3.0.3
       concat-stream: 2.0.0
       debug: 4.4.1(supports-color@8.1.1)
@@ -17256,27 +17250,29 @@ snapshots:
 
   unpipe@1.0.0: {}
 
-  unrs-resolver@1.7.13:
+  unrs-resolver@1.9.1:
     dependencies:
       napi-postinstall: 0.2.4
     optionalDependencies:
-      '@unrs/resolver-binding-darwin-arm64': 1.7.13
-      '@unrs/resolver-binding-darwin-x64': 1.7.13
-      '@unrs/resolver-binding-freebsd-x64': 1.7.13
-      '@unrs/resolver-binding-linux-arm-gnueabihf': 1.7.13
-      '@unrs/resolver-binding-linux-arm-musleabihf': 1.7.13
-      '@unrs/resolver-binding-linux-arm64-gnu': 1.7.13
-      '@unrs/resolver-binding-linux-arm64-musl': 1.7.13
-      '@unrs/resolver-binding-linux-ppc64-gnu': 1.7.13
-      '@unrs/resolver-binding-linux-riscv64-gnu': 1.7.13
-      '@unrs/resolver-binding-linux-riscv64-musl': 1.7.13
-      '@unrs/resolver-binding-linux-s390x-gnu': 1.7.13
-      '@unrs/resolver-binding-linux-x64-gnu': 1.7.13
-      '@unrs/resolver-binding-linux-x64-musl': 1.7.13
-      '@unrs/resolver-binding-wasm32-wasi': 1.7.13
-      '@unrs/resolver-binding-win32-arm64-msvc': 1.7.13
-      '@unrs/resolver-binding-win32-ia32-msvc': 1.7.13
-      '@unrs/resolver-binding-win32-x64-msvc': 1.7.13
+      '@unrs/resolver-binding-android-arm-eabi': 1.9.1
+      '@unrs/resolver-binding-android-arm64': 1.9.1
+      '@unrs/resolver-binding-darwin-arm64': 1.9.1
+      '@unrs/resolver-binding-darwin-x64': 1.9.1
+      '@unrs/resolver-binding-freebsd-x64': 1.9.1
+      '@unrs/resolver-binding-linux-arm-gnueabihf': 1.9.1
+      '@unrs/resolver-binding-linux-arm-musleabihf': 1.9.1
+      '@unrs/resolver-binding-linux-arm64-gnu': 1.9.1
+      '@unrs/resolver-binding-linux-arm64-musl': 1.9.1
+      '@unrs/resolver-binding-linux-ppc64-gnu': 1.9.1
+      '@unrs/resolver-binding-linux-riscv64-gnu': 1.9.1
+      '@unrs/resolver-binding-linux-riscv64-musl': 1.9.1
+      '@unrs/resolver-binding-linux-s390x-gnu': 1.9.1
+      '@unrs/resolver-binding-linux-x64-gnu': 1.9.1
+      '@unrs/resolver-binding-linux-x64-musl': 1.9.1
+      '@unrs/resolver-binding-wasm32-wasi': 1.9.1
+      '@unrs/resolver-binding-win32-arm64-msvc': 1.9.1
+      '@unrs/resolver-binding-win32-ia32-msvc': 1.9.1
+      '@unrs/resolver-binding-win32-x64-msvc': 1.9.1
 
   update-browserslist-db@1.1.3(browserslist@4.25.0):
     dependencies:
@@ -17391,15 +17387,15 @@ snapshots:
       d3-time: 3.1.0
       d3-timer: 3.0.1
 
-  viem@2.31.0(typescript@5.8.3)(zod@3.25.57):
+  viem@2.31.4(typescript@5.8.3)(zod@3.25.67):
     dependencies:
-      '@noble/curves': 1.9.1
+      '@noble/curves': 1.9.2
       '@noble/hashes': 1.8.0
       '@scure/bip32': 1.7.0
       '@scure/bip39': 1.6.0
-      abitype: 1.0.8(typescript@5.8.3)(zod@3.25.57)
+      abitype: 1.0.8(typescript@5.8.3)(zod@3.25.67)
       isows: 1.0.7(ws@8.18.2)
-      ox: 0.7.1(typescript@5.8.3)(zod@3.25.57)
+      ox: 0.8.1(typescript@5.8.3)(zod@3.25.67)
       ws: 8.18.2
     optionalDependencies:
       typescript: 5.8.3
@@ -17408,13 +17404,13 @@ snapshots:
       - utf-8-validate
       - zod
 
-  vite-node@2.1.9(@types/node@22.15.31):
+  vite-node@2.1.9(@types/node@22.15.33):
     dependencies:
       cac: 6.7.14
       debug: 4.4.1(supports-color@8.1.1)
       es-module-lexer: 1.7.0
       pathe: 1.1.2
-      vite: 5.4.19(@types/node@22.15.31)
+      vite: 5.4.19(@types/node@22.15.33)
     transitivePeerDependencies:
       - '@types/node'
       - less
@@ -17426,19 +17422,19 @@ snapshots:
       - supports-color
       - terser
 
-  vite@5.4.19(@types/node@22.15.31):
+  vite@5.4.19(@types/node@22.15.33):
     dependencies:
       esbuild: 0.21.5
-      postcss: 8.5.4
-      rollup: 4.42.0
+      postcss: 8.5.6
+      rollup: 4.44.0
     optionalDependencies:
-      '@types/node': 22.15.31
+      '@types/node': 22.15.33
       fsevents: 2.3.3
 
-  vitest@2.1.9(@types/node@22.15.31)(jsdom@24.1.3):
+  vitest@2.1.9(@types/node@22.15.33)(jsdom@24.1.3):
     dependencies:
       '@vitest/expect': 2.1.9
-      '@vitest/mocker': 2.1.9(vite@5.4.19(@types/node@22.15.31))
+      '@vitest/mocker': 2.1.9(vite@5.4.19(@types/node@22.15.33))
       '@vitest/pretty-format': 2.1.9
       '@vitest/runner': 2.1.9
       '@vitest/snapshot': 2.1.9
@@ -17452,13 +17448,13 @@ snapshots:
       std-env: 3.9.0
       tinybench: 2.9.0
       tinyexec: 0.3.2
-      tinypool: 1.1.0
+      tinypool: 1.1.1
       tinyrainbow: 1.2.0
-      vite: 5.4.19(@types/node@22.15.31)
-      vite-node: 2.1.9(@types/node@22.15.31)
+      vite: 5.4.19(@types/node@22.15.33)
+      vite-node: 2.1.9(@types/node@22.15.33)
       why-is-node-running: 2.3.0
     optionalDependencies:
-      '@types/node': 22.15.31
+      '@types/node': 22.15.33
       jsdom: 24.1.3
     transitivePeerDependencies:
       - less
@@ -17600,7 +17596,7 @@ snapshots:
 
   workerpool@6.5.1: {}
 
-  wrangler@3.114.9(@cloudflare/workers-types@4.20250610.0):
+  wrangler@3.114.10(@cloudflare/workers-types@4.20250620.0):
     dependencies:
       '@cloudflare/kv-asset-handler': 0.3.4
       '@cloudflare/unenv-preset': 2.0.2(unenv@2.0.0-rc.14)(workerd@1.20250408.0)
@@ -17613,7 +17609,7 @@ snapshots:
       unenv: 2.0.0-rc.14
       workerd: 1.20250408.0
     optionalDependencies:
-      '@cloudflare/workers-types': 4.20250610.0
+      '@cloudflare/workers-types': 4.20250620.0
       fsevents: 2.3.3
       sharp: 0.33.5
     transitivePeerDependencies:
@@ -17687,14 +17683,14 @@ snapshots:
     dependencies:
       zod: 3.23.8
 
-  zod-validation-error@3.4.1(zod@3.25.57):
+  zod-validation-error@3.5.2(zod@3.25.67):
     dependencies:
-      zod: 3.25.57
+      zod: 3.25.67
 
   zod@3.22.3: {}
 
   zod@3.23.8: {}
 
-  zod@3.25.57: {}
+  zod@3.25.67: {}
 
   zwitch@2.0.4: {}
diff --git a/website/next.config.js b/website/next.config.js
index ab4ab3a89c53..6fd1e9a9160a 100644
--- a/website/next.config.js
+++ b/website/next.config.js
@@ -2,14 +2,13 @@
 
 import nextra from 'nextra'
 import rehypeMdxCodeProps from 'rehype-mdx-code-props'
-import rehypeUnwrapImages from 'rehype-unwrap-images'
-import remarkCallouts from 'remark-callouts'
 
 import { defaultLocale, translate } from '@edgeandnode/gds'
 
-// Compile `i18n.ts` to `i18n.js` since we can't import `ts` files in `next.config.js`
 import { translations } from './dist/i18n.js'
-import { remarkTransformRemoteGitHub } from './src/remarkTransformRemoteGitHub.js'
+import rehypeUnwrapImages from './dist/mdxPlugins/rehypeUnwrapImages.js'
+import remarkCallouts from './dist/mdxPlugins/remarkCallouts.js'
+import remarkTransformRemoteDocs from './dist/mdxPlugins/remarkTransformRemoteDocs.js'
 
 const env = {
   ENVIRONMENT: process.env.ENVIRONMENT,
@@ -102,7 +101,7 @@ const withNextra = nextra({
     ]
   },
   mdxOptions: {
-    remarkPlugins: [remarkTransformRemoteGitHub, remarkCallouts],
+    remarkPlugins: [remarkCallouts, remarkTransformRemoteDocs],
     rehypePlugins: [rehypeUnwrapImages, rehypeMdxCodeProps],
   },
 })
diff --git a/website/package.json b/website/package.json
index 03ba47215008..5662d8921c83 100644
--- a/website/package.json
+++ b/website/package.json
@@ -5,7 +5,7 @@
   "type": "module",
   "scripts": {
     "dev": "next",
-    "predev": "tsup ./src/i18n.ts --format esm",
+    "predev": "tsup ./src/i18n.ts ./src/mdxPlugins/*.ts --format esm",
     "build": "rm -rf .next && rm -rf out && next build",
     "prebuild": "pnpm predev",
     "prebuild:ci": "pnpm fetch-remote-docs && pnpm fetch-api-reference && pnpm fix-pages-structure",
@@ -19,19 +19,23 @@
   "dependencies": {
     "@docsearch/react": "^3.9.0",
     "@edgeandnode/common": "^7.0.4",
-    "@edgeandnode/gds": "^6.5.15",
-    "@edgeandnode/go": "^10.1.1",
+    "@edgeandnode/gds": "^6.6.2",
+    "@edgeandnode/go": "^10.2.3",
     "@emotion/react": "^11.14.0",
-    "@graphprotocol/contracts": "^7.1.2",
+    "@graphprotocol/contracts": "^7.3.0",
     "@pinax/graph-networks-registry": "^0.6.7",
     "@react-hookz/web": "^25.1.1",
     "@readme/httpsnippet": "^11.0.0",
     "@readme/openapi-parser": "^4.1.0",
     "fetch-har": "^11.1.1",
+    "hast": "^1.0.0",
+    "hast-util-whitespace": "^3.0.0",
     "lodash": "^4.17.21",
+    "mdast-util-mdx-jsx": "^3.2.0",
+    "mdast-util-to-hast": "^13.2.0",
     "mixpanel-browser": "^2.65.0",
-    "motion": "^12.16.0",
-    "next": "^14.2.29",
+    "motion": "^12.19.1",
+    "next": "^14.2.30",
     "next-seo": "^6.8.0",
     "next-sitemap": "^4.2.3",
     "nextra": "^3.3.1",
@@ -41,24 +45,25 @@
     "react-ga4": "^2.1.0",
     "react-intersection-observer": "^9.16.0",
     "rehype-mdx-code-props": "^3.0.1",
-    "rehype-unwrap-images": "workspace:*",
-    "remark-callouts": "workspace:*",
     "theme-ui": "^0.17.2",
     "unist-util-visit": "^5.0.0",
-    "zod": "^3.25.57"
+    "vfile": "^6.0.3",
+    "zod": "^3.25.67"
   },
   "devDependencies": {
-    "@types/lodash": "^4.17.17",
+    "@types/hast": "^3.0.4",
+    "@types/lodash": "^4.17.19",
     "@types/mdast": "^4.0.4",
     "@types/mixpanel-browser": "^2.60.0",
-    "@types/node": "^22.15.31",
+    "@types/node": "^22.15.33",
     "@types/react": "^18.3.23",
     "@types/react-dom": "^18.3.7",
+    "@types/vfile": "^4.0.0",
     "autoprefixer": "^10.4.21",
     "fast-xml-parser": "^5.2.5",
-    "postcss": "^8.5.4",
+    "postcss": "^8.5.6",
     "tailwindcss": "^3.4.17",
     "tsup": "^8.5.0",
-    "tsx": "^4.19.4"
+    "tsx": "^4.20.3"
   }
 }
diff --git a/website/route-lockfile.txt b/website/route-lockfile.txt
index e0c9011e0acb..e2481392bf41 100644
--- a/website/route-lockfile.txt
+++ b/website/route-lockfile.txt
@@ -127,6 +127,7 @@
 /ar/supported-networks/clover/
 /ar/supported-networks/corn-testnet/
 /ar/supported-networks/corn/
+/ar/supported-networks/cronos/
 /ar/supported-networks/eos-evm/
 /ar/supported-networks/eos/
 /ar/supported-networks/etherlink-mainnet/
@@ -151,6 +152,7 @@
 /ar/supported-networks/hemi/
 /ar/supported-networks/holesky-cl/
 /ar/supported-networks/holesky/
+/ar/supported-networks/hoodi-cl/
 /ar/supported-networks/hoodi/
 /ar/supported-networks/injective-mainnet/
 /ar/supported-networks/injective-testnet/
@@ -217,12 +219,15 @@
 /ar/supported-networks/sonic/
 /ar/supported-networks/starknet-mainnet/
 /ar/supported-networks/starknet-testnet/
+/ar/supported-networks/status-sepolia/
 /ar/supported-networks/stellar-testnet/
 /ar/supported-networks/stellar/
 /ar/supported-networks/swellchain-sepolia/
 /ar/supported-networks/swellchain/
 /ar/supported-networks/telos-testnet/
 /ar/supported-networks/telos/
+/ar/supported-networks/tron-evm/
+/ar/supported-networks/tron/
 /ar/supported-networks/ultra/
 /ar/supported-networks/unichain-testnet/
 /ar/supported-networks/unichain/
@@ -390,6 +395,7 @@
 /cs/supported-networks/clover/
 /cs/supported-networks/corn-testnet/
 /cs/supported-networks/corn/
+/cs/supported-networks/cronos/
 /cs/supported-networks/eos-evm/
 /cs/supported-networks/eos/
 /cs/supported-networks/etherlink-mainnet/
@@ -414,6 +420,7 @@
 /cs/supported-networks/hemi/
 /cs/supported-networks/holesky-cl/
 /cs/supported-networks/holesky/
+/cs/supported-networks/hoodi-cl/
 /cs/supported-networks/hoodi/
 /cs/supported-networks/injective-mainnet/
 /cs/supported-networks/injective-testnet/
@@ -480,12 +487,15 @@
 /cs/supported-networks/sonic/
 /cs/supported-networks/starknet-mainnet/
 /cs/supported-networks/starknet-testnet/
+/cs/supported-networks/status-sepolia/
 /cs/supported-networks/stellar-testnet/
 /cs/supported-networks/stellar/
 /cs/supported-networks/swellchain-sepolia/
 /cs/supported-networks/swellchain/
 /cs/supported-networks/telos-testnet/
 /cs/supported-networks/telos/
+/cs/supported-networks/tron-evm/
+/cs/supported-networks/tron/
 /cs/supported-networks/ultra/
 /cs/supported-networks/unichain-testnet/
 /cs/supported-networks/unichain/
@@ -653,6 +663,7 @@
 /de/supported-networks/clover/
 /de/supported-networks/corn-testnet/
 /de/supported-networks/corn/
+/de/supported-networks/cronos/
 /de/supported-networks/eos-evm/
 /de/supported-networks/eos/
 /de/supported-networks/etherlink-mainnet/
@@ -677,6 +688,7 @@
 /de/supported-networks/hemi/
 /de/supported-networks/holesky-cl/
 /de/supported-networks/holesky/
+/de/supported-networks/hoodi-cl/
 /de/supported-networks/hoodi/
 /de/supported-networks/injective-mainnet/
 /de/supported-networks/injective-testnet/
@@ -743,12 +755,15 @@
 /de/supported-networks/sonic/
 /de/supported-networks/starknet-mainnet/
 /de/supported-networks/starknet-testnet/
+/de/supported-networks/status-sepolia/
 /de/supported-networks/stellar-testnet/
 /de/supported-networks/stellar/
 /de/supported-networks/swellchain-sepolia/
 /de/supported-networks/swellchain/
 /de/supported-networks/telos-testnet/
 /de/supported-networks/telos/
+/de/supported-networks/tron-evm/
+/de/supported-networks/tron/
 /de/supported-networks/ultra/
 /de/supported-networks/unichain-testnet/
 /de/supported-networks/unichain/
@@ -916,6 +931,7 @@
 /en/supported-networks/clover/
 /en/supported-networks/corn-testnet/
 /en/supported-networks/corn/
+/en/supported-networks/cronos/
 /en/supported-networks/eos-evm/
 /en/supported-networks/eos/
 /en/supported-networks/etherlink-mainnet/
@@ -940,6 +956,7 @@
 /en/supported-networks/hemi/
 /en/supported-networks/holesky-cl/
 /en/supported-networks/holesky/
+/en/supported-networks/hoodi-cl/
 /en/supported-networks/hoodi/
 /en/supported-networks/injective-mainnet/
 /en/supported-networks/injective-testnet/
@@ -1006,12 +1023,15 @@
 /en/supported-networks/sonic/
 /en/supported-networks/starknet-mainnet/
 /en/supported-networks/starknet-testnet/
+/en/supported-networks/status-sepolia/
 /en/supported-networks/stellar-testnet/
 /en/supported-networks/stellar/
 /en/supported-networks/swellchain-sepolia/
 /en/supported-networks/swellchain/
 /en/supported-networks/telos-testnet/
 /en/supported-networks/telos/
+/en/supported-networks/tron-evm/
+/en/supported-networks/tron/
 /en/supported-networks/ultra/
 /en/supported-networks/unichain-testnet/
 /en/supported-networks/unichain/
@@ -1179,6 +1199,7 @@
 /es/supported-networks/clover/
 /es/supported-networks/corn-testnet/
 /es/supported-networks/corn/
+/es/supported-networks/cronos/
 /es/supported-networks/eos-evm/
 /es/supported-networks/eos/
 /es/supported-networks/etherlink-mainnet/
@@ -1203,6 +1224,7 @@
 /es/supported-networks/hemi/
 /es/supported-networks/holesky-cl/
 /es/supported-networks/holesky/
+/es/supported-networks/hoodi-cl/
 /es/supported-networks/hoodi/
 /es/supported-networks/injective-mainnet/
 /es/supported-networks/injective-testnet/
@@ -1269,12 +1291,15 @@
 /es/supported-networks/sonic/
 /es/supported-networks/starknet-mainnet/
 /es/supported-networks/starknet-testnet/
+/es/supported-networks/status-sepolia/
 /es/supported-networks/stellar-testnet/
 /es/supported-networks/stellar/
 /es/supported-networks/swellchain-sepolia/
 /es/supported-networks/swellchain/
 /es/supported-networks/telos-testnet/
 /es/supported-networks/telos/
+/es/supported-networks/tron-evm/
+/es/supported-networks/tron/
 /es/supported-networks/ultra/
 /es/supported-networks/unichain-testnet/
 /es/supported-networks/unichain/
@@ -1442,6 +1467,7 @@
 /fr/supported-networks/clover/
 /fr/supported-networks/corn-testnet/
 /fr/supported-networks/corn/
+/fr/supported-networks/cronos/
 /fr/supported-networks/eos-evm/
 /fr/supported-networks/eos/
 /fr/supported-networks/etherlink-mainnet/
@@ -1466,6 +1492,7 @@
 /fr/supported-networks/hemi/
 /fr/supported-networks/holesky-cl/
 /fr/supported-networks/holesky/
+/fr/supported-networks/hoodi-cl/
 /fr/supported-networks/hoodi/
 /fr/supported-networks/injective-mainnet/
 /fr/supported-networks/injective-testnet/
@@ -1532,12 +1559,15 @@
 /fr/supported-networks/sonic/
 /fr/supported-networks/starknet-mainnet/
 /fr/supported-networks/starknet-testnet/
+/fr/supported-networks/status-sepolia/
 /fr/supported-networks/stellar-testnet/
 /fr/supported-networks/stellar/
 /fr/supported-networks/swellchain-sepolia/
 /fr/supported-networks/swellchain/
 /fr/supported-networks/telos-testnet/
 /fr/supported-networks/telos/
+/fr/supported-networks/tron-evm/
+/fr/supported-networks/tron/
 /fr/supported-networks/ultra/
 /fr/supported-networks/unichain-testnet/
 /fr/supported-networks/unichain/
@@ -1705,6 +1735,7 @@
 /hi/supported-networks/clover/
 /hi/supported-networks/corn-testnet/
 /hi/supported-networks/corn/
+/hi/supported-networks/cronos/
 /hi/supported-networks/eos-evm/
 /hi/supported-networks/eos/
 /hi/supported-networks/etherlink-mainnet/
@@ -1729,6 +1760,7 @@
 /hi/supported-networks/hemi/
 /hi/supported-networks/holesky-cl/
 /hi/supported-networks/holesky/
+/hi/supported-networks/hoodi-cl/
 /hi/supported-networks/hoodi/
 /hi/supported-networks/injective-mainnet/
 /hi/supported-networks/injective-testnet/
@@ -1795,12 +1827,15 @@
 /hi/supported-networks/sonic/
 /hi/supported-networks/starknet-mainnet/
 /hi/supported-networks/starknet-testnet/
+/hi/supported-networks/status-sepolia/
 /hi/supported-networks/stellar-testnet/
 /hi/supported-networks/stellar/
 /hi/supported-networks/swellchain-sepolia/
 /hi/supported-networks/swellchain/
 /hi/supported-networks/telos-testnet/
 /hi/supported-networks/telos/
+/hi/supported-networks/tron-evm/
+/hi/supported-networks/tron/
 /hi/supported-networks/ultra/
 /hi/supported-networks/unichain-testnet/
 /hi/supported-networks/unichain/
@@ -1968,6 +2003,7 @@
 /it/supported-networks/clover/
 /it/supported-networks/corn-testnet/
 /it/supported-networks/corn/
+/it/supported-networks/cronos/
 /it/supported-networks/eos-evm/
 /it/supported-networks/eos/
 /it/supported-networks/etherlink-mainnet/
@@ -1992,6 +2028,7 @@
 /it/supported-networks/hemi/
 /it/supported-networks/holesky-cl/
 /it/supported-networks/holesky/
+/it/supported-networks/hoodi-cl/
 /it/supported-networks/hoodi/
 /it/supported-networks/injective-mainnet/
 /it/supported-networks/injective-testnet/
@@ -2058,12 +2095,15 @@
 /it/supported-networks/sonic/
 /it/supported-networks/starknet-mainnet/
 /it/supported-networks/starknet-testnet/
+/it/supported-networks/status-sepolia/
 /it/supported-networks/stellar-testnet/
 /it/supported-networks/stellar/
 /it/supported-networks/swellchain-sepolia/
 /it/supported-networks/swellchain/
 /it/supported-networks/telos-testnet/
 /it/supported-networks/telos/
+/it/supported-networks/tron-evm/
+/it/supported-networks/tron/
 /it/supported-networks/ultra/
 /it/supported-networks/unichain-testnet/
 /it/supported-networks/unichain/
@@ -2231,6 +2271,7 @@
 /ja/supported-networks/clover/
 /ja/supported-networks/corn-testnet/
 /ja/supported-networks/corn/
+/ja/supported-networks/cronos/
 /ja/supported-networks/eos-evm/
 /ja/supported-networks/eos/
 /ja/supported-networks/etherlink-mainnet/
@@ -2255,6 +2296,7 @@
 /ja/supported-networks/hemi/
 /ja/supported-networks/holesky-cl/
 /ja/supported-networks/holesky/
+/ja/supported-networks/hoodi-cl/
 /ja/supported-networks/hoodi/
 /ja/supported-networks/injective-mainnet/
 /ja/supported-networks/injective-testnet/
@@ -2321,12 +2363,15 @@
 /ja/supported-networks/sonic/
 /ja/supported-networks/starknet-mainnet/
 /ja/supported-networks/starknet-testnet/
+/ja/supported-networks/status-sepolia/
 /ja/supported-networks/stellar-testnet/
 /ja/supported-networks/stellar/
 /ja/supported-networks/swellchain-sepolia/
 /ja/supported-networks/swellchain/
 /ja/supported-networks/telos-testnet/
 /ja/supported-networks/telos/
+/ja/supported-networks/tron-evm/
+/ja/supported-networks/tron/
 /ja/supported-networks/ultra/
 /ja/supported-networks/unichain-testnet/
 /ja/supported-networks/unichain/
@@ -2608,6 +2653,7 @@
 /mr/supported-networks/clover/
 /mr/supported-networks/corn-testnet/
 /mr/supported-networks/corn/
+/mr/supported-networks/cronos/
 /mr/supported-networks/eos-evm/
 /mr/supported-networks/eos/
 /mr/supported-networks/etherlink-mainnet/
@@ -2632,6 +2678,7 @@
 /mr/supported-networks/hemi/
 /mr/supported-networks/holesky-cl/
 /mr/supported-networks/holesky/
+/mr/supported-networks/hoodi-cl/
 /mr/supported-networks/hoodi/
 /mr/supported-networks/injective-mainnet/
 /mr/supported-networks/injective-testnet/
@@ -2698,12 +2745,15 @@
 /mr/supported-networks/sonic/
 /mr/supported-networks/starknet-mainnet/
 /mr/supported-networks/starknet-testnet/
+/mr/supported-networks/status-sepolia/
 /mr/supported-networks/stellar-testnet/
 /mr/supported-networks/stellar/
 /mr/supported-networks/swellchain-sepolia/
 /mr/supported-networks/swellchain/
 /mr/supported-networks/telos-testnet/
 /mr/supported-networks/telos/
+/mr/supported-networks/tron-evm/
+/mr/supported-networks/tron/
 /mr/supported-networks/ultra/
 /mr/supported-networks/unichain-testnet/
 /mr/supported-networks/unichain/
@@ -3099,6 +3149,7 @@
 /pt/supported-networks/clover/
 /pt/supported-networks/corn-testnet/
 /pt/supported-networks/corn/
+/pt/supported-networks/cronos/
 /pt/supported-networks/eos-evm/
 /pt/supported-networks/eos/
 /pt/supported-networks/etherlink-mainnet/
@@ -3123,6 +3174,7 @@
 /pt/supported-networks/hemi/
 /pt/supported-networks/holesky-cl/
 /pt/supported-networks/holesky/
+/pt/supported-networks/hoodi-cl/
 /pt/supported-networks/hoodi/
 /pt/supported-networks/injective-mainnet/
 /pt/supported-networks/injective-testnet/
@@ -3189,12 +3241,15 @@
 /pt/supported-networks/sonic/
 /pt/supported-networks/starknet-mainnet/
 /pt/supported-networks/starknet-testnet/
+/pt/supported-networks/status-sepolia/
 /pt/supported-networks/stellar-testnet/
 /pt/supported-networks/stellar/
 /pt/supported-networks/swellchain-sepolia/
 /pt/supported-networks/swellchain/
 /pt/supported-networks/telos-testnet/
 /pt/supported-networks/telos/
+/pt/supported-networks/tron-evm/
+/pt/supported-networks/tron/
 /pt/supported-networks/ultra/
 /pt/supported-networks/unichain-testnet/
 /pt/supported-networks/unichain/
@@ -3476,6 +3531,7 @@
 /ru/supported-networks/clover/
 /ru/supported-networks/corn-testnet/
 /ru/supported-networks/corn/
+/ru/supported-networks/cronos/
 /ru/supported-networks/eos-evm/
 /ru/supported-networks/eos/
 /ru/supported-networks/etherlink-mainnet/
@@ -3500,6 +3556,7 @@
 /ru/supported-networks/hemi/
 /ru/supported-networks/holesky-cl/
 /ru/supported-networks/holesky/
+/ru/supported-networks/hoodi-cl/
 /ru/supported-networks/hoodi/
 /ru/supported-networks/injective-mainnet/
 /ru/supported-networks/injective-testnet/
@@ -3566,12 +3623,15 @@
 /ru/supported-networks/sonic/
 /ru/supported-networks/starknet-mainnet/
 /ru/supported-networks/starknet-testnet/
+/ru/supported-networks/status-sepolia/
 /ru/supported-networks/stellar-testnet/
 /ru/supported-networks/stellar/
 /ru/supported-networks/swellchain-sepolia/
 /ru/supported-networks/swellchain/
 /ru/supported-networks/telos-testnet/
 /ru/supported-networks/telos/
+/ru/supported-networks/tron-evm/
+/ru/supported-networks/tron/
 /ru/supported-networks/ultra/
 /ru/supported-networks/unichain-testnet/
 /ru/supported-networks/unichain/
@@ -3739,6 +3799,7 @@
 /sv/supported-networks/clover/
 /sv/supported-networks/corn-testnet/
 /sv/supported-networks/corn/
+/sv/supported-networks/cronos/
 /sv/supported-networks/eos-evm/
 /sv/supported-networks/eos/
 /sv/supported-networks/etherlink-mainnet/
@@ -3763,6 +3824,7 @@
 /sv/supported-networks/hemi/
 /sv/supported-networks/holesky-cl/
 /sv/supported-networks/holesky/
+/sv/supported-networks/hoodi-cl/
 /sv/supported-networks/hoodi/
 /sv/supported-networks/injective-mainnet/
 /sv/supported-networks/injective-testnet/
@@ -3829,12 +3891,15 @@
 /sv/supported-networks/sonic/
 /sv/supported-networks/starknet-mainnet/
 /sv/supported-networks/starknet-testnet/
+/sv/supported-networks/status-sepolia/
 /sv/supported-networks/stellar-testnet/
 /sv/supported-networks/stellar/
 /sv/supported-networks/swellchain-sepolia/
 /sv/supported-networks/swellchain/
 /sv/supported-networks/telos-testnet/
 /sv/supported-networks/telos/
+/sv/supported-networks/tron-evm/
+/sv/supported-networks/tron/
 /sv/supported-networks/ultra/
 /sv/supported-networks/unichain-testnet/
 /sv/supported-networks/unichain/
@@ -4002,6 +4067,7 @@
 /tr/supported-networks/clover/
 /tr/supported-networks/corn-testnet/
 /tr/supported-networks/corn/
+/tr/supported-networks/cronos/
 /tr/supported-networks/eos-evm/
 /tr/supported-networks/eos/
 /tr/supported-networks/etherlink-mainnet/
@@ -4026,6 +4092,7 @@
 /tr/supported-networks/hemi/
 /tr/supported-networks/holesky-cl/
 /tr/supported-networks/holesky/
+/tr/supported-networks/hoodi-cl/
 /tr/supported-networks/hoodi/
 /tr/supported-networks/injective-mainnet/
 /tr/supported-networks/injective-testnet/
@@ -4092,12 +4159,15 @@
 /tr/supported-networks/sonic/
 /tr/supported-networks/starknet-mainnet/
 /tr/supported-networks/starknet-testnet/
+/tr/supported-networks/status-sepolia/
 /tr/supported-networks/stellar-testnet/
 /tr/supported-networks/stellar/
 /tr/supported-networks/swellchain-sepolia/
 /tr/supported-networks/swellchain/
 /tr/supported-networks/telos-testnet/
 /tr/supported-networks/telos/
+/tr/supported-networks/tron-evm/
+/tr/supported-networks/tron/
 /tr/supported-networks/ultra/
 /tr/supported-networks/unichain-testnet/
 /tr/supported-networks/unichain/
@@ -4379,6 +4449,7 @@
 /ur/supported-networks/clover/
 /ur/supported-networks/corn-testnet/
 /ur/supported-networks/corn/
+/ur/supported-networks/cronos/
 /ur/supported-networks/eos-evm/
 /ur/supported-networks/eos/
 /ur/supported-networks/etherlink-mainnet/
@@ -4403,6 +4474,7 @@
 /ur/supported-networks/hemi/
 /ur/supported-networks/holesky-cl/
 /ur/supported-networks/holesky/
+/ur/supported-networks/hoodi-cl/
 /ur/supported-networks/hoodi/
 /ur/supported-networks/injective-mainnet/
 /ur/supported-networks/injective-testnet/
@@ -4469,12 +4541,15 @@
 /ur/supported-networks/sonic/
 /ur/supported-networks/starknet-mainnet/
 /ur/supported-networks/starknet-testnet/
+/ur/supported-networks/status-sepolia/
 /ur/supported-networks/stellar-testnet/
 /ur/supported-networks/stellar/
 /ur/supported-networks/swellchain-sepolia/
 /ur/supported-networks/swellchain/
 /ur/supported-networks/telos-testnet/
 /ur/supported-networks/telos/
+/ur/supported-networks/tron-evm/
+/ur/supported-networks/tron/
 /ur/supported-networks/ultra/
 /ur/supported-networks/unichain-testnet/
 /ur/supported-networks/unichain/
@@ -4756,6 +4831,7 @@
 /zh/supported-networks/clover/
 /zh/supported-networks/corn-testnet/
 /zh/supported-networks/corn/
+/zh/supported-networks/cronos/
 /zh/supported-networks/eos-evm/
 /zh/supported-networks/eos/
 /zh/supported-networks/etherlink-mainnet/
@@ -4780,6 +4856,7 @@
 /zh/supported-networks/hemi/
 /zh/supported-networks/holesky-cl/
 /zh/supported-networks/holesky/
+/zh/supported-networks/hoodi-cl/
 /zh/supported-networks/hoodi/
 /zh/supported-networks/injective-mainnet/
 /zh/supported-networks/injective-testnet/
@@ -4846,12 +4923,15 @@
 /zh/supported-networks/sonic/
 /zh/supported-networks/starknet-mainnet/
 /zh/supported-networks/starknet-testnet/
+/zh/supported-networks/status-sepolia/
 /zh/supported-networks/stellar-testnet/
 /zh/supported-networks/stellar/
 /zh/supported-networks/swellchain-sepolia/
 /zh/supported-networks/swellchain/
 /zh/supported-networks/telos-testnet/
 /zh/supported-networks/telos/
+/zh/supported-networks/tron-evm/
+/zh/supported-networks/tron/
 /zh/supported-networks/ultra/
 /zh/supported-networks/unichain-testnet/
 /zh/supported-networks/unichain/
diff --git a/website/scripts/fetch-remote-docs.ts b/website/scripts/fetch-remote-docs.ts
index 41d33f4ac01b..9f984fb806c4 100644
--- a/website/scripts/fetch-remote-docs.ts
+++ b/website/scripts/fetch-remote-docs.ts
@@ -1,64 +1,39 @@
 import fs from 'node:fs/promises'
 import path from 'node:path'
 
-type Params = {
-  user: string
-  repo: string
-  branch: string
-  docsPath: string
-  outputPath: string
-  filterDocs?: (filePath: string) => boolean
-}
+import { ENGLISH_PAGES_DIRECTORY, REMOTE_DOCS_REPOS, type RemoteDocsRepo } from '../src/remoteDocs'
 
-async function fetchRemoteDocs({ user, repo, branch, docsPath, outputPath, filterDocs }: Params) {
-  const url = `https://api.github.com/repos/${user}/${repo}/git/trees/${branch}?recursive=1`
+async function fetchRemoteDocs(repo: RemoteDocsRepo) {
+  const url = `https://api.github.com/repos/${repo.user}/${repo.name}/git/trees/${repo.branch}?recursive=1`
   const response = await fetch(url)
-
   const data = await response.json()
   if (data.message) {
     console.error('❌ GitHub API rate limit exceeded, skipping…', JSON.stringify(data, null, 2))
     process.exit(0)
   }
-  const filePaths = (data.tree as { path: string }[])
-    .filter((item) => item.path.startsWith(docsPath))
-    .map((item) => item.path.replace(docsPath, ''))
 
-  const result = {
-    user,
-    repo,
-    branch,
-    docsPath,
-    filePaths: filePaths.filter((filePath) => filePath.endsWith('.md')),
-  }
-  if (filterDocs) {
-    result.filePaths = result.filePaths.filter(filterDocs)
-  }
-  for (const fp of result.filePaths) {
-    const response = await fetch(`https://raw.githubusercontent.com/${user}/${repo}/${branch}/${docsPath}${fp}`)
+  const docsRelativePaths = (data.tree as { path: string }[]).flatMap(({ path }) =>
+    path.startsWith(repo.docsPath) && path.endsWith('.md') ? [path.substring(repo.docsPath.length)] : [],
+  )
+
+  for (const docsRelativePath of docsRelativePaths) {
+    const response = await fetch(
+      `https://raw.githubusercontent.com/${repo.user}/${repo.name}/${repo.branch}/${repo.docsPath}${docsRelativePath}`,
+    )
     if (!response.ok) {
       throw new Error(`Failed to fetch remote file. ${response.status} ${response.statusText}`)
     }
     const text = await response.text()
-    const filePath = path.join(outputPath, fp)
+    const filePath = path.join(ENGLISH_PAGES_DIRECTORY, repo.basePath, docsRelativePath)
+    const outputDir = path.dirname(filePath)
+    await fs.mkdir(outputDir, { recursive: true })
     await fs.writeFile(filePath, text)
     console.log(
-      `Saved remote file ${user}/${repo}/${branch}/${docsPath}${fp} to ${path.relative(process.cwd(), path.dirname(filePath))}`,
+      `Saved remote file ${repo.user}/${repo.name}/${repo.branch}/${repo.docsPath}${docsRelativePath} to ${path.relative(process.cwd(), outputDir)}`,
     )
   }
 }
 
-await fetchRemoteDocs({
-  user: 'graphprotocol',
-  repo: 'graph-tooling',
-  branch: 'main',
-  docsPath: 'packages/ts/',
-  outputPath: path.join(process.cwd(), 'src/pages/en/subgraphs/developing/creating/graph-ts'),
-})
-
-await fetchRemoteDocs({
-  user: 'graphprotocol',
-  repo: 'graph-client',
-  branch: 'main',
-  docsPath: 'docs/',
-  outputPath: path.join(process.cwd(), 'src/pages/en/subgraphs/querying/graph-client'),
-})
+for (const repo of REMOTE_DOCS_REPOS) {
+  await fetchRemoteDocs(repo)
+}
diff --git a/website/src/HomePage.tsx b/website/src/HomePage.tsx
index 93893d89fc65..300268104c90 100644
--- a/website/src/HomePage.tsx
+++ b/website/src/HomePage.tsx
@@ -200,9 +200,7 @@ export default function HomePage({ supportedNetworks }: { supportedNetworks: Sup
                     !['boba-bnb', 'eos-evm', 'polygon-zkevm', 'solana-accounts'].includes(network.id),
                 )
                 // Filter out networks that don't have a proper monochrome logo
-                .filter((network) => {
-                  return network.id !== 'zora'
-                })
+                .filter((network) => network.id !== 'zora')
                 .map((network) => (
                   <li key={network.id} className="-mb-px -mr-px">
                     <Tooltip content={network.shortName}>
diff --git a/website/src/components/Callout.tsx b/website/src/components/Callout.tsx
index da583be1bc04..06dd8e8241b2 100644
--- a/website/src/components/Callout.tsx
+++ b/website/src/components/Callout.tsx
@@ -43,7 +43,7 @@ export const Callout = ({
     <div
       data-variant={variant}
       className={classNames([
-        `flex gap-2 rounded-8 border p-4 ps-3
+        `text-body-small flex gap-2 rounded-8 border p-3
         data-[variant=important]:border-solar-500/50
         data-[variant=info]:border-galactic-500/50
         data-[variant=important]:bg-solar-500/10
@@ -53,7 +53,7 @@ export const Callout = ({
       ])}
       {...(props as ComponentProps<'div'>)}
     >
-      <div className="flex size-6 shrink-0 items-center justify-center">
+      <div className="flex h-[1lh] shrink-0 items-center justify-center">
         {variant === 'info' ? (
           <Lightbulb size={4} color="galactic-500" alt={!title ? t('global.content.callout.note') : ''} />
         ) : (
@@ -62,9 +62,9 @@ export const Callout = ({
       </div>
       <div
         className={`
-          text-body-xsmall flex-1
+          flex-1
           -:first:*:text-white
-          mdx-[:is(p,ul,ol):not(:last-child,:is(ul,ol)_*)]:mb-3
+          mdx-[:is(p,ul,ol):not(:last-child,:is(ul,ol)_*)]:mb-2
           mdx-[ul,ol]:gap-1
         `}
       >
diff --git a/website/src/components/Image.tsx b/website/src/components/Image.tsx
index 09dea251bb59..b2c07bb9c2d1 100644
--- a/website/src/components/Image.tsx
+++ b/website/src/components/Image.tsx
@@ -1,15 +1,10 @@
-import NextImage from 'next/image'
 import type { ComponentProps } from 'react'
 
 import { classNames } from '@edgeandnode/gds'
 
-export interface ImageProps extends Omit<ComponentProps<'img'>, 'src'> {
-  src?: ComponentProps<typeof NextImage>['src']
-}
+interface ImageProps extends ComponentProps<'img'> {}
 
-export const Image = ({ src: passedSrc, alt, className, ...props }: ImageProps) => {
-  const src =
-    typeof passedSrc === 'object' ? ('default' in passedSrc ? passedSrc.default.src : passedSrc.src) : passedSrc
+export const Image = ({ src, alt, className, ...props }: ImageProps) => {
   return (
     <figure
       className={classNames([
diff --git a/website/src/components/Navigation.tsx b/website/src/components/Navigation.tsx
index 8abaf231502f..e0e6edc38a65 100644
--- a/website/src/components/Navigation.tsx
+++ b/website/src/components/Navigation.tsx
@@ -34,11 +34,33 @@ export const NavigationList = ({ className, children, ...props }: ComponentProps
   )
 }
 
+// TODO: Use GDS's `useControlled` when the `OnChangeArgs` generic is added
+function useControlled<T, OnChangeValue extends T = T, OnChangeArgs extends any[] = []>(
+  controlledValue: T | undefined,
+  defaultValue: T,
+  onChange?: (value: OnChangeValue, ...args: OnChangeArgs) => void,
+) {
+  const [uncontrolledValue, setUncontrolledValue] = useState(
+    controlledValue !== undefined ? controlledValue : defaultValue,
+  )
+  const value = controlledValue !== undefined ? controlledValue : uncontrolledValue
+  const setValue = (newValue: OnChangeValue, ...args: OnChangeArgs) => {
+    if (newValue === value) return
+    onChange?.(newValue, ...args)
+    if (controlledValue === undefined) {
+      setUncontrolledValue(newValue)
+    }
+  }
+  return [value, setValue] as const
+}
+
 declare namespace NavigationItemProps {
   interface BaseProps {
     title: string
     icon?: ReactNode
     selected?: boolean | 'partially'
+    expanded?: boolean
+    onExpandedChange?: (expanded: boolean, manual: boolean) => void
   }
   type OmittedButtonOrLinkProps = 'title' | 'selected'
   interface ButtonProps extends BaseProps, Omit<ButtonOrLinkProps.ButtonProps, OmittedButtonOrLinkProps> {}
@@ -55,6 +77,8 @@ export const NavigationItem = ({
   title,
   icon,
   selected,
+  expanded: controlledExpanded,
+  onExpandedChange,
   onClick,
   className,
   children,
@@ -62,7 +86,7 @@ export const NavigationItem = ({
 }: NavigationItemProps) => {
   const navigationListContext = useContext(NavigationListContext)
   const depth = navigationListContext?.depth ?? 0
-  const [expandedIfChildren, setExpanded] = useState(false)
+  const [expandedIfChildren, setExpanded] = useControlled(controlledExpanded, false, onExpandedChange)
   const expanded = children ? expandedIfChildren : false
 
   return (
@@ -85,7 +109,7 @@ export const NavigationItem = ({
         <ButtonOrLink
           selected={selected === true}
           onClick={(event: MouseEvent<HTMLButtonElement & HTMLAnchorElement>) => {
-            setExpanded(true)
+            setExpanded(true, false)
             onClick?.(event)
           }}
           className={`
@@ -140,7 +164,7 @@ export const NavigationItem = ({
             variant="naked"
             size="xsmall"
             aria-expanded={expanded}
-            onClick={() => setExpanded((expanded) => !expanded)}
+            onClick={() => setExpanded(!expanded, true)}
           >
             <CaretDown
               alt={expanded ? 'Collapse' : 'Expand'}
@@ -160,12 +184,12 @@ export const NavigationItem = ({
             duration={300}
             mode="exit-enter"
             className={`
-              not-safari:group-data-[depth=1]/navigation-list:[--gds-transition-enter-translate-x:-16px]
-              not-safari:group-data-[depth=1]/navigation-list:[--gds-transition-exit-translate-x:-16px]
+              group-data-[depth=1]/navigation-list:[--gds-transition-enter-translate-x:-16px]
+              group-data-[depth=1]/navigation-list:[--gds-transition-exit-translate-x:-16px]
               not-in-group-data-[depth=1]/navigation-list:[--gds-transition-enter-opacity:1]
               not-in-group-data-[depth=1]/navigation-list:[--gds-transition-exit-opacity:1]
-              rtl:not-safari:group-data-[depth=1]/navigation-list:[--gds-transition-enter-translate-x:16px]
-              rtl:not-safari:group-data-[depth=1]/navigation-list:[--gds-transition-exit-translate-x:16px]
+              rtl:group-data-[depth=1]/navigation-list:[--gds-transition-enter-translate-x:16px]
+              rtl:group-data-[depth=1]/navigation-list:[--gds-transition-exit-translate-x:16px]
             `}
           >
             <NavigationList
@@ -190,9 +214,7 @@ export const NavigationItem = ({
                 data-expanded={expanded || undefined}
                 className={`
                   absolute -top-2 start-0 z-10 aspect-square w-full origin-[start] bg-space-1800 fill-none stroke-space-1500 transition duration-150
-                  safari:delay-150
                   not-data-[expanded]:opacity-0
-                  not-data-[expanded]:safari:delay-0
                   rtl:-scale-x-100
                 `}
               >
@@ -232,9 +254,7 @@ export const NavigationItem = ({
                 data-expanded={expanded || undefined}
                 className={`
                   absolute -bottom-2 start-0 aspect-square w-full origin-[start] bg-space-1800 fill-none stroke-space-1500 transition duration-150
-                  safari:delay-150
                   not-data-[expanded]:opacity-0
-                  not-data-[expanded]:safari:delay-0
                   nearest-group-[:has(ul:not(:scope_ul_*,[inert]_*)>li:last-child[data-expanded])]/navigation-item:opacity-0
                   nearest-group-[:has(ul:not(:scope_ul_*,[inert]_*)>li:last-child[data-expanded])]/navigation-item:delay-150
                   @style-[--docs-navigation-item-last=1]:opacity-0
diff --git a/website/src/components/Table.tsx b/website/src/components/Table.tsx
index 9dc58e45065c..ba7d0e1db812 100644
--- a/website/src/components/Table.tsx
+++ b/website/src/components/Table.tsx
@@ -31,6 +31,7 @@ export const Table = ({ className, children, variant = 'default', ...props }: Ta
           -:nested-[th,td]:py-2.5
           ${isSupportedNetworks ? '-:nested-[td]:h-16 -:nested-[td]:align-middle' : '-:nested-[td]:align-top'}
           -:nested-[th]:font-medium
+          +:nested-icon:inline-flex
           mdx-[:is(p,ul,ol):not(:last-child,:is(ul,ol)_*)]:mb-3
           mdx-[ul,ol]:gap-1
         `}
diff --git a/website/src/components/TimeIcon.tsx b/website/src/components/TimeIcon.tsx
index a7190a7050e8..c2451e2944b8 100644
--- a/website/src/components/TimeIcon.tsx
+++ b/website/src/components/TimeIcon.tsx
@@ -5,7 +5,7 @@ import { HourglassDynamic } from '@edgeandnode/gds/icons'
 
 import { useI18n } from '@/i18n'
 
-export interface TimeIconProps extends ComponentProps<'div'> {
+interface TimeIconProps extends ComponentProps<'div'> {
   variant: 'reading' | 'duration'
   minutes: number
 }
diff --git a/website/src/layout/Layout.tsx b/website/src/layout/Layout.tsx
index e1365d05dde9..5f377c84fc64 100644
--- a/website/src/layout/Layout.tsx
+++ b/website/src/layout/Layout.tsx
@@ -1,3 +1,4 @@
+import { useMap } from '@react-hookz/web'
 import merge from 'lodash/merge'
 import NextImage from 'next/image'
 import { NextSeo, type NextSeoProps } from 'next-seo'
@@ -5,7 +6,16 @@ import type { NextraThemeLayoutProps } from 'nextra'
 import { useFSRoute, useRouter } from 'nextra/hooks'
 import { MDXProvider } from 'nextra/mdx'
 import { normalizePages } from 'nextra/normalize-pages'
-import { type ComponentProps, createContext, type ReactNode, useContext, useEffect, useState } from 'react'
+import {
+  type ComponentProps,
+  createContext,
+  type ReactNode,
+  useContext,
+  useEffect,
+  useMemo,
+  useRef,
+  useState,
+} from 'react'
 
 import type { WithOptional } from '@edgeandnode/common'
 import {
@@ -47,7 +57,6 @@ import {
   DocSearch,
   Heading,
   Image,
-  type ImageProps,
   NavigationGroup,
   NavigationItem,
   Table,
@@ -67,6 +76,11 @@ const DocSearchHit = ({ hit, children }: { hit: { url: string }; children?: Reac
 export default function Layout({ pageOpts, children }: NextraThemeLayoutProps<FrontMatter>) {
   const { filePath, frontMatter, pageMap, readingTime, timestamp } = pageOpts
   const fsPath = useFSRoute()
+  const normalizedPages = normalizePages({
+    list: pageMap,
+    route: fsPath,
+  })
+  const activeRoute = normalizedPages.activePath.at(-1)?.route ?? null
   const router = useRouter()
   const { t, translations, locale } = useI18n()
   const [sidebarExpandedOnMobile, setSidebarExpandedOnMobile] = useState(false)
@@ -75,7 +89,7 @@ export default function Layout({ pageOpts, children }: NextraThemeLayoutProps<Fr
   // Collapse the sidebar on mobile when the route changes
   useEffect(() => {
     setSidebarExpandedOnMobile(false)
-  }, [router.pathname])
+  }, [activeRoute])
 
   // TODO: Create `useTailwindScreen` hook in GDS, with usage like `const screen = useTailwindScreen()` and then you can check `screen.md`, etc.
   const [mobile, setMobile] = useState(false)
@@ -87,168 +101,214 @@ export default function Layout({ pageOpts, children }: NextraThemeLayoutProps<Fr
     return () => mediaQueryList.removeEventListener('change', onChange)
   }, [])
 
-  const normalizedPages = normalizePages({
-    list: pageMap,
-    route: fsPath,
-  })
-
-  type PartialNavigationItem = WithOptional<(typeof normalizedPages.directories)[number], 'children'>
+  type PartialNavItem = WithOptional<(typeof normalizedPages.directories)[number], 'children'>
 
-  type NavigationItem = Omit<(typeof normalizedPages.directories)[number], 'children'> & {
-    children: NavigationItem[]
-    group: NavigationGroup
-    ancestors: NavigationItem[]
+  type NavItem = Omit<(typeof normalizedPages.directories)[number], 'children'> & {
+    children: NavItem[]
+    group: NavItemGroup
+    ancestors: NavItem[]
     frontMatter?: FrontMatter
   }
 
-  type NavigationGroup = {
+  type NavItemGroup = {
     title: string | undefined
     route: string | undefined
     href: string | undefined
-    items: NavigationItem[]
+    items: NavItem[]
   }
 
-  const getNavigationItemIcon = (item: NavigationItem) => {
-    const routeWithoutLocale = getRouteWithoutLocale(item.route)
-    const selected = getNavigationItemSelected(item.group.route ?? item.route)
-    if (routeWithoutLocale === '') {
-      return <House alt="" variant={selected ? 'fill' : 'regular'} />
-    }
-    if (routeWithoutLocale === '/about' || routeWithoutLocale.startsWith('/about/')) {
-      return <TheGraph alt="" />
-    }
-    if (routeWithoutLocale === '/supported-networks' || routeWithoutLocale.startsWith('/supported-networks/')) {
-      return <Stack alt="" variant={selected ? 'fill' : 'regular'} />
-    }
-    if (routeWithoutLocale === '/contracts' || routeWithoutLocale.startsWith('/contracts/')) {
-      return <Files alt="" variant={selected ? 'fill' : 'regular'} />
-    }
-    if (routeWithoutLocale === '/subgraphs' || routeWithoutLocale.startsWith('/subgraphs/')) {
-      return <Subgraph alt="" />
-    }
-    if (routeWithoutLocale === '/substreams' || routeWithoutLocale.startsWith('/substreams/')) {
-      return <Substreams alt="" />
-    }
-    if (routeWithoutLocale === '/sps' || routeWithoutLocale.startsWith('/sps/')) {
-      return <SubstreamsPoweredSubgraph alt="" />
-    }
-    if (routeWithoutLocale === '/token-api' || routeWithoutLocale.startsWith('/token-api/')) {
-      return <APIToken alt="" />
-    }
-    if (routeWithoutLocale === '/indexing' || routeWithoutLocale.startsWith('/indexing/')) {
-      return <RoleIndexer alt="" />
-    }
-    if (
-      routeWithoutLocale === '/resources' ||
-      routeWithoutLocale.startsWith('/resources/') ||
-      routeWithoutLocale === '/archived' ||
-      routeWithoutLocale.startsWith('/archived/')
-    ) {
-      return <BookOpenText alt="" variant={selected ? 'fill' : 'regular'} />
-    }
-    return null
-  }
+  const selectedNavItemRef = useRef<NavItem | null>(null)
+  const navItemExpandedByRoute = useMap<string, boolean | 'manually-expanded'>()
 
-  const getNavigationItemHref = (item: NavigationItem) => {
-    let currentItem = item
-    while (currentItem.children.length > 0 && !currentItem.withIndexPage) {
-      currentItem = currentItem.children[0]!
+  // Refresh the expansion state of nav items on load and when the route changes
+  useEffect(() => {
+    // Only keep the manually expanded items
+    for (const [route, expanded] of navItemExpandedByRoute.entries()) {
+      if (expanded !== 'manually-expanded') {
+        navItemExpandedByRoute.delete(route)
+      }
     }
-    return currentItem.route
-  }
-
-  const getRouteWithoutLocale = (route: string) => route.slice(3)
-  const activeRoute = normalizedPages.activePath.at(-1)?.route ?? null
-  let selectedItem: NavigationItem | null = null
-
-  const getNavigationItemSelected = (route: string) => {
-    if (route === activeRoute) {
-      return true
+    // Expand the selected item's ancestors and group that are not already expanded (as to not override the manually expanded states)
+    if (selectedNavItemRef.current) {
+      const routesToExpand = [
+        selectedNavItemRef.current.route,
+        ...selectedNavItemRef.current.ancestors.map((ancestor) => ancestor.route),
+        selectedNavItemRef.current.group.route,
+      ]
+      for (const route of routesToExpand) {
+        if (route === undefined) continue
+        const alreadyExpanded = navItemExpandedByRoute.get(route)
+        if (alreadyExpanded) continue
+        navItemExpandedByRoute.set(route, true)
+      }
     }
+  }, [activeRoute, navItemExpandedByRoute])
 
-    const parentRouteKey = frontMatter.parentRouteKey
-    if (parentRouteKey && getRouteWithoutLocale(route) === `/${parentRouteKey}`) {
-      return true
-    }
+  const { navItemGroups, getNavItemSelected, getNavItemExpanded, setNavItemExpanded, getNavItemIcon, getNavItemHref } =
+    useMemo(() => {
+      const getRouteWithoutLocale = (route: string) => route.slice(3)
 
-    if (
-      selectedItem &&
-      (route === selectedItem.group.route || selectedItem.ancestors.some((ancestor) => route === ancestor.route))
-    ) {
-      return 'partially'
-    }
-    return false
-  }
+      const getNavItemSelected = (route: string) => {
+        if (route === activeRoute) {
+          return true
+        }
+        const parentRouteKey = frontMatter.parentRouteKey
+        if (parentRouteKey && getRouteWithoutLocale(route) === `/${parentRouteKey}`) {
+          return true
+        }
+        if (
+          selectedNavItemRef.current &&
+          selectedNavItemRef.current.ancestors.some((ancestor) => ancestor.route === route)
+        ) {
+          return 'partially'
+        }
+        return false
+      }
+
+      const getNavItemExpanded = (route: string) => Boolean(navItemExpandedByRoute.get(route))
 
-  const navigationGroups = normalizedPages.directories.reduce<NavigationGroup[]>(
-    (groups, partialItem: PartialNavigationItem) => {
-      const itemHasChildren = Boolean(partialItem.children?.length)
-      if (partialItem.type === 'children' && !itemHasChildren) return groups
-      /**
-       * When an item of type `children` doesn't have a title set in the meta file, we want to render it without a `NavigationItem` wrapper.
-       * Unfortunately, Nextra defaults `title` to `name`, so the way to check if it's empty is to check if it's equal to `name`, which should
-       * never happen with an explicitly set `title` because it should be title case whereas `name` will always be lowercase.
-       */
-      const itemHasNoWrapper = partialItem.type === 'children' && partialItem.title === partialItem.name
-      let currentGroup = groups[groups.length - 1]
-      /**
-       * Create a new group if it's the first one, if the current item is a separator, or if the current group has some items but no title
-       * (meaning its items are rendered at the top level instead of in an expandable panel) while the current item has children and a wrapper.
-       */
-      if (
-        !currentGroup ||
-        partialItem.type === 'separator' ||
-        (currentGroup.title === undefined && currentGroup.items.length > 0 && itemHasChildren && !itemHasNoWrapper)
-      ) {
-        groups.push({
-          title: partialItem.type === 'separator' ? partialItem.title : undefined,
-          route: undefined,
-          href: undefined,
-          items: [],
-        })
+      const setNavItemExpanded = (route: string, expanded: boolean, manual?: boolean) => {
+        navItemExpandedByRoute.set(route, expanded ? (manual ? 'manually-expanded' : true) : false)
       }
-      if (partialItem.type === 'separator') return groups
-      currentGroup = groups[groups.length - 1]!
-      const item = (function getItem(
-        partialItem: PartialNavigationItem,
-        ancestors: NavigationItem[] = [],
-      ): NavigationItem {
-        const item = {
-          ...partialItem,
-          children: [] as NavigationItem[],
-          group: currentGroup,
-          ancestors,
+
+      const getNavItemIcon = (navItem: NavItem) => {
+        const routeWithoutLocale = getRouteWithoutLocale(navItem.route)
+        const selected = getNavItemSelected(navItem.group.route ?? navItem.route)
+        if (routeWithoutLocale === '') {
+          return <House alt="" variant={selected ? 'fill' : 'regular'} />
+        }
+        if (routeWithoutLocale === '/about' || routeWithoutLocale.startsWith('/about/')) {
+          return <TheGraph alt="" />
         }
-        if (partialItem.children) {
-          item.children = partialItem.children.map((child) => getItem(child, [...ancestors, item]))
+        if (routeWithoutLocale === '/supported-networks' || routeWithoutLocale.startsWith('/supported-networks/')) {
+          return <Stack alt="" variant={selected ? 'fill' : 'regular'} />
         }
-        if (item.route === activeRoute) {
-          selectedItem = item
+        if (routeWithoutLocale === '/contracts' || routeWithoutLocale.startsWith('/contracts/')) {
+          return <Files alt="" variant={selected ? 'fill' : 'regular'} />
         }
-        return item
-      })(partialItem)
-      if (currentGroup.title === undefined && currentGroup.items.length === 0 && itemHasChildren && !itemHasNoWrapper) {
-        /**
-         * If the group has no title and the first item we want to add to it has children and a wrapper, give the item's title, route,
-         * href (if different from the first child's), and children to the group, instead of adding the item itself.
-         */
-        currentGroup.title = item.title
-        currentGroup.route = item.route
-        const href = getNavigationItemHref(item)
-        const firstChildHref = getNavigationItemHref(item.children[0]!)
-        currentGroup.href = href !== firstChildHref ? href : undefined
-        currentGroup.items.push(...item.children)
-      } else if (itemHasNoWrapper) {
-        // Otherwise, if the first or next item to add to the group has no wrapper, just add its children to it
-        currentGroup.items.push(...item.children)
-      } else {
-        // Otherwise, add the item (which may or may not have children) to the group
-        currentGroup.items.push(item)
+        if (routeWithoutLocale === '/subgraphs' || routeWithoutLocale.startsWith('/subgraphs/')) {
+          return <Subgraph alt="" />
+        }
+        if (routeWithoutLocale === '/substreams' || routeWithoutLocale.startsWith('/substreams/')) {
+          return <Substreams alt="" />
+        }
+        if (routeWithoutLocale === '/sps' || routeWithoutLocale.startsWith('/sps/')) {
+          return <SubstreamsPoweredSubgraph alt="" />
+        }
+        if (routeWithoutLocale === '/token-api' || routeWithoutLocale.startsWith('/token-api/')) {
+          return <APIToken alt="" />
+        }
+        if (routeWithoutLocale === '/indexing' || routeWithoutLocale.startsWith('/indexing/')) {
+          return <RoleIndexer alt="" />
+        }
+        if (
+          routeWithoutLocale === '/resources' ||
+          routeWithoutLocale.startsWith('/resources/') ||
+          routeWithoutLocale === '/archived' ||
+          routeWithoutLocale.startsWith('/archived/')
+        ) {
+          return <BookOpenText alt="" variant={selected ? 'fill' : 'regular'} />
+        }
+        return null
       }
-      return groups
-    },
-    [],
-  )
+
+      const getNavItemHref = (navItem: NavItem) => {
+        let currentNavItem = navItem
+        while (currentNavItem.children.length > 0 && !currentNavItem.withIndexPage) {
+          currentNavItem = currentNavItem.children[0]!
+        }
+        return currentNavItem.route
+      }
+
+      const navItemGroups = normalizedPages.directories.reduce<NavItemGroup[]>(
+        (groups, partialNavItem: PartialNavItem) => {
+          const navItemHasChildren = Boolean(partialNavItem.children?.length)
+          if (partialNavItem.type === 'children' && !navItemHasChildren) return groups
+
+          /**
+           * When an item of type `children` doesn't have a title set in the meta file, we want to render it without a `NavigationItem` wrapper.
+           * Unfortunately, Nextra defaults `title` to `name`, so the way to check if it's empty is to check if it's equal to `name`, which should
+           * never happen with an explicitly set `title` because it should be title case whereas `name` will always be lowercase.
+           */
+          const navItemHasNoWrapper = partialNavItem.type === 'children' && partialNavItem.title === partialNavItem.name
+          let currentGroup = groups[groups.length - 1]
+
+          /**
+           * Create a new group if it's the first one, if the current item is a separator, or if the current group has some items but no title
+           * (meaning its items are rendered at the top level instead of in an expandable panel) while the current item has children and a wrapper.
+           */
+          if (
+            !currentGroup ||
+            partialNavItem.type === 'separator' ||
+            (currentGroup.title === undefined &&
+              currentGroup.items.length > 0 &&
+              navItemHasChildren &&
+              !navItemHasNoWrapper)
+          ) {
+            groups.push({
+              title: partialNavItem.type === 'separator' ? partialNavItem.title : undefined,
+              route: undefined,
+              href: undefined,
+              items: [],
+            })
+          }
+
+          if (partialNavItem.type === 'separator') return groups
+          currentGroup = groups[groups.length - 1]!
+
+          const getNavItem = (partialNavItem: PartialNavItem, ancestors: NavItem[] = []) => {
+            const navItem: NavItem = {
+              ...partialNavItem,
+              children: [] as NavItem[],
+              group: currentGroup,
+              ancestors,
+            }
+            if (partialNavItem.children) {
+              navItem.children = partialNavItem.children.map((child) => getNavItem(child, [...ancestors, navItem]))
+            }
+            if (navItem.route === activeRoute) {
+              selectedNavItemRef.current = navItem
+            }
+            return navItem
+          }
+          const navItem = getNavItem(partialNavItem)
+
+          /**
+           * If the group has no title and the first item we want to add to it has children and a wrapper, give the item's title, route,
+           * href (if different from the first child's), and children to the group, instead of adding the item itself.
+           */
+          if (
+            currentGroup.title === undefined &&
+            currentGroup.items.length === 0 &&
+            navItemHasChildren &&
+            !navItemHasNoWrapper
+          ) {
+            currentGroup.title = navItem.title
+            currentGroup.route = navItem.route
+            const href = getNavItemHref(navItem)
+            currentGroup.href = href !== getNavItemHref(navItem.children[0]!) ? href : undefined
+            currentGroup.items.push(...navItem.children)
+          } else if (navItemHasNoWrapper) {
+            // Otherwise, if the first or next item to add to the group has no wrapper, just add its children to it
+            currentGroup.items.push(...navItem.children)
+          } else {
+            // Otherwise, add the item (which may or may not have children) to the group
+            currentGroup.items.push(navItem)
+          }
+          return groups
+        },
+        [],
+      )
+
+      return {
+        navItemGroups,
+        getNavItemSelected,
+        getNavItemExpanded,
+        setNavItemExpanded,
+        getNavItemIcon,
+        getNavItemHref,
+      }
+    }, [normalizedPages.directories, activeRoute, frontMatter.parentRouteKey, navItemExpandedByRoute])
 
   const socialImage =
     frontMatter.socialImage ??
@@ -283,6 +343,7 @@ export default function Layout({ pageOpts, children }: NextraThemeLayoutProps<Fr
         lastUpdated: timestamp ? new Date(timestamp) : null,
         readingTime: readingTime && readingTime.minutes > 1 ? readingTime : null,
         remotePageUrl: frontMatter.remotePageUrl || null,
+        // TODO: Replace the following by a more cleaned up `navigation` object
         flatDocsDirectories: normalizedPages.flatDocsDirectories,
         activeIndex: normalizedPages.activeIndex,
         activePath: normalizedPages.activePath,
@@ -476,27 +537,24 @@ export default function Layout({ pageOpts, children }: NextraThemeLayoutProps<Fr
               `}
             >
               <div className="gradient-mask-y h-full overflow-y-auto overflow-x-clip scrollbar-thin">
-                {/**
-                 * TODOs about the navigation system:
-                 * - Auto-expand the current item's ancestors on load and when the route changes
-                 * - Remember which groups/items are expanded at every level, so that closing and re-expanding an ancestor doesn't affect its children's state
-                 * - Remember if groups/items were manually expanded (with the caret) or auto-expanded (either by clicking on its title or by navigating to it
-                 *   or one of its children), then auto-close those that were auto-expanded when the user navigates to a different group/item
-                 */}
-                {navigationGroups.map((group, groupIndex) => {
+                {navItemGroups.map((group, groupIndex) => {
                   if (group.items.length === 0) {
                     return null
                   }
                   const groupContent = group.items.map((groupItem) =>
-                    (function renderItem(item: typeof groupItem) {
+                    (function renderNavItem(navItem) {
                       return (
                         <NavigationItem
-                          key={item.name}
-                          title={item.title}
-                          icon={getNavigationItemIcon(item)}
-                          href={getNavigationItemHref(item)}
-                          selected={getNavigationItemSelected(item.route)}
-                          children={item.children.length > 0 ? <>{item.children.map(renderItem)}</> : undefined}
+                          key={navItem.name}
+                          title={navItem.title}
+                          icon={getNavItemIcon(navItem)}
+                          href={getNavItemHref(navItem)}
+                          selected={getNavItemSelected(navItem.route)}
+                          expanded={getNavItemExpanded(navItem.route)}
+                          onExpandedChange={(expanded, manual) => setNavItemExpanded(navItem.route, expanded, manual)}
+                          children={
+                            navItem.children.length > 0 ? <>{navItem.children.map(renderNavItem)}</> : undefined
+                          }
                         />
                       )
                     })(groupItem),
@@ -506,9 +564,15 @@ export default function Layout({ pageOpts, children }: NextraThemeLayoutProps<Fr
                       {group.title !== undefined ? (
                         <NavigationItem
                           title={group.title}
-                          icon={getNavigationItemIcon(group.items[0]!)}
-                          href={group.href ?? getNavigationItemHref(group.items[0]!)}
-                          selected={group.route ? getNavigationItemSelected(group.route) : undefined}
+                          icon={getNavItemIcon(group.items[0]!)}
+                          href={group.href ?? getNavItemHref(group.items[0]!)}
+                          selected={group.route ? getNavItemSelected(group.route) : undefined}
+                          expanded={group.route ? getNavItemExpanded(group.route) : undefined}
+                          onExpandedChange={
+                            group.route
+                              ? (expanded, manual) => setNavItemExpanded(group.route!, expanded, manual)
+                              : undefined
+                          }
                         >
                           {groupContent}
                         </NavigationItem>
@@ -622,12 +686,19 @@ function LinkWrapper({ children, ...props }: ComponentProps<'a'>) {
   return <ExperimentalLink {...(props as ExperimentalLinkProps.ExternalLinkProps)}>{children}</ExperimentalLink>
 }
 
-function ImageWrapper({ src: passedSrc, className, ...props }: ImageProps) {
+interface ImageWrapperProps extends Omit<ComponentProps<'img'>, 'src'> {
+  src?: ComponentProps<typeof NextImage>['src']
+  placeholder?: ComponentProps<typeof NextImage>['placeholder']
+}
+
+function ImageWrapper({ src: passedSrc, placeholder: _placeholder, className, ...props }: ImageWrapperProps) {
   const linkContext = useContext(LinkContext)
+  const src =
+    typeof passedSrc === 'object' ? ('default' in passedSrc ? passedSrc.default.src : passedSrc.src) : passedSrc
+
   if (linkContext || 'data-inline-image' in props) {
-    const src =
-      typeof passedSrc === 'object' ? ('default' in passedSrc ? passedSrc.default.src : passedSrc.src) : passedSrc
     return <img src={src} alt="" className={classNames(['inline-block', className])} {...props} />
   }
-  return <Image src={passedSrc} className={className} {...props} />
+
+  return <Image src={src} className={className} {...props} />
 }
diff --git a/website/src/layout/shared.ts b/website/src/layout/shared.ts
index a398269ffe98..2847ca9b5a03 100644
--- a/website/src/layout/shared.ts
+++ b/website/src/layout/shared.ts
@@ -34,7 +34,6 @@ export type LayoutContextProps = {
   lastUpdated: Date | null
   readingTime: ReadingTime | null
   remotePageUrl: string | null
-  // TODO: Replace the following by a more cleaned up `navigation` object
   flatDocsDirectories: ReturnType<typeof normalizePages>['flatDocsDirectories']
   activeIndex: ReturnType<typeof normalizePages>['activeIndex']
   activePath: ReturnType<typeof normalizePages>['activePath']
diff --git a/packages/rehype-unwrap-images/index.js b/website/src/mdxPlugins/rehypeUnwrapImages.ts
similarity index 63%
rename from packages/rehype-unwrap-images/index.js
rename to website/src/mdxPlugins/rehypeUnwrapImages.ts
index b0161dc814df..35ee859ab8f4 100644
--- a/packages/rehype-unwrap-images/index.js
+++ b/website/src/mdxPlugins/rehypeUnwrapImages.ts
@@ -1,12 +1,19 @@
-/**
- * @import {Root} from 'hast'
- */
-
+import type { Element, Node, Root } from 'hast'
 import { whitespace } from 'hast-util-whitespace'
+import type { MdxJsxFlowElement, MdxJsxTextElement } from 'mdast-util-mdx-jsx'
 import { SKIP, visit } from 'unist-util-visit'
 
-const isImage = (node) =>
-  (node.type === 'element' && node.tagName === 'img') || (node.type === 'mdxJsxFlowElement' && node.name === 'img')
+function isElement(node: Node): node is Element {
+  return node.type === 'element'
+}
+
+function isMdxElement(node: Node): node is MdxJsxFlowElement | MdxJsxTextElement {
+  return node.type === 'mdxJsxFlowElement' || node.type === 'mdxJsxTextElement'
+}
+
+function isImage(node: Node): boolean {
+  return (isElement(node) && node.tagName === 'img') || (isMdxElement(node) && node.name === 'img')
+}
 
 /**
  * This plugin does two things:
@@ -14,42 +21,28 @@ const isImage = (node) =>
  * 2. Adds data attributes to help with image rendering:
  *    - `data-wrapping-image` to links that contain an image
  *    - `data-inline-image` to images that are in a paragraph with other content (text, links, etc.)
- *
- * @returns
- *   Transform.
  */
 export default function rehypeUnwrapImages() {
-  /**
-   * Transform.
-   *
-   * @param {Root} tree
-   *   Tree.
-   * @returns {undefined}
-   *   Nothing.
-   */
-  return function (tree) {
+  return function (tree: Root) {
     visit(tree, 'element', function (node, index, parent) {
-      if (node.tagName === 'p' && parent && typeof index === 'number') {
+      if (node.tagName === 'p' && typeof index === 'number' && parent) {
         // First pass: check if the paragraph contains any non-image content
         const hasNonImageContent = node.children.some((child) => {
           if (child.type === 'text') {
             return !whitespace(child.value)
-          } else {
-            return !isImage(child)
           }
+          return !isImage(child)
         })
 
         // Second pass: add data attributes
         node.children.forEach((child) => {
           if (child.type === 'element' && child.tagName === 'a' && child.children.some(isImage)) {
-            child.properties = child.properties || {}
             child.properties['data-wrapping-image'] = true
           } else if (isImage(child) && hasNonImageContent) {
-            if (child.type === 'mdxJsxFlowElement') {
-              child.attributes = child.attributes || []
-              child.attributes.push({ type: 'mdxJsxAttribute', name: 'data-inline-image', value: true })
-            } else {
-              child.properties = child.properties || {}
+            // See https://github.com/rehypejs/rehype-unwrap-images/pull/1
+            if (isMdxElement(child)) {
+              child.attributes.push({ type: 'mdxJsxAttribute', name: 'data-inline-image', value: 'true' })
+            } else if (child.type === 'element') {
               child.properties['data-inline-image'] = true
             }
           }
diff --git a/packages/remark-callouts/index.js b/website/src/mdxPlugins/remarkCallouts.ts
similarity index 71%
rename from packages/remark-callouts/index.js
rename to website/src/mdxPlugins/remarkCallouts.ts
index dbeff40f64cc..b7d4b628fac4 100644
--- a/packages/remark-callouts/index.js
+++ b/website/src/mdxPlugins/remarkCallouts.ts
@@ -1,24 +1,21 @@
+import type { Root } from 'mdast'
 import { visit } from 'unist-util-visit'
 
+import 'mdast-util-to-hast'
+
 export default function remarkCallouts() {
-  return (tree) => {
+  return (tree: Root) => {
     visit(tree, 'blockquote', (node) => {
-      if (
-        node.children &&
-        node.children.length > 0 &&
-        node.children[0].type === 'paragraph' &&
-        node.children[0].children &&
-        node.children[0].children.length > 0 &&
-        node.children[0].children[0].type === 'text'
-      ) {
-        const firstText = node.children[0].children[0]
+      const firstChild = node.children[0]
+      if (firstChild?.type === 'paragraph' && firstChild.children[0]?.type === 'text') {
+        const firstText = firstChild.children[0]
         // Look for a callout marker like [!NOTE] or [!WARNING]
         const calloutRegex = /^\s*\[!([a-zA-Z]+)\]\s*(.*)/
         const match = calloutRegex.exec(firstText.value)
-        if (match) {
+        if (match?.[1]) {
           // Extract the callout type (e.g., "note") and remove the marker from the text
           const calloutType = match[1].toLowerCase()
-          firstText.value = match[2]
+          firstText.value = match[2] ?? ''
 
           // Attach the callout type as a data attribute
           node.data = node.data || {}
diff --git a/website/src/mdxPlugins/remarkTransformRemoteDocs.ts b/website/src/mdxPlugins/remarkTransformRemoteDocs.ts
new file mode 100644
index 000000000000..8dcc9bd19401
--- /dev/null
+++ b/website/src/mdxPlugins/remarkTransformRemoteDocs.ts
@@ -0,0 +1,61 @@
+import type { Heading, Link, Root, Yaml } from 'mdast'
+import path from 'node:path'
+import { EXIT, visit } from 'unist-util-visit'
+import type { VFile } from 'vfile'
+
+import { ENGLISH_PAGES_DIRECTORY, REMOTE_DOCS_REPOS } from '../remoteDocs'
+
+const EXTERNAL_LINK_REGEX = /^(https?:)?\/\//
+
+export default function remarkTransformRemoteDocs() {
+  return (tree: Root, file: VFile) => {
+    // Only continue if the current file may have been fetched from one of the remote docs repos
+    const filePath = file.history[0]
+    if (!filePath) return
+    const docsAbsolutePath = `/${path.relative(ENGLISH_PAGES_DIRECTORY, filePath)}`
+    const repo = REMOTE_DOCS_REPOS.find((repo) => docsAbsolutePath.startsWith(repo.basePath))
+    if (!repo) return
+    const docsRelativePath = docsAbsolutePath.substring(repo.basePath.length)
+
+    // Rewrite relative links to ensure they work
+    visit(tree, 'link', (node: Link) => {
+      // Handle links that go up one or more directories, e.g. (foo)[../bar]
+      if (node.url.startsWith('../')) {
+        // Count how many levels up we're trying to go by counting leading `..` segments
+        const upCount = node.url.split('/').findIndex((segment) => segment !== '..')
+        // Count how many levels up we're allowed to go while staying in the docs
+        const maxUpCount = docsRelativePath.split('/').filter(Boolean).length - 1
+        if (upCount > maxUpCount) {
+          // Going up beyond our docs root, transform to GitHub URL
+          node.url = `https://github.com/${path.join(
+            `${repo.user}/${repo.name}/tree/${repo.branch}/${repo.docsPath}${path.dirname(docsRelativePath)}`,
+            node.url,
+          )}`
+          return
+        }
+      }
+      // Stop here if the link is external (including if rewritten from above), internal but absolute, or an anchor on the current page
+      if (EXTERNAL_LINK_REGEX.test(node.url) || node.url.startsWith('/') || node.url.startsWith('#')) {
+        return
+      }
+      // Handle other links that are relative to the current path (e.g. (foo)[bar], (foo)[./bar], or even (foo)[../bar] if still within the docs)
+      node.url = path.join(repo.basePath, path.dirname(docsRelativePath), node.url)
+    })
+
+    // Replace h1 with YAML frontmatter
+    visit(tree, { type: 'heading', depth: 1 }, (node: Heading) => {
+      const firstChild = node.children[0]
+      if (!firstChild || !('value' in firstChild)) return
+      const yamlNode = node as unknown as Yaml
+      yamlNode.type = 'yaml'
+      yamlNode.value = `title: "${firstChild.value}"
+remotePageUrl: https://github.com/${repo.user}/${repo.name}/tree/${repo.branch}/${repo.docsPath}${docsRelativePath}`
+      // @ts-expect-error: Removing heading properties when converting to YAML
+      delete yamlNode.depth
+      // @ts-expect-error: Removing heading properties when converting to YAML
+      delete yamlNode.children
+      delete yamlNode.position
+      return EXIT // stop traversing in case there are other h1 nodes
+    })
+  }
+}
diff --git a/website/src/pages/ar/archived/arbitrum/arbitrum-faq.mdx b/website/src/pages/ar/archived/arbitrum/arbitrum-faq.mdx
index e1dbbea03383..3ba1bf36fb9d 100644
--- a/website/src/pages/ar/archived/arbitrum/arbitrum-faq.mdx
+++ b/website/src/pages/ar/archived/arbitrum/arbitrum-faq.mdx
@@ -25,7 +25,6 @@ The Graph’s billing system accepts GRT on Arbitrum, and users will need ETH on
 Consequently, to pay for queries, you need GRT on Arbitrum. Here are a few different ways to achieve this:
 
 - If you already have GRT on Ethereum, you can bridge it to Arbitrum. You can do this via the GRT bridging option provided in Subgraph Studio or by using one of the following bridges:
-
   - [The Arbitrum Bridge](https://bridge.arbitrum.io/?l2ChainId=42161)
   - [TransferTo](https://transferto.xyz/swap)
 
diff --git a/website/src/pages/ar/indexing/overview.mdx b/website/src/pages/ar/indexing/overview.mdx
index 50faf9406a27..d60ccaa0d9a6 100644
--- a/website/src/pages/ar/indexing/overview.mdx
+++ b/website/src/pages/ar/indexing/overview.mdx
@@ -680,13 +680,11 @@ graph indexer actions execute approve
 Note that supported action types for allocation management have different input requirements:
 
 - `Allocate` - allocate stake to a specific Subgraph deployment
-
   - required action params:
     - deploymentID
     - amount
 
 - `Unallocate` - close allocation, freeing up the stake to reallocate elsewhere
-
   - required action params:
     - allocationID
     - deploymentID
@@ -695,7 +693,6 @@ Note that supported action types for allocation management have different input
     - force (forces using the provided POI even if it doesn’t match what the graph-node provides)
 
 - `Reallocate` - atomically close allocation and open a fresh allocation for the same Subgraph deployment
-
   - required action params:
     - allocationID
     - deploymentID
diff --git a/website/src/pages/ar/indexing/tap.mdx b/website/src/pages/ar/indexing/tap.mdx
index e7085e5680bb..4a5ca8013ecc 100644
--- a/website/src/pages/ar/indexing/tap.mdx
+++ b/website/src/pages/ar/indexing/tap.mdx
@@ -38,7 +38,6 @@ As long as you run `tap-agent` and `indexer-agent`, everything will be executed
 3. `indexer-agent` takes all the last RAVS and sends redeem requests to the blockchain, which will update the value of `redeem_at`.
 
 4. During the `<finality-time>` period, `indexer-agent` monitors if the blockchain has any reorganizations that revert the transaction.
-
    - If it was reverted, the RAV is resent to the blockchain. If it was not reverted, it gets marked as `final`.
 
 ## Blockchain Addresses
@@ -77,17 +76,14 @@ The required software version can be found [here](https://github.com/graphprotoc
 ### Steps
 
 1. **Indexer Agent**
-
    - Follow the [same process](https://github.com/graphprotocol/indexer/pkgs/container/indexer-agent#graph-protocol-indexer-components).
    - Give the new argument `--tap-subgraph-endpoint` to activate the new GraphTally codepaths and enable redeeming of RAVs.
 
 2. **Indexer Service**
-
    - Fully replace your current configuration with the [new Indexer Service rs](https://github.com/graphprotocol/indexer-rs). It's recommend that you use the [container image](https://github.com/orgs/graphprotocol/packages?repo_name=indexer-rs).
    - Like the older version, you can scale Indexer Service horizontally easily. It is still stateless.
 
 3. **TAP Agent**
-
    - Run _one_ single instance of [TAP Agent](https://github.com/graphprotocol/indexer-rs) at all times. It's recommend that you use the [container image](https://github.com/orgs/graphprotocol/packages?repo_name=indexer-rs).
 
 4. **Configure Indexer Service and TAP Agent**
diff --git a/website/src/pages/ar/resources/glossary.mdx b/website/src/pages/ar/resources/glossary.mdx
index d456a94f63ab..7287d4aacff6 100644
--- a/website/src/pages/ar/resources/glossary.mdx
+++ b/website/src/pages/ar/resources/glossary.mdx
@@ -15,7 +15,6 @@ title: قائمة المصطلحات
 - **Indexer**: Network participants that run indexing nodes to index data from blockchains and serve GraphQL queries.
 
 - **Indexer Revenue Streams**: Indexers are rewarded in GRT with two components: query fee rebates and indexing rewards.
-
   1. **Query Fee Rebates**: Payments from Subgraph consumers for serving queries on the network.
 
   2. **Indexing Rewards**: The rewards that Indexers receive for indexing Subgraphs. Indexing rewards are generated via new issuance of 3% GRT annually.
@@ -43,7 +42,6 @@ title: قائمة المصطلحات
 - **Epoch**: A unit of time within the network. Currently, one epoch is 6,646 blocks or approximately 1 day.
 
 - **Allocation**: An Indexer can allocate their total GRT stake (including Delegators' stake) towards Subgraphs that have been published on The Graph's decentralized network. Allocations can have different statuses:
-
   1. **Active**: An allocation is considered active when it is created onchain. This is called opening an allocation, and indicates to the network that the Indexer is actively indexing and serving queries for a particular Subgraph. Active allocations accrue indexing rewards proportional to the signal on the Subgraph, and the amount of GRT allocated.
 
   2. **Closed**: An Indexer may claim the accrued indexing rewards on a given Subgraph by submitting a recent, and valid, Proof of Indexing (POI). This is known as closing an allocation. An allocation must have been open for a minimum of one epoch before it can be closed. The maximum allocation period is 28 epochs. If an Indexer leaves an allocation open beyond 28 epochs, it is known as a stale allocation. When an allocation is in the **Closed** state, a Fisherman can still open a dispute to challenge an Indexer for serving false data.
diff --git a/website/src/pages/ar/resources/roles/delegating/undelegating.mdx b/website/src/pages/ar/resources/roles/delegating/undelegating.mdx
index 274fd08e0269..4889d7370407 100644
--- a/website/src/pages/ar/resources/roles/delegating/undelegating.mdx
+++ b/website/src/pages/ar/resources/roles/delegating/undelegating.mdx
@@ -13,13 +13,11 @@ Learn how to withdraw your delegated tokens through [Graph Explorer](https://the
 1. Visit [Graph Explorer](https://thegraph.com/explorer). Please make sure you're on Explorer and **not** Subgraph Studio.
 
 2. Click on your profile. You can find it on the top right corner of the page.
-
    - Make sure that your wallet is connected. If it's not connected, you will see the "connect" button instead.
 
 3. Once you're in your profile, click on the Delegating tab. In the Delegating tab, you can view the list of Indexers you have delegated to.
 
 4. Click on the Indexer from which you wish to withdraw your tokens.
-
    - Make sure to note the specific Indexer, as you will need to find them again to withdraw.
 
 5. Select the "Undelegate" option by clicking on the three dots next to the Indexer on the right side, see image below:
@@ -37,11 +35,9 @@ Learn how to withdraw your delegated tokens through [Graph Explorer](https://the
 ### Step-by-Step
 
 1. Find your delegation transaction on Arbiscan.
-
    - Here's an [example transaction on Arbiscan](https://arbiscan.io/tx/0xcf2110eac897099f821064445041031efb32786392bdbe7544a4cb7a6b2e4f9a)
 
 2. Navigate to "Transaction Action" where you can find the staking extension contract:
-
    - [This is the staking extension contract for the example listed above](https://arbiscan.io/address/0x00669A4CF01450B64E8A2A20E9b1FCB71E61eF03)
 
 3. Then click on "Contract". ![Contract tab on Arbiscan, between NFT Transfers and Events](/img/arbiscan-contract.png)
@@ -59,7 +55,6 @@ Learn how to withdraw your delegated tokens through [Graph Explorer](https://the
 9. If you don't know how many tokens you delegated, you can call `getDelegation` on the Read Custom tab. You will need to paste your address (delegator address) and the address of the Indexer that you delegated to, as shown in the following screenshot:
 
    ![Both of the addresses needed](/img/get-delegate.png)
-
    - This will return three numbers. The first number is the amount you can unstake.
 
 10. After you have called `unstake`, you can withdraw after approximately 28 epochs (28 days) by calling the `withdraw` function.
diff --git a/website/src/pages/ar/subgraphs/best-practices/grafting-hotfix.mdx b/website/src/pages/ar/subgraphs/best-practices/grafting-hotfix.mdx
index d8de3e7a1fa2..a26667e114cb 100644
--- a/website/src/pages/ar/subgraphs/best-practices/grafting-hotfix.mdx
+++ b/website/src/pages/ar/subgraphs/best-practices/grafting-hotfix.mdx
@@ -14,12 +14,10 @@ This feature enables quick deployment of hotfixes for critical issues, eliminati
 ## Benefits of Grafting for Hotfixes
 
 1. **Rapid Deployment**
-
    - **Minimize Downtime**: When a Subgraph encounters a critical error and stops indexing, grafting enables you to deploy a fix immediately without waiting for re-indexing.
    - **Immediate Recovery**: The new Subgraph continues from the last indexed block, ensuring that data services remain uninterrupted.
 
 2. **Data Preservation**
-
    - **Reuse Historical Data**: Grafting copies the existing data from the base Subgraph, so you don’t lose valuable historical records.
    - **Consistency**: Maintains data continuity, which is crucial for applications relying on consistent historical data.
 
@@ -30,19 +28,16 @@ This feature enables quick deployment of hotfixes for critical issues, eliminati
 ## Best Practices When Using Grafting for Hotfixes
 
 1. **Initial Deployment Without Grafting**
-
    - **Start Clean**: Always deploy your initial Subgraph without grafting to ensure that it’s stable and functions as expected.
    - **Test Thoroughly**: Validate the Subgraph’s performance to minimize the need for future hotfixes.
 
 2. **Implementing the Hotfix with Grafting**
-
    - **Identify the Issue**: When a critical error occurs, determine the block number of the last successfully indexed event.
    - **Create a New Subgraph**: Develop a new Subgraph that includes the hotfix.
    - **Configure Grafting**: Use grafting to copy data up to the identified block number from the failed Subgraph.
    - **Deploy Quickly**: Publish the grafted Subgraph to restore service as soon as possible.
 
 3. **Post-Hotfix Actions**
-
    - **Monitor Performance**: Ensure the grafted Subgraph is indexing correctly and the hotfix resolves the issue.
    - **Republish Without Grafting**: Once stable, deploy a new version of the Subgraph without grafting for long-term maintenance.
      > Note: Relying on grafting indefinitely is not recommended as it can complicate future updates and maintenance.
@@ -130,7 +125,6 @@ Suppose you have a Subgraph tracking a smart contract that has stopped indexing
   - **block**: Block number where grafting should begin.
 
 3. **Deployment Steps**
-
    - **Update the Code**: Implement the hotfix in your mapping scripts (e.g., handleWithdrawal).
    - **Adjust the Manifest**: As shown above, update the `subgraph.yaml` with grafting configurations.
    - **Deploy the Subgraph**:
diff --git a/website/src/pages/ar/subgraphs/developing/creating/install-the-cli.mdx b/website/src/pages/ar/subgraphs/developing/creating/install-the-cli.mdx
index 81469bc1837b..618eedef134d 100644
--- a/website/src/pages/ar/subgraphs/developing/creating/install-the-cli.mdx
+++ b/website/src/pages/ar/subgraphs/developing/creating/install-the-cli.mdx
@@ -46,7 +46,6 @@ graph init \
 ```
 
 - The command tries to retrieve the contract ABI from Etherscan.
-
   - The Graph CLI relies on a public RPC endpoint. While occasional failures are expected, retries typically resolve this issue. If failures persist, consider using a local ABI.
 
 - If any of the optional arguments are missing, it guides you through an interactive form.
@@ -87,7 +86,6 @@ Options:
 The `graph add` command will fetch the ABI from Etherscan (unless an ABI path is specified with the `--abi` option) and creates a new `dataSource`, similar to how the `graph init` command creates a `dataSource` `--from-contract`, updating the schema and mappings accordingly. This allows you to index implementation contracts from their proxy contracts.
 
 - The `--merge-entities` option identifies how the developer would like to handle `entity` and `event` name conflicts:
-
   - If `true`: the new `dataSource` should use existing `eventHandlers` & `entities`.
 
   - If `false`: a new `entity` & `event` handler should be created with `${dataSourceName}{EventName}`.
diff --git a/website/src/pages/ar/subgraphs/developing/managing/deleting-a-subgraph.mdx b/website/src/pages/ar/subgraphs/developing/managing/deleting-a-subgraph.mdx
index b8c2330ca49d..f842a0e04ac4 100644
--- a/website/src/pages/ar/subgraphs/developing/managing/deleting-a-subgraph.mdx
+++ b/website/src/pages/ar/subgraphs/developing/managing/deleting-a-subgraph.mdx
@@ -17,7 +17,6 @@ Delete your Subgraph using [Subgraph Studio](https://thegraph.com/studio/).
    ![Delete-subgraph](/img/Delete-subgraph.png)
 
 4. Depending on the Subgraph's status, you will be prompted with various options.
-
    - If the Subgraph is not published, simply click “delete” and confirm.
    - If the Subgraph is published, you will need to confirm on your wallet before the Subgraph can be deleted from Studio. If a Subgraph is published to multiple networks, such as testnet and mainnet, additional steps may be required.
 
diff --git a/website/src/pages/ar/subgraphs/explorer.mdx b/website/src/pages/ar/subgraphs/explorer.mdx
index 57d7712cc383..aed2e0dd8b70 100644
--- a/website/src/pages/ar/subgraphs/explorer.mdx
+++ b/website/src/pages/ar/subgraphs/explorer.mdx
@@ -26,7 +26,6 @@ When you click into a Subgraph, you will be able to do the following:
 
 - Test queries in the playground and be able to leverage network details to make informed decisions.
 - Signal GRT on your own Subgraph or the Subgraphs of others to make indexers aware of its importance and quality.
-
   - This is critical because signaling on a Subgraph incentivizes it to be indexed, meaning it’ll eventually surface on the network to serve queries.
 
 ![Explorer Image 2](/img/Subgraph-Details.png)
diff --git a/website/src/pages/ar/subgraphs/mcp/claude.mdx b/website/src/pages/ar/subgraphs/mcp/claude.mdx
index 8b61438d2ab7..027b272cb942 100644
--- a/website/src/pages/ar/subgraphs/mcp/claude.mdx
+++ b/website/src/pages/ar/subgraphs/mcp/claude.mdx
@@ -85,7 +85,6 @@ Once you've entered your Gateway API key into your settings, save the file and r
 2. **Find the Command Path**
 
    After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory.
-
    - Navigate to your `subgraph-mcp` directory in terminal
    - Run `pwd` to get the full path
    - Combine the output with `/target/release/subgraph-mcp`
diff --git a/website/src/pages/ar/subgraphs/quick-start.mdx b/website/src/pages/ar/subgraphs/quick-start.mdx
index 9b7bf860e87d..c2e395b05bd3 100644
--- a/website/src/pages/ar/subgraphs/quick-start.mdx
+++ b/website/src/pages/ar/subgraphs/quick-start.mdx
@@ -166,11 +166,9 @@ To customize your deployment, see [Publishing a Subgraph](/subgraphs/developing/
 #### Adding signal to your Subgraph
 
 1. To attract Indexers to query your Subgraph, you should add GRT curation signal to it.
-
    - This action improves quality of service, reduces latency, and enhances network redundancy and availability for your Subgraph.
 
 2. If eligible for indexing rewards, Indexers receive GRT rewards based on the signaled amount.
-
    - It’s recommended to curate at least 3,000 GRT to attract 3 Indexers. Check reward eligibility based on Subgraph feature usage and supported networks.
 
 To learn more about curation, read [Curating](/resources/roles/curating/).
diff --git a/website/src/pages/cs/archived/arbitrum/arbitrum-faq.mdx b/website/src/pages/cs/archived/arbitrum/arbitrum-faq.mdx
index df47adfff704..8e1fa90686de 100644
--- a/website/src/pages/cs/archived/arbitrum/arbitrum-faq.mdx
+++ b/website/src/pages/cs/archived/arbitrum/arbitrum-faq.mdx
@@ -25,7 +25,6 @@ Fakturační systém Graf přijímá GRT na Arbitrum a uživatelé budou potřeb
 Abyste mohli platit za dotazy, potřebujete GRT na Arbitrum. Zde je několik různých způsobů, jak toho dosáhnout:
 
 - Pokud již máte GRT na platformě Ethereum, můžete ji přemostit na Arbitrum. Můžete tak učinit pomocí možnosti přemostění GRT, která je k dispozici v podgraf Studio, nebo pomocí jednoho z následujících přemostění:
-
   - [The Arbitrum Bridge](https://bridge.arbitrum.io/?l2ChainId=42161)
   - [TransferTo](https://transferto.xyz/swap)
 
diff --git a/website/src/pages/cs/indexing/overview.mdx b/website/src/pages/cs/indexing/overview.mdx
index 6427052cb74a..f623c99815c0 100644
--- a/website/src/pages/cs/indexing/overview.mdx
+++ b/website/src/pages/cs/indexing/overview.mdx
@@ -680,13 +680,11 @@ graph indexer actions execute approve
 Note that supported action types for allocation management have different input requirements:
 
 - `Allocate` - allocate stake to a specific Subgraph deployment
-
   - required action params:
     - deploymentID
     - amount
 
 - `Unallocate` - close allocation, freeing up the stake to reallocate elsewhere
-
   - required action params:
     - allocationID
     - deploymentID
@@ -695,7 +693,6 @@ Note that supported action types for allocation management have different input
     - force (forces using the provided POI even if it doesn’t match what the graph-node provides)
 
 - `Reallocate` - atomically close allocation and open a fresh allocation for the same Subgraph deployment
-
   - required action params:
     - allocationID
     - deploymentID
diff --git a/website/src/pages/cs/indexing/tap.mdx b/website/src/pages/cs/indexing/tap.mdx
index 6063720aca9d..a3a241754589 100644
--- a/website/src/pages/cs/indexing/tap.mdx
+++ b/website/src/pages/cs/indexing/tap.mdx
@@ -38,7 +38,6 @@ As long as you run `tap-agent` and `indexer-agent`, everything will be executed
 3. `indexer-agent` takes all the last RAVS and sends redeem requests to the blockchain, which will update the value of `redeem_at`.
 
 4. During the `<finality-time>` period, `indexer-agent` monitors if the blockchain has any reorganizations that revert the transaction.
-
    - If it was reverted, the RAV is resent to the blockchain. If it was not reverted, it gets marked as `final`.
 
 ## Blockchain Addresses
@@ -77,17 +76,14 @@ The required software version can be found [here](https://github.com/graphprotoc
 ### Steps
 
 1. **Indexer Agent**
-
    - Follow the [same process](https://github.com/graphprotocol/indexer/pkgs/container/indexer-agent#graph-protocol-indexer-components).
    - Give the new argument `--tap-subgraph-endpoint` to activate the new GraphTally codepaths and enable redeeming of RAVs.
 
 2. **Indexer Service**
-
    - Fully replace your current configuration with the [new Indexer Service rs](https://github.com/graphprotocol/indexer-rs). It's recommend that you use the [container image](https://github.com/orgs/graphprotocol/packages?repo_name=indexer-rs).
    - Like the older version, you can scale Indexer Service horizontally easily. It is still stateless.
 
 3. **TAP Agent**
-
    - Run _one_ single instance of [TAP Agent](https://github.com/graphprotocol/indexer-rs) at all times. It's recommend that you use the [container image](https://github.com/orgs/graphprotocol/packages?repo_name=indexer-rs).
 
 4. **Configure Indexer Service and TAP Agent**
diff --git a/website/src/pages/cs/resources/glossary.mdx b/website/src/pages/cs/resources/glossary.mdx
index 49fd1f60c539..e111e7e9dd1e 100644
--- a/website/src/pages/cs/resources/glossary.mdx
+++ b/website/src/pages/cs/resources/glossary.mdx
@@ -15,7 +15,6 @@ title: Glosář
 - **Indexer**: Network participants that run indexing nodes to index data from blockchains and serve GraphQL queries.
 
 - **Indexer Revenue Streams**: Indexers are rewarded in GRT with two components: query fee rebates and indexing rewards.
-
   1. **Query Fee Rebates**: Payments from Subgraph consumers for serving queries on the network.
 
   2. **Indexing Rewards**: The rewards that Indexers receive for indexing Subgraphs. Indexing rewards are generated via new issuance of 3% GRT annually.
@@ -43,7 +42,6 @@ title: Glosář
 - **Epoch**: A unit of time within the network. Currently, one epoch is 6,646 blocks or approximately 1 day.
 
 - **Allocation**: An Indexer can allocate their total GRT stake (including Delegators' stake) towards Subgraphs that have been published on The Graph's decentralized network. Allocations can have different statuses:
-
   1. **Active**: An allocation is considered active when it is created onchain. This is called opening an allocation, and indicates to the network that the Indexer is actively indexing and serving queries for a particular Subgraph. Active allocations accrue indexing rewards proportional to the signal on the Subgraph, and the amount of GRT allocated.
 
   2. **Closed**: An Indexer may claim the accrued indexing rewards on a given Subgraph by submitting a recent, and valid, Proof of Indexing (POI). This is known as closing an allocation. An allocation must have been open for a minimum of one epoch before it can be closed. The maximum allocation period is 28 epochs. If an Indexer leaves an allocation open beyond 28 epochs, it is known as a stale allocation. When an allocation is in the **Closed** state, a Fisherman can still open a dispute to challenge an Indexer for serving false data.
diff --git a/website/src/pages/cs/resources/roles/delegating/undelegating.mdx b/website/src/pages/cs/resources/roles/delegating/undelegating.mdx
index 071253821e63..c1d2ac50737b 100644
--- a/website/src/pages/cs/resources/roles/delegating/undelegating.mdx
+++ b/website/src/pages/cs/resources/roles/delegating/undelegating.mdx
@@ -13,13 +13,11 @@ Learn how to withdraw your delegated tokens through [Graph Explorer](https://the
 1. Visit [Graph Explorer](https://thegraph.com/explorer). Please make sure you're on Explorer and **not** Subgraph Studio.
 
 2. Click on your profile. You can find it on the top right corner of the page.
-
    - Make sure that your wallet is connected. If it's not connected, you will see the "connect" button instead.
 
 3. Once you're in your profile, click on the Delegating tab. In the Delegating tab, you can view the list of Indexers you have delegated to.
 
 4. Click on the Indexer from which you wish to withdraw your tokens.
-
    - Make sure to note the specific Indexer, as you will need to find them again to withdraw.
 
 5. Select the "Undelegate" option by clicking on the three dots next to the Indexer on the right side, see image below:
@@ -37,11 +35,9 @@ Learn how to withdraw your delegated tokens through [Graph Explorer](https://the
 ### Step-by-Step
 
 1. Find your delegation transaction on Arbiscan.
-
    - Here's an [example transaction on Arbiscan](https://arbiscan.io/tx/0xcf2110eac897099f821064445041031efb32786392bdbe7544a4cb7a6b2e4f9a)
 
 2. Navigate to "Transaction Action" where you can find the staking extension contract:
-
    - [This is the staking extension contract for the example listed above](https://arbiscan.io/address/0x00669A4CF01450B64E8A2A20E9b1FCB71E61eF03)
 
 3. Then click on "Contract". ![Contract tab on Arbiscan, between NFT Transfers and Events](/img/arbiscan-contract.png)
@@ -59,7 +55,6 @@ Learn how to withdraw your delegated tokens through [Graph Explorer](https://the
 9. If you don't know how many tokens you delegated, you can call `getDelegation` on the Read Custom tab. You will need to paste your address (delegator address) and the address of the Indexer that you delegated to, as shown in the following screenshot:
 
    ![Both of the addresses needed](/img/get-delegate.png)
-
    - This will return three numbers. The first number is the amount you can unstake.
 
 10. After you have called `unstake`, you can withdraw after approximately 28 epochs (28 days) by calling the `withdraw` function.
diff --git a/website/src/pages/cs/subgraphs/best-practices/grafting-hotfix.mdx b/website/src/pages/cs/subgraphs/best-practices/grafting-hotfix.mdx
index 541cf76d0f7a..722321179ea8 100644
--- a/website/src/pages/cs/subgraphs/best-practices/grafting-hotfix.mdx
+++ b/website/src/pages/cs/subgraphs/best-practices/grafting-hotfix.mdx
@@ -14,12 +14,10 @@ This feature enables quick deployment of hotfixes for critical issues, eliminati
 ## Benefits of Grafting for Hotfixes
 
 1. **Rapid Deployment**
-
    - **Minimize Downtime**: When a Subgraph encounters a critical error and stops indexing, grafting enables you to deploy a fix immediately without waiting for re-indexing.
    - **Immediate Recovery**: The new Subgraph continues from the last indexed block, ensuring that data services remain uninterrupted.
 
 2. **Data Preservation**
-
    - **Reuse Historical Data**: Grafting copies the existing data from the base Subgraph, so you don’t lose valuable historical records.
    - **Consistency**: Maintains data continuity, which is crucial for applications relying on consistent historical data.
 
@@ -30,19 +28,16 @@ This feature enables quick deployment of hotfixes for critical issues, eliminati
 ## Best Practices When Using Grafting for Hotfixes
 
 1. **Initial Deployment Without Grafting**
-
    - **Start Clean**: Always deploy your initial Subgraph without grafting to ensure that it’s stable and functions as expected.
    - **Test Thoroughly**: Validate the Subgraph’s performance to minimize the need for future hotfixes.
 
 2. **Implementing the Hotfix with Grafting**
-
    - **Identify the Issue**: When a critical error occurs, determine the block number of the last successfully indexed event.
    - **Create a New Subgraph**: Develop a new Subgraph that includes the hotfix.
    - **Configure Grafting**: Use grafting to copy data up to the identified block number from the failed Subgraph.
    - **Deploy Quickly**: Publish the grafted Subgraph to restore service as soon as possible.
 
 3. **Post-Hotfix Actions**
-
    - **Monitor Performance**: Ensure the grafted Subgraph is indexing correctly and the hotfix resolves the issue.
    - **Republish Without Grafting**: Once stable, deploy a new version of the Subgraph without grafting for long-term maintenance.
      > Note: Relying on grafting indefinitely is not recommended as it can complicate future updates and maintenance.
@@ -130,7 +125,6 @@ Suppose you have a Subgraph tracking a smart contract that has stopped indexing
   - **block**: Block number where grafting should begin.
 
 3. **Deployment Steps**
-
    - **Update the Code**: Implement the hotfix in your mapping scripts (e.g., handleWithdrawal).
    - **Adjust the Manifest**: As shown above, update the `subgraph.yaml` with grafting configurations.
    - **Deploy the Subgraph**:
diff --git a/website/src/pages/cs/subgraphs/developing/creating/install-the-cli.mdx b/website/src/pages/cs/subgraphs/developing/creating/install-the-cli.mdx
index 536b416c9465..b3017d99c11d 100644
--- a/website/src/pages/cs/subgraphs/developing/creating/install-the-cli.mdx
+++ b/website/src/pages/cs/subgraphs/developing/creating/install-the-cli.mdx
@@ -46,7 +46,6 @@ graph init \
 ```
 
 - The command tries to retrieve the contract ABI from Etherscan.
-
   - The Graph CLI relies on a public RPC endpoint. While occasional failures are expected, retries typically resolve this issue. If failures persist, consider using a local ABI.
 
 - If any of the optional arguments are missing, it guides you through an interactive form.
@@ -87,7 +86,6 @@ Options:
 The `graph add` command will fetch the ABI from Etherscan (unless an ABI path is specified with the `--abi` option) and creates a new `dataSource`, similar to how the `graph init` command creates a `dataSource` `--from-contract`, updating the schema and mappings accordingly. This allows you to index implementation contracts from their proxy contracts.
 
 - The `--merge-entities` option identifies how the developer would like to handle `entity` and `event` name conflicts:
-
   - If `true`: the new `dataSource` should use existing `eventHandlers` & `entities`.
 
   - If `false`: a new `entity` & `event` handler should be created with `${dataSourceName}{EventName}`.
diff --git a/website/src/pages/cs/subgraphs/developing/managing/deleting-a-subgraph.mdx b/website/src/pages/cs/subgraphs/developing/managing/deleting-a-subgraph.mdx
index b8c2330ca49d..f842a0e04ac4 100644
--- a/website/src/pages/cs/subgraphs/developing/managing/deleting-a-subgraph.mdx
+++ b/website/src/pages/cs/subgraphs/developing/managing/deleting-a-subgraph.mdx
@@ -17,7 +17,6 @@ Delete your Subgraph using [Subgraph Studio](https://thegraph.com/studio/).
    ![Delete-subgraph](/img/Delete-subgraph.png)
 
 4. Depending on the Subgraph's status, you will be prompted with various options.
-
    - If the Subgraph is not published, simply click “delete” and confirm.
    - If the Subgraph is published, you will need to confirm on your wallet before the Subgraph can be deleted from Studio. If a Subgraph is published to multiple networks, such as testnet and mainnet, additional steps may be required.
 
diff --git a/website/src/pages/cs/subgraphs/explorer.mdx b/website/src/pages/cs/subgraphs/explorer.mdx
index 2d918567ee9d..3a3ddf7e6d1a 100644
--- a/website/src/pages/cs/subgraphs/explorer.mdx
+++ b/website/src/pages/cs/subgraphs/explorer.mdx
@@ -26,7 +26,6 @@ When you click into a Subgraph, you will be able to do the following:
 
 - Test queries in the playground and be able to leverage network details to make informed decisions.
 - Signal GRT on your own Subgraph or the Subgraphs of others to make indexers aware of its importance and quality.
-
   - This is critical because signaling on a Subgraph incentivizes it to be indexed, meaning it’ll eventually surface on the network to serve queries.
 
 ![Explorer Image 2](/img/Subgraph-Details.png)
diff --git a/website/src/pages/cs/subgraphs/mcp/claude.mdx b/website/src/pages/cs/subgraphs/mcp/claude.mdx
index 8b61438d2ab7..027b272cb942 100644
--- a/website/src/pages/cs/subgraphs/mcp/claude.mdx
+++ b/website/src/pages/cs/subgraphs/mcp/claude.mdx
@@ -85,7 +85,6 @@ Once you've entered your Gateway API key into your settings, save the file and r
 2. **Find the Command Path**
 
    After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory.
-
    - Navigate to your `subgraph-mcp` directory in terminal
    - Run `pwd` to get the full path
    - Combine the output with `/target/release/subgraph-mcp`
diff --git a/website/src/pages/cs/subgraphs/quick-start.mdx b/website/src/pages/cs/subgraphs/quick-start.mdx
index 7c52d4745a83..a7cca7a3a267 100644
--- a/website/src/pages/cs/subgraphs/quick-start.mdx
+++ b/website/src/pages/cs/subgraphs/quick-start.mdx
@@ -166,11 +166,9 @@ To customize your deployment, see [Publishing a Subgraph](/subgraphs/developing/
 #### Adding signal to your Subgraph
 
 1. To attract Indexers to query your Subgraph, you should add GRT curation signal to it.
-
    - This action improves quality of service, reduces latency, and enhances network redundancy and availability for your Subgraph.
 
 2. If eligible for indexing rewards, Indexers receive GRT rewards based on the signaled amount.
-
    - It’s recommended to curate at least 3,000 GRT to attract 3 Indexers. Check reward eligibility based on Subgraph feature usage and supported networks.
 
 To learn more about curation, read [Curating](/resources/roles/curating/).
diff --git a/website/src/pages/de/archived/arbitrum/arbitrum-faq.mdx b/website/src/pages/de/archived/arbitrum/arbitrum-faq.mdx
index 6fa6fbe5faaf..526c02daaf5d 100644
--- a/website/src/pages/de/archived/arbitrum/arbitrum-faq.mdx
+++ b/website/src/pages/de/archived/arbitrum/arbitrum-faq.mdx
@@ -25,7 +25,6 @@ Das Abrechnungssystem von The Graph akzeptiert GRT auf Arbitrum, und die Nutzer
 Um Abfragen zu bezahlen brauchen Sie also GRT auf Arbitrum. Hier sind ein paar Möglichkeiten, dies zu erreichen:
 
 - Wenn Sie bereits GRT auf Ethereum haben, können Sie es zu Arbitrum überbrücken. Sie können dieses über GRT-Bridging-Option in Subgraph Studio tun oder eine der folgenden Bridges verwenden:
-
   - [Die Arbitrum-Brücke] (https://bridge.arbitrum.io/?l2ChainId=42161)
   - [TransferTo](https://transferto.xyz/swap)
 
diff --git a/website/src/pages/de/indexing/overview.mdx b/website/src/pages/de/indexing/overview.mdx
index 3305ea5d4b2e..37a5a5c4f21b 100644
--- a/website/src/pages/de/indexing/overview.mdx
+++ b/website/src/pages/de/indexing/overview.mdx
@@ -680,13 +680,11 @@ graph indexer actions execute approve
 Beachten Sie, dass unterstützte Aktionstypen für das Allokationsmanagement unterschiedliche Eingabeanforderungen haben:
 
 - `Allocate` - Zuweisung eines Einsatzes für einen bestimmten Einsatz von Subgraphen
-
   - erforderliche Aktionsparameter:
     - deploymentID
     - amount
 
 - `Unallocate` - Beendigung der Zuweisung, wodurch der Einsatz für eine andere Zuweisung frei wird
-
   - erforderliche Aktionsparameter:
     - allocationID
     - deploymentID
@@ -695,7 +693,6 @@ Beachten Sie, dass unterstützte Aktionstypen für das Allokationsmanagement unt
     - force (erzwingt die Verwendung des bereitgestellten POI, auch wenn es nicht mit dem übereinstimmt, was der Graph-Knoten bereitstellt)
 
 - `Reallocate` - Zuordnung atomar schließen und eine neue Zuordnung für denselben Einsatz von Subgraphen öffnen
-
   - erforderliche Aktionsparameter:
     - allocationID
     - deploymentID
diff --git a/website/src/pages/de/indexing/tap.mdx b/website/src/pages/de/indexing/tap.mdx
index a3eec839d931..488af8595bbd 100644
--- a/website/src/pages/de/indexing/tap.mdx
+++ b/website/src/pages/de/indexing/tap.mdx
@@ -38,7 +38,6 @@ Solange Sie `tap-agent` und `indexer-agent` ausführen, wird alles automatisch a
 3. `indexer-agent` nimmt alle letzten RAVS und sendet Einlöseanforderungen an die Blockchain, die den Wert von ‚redeem_at‘ aktualisiert.
 
 4. Während der `<finality-time>`-Periode überwacht der `indexer-agent`, ob es in der Blockchain irgendwelche Reorganisationen gibt, die die Transaktion rückgängig machen.
-
    - Wurde es rückgängig gemacht, wird das RAV erneut an die Blockchain gesendet. Wenn es nicht rückgängig gemacht wurde, wird es als `final` markiert.
 
 ## Blockchain-Adressen
@@ -77,17 +76,14 @@ Die erforderliche Softwareversion finden Sie [hier](https://github.com/graphprot
 ### Schritte
 
 1. **Indexer-Agent**
-
    - Folgen Sie dem [gleichen Prozess](https://github.com/graphprotocol/indexer/pkgs/container/indexer-agent#graph-protocol-indexer-components).
    - Give the new argument `--tap-subgraph-endpoint` to activate the new GraphTally codepaths and enable redeeming of RAVs.
 
 2. **Indexer-Service**
-
    - Ersetzen Sie Ihre aktuelle Konfiguration vollständig durch den [neuen Indexer-Service rs](https://github.com/graphprotocol/indexer-rs). Es wird empfohlen, dass Sie das [Containerbild](https://github.com/orgs/graphprotocol/packages?repo_name=indexer-rs) verwenden.
    - Wie bei der älteren Version können Sie den Indexer-Service problemlos horizontal skalieren. Er ist immer noch zustandslos.
 
 3. **TAP Agent**
-
    - Führen Sie immer _eine_ einzelne Instanz von [TAP Agent](https://github.com/graphprotocol/indexer-rs) aus. Es wird empfohlen, dass Sie das [Container-Image](https://github.com/orgs/graphprotocol/packages?repo_name=indexer-rs) verwenden.
 
 4. **Indexer-Service und TAP-Agent konfigurieren**
diff --git a/website/src/pages/de/resources/glossary.mdx b/website/src/pages/de/resources/glossary.mdx
index 921c1f6225ae..4fdf7f556348 100644
--- a/website/src/pages/de/resources/glossary.mdx
+++ b/website/src/pages/de/resources/glossary.mdx
@@ -15,7 +15,6 @@ title: Glossar
 - **Indexierer**: Netzwerkteilnehmer, die Indexierungsknoten betreiben, um Daten aus Blockchains zu indexieren und GraphQL-Abfragen zu bedienen.
 
 - **Einkommensströme für Indexierer**: Indexierer werden in GRT mit zwei Komponenten belohnt: Rabatte auf Abfragegebühren und Rewards für die Indizierung.
-
   1. **Abfragegebühren-Rabatte**: Zahlungen von Subgraph-Konsumenten für die Bedienung von Anfragen im Netz.
 
   2. **Indizierung-Rewards**: Die Rewards, die Indexierer für die Indizierung von Subgraphen erhalten. Indizierung-Rewards werden durch die Neuausgabe von 3% GRT jährlich generiert.
@@ -43,7 +42,6 @@ title: Glossar
 - **Epoche**: Eine Zeiteinheit innerhalb des Netzes. Derzeit entspricht eine Epoche 6.646 Blöcken oder etwa 1 Tag.
 
 - **Allocation**: An Indexer can allocate their total GRT stake (including Delegators' stake) towards Subgraphs that have been published on The Graph's decentralized network. Allocations can have different statuses:
-
   1. **Aktiv**: Eine Zuordnung gilt als aktiv, wenn sie onchain erstellt wird. Dies wird als Öffnen einer Zuordnung bezeichnet und zeigt dem Netzwerk an, dass der Indexierer aktiv indiziert und Abfragen für einen bestimmten Subgraphen bedient. Aktive Zuweisungen sammeln Rewards für die Indizierung, die proportional zum Signal auf dem Subgraphen und der Menge des zugewiesenen GRT sind.
 
   2. **Geschlossen**: Ein Indexierer kann die aufgelaufenen Rewards für einen bestimmten Subgraphen beanspruchen, indem er einen aktuellen und gültigen Proof of Indexing (POI) einreicht. Dies wird als Schließen einer Zuordnung bezeichnet. Eine Zuordnung muss mindestens eine Epoche lang offen gewesen sein, bevor sie geschlossen werden kann. Die maximale Zuordnungsdauer beträgt 28 Epochen. Lässt ein Indexierer eine Zuordnung länger als 28 Epochen offen, wird sie als veraltete Zuordnung bezeichnet. Wenn sich eine Zuordnung im Zustand **Geschlossen** befindet, kann ein Fisher immer noch einen Disput eröffnen, um einen Indexierer wegen der Bereitstellung falscher Daten anzufechten.
diff --git a/website/src/pages/de/resources/roles/delegating/undelegating.mdx b/website/src/pages/de/resources/roles/delegating/undelegating.mdx
index 116bfb6110f5..22b014be39cd 100644
--- a/website/src/pages/de/resources/roles/delegating/undelegating.mdx
+++ b/website/src/pages/de/resources/roles/delegating/undelegating.mdx
@@ -13,13 +13,11 @@ Erfahren Sie, wie Sie Ihre delegierten Token über [Graph Explorer] (https://the
 1. Besuchen Sie [Graph Explorer] (https://thegraph.com/explorer). Bitte vergewissern Sie sich, dass Sie den Explorer und **nicht** Subgraph Studio verwenden.
 
 2. Klicken Sie auf Ihr Profil. Sie finden es in der oberen rechten Ecke der Seite.
-
    - Vergewissern Sie sich, dass Ihre Wallet verbunden ist. Wenn sie nicht verbunden ist, sehen Sie stattdessen die Schaltfläche „Verbinden“.
 
 3. Sobald Sie sich in Ihrem Profil befinden, klicken Sie auf die Registerkarte „Delegieren". Auf der Registerkarte „Delegieren“ können Sie die Liste der Indexierer einsehen, an die Sie delegiert haben.
 
 4. Klicken Sie auf den Indexierer, von dem Sie Ihre Token abheben möchten.
-
    - Achten Sie darauf, dass Sie sich den Indexierer notieren, denn Sie müssen ihn wiederfinden, wenn Sie etwas abheben wollen.
 
 5. Wählen Sie die Option „Delegation aufheben“, indem Sie auf die drei Punkte neben dem Indexierer auf der rechten Seite klicken (siehe Abbildung unten):
@@ -37,11 +35,9 @@ Erfahren Sie, wie Sie Ihre delegierten Token über [Graph Explorer] (https://the
 ### Schritt für Schritt
 
 1. Finden Sie Ihre Delegationstransaktion auf Arbiscan.
-
    - Hier ist eine [Datenbeispiel-Transaktion auf Arbiscan](https://arbiscan.io/tx/0xcf2110eac897099f821064445041031efb32786392bdbe7544a4cb7a6b2e4f9a)
 
 2. Navigieren Sie zu „Transaktionsaktion“, wo Sie den Staking-Verlängerungsvertrag finden können:
-
    - [Dies ist der Staking-Verlängerungsvertrag für das oben genannte Datenbeispiel](https://arbiscan.io/address/0x00669A4CF01450B64E8A2A20E9b1FCB71E61eF03)
 
 3. Klicken Sie dann auf „Vertrag“. ![Registerkarte „Vertrag“ auf Arbiscan, zwischen NFT-Transfers und Ereignissen](/img/arbiscan-contract.png)
@@ -59,7 +55,6 @@ Erfahren Sie, wie Sie Ihre delegierten Token über [Graph Explorer] (https://the
 9. Wenn Sie nicht wissen, wie viele Token Sie delegiert haben, können Sie `getDelegation` auf der Registerkarte „Benutzerdefiniertes Lesen“ aufrufen. Sie müssen Ihre Adresse (Adresse des Delegators) und die Adresse des Indexirers, an den Sie delegiert haben, einfügen, wie im folgenden Screenshot gezeigt ist:
 
    ![Beide Adressen benötigt](/img/get-delegate.png)
-
    - Sie erhalten dann drei Zahlen. Die erste Zahl ist der Betrag, den Sie unstaken (abheben) können.
 
 10. Nachdem Sie `unstake` aufgerufen haben, können Sie nach ca. 28 Epochen (28 Tagen) durch Aufruf der Funktion `withdraw` abheben.
diff --git a/website/src/pages/de/subgraphs/best-practices/grafting-hotfix.mdx b/website/src/pages/de/subgraphs/best-practices/grafting-hotfix.mdx
index bfff7009381b..c81bc94cfd74 100644
--- a/website/src/pages/de/subgraphs/best-practices/grafting-hotfix.mdx
+++ b/website/src/pages/de/subgraphs/best-practices/grafting-hotfix.mdx
@@ -14,12 +14,10 @@ Diese Funktion ermöglicht die schnelle Bereitstellung von Hotfixes für kritisc
 ## Vorteile des Graftings für Hotfixes
 
 1. **Schnelle Bereitstellung**
-
    - **Ausfallzeiten minimieren**: Wenn in einem Subgraphen ein kritischer Fehler auftritt und die Indizierung unterbrochen wird, können Sie mit Hilfe vom Grafting sofort eine Lösung bereitstellen, ohne auf die erneute Indizierung zu warten.
    - **Sofortige Wiederherstellung**: Der neue Subgraph geht vom letzten indizierten Block aus und gewährleistet, dass die Datendienste nicht unterbrochen werden.
 
 2. **Datenaufbewahrung**
-
    - **Wiederverwendung historischer Daten**: Beim Grafting werden die vorhandenen Daten aus dem Basis-Subgraphen kopiert, so dass Sie keine wertvollen historischen Datensätze verlieren.
    - **Konsistenz**: Bewahrt die Datenkontinuität, was für Anwendungen, die auf konsistente historische Daten angewiesen sind, von entscheidender Bedeutung ist.
 
@@ -30,19 +28,16 @@ Diese Funktion ermöglicht die schnelle Bereitstellung von Hotfixes für kritisc
 ## Best Practices bei der Verwendung von Grafting für Hotfixes
 
 1. **Erster Einsatz ohne Grafting**
-
    - **Starten Sie sauber**: Setzen Sie Ihren ersten Subgraphen immer ohne Grafting ein, um sicherzustellen, dass er stabil ist und wie erwartet funktioniert.
    - **Testen Sie gründlich**: Überprüfen Sie die Leistung des Subgraphen, um den Bedarf an zukünftigen Hotfixes zu minimieren.
 
 2. **Implementierung des Hotfix mit Grafting**
-
    - **Identifizieren Sie das Problem**: Wenn ein kritischer Fehler auftritt, ermitteln Sie die Blocknummer des letzten erfolgreich indizierten Ereignisses.
    - **Erstellen Sie einen neuen Subgraphen**: Entwickeln Sie einen neuen Subgraphen, der den Hotfix enthält.
    - **Konfigurieren Sie Grafting**: Verwenden Sie Grafting, um Daten bis zur identifizierten Blocknummer aus dem ausgefallenen Subgraphen zu kopieren.
    - **Stellen Sie schnell bereit**: Veröffentlichen Sie den grafted Subgrafen, um den Dienst so schnell wie möglich wiederherzustellen.
 
 3. **Post-Hotfix-Aktionen**
-
    - **Überwachen Sie die Leistung**: Stellen Sie sicher, dass der übertragene Subgraph korrekt indiziert wird und der Hotfix das Problem behebt.
    - **Veröffentlichen Sie ohne Grafting erneut**: Sobald der Subgraph stabil ist, können Sie eine neue Version des Subgraphen ohne Grafting für die langfristige Wartung bereitstellen.
      > Hinweis: Es wird nicht empfohlen, sich auf unbegrenzte Zeit aufs Grafting zu verlassen, da dies künftige Aktualisierungen und Wartungsarbeiten erschweren kann.
@@ -130,7 +125,6 @@ Angenommen, Sie haben einen Subgraphen, der einen Smart Contract verfolgt, der a
   - **block**: Nummer des Blocks, in dem das Grafting beginnen soll.
 
 3. **Bereitstellungsschritte**
-
    - **Aktualisieren Sie den Code**: Implementieren Sie den Hotfix in Ihre Mapping-Skripte (z. B. handleWithdrawal).
    - **Passen Sie das Manifest an**: Wie oben gezeigt, aktualisieren Sie die Datei `subgraph.yaml` mit den Grafting-Konfigurationen.
    - **Stellen Sie den Subgraphen bereit**:
diff --git a/website/src/pages/de/subgraphs/developing/creating/install-the-cli.mdx b/website/src/pages/de/subgraphs/developing/creating/install-the-cli.mdx
index bb9fe36ade05..9a318145da38 100644
--- a/website/src/pages/de/subgraphs/developing/creating/install-the-cli.mdx
+++ b/website/src/pages/de/subgraphs/developing/creating/install-the-cli.mdx
@@ -46,7 +46,6 @@ graph init \
 ```
 
 - The command tries to retrieve the contract ABI from Etherscan.
-
   - Die Graph CLI stützt sich auf einen öffentlichen RPC-Endpunkt. Gelegentliche Fehler sind zwar zu erwarten, aber durch Wiederholungen lässt sich dieses Problem in der Regel beheben. Bei anhaltenden Fehlern sollten Sie eine lokale ABI verwenden.
 
 - If any of the optional arguments are missing, it guides you through an interactive form.
@@ -87,7 +86,6 @@ Optionen:
 The `graph add` command will fetch the ABI from Etherscan (unless an ABI path is specified with the `--abi` option) and creates a new `dataSource`, similar to how the `graph init` command creates a `dataSource` `--from-contract`, updating the schema and mappings accordingly. This allows you to index implementation contracts from their proxy contracts.
 
 - The `--merge-entities` option identifies how the developer would like to handle `entity` and `event` name conflicts:
-
   - If `true`: the new `dataSource` should use existing `eventHandlers` & `entities`.
 
   - If `false`: a new `entity` & `event` handler should be created with `${dataSourceName}{EventName}`.
diff --git a/website/src/pages/de/subgraphs/developing/managing/deleting-a-subgraph.mdx b/website/src/pages/de/subgraphs/developing/managing/deleting-a-subgraph.mdx
index e01d84c31aee..7995e9e0e87b 100644
--- a/website/src/pages/de/subgraphs/developing/managing/deleting-a-subgraph.mdx
+++ b/website/src/pages/de/subgraphs/developing/managing/deleting-a-subgraph.mdx
@@ -17,7 +17,6 @@ Delete your Subgraph using [Subgraph Studio](https://thegraph.com/studio/).
    ![Delete-subgraph](/img/Delete-subgraph.png)
 
 4. Depending on the Subgraph's status, you will be prompted with various options.
-
    - If the Subgraph is not published, simply click “delete” and confirm.
    - If the Subgraph is published, you will need to confirm on your wallet before the Subgraph can be deleted from Studio. If a Subgraph is published to multiple networks, such as testnet and mainnet, additional steps may be required.
 
diff --git a/website/src/pages/de/subgraphs/explorer.mdx b/website/src/pages/de/subgraphs/explorer.mdx
index 3a386698a7d4..40a226ca149e 100644
--- a/website/src/pages/de/subgraphs/explorer.mdx
+++ b/website/src/pages/de/subgraphs/explorer.mdx
@@ -26,7 +26,6 @@ Wenn Sie in einen Subgraphen klicken, können Sie Folgendes tun:
 
 - Testen Sie Abfragen auf dem Playground und nutzen Sie Netzwerkdetails, um fundierte Entscheidungen zu treffen.
 - Signalisieren Sie GRT auf Ihrem eigenen Subgraphen oder den Subgraphen anderer, um die Indexierer auf seine Bedeutung und Qualität aufmerksam zu machen.
-
   - Dies ist von entscheidender Bedeutung, da die Signalisierung eines Subgraphen einen Anreiz darstellt, ihn zu indizieren, was bedeutet, dass er schließlich im Netzwerk auftaucht, um Abfragen zu bedienen.
 
 ![Explorer Bild 2](/img/Subgraph-Details.png)
diff --git a/website/src/pages/de/subgraphs/mcp/claude.mdx b/website/src/pages/de/subgraphs/mcp/claude.mdx
index 8b61438d2ab7..027b272cb942 100644
--- a/website/src/pages/de/subgraphs/mcp/claude.mdx
+++ b/website/src/pages/de/subgraphs/mcp/claude.mdx
@@ -85,7 +85,6 @@ Once you've entered your Gateway API key into your settings, save the file and r
 2. **Find the Command Path**
 
    After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory.
-
    - Navigate to your `subgraph-mcp` directory in terminal
    - Run `pwd` to get the full path
    - Combine the output with `/target/release/subgraph-mcp`
diff --git a/website/src/pages/de/subgraphs/quick-start.mdx b/website/src/pages/de/subgraphs/quick-start.mdx
index 4608dc407ca7..e7339d4be433 100644
--- a/website/src/pages/de/subgraphs/quick-start.mdx
+++ b/website/src/pages/de/subgraphs/quick-start.mdx
@@ -166,11 +166,9 @@ Wie Sie Ihre Bereitstellung anpassen können, erfahren Sie unter [Veröffentlich
 #### Hinzufügen von Signalen zu Ihrem Subgraphen
 
 1. Um Indexierer für die Abfrage Ihres Subgraphen zu gewinnen, sollten Sie ihn mit einem GRT-Kurationssignal versehen.
-
    - Diese Maßnahme verbessert die Servicequalität, verringert die Latenz und erhöht die Netzwerkredundanz und -verfügbarkeit für Ihren Subgraphen.
 
 2. Indexer erhalten GRT Rewards auf der Grundlage des signalisierten Betrags, wenn sie für Indexing Rewards in Frage kommen.
-
    - Es wird empfohlen, mindestens 3.000 GRT zu kuratieren, um 3 Indexierer zu gewinnen. Prüfen Sie die Berechtigung zur Belohnung anhand der Nutzung der Subgraph-Funktion und der unterstützten Netzwerke.
 
 Um mehr über das Kuratieren zu erfahren, lesen Sie [Kuratieren](/resources/roles/curating/).
diff --git a/website/src/pages/en/archived/arbitrum/arbitrum-faq.mdx b/website/src/pages/en/archived/arbitrum/arbitrum-faq.mdx
index 437e769c3ec0..9e5d1bdeb8e6 100644
--- a/website/src/pages/en/archived/arbitrum/arbitrum-faq.mdx
+++ b/website/src/pages/en/archived/arbitrum/arbitrum-faq.mdx
@@ -25,7 +25,6 @@ The Graph’s billing system accepts GRT on Arbitrum, and users will need ETH on
 Consequently, to pay for queries, you need GRT on Arbitrum. Here are a few different ways to achieve this:
 
 - If you already have GRT on Ethereum, you can bridge it to Arbitrum. You can do this via the GRT bridging option provided in Subgraph Studio or by using one of the following bridges:
-
   - [The Arbitrum Bridge](https://bridge.arbitrum.io/?l2ChainId=42161)
   - [TransferTo](https://transferto.xyz/swap)
 
diff --git a/website/src/pages/en/indexing/overview.mdx b/website/src/pages/en/indexing/overview.mdx
index 73d230f58b5a..b508456397c0 100644
--- a/website/src/pages/en/indexing/overview.mdx
+++ b/website/src/pages/en/indexing/overview.mdx
@@ -680,13 +680,11 @@ graph indexer actions execute approve
 Note that supported action types for allocation management have different input requirements:
 
 - `Allocate` - allocate stake to a specific Subgraph deployment
-
   - required action params:
     - deploymentID
     - amount
 
 - `Unallocate` - close allocation, freeing up the stake to reallocate elsewhere
-
   - required action params:
     - allocationID
     - deploymentID
@@ -695,7 +693,6 @@ Note that supported action types for allocation management have different input
     - force (forces using the provided POI even if it doesn’t match what the graph-node provides)
 
 - `Reallocate` - atomically close allocation and open a fresh allocation for the same Subgraph deployment
-
   - required action params:
     - allocationID
     - deploymentID
diff --git a/website/src/pages/en/indexing/supported-network-requirements.mdx b/website/src/pages/en/indexing/supported-network-requirements.mdx
index 3d57daa55709..95c3c52a9658 100644
--- a/website/src/pages/en/indexing/supported-network-requirements.mdx
+++ b/website/src/pages/en/indexing/supported-network-requirements.mdx
@@ -2,17 +2,19 @@
 title: Supported Network Requirements
 ---
 
+import { Check } from '@edgeandnode/gds/icons'
+
 | Network | Guides | System Requirements | Indexing Rewards |
 | --- | --- | --- | :-: |
-| Arbitrum | [Baremetal Guide](https://docs.infradao.com/archive-nodes-101/arbitrum/baremetal)<br /> [Docker Guide](https://docs.infradao.com/archive-nodes-101/arbitrum/docker) | 4+ core CPU<br /> Ubuntu 22.04<br /> 16GB+ RAM<br /> >= 8 TiB NVMe SSD<br /> _last updated August 2023_ | ✅ |
-| Avalanche | [Docker Guide](https://docs.infradao.com/archive-nodes-101/avalanche/docker) | 4 core / 8 threads CPU<br /> Ubuntu 22.04<br /> 16GB+ RAM<br /> >= 5 TiB NVMe SSD<br /> _last updated August 2023_ | ✅ |
-| Base | [Erigon Baremetal Guide](https://docs.infradao.com/archive-nodes-101/base/erigon/baremetal)<br /><br /> [GETH Baremetal Guide](https://docs.infradao.com/archive-nodes-101/base/geth/baremetal)<br /> [GETH Docker Guide](https://docs.infradao.com/archive-nodes-101/base/geth/docker) | 8+ core CPU<br /> Debian 12/Ubuntu 22.04<br /> 16 GB RAM<br /> >= 4.5TB (NVME preferred)<br /> _last updated 14th May 2024_ | ✅ |
-| Binance | [Erigon Baremetal Guide](https://docs.infradao.com/archive-nodes-101/binance/erigon/baremetal) | 8 core / 16 threads CPU<br /> Ubuntu 22.04<br /> >=32 GB RAM<br /> >= 14 TiB NVMe SSD<br /> _last updated 22nd June 2024_ | ✅ |
-| Celo | [Docker Guide](https://docs.infradao.com/archive-nodes-101/celo/docker) | 4 core / 8 threads CPU<br /> Ubuntu 22.04<br /> 16GB+ RAM<br /> >= 2 TiB NVMe SSD<br /> _last updated August 2023_ | ✅ |
-| Ethereum | [Docker Guide](https://docs.infradao.com/archive-nodes-101/ethereum/erigon/docker) | Higher clock speed over core count<br /> Ubuntu 22.04<br /> 16GB+ RAM<br /> >=3TB (NVMe recommended)<br /> _last updated August 2023_ | ✅ |
-| Fantom | [Docker Guide](https://docs.infradao.com/archive-nodes-101/fantom/docker) | 4 core / 8 threads CPU<br /> Ubuntu 22.04<br /> 16GB+ RAM<br /> >= 13 TiB NVMe SSD<br /> _last updated August 2023_ | ✅ |
-| Gnosis | [Baremetal Guide](https://docs.infradao.com/archive-nodes-101/gnosis/erigon/baremetal) | 6 core / 12 threads CPU<br /> Ubuntu 22.04<br /> 16GB+ RAM<br /> >= 3 TiB NVMe SSD<br /> _last updated August 2023_ | ✅ |
-| Linea | [Baremetal Guide](https://docs.infradao.com/archive-nodes-101/linea/baremetal) | 4+ core CPU<br /> Ubuntu 22.04<br /> 16GB+ RAM<br /> >= 1 TiB NVMe SSD<br /> _last updated 2nd April 2024_ | ✅ |
-| Optimism | [Erigon Baremetal Guide](https://docs.infradao.com/archive-nodes-101/optimism/erigon/baremetal)<br /><br /> [GETH Baremetal Guide](https://docs.infradao.com/archive-nodes-101/optimism/geth/baremetal)<br /> [GETH Docker Guide](https://docs.infradao.com/archive-nodes-101/optimism/geth/docker) | 4 core / 8 threads CPU<br /> Ubuntu 22.04<br /> 16GB+ RAM<br /> >= 8 TiB NVMe SSD<br /> _last updated August 2023_ | ✅ |
-| Polygon | [Docker Guide](https://docs.infradao.com/archive-nodes-101/polygon/docker) | 16 core CPU<br /> Ubuntu 22.04<br /> 32GB+ RAM<br /> >= 10 TiB NVMe SSD<br /> _last updated August 2023_ | ✅ |
-| Scroll | [Baremetal Guide](https://docs.infradao.com/archive-nodes-101/scroll/baremetal)<br /> [Docker Guide](https://docs.infradao.com/archive-nodes-101/scroll/docker) | 4 core / 8 threads CPU<br /> Debian 12<br /> 16GB+ RAM<br /> >= 1 TiB NVMe SSD<br /> _last updated 3rd April 2024_ | ✅ |
+| Arbitrum | [Baremetal Guide](https://docs.infradao.com/archive-nodes-101/arbitrum/baremetal)<br /> [Docker Guide](https://docs.infradao.com/archive-nodes-101/arbitrum/docker) | 4+ core CPU<br /> Ubuntu 22.04<br /> 16GB+ RAM<br /> >= 8 TiB NVMe SSD<br /> _last updated August 2023_ | <Check alt="Supported" /> |
+| Avalanche | [Docker Guide](https://docs.infradao.com/archive-nodes-101/avalanche/docker) | 4 core / 8 threads CPU<br /> Ubuntu 22.04<br /> 16GB+ RAM<br /> >= 5 TiB NVMe SSD<br /> _last updated August 2023_ | <Check alt="Supported" /> |
+| Base | [Erigon Baremetal Guide](https://docs.infradao.com/archive-nodes-101/base/erigon/baremetal)<br /><br /> [GETH Baremetal Guide](https://docs.infradao.com/archive-nodes-101/base/geth/baremetal)<br /> [GETH Docker Guide](https://docs.infradao.com/archive-nodes-101/base/geth/docker) | 8+ core CPU<br /> Debian 12/Ubuntu 22.04<br /> 16 GB RAM<br /> >= 4.5TB (NVME preferred)<br /> _last updated 14th May 2024_ | <Check alt="Supported" /> |
+| Binance | [Erigon Baremetal Guide](https://docs.infradao.com/archive-nodes-101/binance/erigon/baremetal) | 8 core / 16 threads CPU<br /> Ubuntu 22.04<br /> >=32 GB RAM<br /> >= 14 TiB NVMe SSD<br /> _last updated 22nd June 2024_ | <Check alt="Supported" /> |
+| Celo | [Docker Guide](https://docs.infradao.com/archive-nodes-101/celo/docker) | 4 core / 8 threads CPU<br /> Ubuntu 22.04<br /> 16GB+ RAM<br /> >= 2 TiB NVMe SSD<br /> _last updated August 2023_ | <Check alt="Supported" /> |
+| Ethereum | [Docker Guide](https://docs.infradao.com/archive-nodes-101/ethereum/erigon/docker) | Higher clock speed over core count<br /> Ubuntu 22.04<br /> 16GB+ RAM<br /> >=3TB (NVMe recommended)<br /> _last updated August 2023_ | <Check alt="Supported" /> |
+| Fantom | [Docker Guide](https://docs.infradao.com/archive-nodes-101/fantom/docker) | 4 core / 8 threads CPU<br /> Ubuntu 22.04<br /> 16GB+ RAM<br /> >= 13 TiB NVMe SSD<br /> _last updated August 2023_ | <Check alt="Supported" /> |
+| Gnosis | [Baremetal Guide](https://docs.infradao.com/archive-nodes-101/gnosis/erigon/baremetal) | 6 core / 12 threads CPU<br /> Ubuntu 22.04<br /> 16GB+ RAM<br /> >= 3 TiB NVMe SSD<br /> _last updated August 2023_ | <Check alt="Supported" /> |
+| Linea | [Baremetal Guide](https://docs.infradao.com/archive-nodes-101/linea/baremetal) | 4+ core CPU<br /> Ubuntu 22.04<br /> 16GB+ RAM<br /> >= 1 TiB NVMe SSD<br /> _last updated 2nd April 2024_ | <Check alt="Supported" /> |
+| Optimism | [Erigon Baremetal Guide](https://docs.infradao.com/archive-nodes-101/optimism/erigon/baremetal)<br /><br /> [GETH Baremetal Guide](https://docs.infradao.com/archive-nodes-101/optimism/geth/baremetal)<br /> [GETH Docker Guide](https://docs.infradao.com/archive-nodes-101/optimism/geth/docker) | 4 core / 8 threads CPU<br /> Ubuntu 22.04<br /> 16GB+ RAM<br /> >= 8 TiB NVMe SSD<br /> _last updated August 2023_ | <Check alt="Supported" /> |
+| Polygon | [Docker Guide](https://docs.infradao.com/archive-nodes-101/polygon/docker) | 16 core CPU<br /> Ubuntu 22.04<br /> 32GB+ RAM<br /> >= 10 TiB NVMe SSD<br /> _last updated August 2023_ | <Check alt="Supported" /> |
+| Scroll | [Baremetal Guide](https://docs.infradao.com/archive-nodes-101/scroll/baremetal)<br /> [Docker Guide](https://docs.infradao.com/archive-nodes-101/scroll/docker) | 4 core / 8 threads CPU<br /> Debian 12<br /> 16GB+ RAM<br /> >= 1 TiB NVMe SSD<br /> _last updated 3rd April 2024_ | <Check alt="Supported" /> |
diff --git a/website/src/pages/en/indexing/tap.mdx b/website/src/pages/en/indexing/tap.mdx
index 477534d63201..e9667d498e0f 100644
--- a/website/src/pages/en/indexing/tap.mdx
+++ b/website/src/pages/en/indexing/tap.mdx
@@ -38,7 +38,6 @@ As long as you run `tap-agent` and `indexer-agent`, everything will be executed
 3. `indexer-agent` takes all the last RAVS and sends redeem requests to the blockchain, which will update the value of `redeem_at`.
 
 4. During the `<finality-time>` period, `indexer-agent` monitors if the blockchain has any reorganizations that revert the transaction.
-
    - If it was reverted, the RAV is resent to the blockchain. If it was not reverted, it gets marked as `final`.
 
 ## Blockchain Addresses
@@ -77,17 +76,14 @@ The required software version can be found [here](https://github.com/graphprotoc
 ### Steps
 
 1. **Indexer Agent**
-
    - Follow the [same process](https://github.com/graphprotocol/indexer/pkgs/container/indexer-agent#graph-protocol-indexer-components).
    - Give the new argument `--tap-subgraph-endpoint` to activate the new GraphTally codepaths and enable redeeming of RAVs.
 
 2. **Indexer Service**
-
    - Fully replace your current configuration with the [new Indexer Service rs](https://github.com/graphprotocol/indexer-rs). It's recommend that you use the [container image](https://github.com/orgs/graphprotocol/packages?repo_name=indexer-rs).
    - Like the older version, you can scale Indexer Service horizontally easily. It is still stateless.
 
 3. **TAP Agent**
-
    - Run _one_ single instance of [TAP Agent](https://github.com/graphprotocol/indexer-rs) at all times. It's recommend that you use the [container image](https://github.com/orgs/graphprotocol/packages?repo_name=indexer-rs).
 
 4. **Configure Indexer Service and TAP Agent**
diff --git a/website/src/pages/en/resources/glossary.mdx b/website/src/pages/en/resources/glossary.mdx
index 4c5ad55cd0d3..31402db1084a 100644
--- a/website/src/pages/en/resources/glossary.mdx
+++ b/website/src/pages/en/resources/glossary.mdx
@@ -15,7 +15,6 @@ title: Glossary
 - **Indexer**: Network participants that run indexing nodes to index data from blockchains and serve GraphQL queries.
 
 - **Indexer Revenue Streams**: Indexers are rewarded in GRT with two components: query fee rebates and indexing rewards.
-
   1. **Query Fee Rebates**: Payments from Subgraph consumers for serving queries on the network.
 
   2. **Indexing Rewards**: The rewards that Indexers receive for indexing Subgraphs. Indexing rewards are generated via new issuance of 3% GRT annually.
@@ -43,7 +42,6 @@ title: Glossary
 - **Epoch**: A unit of time within the network. Currently, one epoch is 6,646 blocks or approximately 1 day.
 
 - **Allocation**: An Indexer can allocate their total GRT stake (including Delegators' stake) towards Subgraphs that have been published on The Graph's decentralized network. Allocations can have different statuses:
-
   1. **Active**: An allocation is considered active when it is created onchain. This is called opening an allocation, and indicates to the network that the Indexer is actively indexing and serving queries for a particular Subgraph. Active allocations accrue indexing rewards proportional to the signal on the Subgraph, and the amount of GRT allocated.
 
   2. **Closed**: An Indexer may claim the accrued indexing rewards on a given Subgraph by submitting a recent, and valid, Proof of Indexing (POI). This is known as closing an allocation. An allocation must have been open for a minimum of one epoch before it can be closed. The maximum allocation period is 28 epochs. If an Indexer leaves an allocation open beyond 28 epochs, it is known as a stale allocation. When an allocation is in the **Closed** state, a Fisherman can still open a dispute to challenge an Indexer for serving false data.
diff --git a/website/src/pages/en/resources/roles/delegating/undelegating.mdx b/website/src/pages/en/resources/roles/delegating/undelegating.mdx
index 3d1e67372cec..a698ef23575f 100644
--- a/website/src/pages/en/resources/roles/delegating/undelegating.mdx
+++ b/website/src/pages/en/resources/roles/delegating/undelegating.mdx
@@ -42,7 +42,6 @@ Learn how to withdraw your delegated tokens through [Graph Explorer](https://the
 9. If you don't know how many tokens you delegated, you can call `getDelegation` on the Read Custom tab. You will need to paste your address (delegator address) and the address of the Indexer that you delegated to, as shown in the following screenshot:
 
    ![Both of the addresses needed](/img/get-delegate.png)
-
    - This will return three numbers. The first number is the amount you can unstake.
 
 10. After you have called `unstake`, you can withdraw after approximately 28 epochs (28 days) by calling the `withdraw` function.
diff --git a/website/src/pages/en/subgraphs/best-practices/grafting-hotfix.mdx b/website/src/pages/en/subgraphs/best-practices/grafting-hotfix.mdx
index ae1ef6e764b6..bb5f1fdbdb18 100644
--- a/website/src/pages/en/subgraphs/best-practices/grafting-hotfix.mdx
+++ b/website/src/pages/en/subgraphs/best-practices/grafting-hotfix.mdx
@@ -14,12 +14,10 @@ This feature enables quick deployment of hotfixes for critical issues, eliminati
 ## Benefits of Grafting for Hotfixes
 
 1. **Rapid Deployment**
-
    - **Minimize Downtime**: When a Subgraph encounters a critical error and stops indexing, grafting enables you to deploy a fix immediately without waiting for re-indexing.
    - **Immediate Recovery**: The new Subgraph continues from the last indexed block, ensuring that data services remain uninterrupted.
 
 2. **Data Preservation**
-
    - **Reuse Historical Data**: Grafting copies the existing data from the base Subgraph, so you don’t lose valuable historical records.
    - **Consistency**: Maintains data continuity, which is crucial for applications relying on consistent historical data.
 
@@ -30,19 +28,16 @@ This feature enables quick deployment of hotfixes for critical issues, eliminati
 ## Best Practices When Using Grafting for Hotfixes
 
 1. **Initial Deployment Without Grafting**
-
    - **Start Clean**: Always deploy your initial Subgraph without grafting to ensure that it’s stable and functions as expected.
    - **Test Thoroughly**: Validate the Subgraph’s performance to minimize the need for future hotfixes.
 
 2. **Implementing the Hotfix with Grafting**
-
    - **Identify the Issue**: When a critical error occurs, determine the block number of the last successfully indexed event.
    - **Create a New Subgraph**: Develop a new Subgraph that includes the hotfix.
    - **Configure Grafting**: Use grafting to copy data up to the identified block number from the failed Subgraph.
    - **Deploy Quickly**: Publish the grafted Subgraph to restore service as soon as possible.
 
 3. **Post-Hotfix Actions**
-
    - **Monitor Performance**: Ensure the grafted Subgraph is indexing correctly and the hotfix resolves the issue.
    - **Republish Without Grafting**: Once stable, deploy a new version of the Subgraph without grafting for long-term maintenance.
      > Note: Relying on grafting indefinitely is not recommended as it can complicate future updates and maintenance.
@@ -130,7 +125,6 @@ Suppose you have a Subgraph tracking a smart contract that has stopped indexing
   - **block**: Block number where grafting should begin.
 
 3. **Deployment Steps**
-
    - **Update the Code**: Implement the hotfix in your mapping scripts (e.g., handleWithdrawal).
    - **Adjust the Manifest**: As shown above, update the `subgraph.yaml` with grafting configurations.
    - **Deploy the Subgraph**:
diff --git a/website/src/pages/en/subgraphs/developing/creating/install-the-cli.mdx b/website/src/pages/en/subgraphs/developing/creating/install-the-cli.mdx
index c9d6966ef5fe..904aa6cd172b 100644
--- a/website/src/pages/en/subgraphs/developing/creating/install-the-cli.mdx
+++ b/website/src/pages/en/subgraphs/developing/creating/install-the-cli.mdx
@@ -46,7 +46,6 @@ graph init \
 ```
 
 - The command tries to retrieve the contract ABI from Etherscan.
-
   - The Graph CLI relies on a public RPC endpoint. While occasional failures are expected, retries typically resolve this issue. If failures persist, consider using a local ABI.
 
 - If any of the optional arguments are missing, it guides you through an interactive form.
@@ -87,7 +86,6 @@ Options:
 The `graph add` command will fetch the ABI from Etherscan (unless an ABI path is specified with the `--abi` option) and creates a new `dataSource`, similar to how the `graph init` command creates a `dataSource` `--from-contract`, updating the schema and mappings accordingly. This allows you to index implementation contracts from their proxy contracts.
 
 - The `--merge-entities` option identifies how the developer would like to handle `entity` and `event` name conflicts:
-
   - If `true`: the new `dataSource` should use existing `eventHandlers` & `entities`.
 
   - If `false`: a new `entity` & `event` handler should be created with `${dataSourceName}{EventName}`.
diff --git a/website/src/pages/en/subgraphs/developing/managing/deleting-a-subgraph.mdx b/website/src/pages/en/subgraphs/developing/managing/deleting-a-subgraph.mdx
index 2d71b35a5d86..b06ef48c83a5 100644
--- a/website/src/pages/en/subgraphs/developing/managing/deleting-a-subgraph.mdx
+++ b/website/src/pages/en/subgraphs/developing/managing/deleting-a-subgraph.mdx
@@ -15,7 +15,6 @@ Delete your Subgraph using [Subgraph Studio](https://thegraph.com/studio/).
    ![Delete-subgraph](/img/Delete-subgraph.png)
 
 4. Depending on the Subgraph's status, you will be prompted with various options.
-
    - If the Subgraph is not published, simply click “delete” and confirm.
    - If the Subgraph is published, you will need to confirm on your wallet before the Subgraph can be deleted from Studio. If a Subgraph is published to multiple networks, such as testnet and mainnet, additional steps may be required.
 
diff --git a/website/src/pages/en/subgraphs/mcp/claude.mdx b/website/src/pages/en/subgraphs/mcp/claude.mdx
index 8b61438d2ab7..027b272cb942 100644
--- a/website/src/pages/en/subgraphs/mcp/claude.mdx
+++ b/website/src/pages/en/subgraphs/mcp/claude.mdx
@@ -85,7 +85,6 @@ Once you've entered your Gateway API key into your settings, save the file and r
 2. **Find the Command Path**
 
    After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory.
-
    - Navigate to your `subgraph-mcp` directory in terminal
    - Run `pwd` to get the full path
    - Combine the output with `/target/release/subgraph-mcp`
diff --git a/website/src/pages/en/token-api/quick-start.mdx b/website/src/pages/en/token-api/quick-start.mdx
index d43d2b5d2d86..3906d1776a41 100644
--- a/website/src/pages/en/token-api/quick-start.mdx
+++ b/website/src/pages/en/token-api/quick-start.mdx
@@ -3,6 +3,8 @@ title: Token API Quick Start
 sidebarTitle: Quick Start
 ---
 
+import { Check } from '@edgeandnode/gds/icons'
+
 ![The Graph Token API Quick Start banner](/img/token-api-quickstart-banner.jpg)
 
 > [!CAUTION] This product is currently in Beta and under active development. If you have any feedback, please reach out to us on [Discord](https://discord.gg/graphprotocol).
@@ -66,16 +68,16 @@ Make sure to replace `<token>` with the JWT Token generated from your API key.
 
 ## Chain and Feature Support
 
-| Network          | evm-tokens | evm-uniswaps | evm-nft-tokens |
-| ---------------- | :--------: | :----------: | :------------: |
-| Ethereum Mainnet |     ✅     |      ✅      |       ✅       |
-| BSC              |    ✅\*    |      ✅      |       ✅       |
-| Base             |     ✅     |      ✅      |       ✅       |
-| Unichain         |     ✅     |      ✅      |       ✅       |
-| Arbitrum-One     |    ✅\*    |     ✅\*     |      ✅\*      |
-| Optimism         |     ✅     |      ✅      |       ✅       |
-| Polygon          |     ✅     |      ✅      |       ✅       |
-| Avalanche        |     ✅     |      ✅      |       ✅       |
+| Network          |         evm-tokens          |        evm-uniswaps         |       evm-nft-tokens        |
+| ---------------- | :-------------------------: | :-------------------------: | :-------------------------: |
+| Ethereum Mainnet |  <Check alt="Supported" />  |  <Check alt="Supported" />  |  <Check alt="Supported" />  |
+| BSC              |  <Check alt="Supported" />  |  <Check alt="Supported" />  |  <Check alt="Supported" />  |
+| Base             |  <Check alt="Supported" />  |  <Check alt="Supported" />  |  <Check alt="Supported" />  |
+| Unichain         |  <Check alt="Supported" />  |  <Check alt="Supported" />  |  <Check alt="Supported" />  |
+| Arbitrum-One     | <Check alt="Supported" />\* | <Check alt="Supported" />\* | <Check alt="Supported" />\* |
+| Optimism         |  <Check alt="Supported" />  |  <Check alt="Supported" />  |  <Check alt="Supported" />  |
+| Polygon          |  <Check alt="Supported" />  |  <Check alt="Supported" />  |  <Check alt="Supported" />  |
+| Avalanche        |  <Check alt="Supported" />  |  <Check alt="Supported" />  |  <Check alt="Supported" />  |
 
 \*Some chains are still in the process of syncing. You may encounter `bad_database_response` errors or incorrect response values until data is fully synced.
 
diff --git a/website/src/pages/es/archived/arbitrum/arbitrum-faq.mdx b/website/src/pages/es/archived/arbitrum/arbitrum-faq.mdx
index 2b7fe7284fc8..59da196eef2b 100644
--- a/website/src/pages/es/archived/arbitrum/arbitrum-faq.mdx
+++ b/website/src/pages/es/archived/arbitrum/arbitrum-faq.mdx
@@ -25,7 +25,6 @@ The Graph’s billing system accepts GRT on Arbitrum, and users will need ETH on
 Consequently, to pay for queries, you need GRT on Arbitrum. Here are a few different ways to achieve this:
 
 - If you already have GRT on Ethereum, you can bridge it to Arbitrum. You can do this via the GRT bridging option provided in Subgraph Studio or by using one of the following bridges:
-
   - [The Arbitrum Bridge](https://bridge.arbitrum.io/?l2ChainId=42161)
   - [TransferTo](https://transferto.xyz/swap)
 
diff --git a/website/src/pages/es/indexing/overview.mdx b/website/src/pages/es/indexing/overview.mdx
index 1eacc8b17e82..ee6ee5add77d 100644
--- a/website/src/pages/es/indexing/overview.mdx
+++ b/website/src/pages/es/indexing/overview.mdx
@@ -680,13 +680,11 @@ graph indexer actions execute approve
 Note that supported action types for allocation management have different input requirements:
 
 - `Allocate` - allocate stake to a specific Subgraph deployment
-
   - required action params:
     - deploymentID
     - amount
 
 - `Unallocate` - close allocation, freeing up the stake to reallocate elsewhere
-
   - required action params:
     - allocationID
     - deploymentID
@@ -695,7 +693,6 @@ Note that supported action types for allocation management have different input
     - force (forces using the provided POI even if it doesn’t match what the graph-node provides)
 
 - `Reallocate` - atomically close allocation and open a fresh allocation for the same Subgraph deployment
-
   - required action params:
     - allocationID
     - deploymentID
diff --git a/website/src/pages/es/indexing/tap.mdx b/website/src/pages/es/indexing/tap.mdx
index 024347d695c4..eee958873bb2 100644
--- a/website/src/pages/es/indexing/tap.mdx
+++ b/website/src/pages/es/indexing/tap.mdx
@@ -38,7 +38,6 @@ As long as you run `tap-agent` and `indexer-agent`, everything will be executed
 3. `indexer-agent` takes all the last RAVS and sends redeem requests to the blockchain, which will update the value of `redeem_at`.
 
 4. During the `<finality-time>` period, `indexer-agent` monitors if the blockchain has any reorganizations that revert the transaction.
-
    - If it was reverted, the RAV is resent to the blockchain. If it was not reverted, it gets marked as `final`.
 
 ## Blockchain Addresses
@@ -77,17 +76,14 @@ The required software version can be found [here](https://github.com/graphprotoc
 ### Steps
 
 1. **Indexer Agent**
-
    - Follow the [same process](https://github.com/graphprotocol/indexer/pkgs/container/indexer-agent#graph-protocol-indexer-components).
    - Give the new argument `--tap-subgraph-endpoint` to activate the new GraphTally codepaths and enable redeeming of RAVs.
 
 2. **Indexer Service**
-
    - Fully replace your current configuration with the [new Indexer Service rs](https://github.com/graphprotocol/indexer-rs). It's recommend that you use the [container image](https://github.com/orgs/graphprotocol/packages?repo_name=indexer-rs).
    - Like the older version, you can scale Indexer Service horizontally easily. It is still stateless.
 
 3. **TAP Agent**
-
    - Run _one_ single instance of [TAP Agent](https://github.com/graphprotocol/indexer-rs) at all times. It's recommend that you use the [container image](https://github.com/orgs/graphprotocol/packages?repo_name=indexer-rs).
 
 4. **Configure Indexer Service and TAP Agent**
diff --git a/website/src/pages/es/resources/glossary.mdx b/website/src/pages/es/resources/glossary.mdx
index dfbe07decedf..6154aefde27b 100644
--- a/website/src/pages/es/resources/glossary.mdx
+++ b/website/src/pages/es/resources/glossary.mdx
@@ -15,7 +15,6 @@ title: Glosario
 - **Indexer**: Network participants that run indexing nodes to index data from blockchains and serve GraphQL queries.
 
 - **Indexer Revenue Streams**: Indexers are rewarded in GRT with two components: query fee rebates and indexing rewards.
-
   1. **Query Fee Rebates**: Payments from Subgraph consumers for serving queries on the network.
 
   2. **Indexing Rewards**: The rewards that Indexers receive for indexing Subgraphs. Indexing rewards are generated via new issuance of 3% GRT annually.
@@ -43,7 +42,6 @@ title: Glosario
 - **Epoch**: A unit of time within the network. Currently, one epoch is 6,646 blocks or approximately 1 day.
 
 - **Allocation**: An Indexer can allocate their total GRT stake (including Delegators' stake) towards Subgraphs that have been published on The Graph's decentralized network. Allocations can have different statuses:
-
   1. **Active**: An allocation is considered active when it is created onchain. This is called opening an allocation, and indicates to the network that the Indexer is actively indexing and serving queries for a particular Subgraph. Active allocations accrue indexing rewards proportional to the signal on the Subgraph, and the amount of GRT allocated.
 
   2. **Closed**: An Indexer may claim the accrued indexing rewards on a given Subgraph by submitting a recent, and valid, Proof of Indexing (POI). This is known as closing an allocation. An allocation must have been open for a minimum of one epoch before it can be closed. The maximum allocation period is 28 epochs. If an Indexer leaves an allocation open beyond 28 epochs, it is known as a stale allocation. When an allocation is in the **Closed** state, a Fisherman can still open a dispute to challenge an Indexer for serving false data.
diff --git a/website/src/pages/es/resources/roles/delegating/undelegating.mdx b/website/src/pages/es/resources/roles/delegating/undelegating.mdx
index 792d140be411..8a0584e7e77f 100644
--- a/website/src/pages/es/resources/roles/delegating/undelegating.mdx
+++ b/website/src/pages/es/resources/roles/delegating/undelegating.mdx
@@ -13,13 +13,11 @@ Learn how to withdraw your delegated tokens through [Graph Explorer](https://the
 1. Visit [Graph Explorer](https://thegraph.com/explorer). Please make sure you're on Explorer and **not** Subgraph Studio.
 
 2. Click on your profile. You can find it on the top right corner of the page.
-
    - Make sure that your wallet is connected. If it's not connected, you will see the "connect" button instead.
 
 3. Once you're in your profile, click on the Delegating tab. In the Delegating tab, you can view the list of Indexers you have delegated to.
 
 4. Click on the Indexer from which you wish to withdraw your tokens.
-
    - Make sure to note the specific Indexer, as you will need to find them again to withdraw.
 
 5. Select the "Undelegate" option by clicking on the three dots next to the Indexer on the right side, see image below:
@@ -37,11 +35,9 @@ Learn how to withdraw your delegated tokens through [Graph Explorer](https://the
 ### Step-by-Step
 
 1. Find your delegation transaction on Arbiscan.
-
    - Here's an [example transaction on Arbiscan](https://arbiscan.io/tx/0xcf2110eac897099f821064445041031efb32786392bdbe7544a4cb7a6b2e4f9a)
 
 2. Navigate to "Transaction Action" where you can find the staking extension contract:
-
    - [This is the staking extension contract for the example listed above](https://arbiscan.io/address/0x00669A4CF01450B64E8A2A20E9b1FCB71E61eF03)
 
 3. Then click on "Contract". ![Contract tab on Arbiscan, between NFT Transfers and Events](/img/arbiscan-contract.png)
@@ -59,7 +55,6 @@ Learn how to withdraw your delegated tokens through [Graph Explorer](https://the
 9. If you don't know how many tokens you delegated, you can call `getDelegation` on the Read Custom tab. You will need to paste your address (delegator address) and the address of the Indexer that you delegated to, as shown in the following screenshot:
 
    ![Both of the addresses needed](/img/get-delegate.png)
-
    - This will return three numbers. The first number is the amount you can unstake.
 
 10. After you have called `unstake`, you can withdraw after approximately 28 epochs (28 days) by calling the `withdraw` function.
diff --git a/website/src/pages/es/subgraphs/best-practices/grafting-hotfix.mdx b/website/src/pages/es/subgraphs/best-practices/grafting-hotfix.mdx
index 39750e51189d..735c232aef34 100644
--- a/website/src/pages/es/subgraphs/best-practices/grafting-hotfix.mdx
+++ b/website/src/pages/es/subgraphs/best-practices/grafting-hotfix.mdx
@@ -14,12 +14,10 @@ This feature enables quick deployment of hotfixes for critical issues, eliminati
 ## Benefits of Grafting for Hotfixes
 
 1. **Rapid Deployment**
-
    - **Minimize Downtime**: When a Subgraph encounters a critical error and stops indexing, grafting enables you to deploy a fix immediately without waiting for re-indexing.
    - **Immediate Recovery**: The new Subgraph continues from the last indexed block, ensuring that data services remain uninterrupted.
 
 2. **Data Preservation**
-
    - **Reuse Historical Data**: Grafting copies the existing data from the base Subgraph, so you don’t lose valuable historical records.
    - **Consistency**: Maintains data continuity, which is crucial for applications relying on consistent historical data.
 
@@ -30,19 +28,16 @@ This feature enables quick deployment of hotfixes for critical issues, eliminati
 ## Best Practices When Using Grafting for Hotfixes
 
 1. **Initial Deployment Without Grafting**
-
    - **Start Clean**: Always deploy your initial Subgraph without grafting to ensure that it’s stable and functions as expected.
    - **Test Thoroughly**: Validate the Subgraph’s performance to minimize the need for future hotfixes.
 
 2. **Implementing the Hotfix with Grafting**
-
    - **Identify the Issue**: When a critical error occurs, determine the block number of the last successfully indexed event.
    - **Create a New Subgraph**: Develop a new Subgraph that includes the hotfix.
    - **Configure Grafting**: Use grafting to copy data up to the identified block number from the failed Subgraph.
    - **Deploy Quickly**: Publish the grafted Subgraph to restore service as soon as possible.
 
 3. **Post-Hotfix Actions**
-
    - **Monitor Performance**: Ensure the grafted Subgraph is indexing correctly and the hotfix resolves the issue.
    - **Republish Without Grafting**: Once stable, deploy a new version of the Subgraph without grafting for long-term maintenance.
      > Note: Relying on grafting indefinitely is not recommended as it can complicate future updates and maintenance.
@@ -130,7 +125,6 @@ Suppose you have a Subgraph tracking a smart contract that has stopped indexing
   - **block**: Block number where grafting should begin.
 
 3. **Deployment Steps**
-
    - **Update the Code**: Implement the hotfix in your mapping scripts (e.g., handleWithdrawal).
    - **Adjust the Manifest**: As shown above, update the `subgraph.yaml` with grafting configurations.
    - **Deploy the Subgraph**:
diff --git a/website/src/pages/es/subgraphs/developing/creating/install-the-cli.mdx b/website/src/pages/es/subgraphs/developing/creating/install-the-cli.mdx
index d968a59b17ff..930b0aff19c1 100644
--- a/website/src/pages/es/subgraphs/developing/creating/install-the-cli.mdx
+++ b/website/src/pages/es/subgraphs/developing/creating/install-the-cli.mdx
@@ -46,7 +46,6 @@ graph init \
 ```
 
 - The command tries to retrieve the contract ABI from Etherscan.
-
   - The Graph CLI relies on a public RPC endpoint. While occasional failures are expected, retries typically resolve this issue. If failures persist, consider using a local ABI.
 
 - If any of the optional arguments are missing, it guides you through an interactive form.
@@ -87,7 +86,6 @@ Options:
 The `graph add` command will fetch the ABI from Etherscan (unless an ABI path is specified with the `--abi` option) and creates a new `dataSource`, similar to how the `graph init` command creates a `dataSource` `--from-contract`, updating the schema and mappings accordingly. This allows you to index implementation contracts from their proxy contracts.
 
 - The `--merge-entities` option identifies how the developer would like to handle `entity` and `event` name conflicts:
-
   - If `true`: the new `dataSource` should use existing `eventHandlers` & `entities`.
 
   - If `false`: a new `entity` & `event` handler should be created with `${dataSourceName}{EventName}`.
diff --git a/website/src/pages/es/subgraphs/developing/managing/deleting-a-subgraph.mdx b/website/src/pages/es/subgraphs/developing/managing/deleting-a-subgraph.mdx
index b8c2330ca49d..f842a0e04ac4 100644
--- a/website/src/pages/es/subgraphs/developing/managing/deleting-a-subgraph.mdx
+++ b/website/src/pages/es/subgraphs/developing/managing/deleting-a-subgraph.mdx
@@ -17,7 +17,6 @@ Delete your Subgraph using [Subgraph Studio](https://thegraph.com/studio/).
    ![Delete-subgraph](/img/Delete-subgraph.png)
 
 4. Depending on the Subgraph's status, you will be prompted with various options.
-
    - If the Subgraph is not published, simply click “delete” and confirm.
    - If the Subgraph is published, you will need to confirm on your wallet before the Subgraph can be deleted from Studio. If a Subgraph is published to multiple networks, such as testnet and mainnet, additional steps may be required.
 
diff --git a/website/src/pages/es/subgraphs/explorer.mdx b/website/src/pages/es/subgraphs/explorer.mdx
index e7d1980ac05d..7eb509c3f314 100644
--- a/website/src/pages/es/subgraphs/explorer.mdx
+++ b/website/src/pages/es/subgraphs/explorer.mdx
@@ -26,7 +26,6 @@ When you click into a Subgraph, you will be able to do the following:
 
 - Test queries in the playground and be able to leverage network details to make informed decisions.
 - Signal GRT on your own Subgraph or the Subgraphs of others to make indexers aware of its importance and quality.
-
   - This is critical because signaling on a Subgraph incentivizes it to be indexed, meaning it’ll eventually surface on the network to serve queries.
 
 ![Explorer Image 2](/img/Subgraph-Details.png)
diff --git a/website/src/pages/es/subgraphs/mcp/claude.mdx b/website/src/pages/es/subgraphs/mcp/claude.mdx
index 8b61438d2ab7..027b272cb942 100644
--- a/website/src/pages/es/subgraphs/mcp/claude.mdx
+++ b/website/src/pages/es/subgraphs/mcp/claude.mdx
@@ -85,7 +85,6 @@ Once you've entered your Gateway API key into your settings, save the file and r
 2. **Find the Command Path**
 
    After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory.
-
    - Navigate to your `subgraph-mcp` directory in terminal
    - Run `pwd` to get the full path
    - Combine the output with `/target/release/subgraph-mcp`
diff --git a/website/src/pages/es/subgraphs/quick-start.mdx b/website/src/pages/es/subgraphs/quick-start.mdx
index 57d13e479ba2..e9eb1815168d 100644
--- a/website/src/pages/es/subgraphs/quick-start.mdx
+++ b/website/src/pages/es/subgraphs/quick-start.mdx
@@ -166,11 +166,9 @@ To customize your deployment, see [Publishing a Subgraph](/subgraphs/developing/
 #### Adding signal to your Subgraph
 
 1. To attract Indexers to query your Subgraph, you should add GRT curation signal to it.
-
    - This action improves quality of service, reduces latency, and enhances network redundancy and availability for your Subgraph.
 
 2. If eligible for indexing rewards, Indexers receive GRT rewards based on the signaled amount.
-
    - It’s recommended to curate at least 3,000 GRT to attract 3 Indexers. Check reward eligibility based on Subgraph feature usage and supported networks.
 
 To learn more about curation, read [Curating](/resources/roles/curating/).
diff --git a/website/src/pages/fr/archived/arbitrum/arbitrum-faq.mdx b/website/src/pages/fr/archived/arbitrum/arbitrum-faq.mdx
index 3aeb3de89d39..de9c9096ebbd 100644
--- a/website/src/pages/fr/archived/arbitrum/arbitrum-faq.mdx
+++ b/website/src/pages/fr/archived/arbitrum/arbitrum-faq.mdx
@@ -25,7 +25,6 @@ Le système de facturation de The Graph accepte le GRT sur Arbitrum, et les util
 Par conséquent, pour payer les requêtes, vous avez besoin de GRT sur Arbitrum. Voici quelques façons d'y parvenir :
 
 - Si vous avez déjà des GRT sur Ethereum, vous pouvez les transférer vers Arbitrum. Vous pouvez le faire via l'option de transfert de GRT fournie dans Subgraph Studio ou en utilisant l'un des ponts suivants :
-
   - [Le Bridge Arbitrum](https://bridge.arbitrum.io/?l2ChainId=42161)
   - [TransferTo](https://transferto.xyz/swap)
 
diff --git a/website/src/pages/fr/indexing/overview.mdx b/website/src/pages/fr/indexing/overview.mdx
index b95a482012b1..d59c6ff4df94 100644
--- a/website/src/pages/fr/indexing/overview.mdx
+++ b/website/src/pages/fr/indexing/overview.mdx
@@ -680,13 +680,11 @@ graph indexer actions execute approve
 Notez que les types d'action pris en charge pour la gestion de l'allocation ont des exigences différentes en matière de données d'entrée :
 
 - `Allocate` - allocate stake to a specific Subgraph deployment
-
   - paramètres d'action requis :
     - deploymentID
     - amount
 
 - `Unallocate` - ferme l'allocation, libérant le staking pour le réallouer ailleurs
-
   - paramètres d'action requis :
     - allocationID
     - deploymentID
@@ -695,7 +693,6 @@ Notez que les types d'action pris en charge pour la gestion de l'allocation ont
     - force (force à utiliser le POI fourni même s'il ne correspond pas à ce que graph-node fournit)
 
 - `Reallocate` - atomically close allocation and open a fresh allocation for the same Subgraph deployment
-
   - paramètres d'action requis :
     - allocationID
     - deploymentID
diff --git a/website/src/pages/fr/indexing/tap.mdx b/website/src/pages/fr/indexing/tap.mdx
index 68a0b79a2e6f..032a0741d2d4 100644
--- a/website/src/pages/fr/indexing/tap.mdx
+++ b/website/src/pages/fr/indexing/tap.mdx
@@ -38,7 +38,6 @@ Tant que vous exécutez `tap-agent` et `indexer-agent`, tout sera exécuté auto
 3. `indexer-agent` récupère tous les derniers RAVS et envoie des demandes de rachat à la blockchain, qui mettra à jour la valeur de `redeem_at`.
 
 4. Pendant la période `<finality-time>`, `indexer-agent` surveille si la blockchain a des réorganisations qui annulent la transaction.
-
    - Si elle a été annulée, la RAV est renvoyée à la blockchain. S'il n'a pas été modifié, il est marqué comme `final`.
 
 ## Adresses sur la blockchain
@@ -77,17 +76,14 @@ La version requise du logiciel peut être trouvée [ici](https://github.com/grap
 ### Étapes
 
 1. **Agent d'indexeur**
-
    - Suivez le [même processus](https://github.com/graphprotocol/indexer/pkgs/container/indexer-agent#graph-protocol-indexer-components).
    - Give the new argument `--tap-subgraph-endpoint` to activate the new GraphTally codepaths and enable redeeming of RAVs.
 
 2. **Indexer Service**
-
    - Remplacez complètement votre configuration actuelle par le [nouveau service d'Indexeur rs](https://github.com/graphprotocol/indexer-rs). Il est recommandé d'utiliser l'[image du conteneur](https://github.com/orgs/graphprotocol/packages?repo_name=indexer-rs).
    - Comme dans la version précédente, vous pouvez facilement faire monter Indexer Service en charge (scaling horizontal) car il reste sans état (stateless).
 
 3. **TAP Agent**
-
    - Exécutez _une_ seule instance de [Agent TAP](https://github.com/graphprotocol/indexer-rs) à tout moment. Il est recommandé d'utiliser l'[image de conteneur](https://github.com/orgs/graphprotocol/packages?repo_name=indexer-rs).
 
 4. **Configuration de l’Indexer Service et du TAP Agent**
diff --git a/website/src/pages/fr/resources/glossary.mdx b/website/src/pages/fr/resources/glossary.mdx
index f874e54e73cd..c81af3040b9b 100644
--- a/website/src/pages/fr/resources/glossary.mdx
+++ b/website/src/pages/fr/resources/glossary.mdx
@@ -15,7 +15,6 @@ title: Glossaire
 - **Indexeur** : Participants au réseau qui gèrent des nœuds d'indexation pour indexer les données des blockchains et répondre aux requêtes GraphQL.
 
 - **Flux de revenus pour les Indexeurs** : Les Indexeurs sont récompensés en GRT par deux éléments : les remises sur les frais de requête et les récompenses pour l'indexation.
-
   1. **Query Fee Rebates**: Payments from Subgraph consumers for serving queries on the network.
 
   2. **Indexing Rewards**: The rewards that Indexers receive for indexing Subgraphs. Indexing rewards are generated via new issuance of 3% GRT annually.
@@ -43,7 +42,6 @@ title: Glossaire
 - **Epoque** : Unité de temps au sein du réseau. Actuellement, une époque correspond à 6 646 blocs, soit environ 1 jour.
 
 - **Allocation**: An Indexer can allocate their total GRT stake (including Delegators' stake) towards Subgraphs that have been published on The Graph's decentralized network. Allocations can have different statuses:
-
   1. **Active**: An allocation is considered active when it is created onchain. This is called opening an allocation, and indicates to the network that the Indexer is actively indexing and serving queries for a particular Subgraph. Active allocations accrue indexing rewards proportional to the signal on the Subgraph, and the amount of GRT allocated.
 
   2. **Closed**: An Indexer may claim the accrued indexing rewards on a given Subgraph by submitting a recent, and valid, Proof of Indexing (POI). This is known as closing an allocation. An allocation must have been open for a minimum of one epoch before it can be closed. The maximum allocation period is 28 epochs. If an Indexer leaves an allocation open beyond 28 epochs, it is known as a stale allocation. When an allocation is in the **Closed** state, a Fisherman can still open a dispute to challenge an Indexer for serving false data.
diff --git a/website/src/pages/fr/resources/roles/delegating/undelegating.mdx b/website/src/pages/fr/resources/roles/delegating/undelegating.mdx
index e4b61c71142a..35f2636b623d 100644
--- a/website/src/pages/fr/resources/roles/delegating/undelegating.mdx
+++ b/website/src/pages/fr/resources/roles/delegating/undelegating.mdx
@@ -13,13 +13,11 @@ Learn how to withdraw your delegated tokens through [Graph Explorer](https://the
 1. Visit [Graph Explorer](https://thegraph.com/explorer). Please make sure you're on Explorer and **not** Subgraph Studio.
 
 2. Click on your profile. You can find it on the top right corner of the page.
-
    - Make sure that your wallet is connected. If it's not connected, you will see the "connect" button instead.
 
 3. Once you're in your profile, click on the Delegating tab. In the Delegating tab, you can view the list of Indexers you have delegated to.
 
 4. Click on the Indexer from which you wish to withdraw your tokens.
-
    - Make sure to note the specific Indexer, as you will need to find them again to withdraw.
 
 5. Select the "Undelegate" option by clicking on the three dots next to the Indexer on the right side, see image below:
@@ -37,11 +35,9 @@ Learn how to withdraw your delegated tokens through [Graph Explorer](https://the
 ### Étape par Étape
 
 1. Find your delegation transaction on Arbiscan.
-
    - Here's an [example transaction on Arbiscan](https://arbiscan.io/tx/0xcf2110eac897099f821064445041031efb32786392bdbe7544a4cb7a6b2e4f9a)
 
 2. Navigate to "Transaction Action" where you can find the staking extension contract:
-
    - [This is the staking extension contract for the example listed above](https://arbiscan.io/address/0x00669A4CF01450B64E8A2A20E9b1FCB71E61eF03)
 
 3. Then click on "Contract". ![Contract tab on Arbiscan, between NFT Transfers and Events](/img/arbiscan-contract.png)
@@ -59,7 +55,6 @@ Learn how to withdraw your delegated tokens through [Graph Explorer](https://the
 9. If you don't know how many tokens you delegated, you can call `getDelegation` on the Read Custom tab. You will need to paste your address (delegator address) and the address of the Indexer that you delegated to, as shown in the following screenshot:
 
    ![Both of the addresses needed](/img/get-delegate.png)
-
    - This will return three numbers. The first number is the amount you can unstake.
 
 10. After you have called `unstake`, you can withdraw after approximately 28 epochs (28 days) by calling the `withdraw` function.
diff --git a/website/src/pages/fr/subgraphs/best-practices/grafting-hotfix.mdx b/website/src/pages/fr/subgraphs/best-practices/grafting-hotfix.mdx
index e8813f5e8a20..92e5ec21854a 100644
--- a/website/src/pages/fr/subgraphs/best-practices/grafting-hotfix.mdx
+++ b/website/src/pages/fr/subgraphs/best-practices/grafting-hotfix.mdx
@@ -14,12 +14,10 @@ Cette fonction permet de déployer rapidement des correctifs pour les problèmes
 ## Avantages du greffage pour les correctifs
 
 1. **Déploiement rapide**
-
    - **Minimiser les temps d'arrêt** : Lorsqu'un Subgraph rencontre une erreur critique et cesse d'être indexé, la greffe vous permet de déployer immédiatement un correctif sans attendre la réindexation.
    - **Récupération immédiate** : Le nouveau Subgraph continue à partir du dernier bloc indexé, garantissant que les services de données restent ininterrompus.
 
 2. **Préservation des données**
-
    - **Réutilisation des données historiques** : Le greffage copie les données existantes du Subgraph de base, de sorte que vous ne perdez pas de précieux enregistrements historiques.
    - **Consistance** : Maintient la continuité des données, ce qui est crucial pour les applications qui s'appuient sur des données historiques cohérentes.
 
@@ -30,19 +28,16 @@ Cette fonction permet de déployer rapidement des correctifs pour les problèmes
 ## Meilleures pratiques lors de l'utilisation du greffage pour les correctifs
 
 1. **Déploiement initial sans greffage**
-
    - **Démarrez proprement** : Déployez toujours votre Subgraph initial sans greffe pour vous assurer qu'il est stable et qu'il fonctionne comme prévu.
    - **Testez minutieusement** : Validez les performances du Subgraph afin de minimiser les besoins en correctifs futurs.
 
 2. **Mise en œuvre du correctif par greffage**
-
    - **Identifier le problème** : Lorsqu'une erreur critique se produit, déterminez le numéro de bloc du dernier événement indexé avec succès.
    - **Créer un nouveau Subgraph** : Développer un nouveau Subgraph qui inclut le correctif.
    - **Configurer la greffe** : Utiliser la greffage pour copier les données jusqu'au numéro de bloc identifié à partir du Subgraph défaillant.
    - **Déployer rapidement** : Publier le Subgraph greffé pour rétablir le service dès que possible.
 
 3. **Actions post-correctif**
-
    - **Surveillez les performances** : Assurez-vous que le Subgraph greffé est indexé correctement et que le correctif résout le problème.
    - **Républier sans greffer** : Une fois stable, déployer une nouvelle version du Subgraph sans greffe pour une maintenance à long terme.
      > Remarque : il n'est pas recommandé de s'appuyer indéfiniment sur le greffage, car cela peut compliquer les mises à jour et la maintenance futures.
@@ -130,7 +125,6 @@ Supposons que vous ayez un Subgraph qui suit un contrat intelligent qui a cessé
   - **bloc** : Numéro du bloc où le greffage doit commencer.
 
 3. **Étapes de déploiement**
-
    - **Mise à jour du code** : Implémentez le correctif dans vos scripts de mappage (par exemple, handleWithdrawal).
    - **Ajuster le manifeste** : Comme indiqué ci-dessus, mettez à jour le fichier `subgraph.yaml` avec les configurations de greffage.
    - **Déployer le subgraph** :
diff --git a/website/src/pages/fr/subgraphs/developing/creating/install-the-cli.mdx b/website/src/pages/fr/subgraphs/developing/creating/install-the-cli.mdx
index eaa6d4601d27..86ad38bd2b22 100644
--- a/website/src/pages/fr/subgraphs/developing/creating/install-the-cli.mdx
+++ b/website/src/pages/fr/subgraphs/developing/creating/install-the-cli.mdx
@@ -46,7 +46,6 @@ graph init \
 ```
 
 - La commande tente de récupérer l'ABI du contrat depuis Etherscan.
-
   - Graph CLI repose sur un endpoint RPC public. Bien que des échecs occasionnels soient attendus, les réessais résolvent généralement ce problème. Si les échecs persistent, envisagez d'utiliser un ABI local.
 
 - Si certains arguments optionnels manquent, il vous guide à travers un formulaire interactif.
@@ -87,7 +86,6 @@ Options:
 La commande `graph add` récupère l'ABI depuis Etherscan (à moins qu'un chemin ABI ne soit spécifié avec l'option `--abi`) et crée une nouvelle `dataSource`, de la même manière que la commande `graph init` crée une `dataSource` `--from-contract`, en mettant à jour le schéma et les mappages en conséquence. Cela vous permet d'indexer les contrats d'implémentation à partir de leurs contrats proxy.
 
 - L'option `--merge-entities` identifie comment le développeur souhaite gérer les conflits de noms entre `entity` et `event` :
-
   - Si `true` : la nouvelle `dataSource` doit utiliser les `eventHandlers` et `entities` existants.
 
   - Si `false` : un nouveau gestionnaire `entity` & `event` doit être créé avec `${dataSourceName}{EventName}`.
diff --git a/website/src/pages/fr/subgraphs/developing/managing/deleting-a-subgraph.mdx b/website/src/pages/fr/subgraphs/developing/managing/deleting-a-subgraph.mdx
index 480046bd10c8..6779167d2e40 100644
--- a/website/src/pages/fr/subgraphs/developing/managing/deleting-a-subgraph.mdx
+++ b/website/src/pages/fr/subgraphs/developing/managing/deleting-a-subgraph.mdx
@@ -17,7 +17,6 @@ Supprimez votre Subgraph en utilisant [Subgraph Studio](https://thegraph.com/stu
    ![Delete-subgraph](/img/Delete-subgraph.png)
 
 4. En fonction de l'état du Subgraph, différentes options vous seront proposées.
-
    - Si le Subgraph n'est pas publié, il suffit de cliquer sur "supprimer" et de confirmer.
    - Si le Subgraph est publié, vous devrez le confirmer dans votre portefeuille avant de pouvoir le supprimer de Studio. Si un Subgraph est publié sur plusieurs réseaux, tels que testnet et mainnet, des étapes supplémentaires peuvent être nécessaires.
 
diff --git a/website/src/pages/fr/subgraphs/explorer.mdx b/website/src/pages/fr/subgraphs/explorer.mdx
index 7a7cf7e972db..658acadb7b49 100644
--- a/website/src/pages/fr/subgraphs/explorer.mdx
+++ b/website/src/pages/fr/subgraphs/explorer.mdx
@@ -26,7 +26,6 @@ Lorsque vous cliquez sur un subgraph, vous pouvez effectuer les opérations suiv
 
 - Tester des requêtes dans le l'environnement de test et utiliser les détails du réseau pour prendre des décisions éclairées.
 - Signalez des GRT sur votre propre subgraph ou sur les subgraphs d'autres personnes afin de sensibiliser les Indexeurs sur son importance et sa qualité.
-
   - Ce point est essentiel, car le fait de signaler un subgraph incite à être indexé, ce qui signifie qu'il finira par faire surface sur le réseau pour répondre aux requêtes.
 
 ![Image 2 de l'Explorer](/img/Subgraph-Details.png)
diff --git a/website/src/pages/fr/subgraphs/mcp/claude.mdx b/website/src/pages/fr/subgraphs/mcp/claude.mdx
index 8b61438d2ab7..027b272cb942 100644
--- a/website/src/pages/fr/subgraphs/mcp/claude.mdx
+++ b/website/src/pages/fr/subgraphs/mcp/claude.mdx
@@ -85,7 +85,6 @@ Once you've entered your Gateway API key into your settings, save the file and r
 2. **Find the Command Path**
 
    After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory.
-
    - Navigate to your `subgraph-mcp` directory in terminal
    - Run `pwd` to get the full path
    - Combine the output with `/target/release/subgraph-mcp`
diff --git a/website/src/pages/fr/subgraphs/quick-start.mdx b/website/src/pages/fr/subgraphs/quick-start.mdx
index c227ec40ccc7..a54c5a5359a0 100644
--- a/website/src/pages/fr/subgraphs/quick-start.mdx
+++ b/website/src/pages/fr/subgraphs/quick-start.mdx
@@ -166,11 +166,9 @@ Pour personnaliser votre déploiement, voir [Publier un subgraph](/subgraphs/dev
 #### Adding signal to your Subgraph
 
 1. Pour inciter les Indexeurs à interroger votre subgraph, vous devez y ajouter un signal de curation GRT.
-
    - Cette action améliore la qualité de service, réduit la latence et améliore la redondance et la disponibilité du réseau pour votre Subgraph.
 
 2. Si éligibles aux récompenses d'indexation, les Indexeurs reçoivent des récompenses en GRT proportionnelles au montant signalé.
-
    - Il est recommandé de rassembler au moins 3 000 GRT pour attirer 3 Indexeurs. Vérifiez l'éligibilité des récompenses en fonction de l'utilisation des fonctions du subgraph et des réseaux pris en charge.
 
 Pour en savoir plus sur la curation, lisez [Curating](/resources/roles/curating/).
diff --git a/website/src/pages/hi/archived/arbitrum/arbitrum-faq.mdx b/website/src/pages/hi/archived/arbitrum/arbitrum-faq.mdx
index ee970e360d2e..dacdcb82d6a8 100644
--- a/website/src/pages/hi/archived/arbitrum/arbitrum-faq.mdx
+++ b/website/src/pages/hi/archived/arbitrum/arbitrum-faq.mdx
@@ -25,7 +25,6 @@ The Graph का बिलिंग सिस्टम Arbitrum पर GRT क
 अत: क्वेरीज़ के लिए भुगतान करने के लिए, आपको Arbitrum पर GRT की आवश्यकता है। इसे प्राप्त करने के कुछ विभिन्न तरीके यहाँ दिए गए हैं:
 
 - यदि आपके पास पहले से Ethereum पर GRT है, तो आप इसे Arbitrum पर ब्रिज कर सकते हैं। आप यह Subgraph Studio में प्रदान किए गए GRT ब्रिजिंग विकल्प के माध्यम से या निम्नलिखित में से किसी एक ब्रिज का उपयोग करके कर सकते हैं:
-
   - [The Arbitrum Bridge](https://bridge.arbitrum.io/?l2ChainId=42161)
   - [TransferTo](https://transferto.xyz/swap)
 
diff --git a/website/src/pages/hi/indexing/overview.mdx b/website/src/pages/hi/indexing/overview.mdx
index 4a9a5d556a9a..f40fdd75656a 100644
--- a/website/src/pages/hi/indexing/overview.mdx
+++ b/website/src/pages/hi/indexing/overview.mdx
@@ -680,13 +680,11 @@ graph indexer actions execute approve
 Supported action types के लिए आवंटन प्रबंधन की विभिन्न इनपुट आवश्यकताएँ होती हैं:
 
 - Allocate - किसी विशिष्ट सबग्राफ डिप्लॉयमेंट के लिए स्टेक आवंटित करें
-
   - आवश्यक क्रिया पैरामीटर्स:
     - deploymentID
     - राशि
 
 - `अनुदेश हटाएं` - आवंटन बंद करें, जिससे दांव को मुक्त किया जा सके और इसे कहीं और पुनः आवंटित किया जा सके।
-
   - आवश्यक क्रिया पैरामीटर्स:
     - allocationID
     - deploymentID
@@ -695,7 +693,6 @@ Supported action types के लिए आवंटन प्रबंधन 
     - बल प्रयोग करें (दिए गए POI का उपयोग तब भी करें यदि यह ग्राफ-नोड द्वारा प्रदान किए गए से मेल नहीं खाता)
 
 - `पुनः आवंटित करें` - परमाणु रूप से आवंटन को बंद करें और उसी Subgraph परिनियोजन के लिए एक नया आवंटन खोलें
-
   - आवश्यक क्रिया पैरामीटर:
     - allocationID
     - deploymentID
diff --git a/website/src/pages/hi/indexing/tap.mdx b/website/src/pages/hi/indexing/tap.mdx
index 9aff98fe1eae..2d059ab8b6cf 100644
--- a/website/src/pages/hi/indexing/tap.mdx
+++ b/website/src/pages/hi/indexing/tap.mdx
@@ -38,7 +38,6 @@ GraphTally allows a sender to make multiple payments to a receiver, **Receipts**
 3. indexer-agent सभी पिछले RAVS लेता है और ब्लॉकचेन को रिडीम अनुरोध भेजता है, जो redeem_at के मान को अपडेट करेगा।
 
 4. `<finality-time>` अवधि के दौरान, `indexer-agent` यह देखता है कि क्या ब्लॉकचेन में कोई पुनर्गठन है जो लेनदेन को पूर्ववत करता है।
-
    - यदि इसे रिवर्ट किया गया, तो RAV को फिर से ब्लॉकचेन पर भेजा जाता है। यदि इसे रिवर्ट नहीं किया गया, तो इसे final के रूप में चिह्नित किया जाता है।
 
 ## ब्लॉकचेन पते(Addresses)
@@ -77,17 +76,14 @@ In addition to the typical requirements to run an indexer, you’ll need a `tap-
 ### कदम
 
 1. **Indexer एजेंट**
-
    - उसी प्रक्रिया का पालन करें'(https://github.com/graphprotocol/indexer/pkgs/container/indexer-agent#graph-protocol-indexer-components).
    - Give the new argument `--tap-subgraph-endpoint` to activate the new GraphTally codepaths and enable redeeming of RAVs.
 
 2. **Indexer सेवा**
-
    - अपने वर्तमान कॉन्फ़िगरेशन को पूरी तरह से new Indexer Service rs (https://github.com/graphprotocol/indexer-rs). से बदलें। यह सुझाव दिया गया है कि आप container image (https://github.com/orgs/graphprotocol/packages?repo_name=indexer-rs). का उपयोग करें।
    - पुरानी संस्करण की तरह, आप Indexer Service को आसानी से क्षैतिज रूप से स्केल कर सकते हैं। यह अभी भी stateless है।
 
 3. **TAP एजेंट**
-
    - हमेशा एक ही उदाहरण चलाएँ TAP Agent (https://github.com/graphprotocol/indexer-rs)। यह सिफारिश की जाती है कि आप container image (https://github.com/orgs/graphprotocol/packages?repo_name=indexer-rs). का उपयोग करें।
 
 4. इंडेक्सर सेवा और TAP एजेंट कॉन्फ़िगर करें
diff --git a/website/src/pages/hi/resources/glossary.mdx b/website/src/pages/hi/resources/glossary.mdx
index 1e802e518173..68bac609a05c 100644
--- a/website/src/pages/hi/resources/glossary.mdx
+++ b/website/src/pages/hi/resources/glossary.mdx
@@ -15,7 +15,6 @@ title: शब्दकोष
 - **Indexer**: नेटवर्क प्रतिभागी जो ब्लॉकचेन से डेटा को अनुक्रमित करने के लिए अनुक्रमण नोड्स चलाते हैं और GraphQL क्वेरीज़ को सर्व करते हैं I
 
 - ** Indexer राजस्व स्रोत**: Indexer को GRT में दो घटकों के साथ पुरस्कृत किया जाता है: क्वेरी शुल्क रिबेट्स और indexing रिवार्ड्स।
-
   1. **Query Fee Rebates**: नेटवर्क पर queries को संसाधित करने के लिए Subgraph उपभोक्ताओं द्वारा किया गया भुगतान।
 
   2. **Indexing Rewards**: Subgraphs को index करने के बदले Indexers को मिलने वाले इनाम। Indexing rewards हर साल 3% GRT के नए जारीकरण से उत्पन्न होते हैं।
@@ -43,7 +42,6 @@ title: शब्दकोष
 - **अवधियों को** : नेटवर्क के भीतर समय की एक इकाई। वर्तमान में, एक अवधियों को 6,646 ब्लॉक्स या लगभग 1 दिन के बराबर होता है।
 
 - **Allocation**: एक Indexer अपने कुल GRT **stake** (जिसमें Delegators का stake भी शामिल है) को उन Subgraphs की ओर आवंटित कर सकता है, जो The Graph के विकेंद्रीकृत नेटवर्क पर प्रकाशित किए गए हैं। Allocations के विभिन्न **status** हो सकते हैं:
-
   1. **Active**: जब कोई allocation ऑनचेन बनाई जाती है, तो उसे **active** माना जाता है। इसे **allocation खोलना** कहा जाता है और यह नेटवर्क को संकेत देता है कि Indexer किसी विशेष Subgraph को सक्रिय रूप से **index** कर रहा है और **queries** को संसाधित कर रहा है। Active allocations, Subgraph पर दिए गए **signal** और आवंटित किए गए **GRT** की मात्रा के अनुपात में **indexing rewards** अर्जित करते हैं।
 
   2. **Closed**: कोई Indexer किसी दिए गए Subgraph पर अर्जित **indexing rewards** का दावा करने के लिए हालिया और मान्य **Proof of Indexing (POI)** जमा कर सकता है। इसे **allocation बंद करना** कहा जाता है। - किसी allocation को बंद करने से पहले, इसे कम से कम **एक epoch** तक खुला रहना आवश्यक है।
@@ -66,7 +64,6 @@ title: शब्दकोष
 - ** GRT**: The Graph का कार्य उपयोगिता टोकन। GRT नेटवर्क में योगदान देने वाले सहभागियों के लिए आर्थिक प्रोत्साहन प्रदान करता है।
 
 - **Proof of Indexing (POI)**: जब कोई Indexer अपनी **allocation बंद** करता है और किसी विशेष Subgraph पर अर्जित **indexing rewards** का दावा करना चाहता है, तो उसे एक **वैध और हालिया POI** प्रदान करना आवश्यक होता है। - **Fishermen** Indexer द्वारा प्रस्तुत POI पर विवाद कर सकते हैं।
-
   - यदि विवाद Fisherman के पक्ष में हल होता है, तो संबंधित Indexer का **slashing** किया जाता है।
 
 - **Graph Node**: वह **component** जो Subgraphs को **index** करता है और उत्पन्न डेटा को **GraphQL API** के माध्यम से query करने के लिए उपलब्ध कराता है। यह Indexer **stack** का एक केंद्रीय भाग है, और Graph Node का सही संचालन एक सफल Indexer चलाने के लिए आवश्यक है।
diff --git a/website/src/pages/hi/resources/roles/delegating/undelegating.mdx b/website/src/pages/hi/resources/roles/delegating/undelegating.mdx
index 06b53896a7ea..164098506dd8 100644
--- a/website/src/pages/hi/resources/roles/delegating/undelegating.mdx
+++ b/website/src/pages/hi/resources/roles/delegating/undelegating.mdx
@@ -13,13 +13,11 @@ Learn how to withdraw your delegated tokens through [Graph Explorer](https://the
 1. Visit [Graph Explorer](https://thegraph.com/explorer). Please make sure you're on Explorer and **not** Subgraph Studio.
 
 2. Click on your profile. You can find it on the top right corner of the page.
-
    - Make sure that your wallet is connected. If it's not connected, you will see the "connect" button instead.
 
 3. Once you're in your profile, click on the Delegating tab. In the Delegating tab, you can view the list of Indexers you have delegated to.
 
 4. Click on the Indexer from which you wish to withdraw your tokens.
-
    - Make sure to note the specific Indexer, as you will need to find them again to withdraw.
 
 5. Select the "Undelegate" option by clicking on the three dots next to the Indexer on the right side, see image below:
@@ -37,11 +35,9 @@ Learn how to withdraw your delegated tokens through [Graph Explorer](https://the
 ### चरण-दर-चरण
 
 1. Find your delegation transaction on Arbiscan.
-
    - Here's an [example transaction on Arbiscan](https://arbiscan.io/tx/0xcf2110eac897099f821064445041031efb32786392bdbe7544a4cb7a6b2e4f9a)
 
 2. Navigate to "Transaction Action" where you can find the staking extension contract:
-
    - [This is the staking extension contract for the example listed above](https://arbiscan.io/address/0x00669A4CF01450B64E8A2A20E9b1FCB71E61eF03)
 
 3. Then click on "Contract". ![Contract tab on Arbiscan, between NFT Transfers and Events](/img/arbiscan-contract.png)
@@ -59,7 +55,6 @@ Learn how to withdraw your delegated tokens through [Graph Explorer](https://the
 9. If you don't know how many tokens you delegated, you can call `getDelegation` on the Read Custom tab. You will need to paste your address (delegator address) and the address of the Indexer that you delegated to, as shown in the following screenshot:
 
    ![Both of the addresses needed](/img/get-delegate.png)
-
    - This will return three numbers. The first number is the amount you can unstake.
 
 10. After you have called `unstake`, you can withdraw after approximately 28 epochs (28 days) by calling the `withdraw` function.
diff --git a/website/src/pages/hi/subgraphs/best-practices/grafting-hotfix.mdx b/website/src/pages/hi/subgraphs/best-practices/grafting-hotfix.mdx
index bfab7b096073..5a27fcddfeec 100644
--- a/website/src/pages/hi/subgraphs/best-practices/grafting-hotfix.mdx
+++ b/website/src/pages/hi/subgraphs/best-practices/grafting-hotfix.mdx
@@ -14,12 +14,10 @@ This feature enables quick deployment of hotfixes for critical issues, eliminati
 ## Benefits of Grafting for Hotfixes
 
 1. **Rapid Deployment**
-
    - **Minimize Downtime**: When a Subgraph encounters a critical error and stops indexing, grafting enables you to deploy a fix immediately without waiting for re-indexing.
    - **Immediate Recovery**: The new Subgraph continues from the last indexed block, ensuring that data services remain uninterrupted.
 
 2. **डेटा प्रिजर्वेशन**
-
    - **Reuse Historical Data**: Grafting copies the existing data from the base Subgraph, so you don’t lose valuable historical records.
    - **Consistency**: Maintains data continuity, which is crucial for applications relying on consistent historical data.
 
@@ -30,19 +28,16 @@ This feature enables quick deployment of hotfixes for critical issues, eliminati
 ## Best Practices When Using Grafting for Hotfixes
 
 1. **Initial Deployment Without Grafting**
-
    - **Start Clean**: Always deploy your initial Subgraph without grafting to ensure that it’s stable and functions as expected.
    - **Test Thoroughly**: Validate the Subgraph’s performance to minimize the need for future hotfixes.
 
 2. **Implementing the Hotfix with Grafting**
-
    - **Identify the Issue**: When a critical error occurs, determine the block number of the last successfully indexed event.
    - **Create a New Subgraph**: Develop a new Subgraph that includes the hotfix.
    - **Configure Grafting**: Use grafting to copy data up to the identified block number from the failed Subgraph.
    - **Deploy Quickly**: Publish the grafted Subgraph to restore service as soon as possible.
 
 3. **Post-Hotfix Actions**
-
    - **Monitor Performance**: Ensure the grafted Subgraph is indexing correctly and the hotfix resolves the issue.
    - **Republish Without Grafting**: Once stable, deploy a new version of the Subgraph without grafting for long-term maintenance.
      > Note: Relying on grafting indefinitely is not recommended as it can complicate future updates and maintenance.
@@ -130,7 +125,6 @@ Suppose you have a Subgraph tracking a smart contract that has stopped indexing
   - **block**: Block number where grafting should begin.
 
 3. **Deployment Steps**
-
    - **Update the Code**: Implement the hotfix in your mapping scripts (e.g., handleWithdrawal).
    - **Adjust the Manifest**: As shown above, update the `subgraph.yaml` with grafting configurations.
    - **Deploy the Subgraph**:
diff --git a/website/src/pages/hi/subgraphs/developing/creating/install-the-cli.mdx b/website/src/pages/hi/subgraphs/developing/creating/install-the-cli.mdx
index 031c70bf3507..f635f905a51e 100644
--- a/website/src/pages/hi/subgraphs/developing/creating/install-the-cli.mdx
+++ b/website/src/pages/hi/subgraphs/developing/creating/install-the-cli.mdx
@@ -46,7 +46,6 @@ graph init \
 ```
 
 - कमांड Etherscan से कॉन्ट्रैक्ट ABI को पुनः प्राप्त करने की कोशिश करता है।
-
   - The Graph CLI एक सार्वजनिक RPC एंडपॉइंट पर निर्भर करता है। जबकि कुछ असफलताएँ अपेक्षित हैं, पुनः प्रयास आमतौर पर इस समस्या को हल कर देते हैं। यदि असफलताएँ बनी रहती हैं, तो एक स्थानीय ABI का उपयोग करने पर विचार करें।
 
 - यदि कोई वैकल्पिक तर्क गायब है, तो यह आपको एक इंटरैक्टिव फॉर्म के माध्यम से मार्गदर्शन करता है।
@@ -87,7 +86,6 @@ Options:
 The `graph add` command will fetch the ABI from Etherscan (unless an ABI path is specified with the `--abi` option) and creates a new `dataSource`, similar to how the `graph init` command creates a `dataSource` `--from-contract`, updating the schema and mappings accordingly. This allows you to index implementation contracts from their proxy contracts.
 
 - The `--merge-entities` option identifies how the developer would like to handle `entity` and `event` name conflicts:
-
   - If `true`: the new `dataSource` should use existing `eventHandlers` & `entities`.
 
   - If `false`: a new `entity` & `event` handler should be created with `${dataSourceName}{EventName}`.
diff --git a/website/src/pages/hi/subgraphs/developing/managing/deleting-a-subgraph.mdx b/website/src/pages/hi/subgraphs/developing/managing/deleting-a-subgraph.mdx
index 02fdc71480ef..f5a1a937f13f 100644
--- a/website/src/pages/hi/subgraphs/developing/managing/deleting-a-subgraph.mdx
+++ b/website/src/pages/hi/subgraphs/developing/managing/deleting-a-subgraph.mdx
@@ -17,7 +17,6 @@ Delete your Subgraph using [Subgraph Studio](https://thegraph.com/studio/).
    ![Delete-subgraph](/img/Delete-subgraph.png)
 
 4. Depending on the Subgraph's status, you will be prompted with various options.
-
    - If the Subgraph is not published, simply click “delete” and confirm.
    - If the Subgraph is published, you will need to confirm on your wallet before the Subgraph can be deleted from Studio. If a Subgraph is published to multiple networks, such as testnet and mainnet, additional steps may be required.
 
diff --git a/website/src/pages/hi/subgraphs/explorer.mdx b/website/src/pages/hi/subgraphs/explorer.mdx
index 64a671781463..93498d3e746f 100644
--- a/website/src/pages/hi/subgraphs/explorer.mdx
+++ b/website/src/pages/hi/subgraphs/explorer.mdx
@@ -26,7 +26,6 @@ When you click into a Subgraph, you will be able to do the following:
 
 - प्लेग्राउंड में परीक्षण प्रश्न करें और सूचनापूर्ण निर्णय लेने के लिए नेटवर्क विवरण का उपयोग करें।
 - Signal GRT on your own Subgraph or the Subgraphs of others to make indexers aware of its importance and quality.
-
   - This is critical because signaling on a Subgraph incentivizes it to be indexed, meaning it’ll eventually surface on the network to serve queries.
 
 ![Explorer Image 2](/img/Subgraph-Details.png)
diff --git a/website/src/pages/hi/subgraphs/mcp/claude.mdx b/website/src/pages/hi/subgraphs/mcp/claude.mdx
index 8b61438d2ab7..027b272cb942 100644
--- a/website/src/pages/hi/subgraphs/mcp/claude.mdx
+++ b/website/src/pages/hi/subgraphs/mcp/claude.mdx
@@ -85,7 +85,6 @@ Once you've entered your Gateway API key into your settings, save the file and r
 2. **Find the Command Path**
 
    After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory.
-
    - Navigate to your `subgraph-mcp` directory in terminal
    - Run `pwd` to get the full path
    - Combine the output with `/target/release/subgraph-mcp`
diff --git a/website/src/pages/hi/subgraphs/quick-start.mdx b/website/src/pages/hi/subgraphs/quick-start.mdx
index cbf3550a3170..53ff9ee2994e 100644
--- a/website/src/pages/hi/subgraphs/quick-start.mdx
+++ b/website/src/pages/hi/subgraphs/quick-start.mdx
@@ -166,11 +166,9 @@ graph publish
 #### सिग्नल को अपने Subgraph में जोड़ना
 
 1. Indexers को अपने सबग्राफ से क्वेरी करने के लिए आकर्षित करने हेतु, आपको इसमें GRT क्यूरेशन सिग्नल जोड़ना चाहिए।
-
    - यह कार्रवाई सेवा की गुणवत्ता में सुधार करती है, विलंबता को कम करती है, और आपके सबग्राफ के लिए नेटवर्क की पुनरावृत्ति और उपलब्धता को बढ़ाती है।
 
 2. यदि इंडेक्सिंग पुरस्कारों के लिए योग्य हैं, तो Indexers संकेतित राशि के आधार पर GRT पुरस्कार प्राप्त करते हैं।
-
    - यह अनुशंसा की जाती है कि कम से कम 3,000 GRT को क्यूरेट किया जाए ताकि 3 Indexers को आकर्षित किया जा सके। सबग्राफ फीचर उपयोग और समर्थित नेटवर्क के आधार पर पुरस्कार पात्रता की जांच करें।
 
 Curation के बारे में और जानने के लिए, [Curating](/resources/roles/curating/) पढ़ें.
diff --git a/website/src/pages/it/archived/arbitrum/arbitrum-faq.mdx b/website/src/pages/it/archived/arbitrum/arbitrum-faq.mdx
index 5c4dc7fa3aa3..d550cbe8a528 100644
--- a/website/src/pages/it/archived/arbitrum/arbitrum-faq.mdx
+++ b/website/src/pages/it/archived/arbitrum/arbitrum-faq.mdx
@@ -25,7 +25,6 @@ The Graph’s billing system accepts GRT on Arbitrum, and users will need ETH on
 Consequently, to pay for queries, you need GRT on Arbitrum. Here are a few different ways to achieve this:
 
 - If you already have GRT on Ethereum, you can bridge it to Arbitrum. You can do this via the GRT bridging option provided in Subgraph Studio or by using one of the following bridges:
-
   - [The Arbitrum Bridge](https://bridge.arbitrum.io/?l2ChainId=42161)
   - [TransferTo](https://transferto.xyz/swap)
 
diff --git a/website/src/pages/it/indexing/overview.mdx b/website/src/pages/it/indexing/overview.mdx
index 6f8dcb45fe8f..90464daede59 100644
--- a/website/src/pages/it/indexing/overview.mdx
+++ b/website/src/pages/it/indexing/overview.mdx
@@ -680,13 +680,11 @@ graph indexer actions execute approve
 Note that supported action types for allocation management have different input requirements:
 
 - `Allocate` - allocate stake to a specific Subgraph deployment
-
   - required action params:
     - deploymentID
     - amount
 
 - `Unallocate` - close allocation, freeing up the stake to reallocate elsewhere
-
   - required action params:
     - allocationID
     - deploymentID
@@ -695,7 +693,6 @@ Note that supported action types for allocation management have different input
     - force (forces using the provided POI even if it doesn’t match what the graph-node provides)
 
 - `Reallocate` - atomically close allocation and open a fresh allocation for the same Subgraph deployment
-
   - required action params:
     - allocationID
     - deploymentID
diff --git a/website/src/pages/it/indexing/tap.mdx b/website/src/pages/it/indexing/tap.mdx
index 384ed571abd5..3ebdc5de4dbb 100644
--- a/website/src/pages/it/indexing/tap.mdx
+++ b/website/src/pages/it/indexing/tap.mdx
@@ -38,7 +38,6 @@ As long as you run `tap-agent` and `indexer-agent`, everything will be executed
 3. `indexer-agent` takes all the last RAVS and sends redeem requests to the blockchain, which will update the value of `redeem_at`.
 
 4. During the `<finality-time>` period, `indexer-agent` monitors if the blockchain has any reorganizations that revert the transaction.
-
    - If it was reverted, the RAV is resent to the blockchain. If it was not reverted, it gets marked as `final`.
 
 ## Blockchain Addresses
@@ -77,17 +76,14 @@ The required software version can be found [here](https://github.com/graphprotoc
 ### Steps
 
 1. **Indexer Agent**
-
    - Follow the [same process](https://github.com/graphprotocol/indexer/pkgs/container/indexer-agent#graph-protocol-indexer-components).
    - Give the new argument `--tap-subgraph-endpoint` to activate the new GraphTally codepaths and enable redeeming of RAVs.
 
 2. **Indexer Service**
-
    - Fully replace your current configuration with the [new Indexer Service rs](https://github.com/graphprotocol/indexer-rs). It's recommend that you use the [container image](https://github.com/orgs/graphprotocol/packages?repo_name=indexer-rs).
    - Like the older version, you can scale Indexer Service horizontally easily. It is still stateless.
 
 3. **TAP Agent**
-
    - Run _one_ single instance of [TAP Agent](https://github.com/graphprotocol/indexer-rs) at all times. It's recommend that you use the [container image](https://github.com/orgs/graphprotocol/packages?repo_name=indexer-rs).
 
 4. **Configure Indexer Service and TAP Agent**
diff --git a/website/src/pages/it/resources/glossary.mdx b/website/src/pages/it/resources/glossary.mdx
index 4c5ad55cd0d3..31402db1084a 100644
--- a/website/src/pages/it/resources/glossary.mdx
+++ b/website/src/pages/it/resources/glossary.mdx
@@ -15,7 +15,6 @@ title: Glossary
 - **Indexer**: Network participants that run indexing nodes to index data from blockchains and serve GraphQL queries.
 
 - **Indexer Revenue Streams**: Indexers are rewarded in GRT with two components: query fee rebates and indexing rewards.
-
   1. **Query Fee Rebates**: Payments from Subgraph consumers for serving queries on the network.
 
   2. **Indexing Rewards**: The rewards that Indexers receive for indexing Subgraphs. Indexing rewards are generated via new issuance of 3% GRT annually.
@@ -43,7 +42,6 @@ title: Glossary
 - **Epoch**: A unit of time within the network. Currently, one epoch is 6,646 blocks or approximately 1 day.
 
 - **Allocation**: An Indexer can allocate their total GRT stake (including Delegators' stake) towards Subgraphs that have been published on The Graph's decentralized network. Allocations can have different statuses:
-
   1. **Active**: An allocation is considered active when it is created onchain. This is called opening an allocation, and indicates to the network that the Indexer is actively indexing and serving queries for a particular Subgraph. Active allocations accrue indexing rewards proportional to the signal on the Subgraph, and the amount of GRT allocated.
 
   2. **Closed**: An Indexer may claim the accrued indexing rewards on a given Subgraph by submitting a recent, and valid, Proof of Indexing (POI). This is known as closing an allocation. An allocation must have been open for a minimum of one epoch before it can be closed. The maximum allocation period is 28 epochs. If an Indexer leaves an allocation open beyond 28 epochs, it is known as a stale allocation. When an allocation is in the **Closed** state, a Fisherman can still open a dispute to challenge an Indexer for serving false data.
diff --git a/website/src/pages/it/resources/roles/delegating/undelegating.mdx b/website/src/pages/it/resources/roles/delegating/undelegating.mdx
index c3e31e653941..9c10e47eb771 100644
--- a/website/src/pages/it/resources/roles/delegating/undelegating.mdx
+++ b/website/src/pages/it/resources/roles/delegating/undelegating.mdx
@@ -13,13 +13,11 @@ Learn how to withdraw your delegated tokens through [Graph Explorer](https://the
 1. Visit [Graph Explorer](https://thegraph.com/explorer). Please make sure you're on Explorer and **not** Subgraph Studio.
 
 2. Click on your profile. You can find it on the top right corner of the page.
-
    - Make sure that your wallet is connected. If it's not connected, you will see the "connect" button instead.
 
 3. Once you're in your profile, click on the Delegating tab. In the Delegating tab, you can view the list of Indexers you have delegated to.
 
 4. Click on the Indexer from which you wish to withdraw your tokens.
-
    - Make sure to note the specific Indexer, as you will need to find them again to withdraw.
 
 5. Select the "Undelegate" option by clicking on the three dots next to the Indexer on the right side, see image below:
@@ -37,11 +35,9 @@ Learn how to withdraw your delegated tokens through [Graph Explorer](https://the
 ### Step-by-Step
 
 1. Find your delegation transaction on Arbiscan.
-
    - Here's an [example transaction on Arbiscan](https://arbiscan.io/tx/0xcf2110eac897099f821064445041031efb32786392bdbe7544a4cb7a6b2e4f9a)
 
 2. Navigate to "Transaction Action" where you can find the staking extension contract:
-
    - [This is the staking extension contract for the example listed above](https://arbiscan.io/address/0x00669A4CF01450B64E8A2A20E9b1FCB71E61eF03)
 
 3. Then click on "Contract". ![Contract tab on Arbiscan, between NFT Transfers and Events](/img/arbiscan-contract.png)
@@ -59,7 +55,6 @@ Learn how to withdraw your delegated tokens through [Graph Explorer](https://the
 9. If you don't know how many tokens you delegated, you can call `getDelegation` on the Read Custom tab. You will need to paste your address (delegator address) and the address of the Indexer that you delegated to, as shown in the following screenshot:
 
    ![Both of the addresses needed](/img/get-delegate.png)
-
    - This will return three numbers. The first number is the amount you can unstake.
 
 10. After you have called `unstake`, you can withdraw after approximately 28 epochs (28 days) by calling the `withdraw` function.
diff --git a/website/src/pages/it/subgraphs/best-practices/grafting-hotfix.mdx b/website/src/pages/it/subgraphs/best-practices/grafting-hotfix.mdx
index ab6bd38a1247..3d0b9ba70ebd 100644
--- a/website/src/pages/it/subgraphs/best-practices/grafting-hotfix.mdx
+++ b/website/src/pages/it/subgraphs/best-practices/grafting-hotfix.mdx
@@ -14,12 +14,10 @@ This feature enables quick deployment of hotfixes for critical issues, eliminati
 ## Benefits of Grafting for Hotfixes
 
 1. **Rapid Deployment**
-
    - **Minimize Downtime**: When a Subgraph encounters a critical error and stops indexing, grafting enables you to deploy a fix immediately without waiting for re-indexing.
    - **Immediate Recovery**: The new Subgraph continues from the last indexed block, ensuring that data services remain uninterrupted.
 
 2. **Data Preservation**
-
    - **Reuse Historical Data**: Grafting copies the existing data from the base Subgraph, so you don’t lose valuable historical records.
    - **Consistency**: Maintains data continuity, which is crucial for applications relying on consistent historical data.
 
@@ -30,19 +28,16 @@ This feature enables quick deployment of hotfixes for critical issues, eliminati
 ## Best Practices When Using Grafting for Hotfixes
 
 1. **Initial Deployment Without Grafting**
-
    - **Start Clean**: Always deploy your initial Subgraph without grafting to ensure that it’s stable and functions as expected.
    - **Test Thoroughly**: Validate the Subgraph’s performance to minimize the need for future hotfixes.
 
 2. **Implementing the Hotfix with Grafting**
-
    - **Identify the Issue**: When a critical error occurs, determine the block number of the last successfully indexed event.
    - **Create a New Subgraph**: Develop a new Subgraph that includes the hotfix.
    - **Configure Grafting**: Use grafting to copy data up to the identified block number from the failed Subgraph.
    - **Deploy Quickly**: Publish the grafted Subgraph to restore service as soon as possible.
 
 3. **Post-Hotfix Actions**
-
    - **Monitor Performance**: Ensure the grafted Subgraph is indexing correctly and the hotfix resolves the issue.
    - **Republish Without Grafting**: Once stable, deploy a new version of the Subgraph without grafting for long-term maintenance.
      > Note: Relying on grafting indefinitely is not recommended as it can complicate future updates and maintenance.
@@ -130,7 +125,6 @@ Suppose you have a Subgraph tracking a smart contract that has stopped indexing
   - **block**: Block number where grafting should begin.
 
 3. **Deployment Steps**
-
    - **Update the Code**: Implement the hotfix in your mapping scripts (e.g., handleWithdrawal).
    - **Adjust the Manifest**: As shown above, update the `subgraph.yaml` with grafting configurations.
    - **Deploy the Subgraph**:
diff --git a/website/src/pages/it/subgraphs/developing/creating/install-the-cli.mdx b/website/src/pages/it/subgraphs/developing/creating/install-the-cli.mdx
index 20770b2e37b7..ce93f6b6c022 100644
--- a/website/src/pages/it/subgraphs/developing/creating/install-the-cli.mdx
+++ b/website/src/pages/it/subgraphs/developing/creating/install-the-cli.mdx
@@ -46,7 +46,6 @@ graph init \
 ```
 
 - The command tries to retrieve the contract ABI from Etherscan.
-
   - The Graph CLI relies on a public RPC endpoint. While occasional failures are expected, retries typically resolve this issue. If failures persist, consider using a local ABI.
 
 - If any of the optional arguments are missing, it guides you through an interactive form.
@@ -87,7 +86,6 @@ Options:
 The `graph add` command will fetch the ABI from Etherscan (unless an ABI path is specified with the `--abi` option) and creates a new `dataSource`, similar to how the `graph init` command creates a `dataSource` `--from-contract`, updating the schema and mappings accordingly. This allows you to index implementation contracts from their proxy contracts.
 
 - The `--merge-entities` option identifies how the developer would like to handle `entity` and `event` name conflicts:
-
   - If `true`: the new `dataSource` should use existing `eventHandlers` & `entities`.
 
   - If `false`: a new `entity` & `event` handler should be created with `${dataSourceName}{EventName}`.
diff --git a/website/src/pages/it/subgraphs/developing/managing/deleting-a-subgraph.mdx b/website/src/pages/it/subgraphs/developing/managing/deleting-a-subgraph.mdx
index b8c2330ca49d..f842a0e04ac4 100644
--- a/website/src/pages/it/subgraphs/developing/managing/deleting-a-subgraph.mdx
+++ b/website/src/pages/it/subgraphs/developing/managing/deleting-a-subgraph.mdx
@@ -17,7 +17,6 @@ Delete your Subgraph using [Subgraph Studio](https://thegraph.com/studio/).
    ![Delete-subgraph](/img/Delete-subgraph.png)
 
 4. Depending on the Subgraph's status, you will be prompted with various options.
-
    - If the Subgraph is not published, simply click “delete” and confirm.
    - If the Subgraph is published, you will need to confirm on your wallet before the Subgraph can be deleted from Studio. If a Subgraph is published to multiple networks, such as testnet and mainnet, additional steps may be required.
 
diff --git a/website/src/pages/it/subgraphs/explorer.mdx b/website/src/pages/it/subgraphs/explorer.mdx
index 5db7212c1fb0..30f15b4cdc94 100644
--- a/website/src/pages/it/subgraphs/explorer.mdx
+++ b/website/src/pages/it/subgraphs/explorer.mdx
@@ -26,7 +26,6 @@ When you click into a Subgraph, you will be able to do the following:
 
 - Test queries in the playground and be able to leverage network details to make informed decisions.
 - Signal GRT on your own Subgraph or the Subgraphs of others to make indexers aware of its importance and quality.
-
   - This is critical because signaling on a Subgraph incentivizes it to be indexed, meaning it’ll eventually surface on the network to serve queries.
 
 ![Explorer Image 2](/img/Subgraph-Details.png)
diff --git a/website/src/pages/it/subgraphs/mcp/claude.mdx b/website/src/pages/it/subgraphs/mcp/claude.mdx
index 8b61438d2ab7..027b272cb942 100644
--- a/website/src/pages/it/subgraphs/mcp/claude.mdx
+++ b/website/src/pages/it/subgraphs/mcp/claude.mdx
@@ -85,7 +85,6 @@ Once you've entered your Gateway API key into your settings, save the file and r
 2. **Find the Command Path**
 
    After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory.
-
    - Navigate to your `subgraph-mcp` directory in terminal
    - Run `pwd` to get the full path
    - Combine the output with `/target/release/subgraph-mcp`
diff --git a/website/src/pages/it/subgraphs/quick-start.mdx b/website/src/pages/it/subgraphs/quick-start.mdx
index a803ac8695fa..3c43e2dc2bb4 100644
--- a/website/src/pages/it/subgraphs/quick-start.mdx
+++ b/website/src/pages/it/subgraphs/quick-start.mdx
@@ -166,11 +166,9 @@ To customize your deployment, see [Publishing a Subgraph](/subgraphs/developing/
 #### Adding signal to your Subgraph
 
 1. To attract Indexers to query your Subgraph, you should add GRT curation signal to it.
-
    - This action improves quality of service, reduces latency, and enhances network redundancy and availability for your Subgraph.
 
 2. If eligible for indexing rewards, Indexers receive GRT rewards based on the signaled amount.
-
    - It’s recommended to curate at least 3,000 GRT to attract 3 Indexers. Check reward eligibility based on Subgraph feature usage and supported networks.
 
 To learn more about curation, read [Curating](/resources/roles/curating/).
diff --git a/website/src/pages/ja/archived/arbitrum/arbitrum-faq.mdx b/website/src/pages/ja/archived/arbitrum/arbitrum-faq.mdx
index cc0c098f0af1..9a12e12b41cc 100644
--- a/website/src/pages/ja/archived/arbitrum/arbitrum-faq.mdx
+++ b/website/src/pages/ja/archived/arbitrum/arbitrum-faq.mdx
@@ -25,7 +25,6 @@ The Graph’s billing system accepts GRT on Arbitrum, and users will need ETH on
 Consequently, to pay for queries, you need GRT on Arbitrum. Here are a few different ways to achieve this:
 
 - If you already have GRT on Ethereum, you can bridge it to Arbitrum. You can do this via the GRT bridging option provided in Subgraph Studio or by using one of the following bridges:
-
   - [The Arbitrum Bridge](https://bridge.arbitrum.io/?l2ChainId=42161)
   - [TransferTo](https://transferto.xyz/swap)
 
diff --git a/website/src/pages/ja/indexing/overview.mdx b/website/src/pages/ja/indexing/overview.mdx
index 4478e166a307..c1f89ba0c1d3 100644
--- a/website/src/pages/ja/indexing/overview.mdx
+++ b/website/src/pages/ja/indexing/overview.mdx
@@ -680,13 +680,11 @@ graph indexer actions execute approve
 Note that supported action types for allocation management have different input requirements:
 
 - `Allocate` - allocate stake to a specific Subgraph deployment
-
   - required action params:
     - deploymentID
     - amount
 
 - `Unallocate` - close allocation, freeing up the stake to reallocate elsewhere
-
   - required action params:
     - allocationID
     - deploymentID
@@ -695,7 +693,6 @@ Note that supported action types for allocation management have different input
     - force (forces using the provided POI even if it doesn’t match what the graph-node provides)
 
 - `Reallocate` - atomically close allocation and open a fresh allocation for the same Subgraph deployment
-
   - required action params:
     - allocationID
     - deploymentID
diff --git a/website/src/pages/ja/indexing/tap.mdx b/website/src/pages/ja/indexing/tap.mdx
index 61a0f77343c3..79838e44666a 100644
--- a/website/src/pages/ja/indexing/tap.mdx
+++ b/website/src/pages/ja/indexing/tap.mdx
@@ -38,7 +38,6 @@ As long as you run `tap-agent` and `indexer-agent`, everything will be executed
 3. `indexer-agent` takes all the last RAVS and sends redeem requests to the blockchain, which will update the value of `redeem_at`.
 
 4. During the `<finality-time>` period, `indexer-agent` monitors if the blockchain has any reorganizations that revert the transaction.
-
    - If it was reverted, the RAV is resent to the blockchain. If it was not reverted, it gets marked as `final`.
 
 ## Blockchain Addresses
@@ -77,17 +76,14 @@ The required software version can be found [here](https://github.com/graphprotoc
 ### Steps
 
 1. **Indexer Agent**
-
    - Follow the [same process](https://github.com/graphprotocol/indexer/pkgs/container/indexer-agent#graph-protocol-indexer-components).
    - Give the new argument `--tap-subgraph-endpoint` to activate the new GraphTally codepaths and enable redeeming of RAVs.
 
 2. **Indexer Service**
-
    - Fully replace your current configuration with the [new Indexer Service rs](https://github.com/graphprotocol/indexer-rs). It's recommend that you use the [container image](https://github.com/orgs/graphprotocol/packages?repo_name=indexer-rs).
    - Like the older version, you can scale Indexer Service horizontally easily. It is still stateless.
 
 3. **TAP Agent**
-
    - Run _one_ single instance of [TAP Agent](https://github.com/graphprotocol/indexer-rs) at all times. It's recommend that you use the [container image](https://github.com/orgs/graphprotocol/packages?repo_name=indexer-rs).
 
 4. **Configure Indexer Service and TAP Agent**
diff --git a/website/src/pages/ja/resources/glossary.mdx b/website/src/pages/ja/resources/glossary.mdx
index 6a602dd4c2d2..d57378bad62a 100644
--- a/website/src/pages/ja/resources/glossary.mdx
+++ b/website/src/pages/ja/resources/glossary.mdx
@@ -15,7 +15,6 @@ title: 用語集
 - **Indexer**: Network participants that run indexing nodes to index data from blockchains and serve GraphQL queries.
 
 - **Indexer Revenue Streams**: Indexers are rewarded in GRT with two components: query fee rebates and indexing rewards.
-
   1. **Query Fee Rebates**: Payments from Subgraph consumers for serving queries on the network.
 
   2. **Indexing Rewards**: The rewards that Indexers receive for indexing Subgraphs. Indexing rewards are generated via new issuance of 3% GRT annually.
@@ -43,7 +42,6 @@ title: 用語集
 - **Epoch**: A unit of time within the network. Currently, one epoch is 6,646 blocks or approximately 1 day.
 
 - **Allocation**: An Indexer can allocate their total GRT stake (including Delegators' stake) towards Subgraphs that have been published on The Graph's decentralized network. Allocations can have different statuses:
-
   1. **Active**: An allocation is considered active when it is created onchain. This is called opening an allocation, and indicates to the network that the Indexer is actively indexing and serving queries for a particular Subgraph. Active allocations accrue indexing rewards proportional to the signal on the Subgraph, and the amount of GRT allocated.
 
   2. **Closed**: An Indexer may claim the accrued indexing rewards on a given Subgraph by submitting a recent, and valid, Proof of Indexing (POI). This is known as closing an allocation. An allocation must have been open for a minimum of one epoch before it can be closed. The maximum allocation period is 28 epochs. If an Indexer leaves an allocation open beyond 28 epochs, it is known as a stale allocation. When an allocation is in the **Closed** state, a Fisherman can still open a dispute to challenge an Indexer for serving false data.
diff --git a/website/src/pages/ja/resources/roles/delegating/undelegating.mdx b/website/src/pages/ja/resources/roles/delegating/undelegating.mdx
index f350db31296b..ebee6ee9ab39 100644
--- a/website/src/pages/ja/resources/roles/delegating/undelegating.mdx
+++ b/website/src/pages/ja/resources/roles/delegating/undelegating.mdx
@@ -13,13 +13,11 @@ Learn how to withdraw your delegated tokens through [Graph Explorer](https://the
 1. Visit [Graph Explorer](https://thegraph.com/explorer). Please make sure you're on Explorer and **not** Subgraph Studio.
 
 2. Click on your profile. You can find it on the top right corner of the page.
-
    - Make sure that your wallet is connected. If it's not connected, you will see the "connect" button instead.
 
 3. Once you're in your profile, click on the Delegating tab. In the Delegating tab, you can view the list of Indexers you have delegated to.
 
 4. Click on the Indexer from which you wish to withdraw your tokens.
-
    - Make sure to note the specific Indexer, as you will need to find them again to withdraw.
 
 5. Select the "Undelegate" option by clicking on the three dots next to the Indexer on the right side, see image below:
@@ -37,11 +35,9 @@ Learn how to withdraw your delegated tokens through [Graph Explorer](https://the
 ### Step-by-Step
 
 1. Find your delegation transaction on Arbiscan.
-
    - Here's an [example transaction on Arbiscan](https://arbiscan.io/tx/0xcf2110eac897099f821064445041031efb32786392bdbe7544a4cb7a6b2e4f9a)
 
 2. Navigate to "Transaction Action" where you can find the staking extension contract:
-
    - [This is the staking extension contract for the example listed above](https://arbiscan.io/address/0x00669A4CF01450B64E8A2A20E9b1FCB71E61eF03)
 
 3. Then click on "Contract". ![Contract tab on Arbiscan, between NFT Transfers and Events](/img/arbiscan-contract.png)
@@ -59,7 +55,6 @@ Learn how to withdraw your delegated tokens through [Graph Explorer](https://the
 9. If you don't know how many tokens you delegated, you can call `getDelegation` on the Read Custom tab. You will need to paste your address (delegator address) and the address of the Indexer that you delegated to, as shown in the following screenshot:
 
    ![Both of the addresses needed](/img/get-delegate.png)
-
    - This will return three numbers. The first number is the amount you can unstake.
 
 10. After you have called `unstake`, you can withdraw after approximately 28 epochs (28 days) by calling the `withdraw` function.
diff --git a/website/src/pages/ja/subgraphs/best-practices/grafting-hotfix.mdx b/website/src/pages/ja/subgraphs/best-practices/grafting-hotfix.mdx
index f4726b7a89b8..c4eaf5816b94 100644
--- a/website/src/pages/ja/subgraphs/best-practices/grafting-hotfix.mdx
+++ b/website/src/pages/ja/subgraphs/best-practices/grafting-hotfix.mdx
@@ -14,12 +14,10 @@ This feature enables quick deployment of hotfixes for critical issues, eliminati
 ## Benefits of Grafting for Hotfixes
 
 1. **Rapid Deployment**
-
    - **Minimize Downtime**: When a Subgraph encounters a critical error and stops indexing, grafting enables you to deploy a fix immediately without waiting for re-indexing.
    - **Immediate Recovery**: The new Subgraph continues from the last indexed block, ensuring that data services remain uninterrupted.
 
 2. **Data Preservation**
-
    - **Reuse Historical Data**: Grafting copies the existing data from the base Subgraph, so you don’t lose valuable historical records.
    - **Consistency**: Maintains data continuity, which is crucial for applications relying on consistent historical data.
 
@@ -30,19 +28,16 @@ This feature enables quick deployment of hotfixes for critical issues, eliminati
 ## Best Practices When Using Grafting for Hotfixes
 
 1. **Initial Deployment Without Grafting**
-
    - **Start Clean**: Always deploy your initial Subgraph without grafting to ensure that it’s stable and functions as expected.
    - **Test Thoroughly**: Validate the Subgraph’s performance to minimize the need for future hotfixes.
 
 2. **Implementing the Hotfix with Grafting**
-
    - **Identify the Issue**: When a critical error occurs, determine the block number of the last successfully indexed event.
    - **Create a New Subgraph**: Develop a new Subgraph that includes the hotfix.
    - **Configure Grafting**: Use grafting to copy data up to the identified block number from the failed Subgraph.
    - **Deploy Quickly**: Publish the grafted Subgraph to restore service as soon as possible.
 
 3. **Post-Hotfix Actions**
-
    - **Monitor Performance**: Ensure the grafted Subgraph is indexing correctly and the hotfix resolves the issue.
    - **Republish Without Grafting**: Once stable, deploy a new version of the Subgraph without grafting for long-term maintenance.
      > Note: Relying on grafting indefinitely is not recommended as it can complicate future updates and maintenance.
@@ -130,7 +125,6 @@ Suppose you have a Subgraph tracking a smart contract that has stopped indexing
   - **block**: Block number where grafting should begin.
 
 3. **Deployment Steps**
-
    - **Update the Code**: Implement the hotfix in your mapping scripts (e.g., handleWithdrawal).
    - **Adjust the Manifest**: As shown above, update the `subgraph.yaml` with grafting configurations.
    - **Deploy the Subgraph**:
diff --git a/website/src/pages/ja/subgraphs/developing/creating/install-the-cli.mdx b/website/src/pages/ja/subgraphs/developing/creating/install-the-cli.mdx
index 3352df16b841..9b70152aa198 100644
--- a/website/src/pages/ja/subgraphs/developing/creating/install-the-cli.mdx
+++ b/website/src/pages/ja/subgraphs/developing/creating/install-the-cli.mdx
@@ -46,7 +46,6 @@ graph init \
 ```
 
 - The command tries to retrieve the contract ABI from Etherscan.
-
   - The Graph CLI relies on a public RPC endpoint. While occasional failures are expected, retries typically resolve this issue. If failures persist, consider using a local ABI.
 
 - If any of the optional arguments are missing, it guides you through an interactive form.
@@ -87,7 +86,6 @@ Options:
 The `graph add` command will fetch the ABI from Etherscan (unless an ABI path is specified with the `--abi` option) and creates a new `dataSource`, similar to how the `graph init` command creates a `dataSource` `--from-contract`, updating the schema and mappings accordingly. This allows you to index implementation contracts from their proxy contracts.
 
 - The `--merge-entities` option identifies how the developer would like to handle `entity` and `event` name conflicts:
-
   - If `true`: the new `dataSource` should use existing `eventHandlers` & `entities`.
 
   - If `false`: a new `entity` & `event` handler should be created with `${dataSourceName}{EventName}`.
diff --git a/website/src/pages/ja/subgraphs/developing/managing/deleting-a-subgraph.mdx b/website/src/pages/ja/subgraphs/developing/managing/deleting-a-subgraph.mdx
index b8c2330ca49d..f842a0e04ac4 100644
--- a/website/src/pages/ja/subgraphs/developing/managing/deleting-a-subgraph.mdx
+++ b/website/src/pages/ja/subgraphs/developing/managing/deleting-a-subgraph.mdx
@@ -17,7 +17,6 @@ Delete your Subgraph using [Subgraph Studio](https://thegraph.com/studio/).
    ![Delete-subgraph](/img/Delete-subgraph.png)
 
 4. Depending on the Subgraph's status, you will be prompted with various options.
-
    - If the Subgraph is not published, simply click “delete” and confirm.
    - If the Subgraph is published, you will need to confirm on your wallet before the Subgraph can be deleted from Studio. If a Subgraph is published to multiple networks, such as testnet and mainnet, additional steps may be required.
 
diff --git a/website/src/pages/ja/subgraphs/explorer.mdx b/website/src/pages/ja/subgraphs/explorer.mdx
index 0357d63fda7e..59737fdcaeed 100644
--- a/website/src/pages/ja/subgraphs/explorer.mdx
+++ b/website/src/pages/ja/subgraphs/explorer.mdx
@@ -26,7 +26,6 @@ When you click into a Subgraph, you will be able to do the following:
 
 - Test queries in the playground and be able to leverage network details to make informed decisions.
 - Signal GRT on your own Subgraph or the Subgraphs of others to make indexers aware of its importance and quality.
-
   - This is critical because signaling on a Subgraph incentivizes it to be indexed, meaning it’ll eventually surface on the network to serve queries.
 
 ![Explorer Image 2](/img/Subgraph-Details.png)
diff --git a/website/src/pages/ja/subgraphs/mcp/claude.mdx b/website/src/pages/ja/subgraphs/mcp/claude.mdx
index 8b61438d2ab7..027b272cb942 100644
--- a/website/src/pages/ja/subgraphs/mcp/claude.mdx
+++ b/website/src/pages/ja/subgraphs/mcp/claude.mdx
@@ -85,7 +85,6 @@ Once you've entered your Gateway API key into your settings, save the file and r
 2. **Find the Command Path**
 
    After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory.
-
    - Navigate to your `subgraph-mcp` directory in terminal
    - Run `pwd` to get the full path
    - Combine the output with `/target/release/subgraph-mcp`
diff --git a/website/src/pages/ja/subgraphs/quick-start.mdx b/website/src/pages/ja/subgraphs/quick-start.mdx
index df410ba8ec9b..6dd752a48355 100644
--- a/website/src/pages/ja/subgraphs/quick-start.mdx
+++ b/website/src/pages/ja/subgraphs/quick-start.mdx
@@ -166,11 +166,9 @@ To customize your deployment, see [Publishing a Subgraph](/subgraphs/developing/
 #### Adding signal to your Subgraph
 
 1. To attract Indexers to query your Subgraph, you should add GRT curation signal to it.
-
    - This action improves quality of service, reduces latency, and enhances network redundancy and availability for your Subgraph.
 
 2. If eligible for indexing rewards, Indexers receive GRT rewards based on the signaled amount.
-
    - It’s recommended to curate at least 3,000 GRT to attract 3 Indexers. Check reward eligibility based on Subgraph feature usage and supported networks.
 
 To learn more about curation, read [Curating](/resources/roles/curating/).
diff --git a/website/src/pages/ko/archived/arbitrum/arbitrum-faq.mdx b/website/src/pages/ko/archived/arbitrum/arbitrum-faq.mdx
index d121f5a2d0f3..270a5f547a74 100644
--- a/website/src/pages/ko/archived/arbitrum/arbitrum-faq.mdx
+++ b/website/src/pages/ko/archived/arbitrum/arbitrum-faq.mdx
@@ -25,7 +25,6 @@ The Graph’s billing system accepts GRT on Arbitrum, and users will need ETH on
 Consequently, to pay for queries, you need GRT on Arbitrum. Here are a few different ways to achieve this:
 
 - If you already have GRT on Ethereum, you can bridge it to Arbitrum. You can do this via the GRT bridging option provided in Subgraph Studio or by using one of the following bridges:
-
   - [The Arbitrum Bridge](https://bridge.arbitrum.io/?l2ChainId=42161)
   - [TransferTo](https://transferto.xyz/swap)
 
diff --git a/website/src/pages/ko/indexing/overview.mdx b/website/src/pages/ko/indexing/overview.mdx
index fa6c22b77a86..80884f3109c1 100644
--- a/website/src/pages/ko/indexing/overview.mdx
+++ b/website/src/pages/ko/indexing/overview.mdx
@@ -680,13 +680,11 @@ graph indexer actions execute approve
 Note that supported action types for allocation management have different input requirements:
 
 - `Allocate` - allocate stake to a specific Subgraph deployment
-
   - required action params:
     - deploymentID
     - amount
 
 - `Unallocate` - close allocation, freeing up the stake to reallocate elsewhere
-
   - required action params:
     - allocationID
     - deploymentID
@@ -695,7 +693,6 @@ Note that supported action types for allocation management have different input
     - force (forces using the provided POI even if it doesn’t match what the graph-node provides)
 
 - `Reallocate` - atomically close allocation and open a fresh allocation for the same Subgraph deployment
-
   - required action params:
     - allocationID
     - deploymentID
diff --git a/website/src/pages/ko/indexing/tap.mdx b/website/src/pages/ko/indexing/tap.mdx
index 477534d63201..e9667d498e0f 100644
--- a/website/src/pages/ko/indexing/tap.mdx
+++ b/website/src/pages/ko/indexing/tap.mdx
@@ -38,7 +38,6 @@ As long as you run `tap-agent` and `indexer-agent`, everything will be executed
 3. `indexer-agent` takes all the last RAVS and sends redeem requests to the blockchain, which will update the value of `redeem_at`.
 
 4. During the `<finality-time>` period, `indexer-agent` monitors if the blockchain has any reorganizations that revert the transaction.
-
    - If it was reverted, the RAV is resent to the blockchain. If it was not reverted, it gets marked as `final`.
 
 ## Blockchain Addresses
@@ -77,17 +76,14 @@ The required software version can be found [here](https://github.com/graphprotoc
 ### Steps
 
 1. **Indexer Agent**
-
    - Follow the [same process](https://github.com/graphprotocol/indexer/pkgs/container/indexer-agent#graph-protocol-indexer-components).
    - Give the new argument `--tap-subgraph-endpoint` to activate the new GraphTally codepaths and enable redeeming of RAVs.
 
 2. **Indexer Service**
-
    - Fully replace your current configuration with the [new Indexer Service rs](https://github.com/graphprotocol/indexer-rs). It's recommend that you use the [container image](https://github.com/orgs/graphprotocol/packages?repo_name=indexer-rs).
    - Like the older version, you can scale Indexer Service horizontally easily. It is still stateless.
 
 3. **TAP Agent**
-
    - Run _one_ single instance of [TAP Agent](https://github.com/graphprotocol/indexer-rs) at all times. It's recommend that you use the [container image](https://github.com/orgs/graphprotocol/packages?repo_name=indexer-rs).
 
 4. **Configure Indexer Service and TAP Agent**
diff --git a/website/src/pages/ko/resources/glossary.mdx b/website/src/pages/ko/resources/glossary.mdx
index 4c5ad55cd0d3..31402db1084a 100644
--- a/website/src/pages/ko/resources/glossary.mdx
+++ b/website/src/pages/ko/resources/glossary.mdx
@@ -15,7 +15,6 @@ title: Glossary
 - **Indexer**: Network participants that run indexing nodes to index data from blockchains and serve GraphQL queries.
 
 - **Indexer Revenue Streams**: Indexers are rewarded in GRT with two components: query fee rebates and indexing rewards.
-
   1. **Query Fee Rebates**: Payments from Subgraph consumers for serving queries on the network.
 
   2. **Indexing Rewards**: The rewards that Indexers receive for indexing Subgraphs. Indexing rewards are generated via new issuance of 3% GRT annually.
@@ -43,7 +42,6 @@ title: Glossary
 - **Epoch**: A unit of time within the network. Currently, one epoch is 6,646 blocks or approximately 1 day.
 
 - **Allocation**: An Indexer can allocate their total GRT stake (including Delegators' stake) towards Subgraphs that have been published on The Graph's decentralized network. Allocations can have different statuses:
-
   1. **Active**: An allocation is considered active when it is created onchain. This is called opening an allocation, and indicates to the network that the Indexer is actively indexing and serving queries for a particular Subgraph. Active allocations accrue indexing rewards proportional to the signal on the Subgraph, and the amount of GRT allocated.
 
   2. **Closed**: An Indexer may claim the accrued indexing rewards on a given Subgraph by submitting a recent, and valid, Proof of Indexing (POI). This is known as closing an allocation. An allocation must have been open for a minimum of one epoch before it can be closed. The maximum allocation period is 28 epochs. If an Indexer leaves an allocation open beyond 28 epochs, it is known as a stale allocation. When an allocation is in the **Closed** state, a Fisherman can still open a dispute to challenge an Indexer for serving false data.
diff --git a/website/src/pages/ko/resources/roles/delegating/undelegating.mdx b/website/src/pages/ko/resources/roles/delegating/undelegating.mdx
index c3e31e653941..9c10e47eb771 100644
--- a/website/src/pages/ko/resources/roles/delegating/undelegating.mdx
+++ b/website/src/pages/ko/resources/roles/delegating/undelegating.mdx
@@ -13,13 +13,11 @@ Learn how to withdraw your delegated tokens through [Graph Explorer](https://the
 1. Visit [Graph Explorer](https://thegraph.com/explorer). Please make sure you're on Explorer and **not** Subgraph Studio.
 
 2. Click on your profile. You can find it on the top right corner of the page.
-
    - Make sure that your wallet is connected. If it's not connected, you will see the "connect" button instead.
 
 3. Once you're in your profile, click on the Delegating tab. In the Delegating tab, you can view the list of Indexers you have delegated to.
 
 4. Click on the Indexer from which you wish to withdraw your tokens.
-
    - Make sure to note the specific Indexer, as you will need to find them again to withdraw.
 
 5. Select the "Undelegate" option by clicking on the three dots next to the Indexer on the right side, see image below:
@@ -37,11 +35,9 @@ Learn how to withdraw your delegated tokens through [Graph Explorer](https://the
 ### Step-by-Step
 
 1. Find your delegation transaction on Arbiscan.
-
    - Here's an [example transaction on Arbiscan](https://arbiscan.io/tx/0xcf2110eac897099f821064445041031efb32786392bdbe7544a4cb7a6b2e4f9a)
 
 2. Navigate to "Transaction Action" where you can find the staking extension contract:
-
    - [This is the staking extension contract for the example listed above](https://arbiscan.io/address/0x00669A4CF01450B64E8A2A20E9b1FCB71E61eF03)
 
 3. Then click on "Contract". ![Contract tab on Arbiscan, between NFT Transfers and Events](/img/arbiscan-contract.png)
@@ -59,7 +55,6 @@ Learn how to withdraw your delegated tokens through [Graph Explorer](https://the
 9. If you don't know how many tokens you delegated, you can call `getDelegation` on the Read Custom tab. You will need to paste your address (delegator address) and the address of the Indexer that you delegated to, as shown in the following screenshot:
 
    ![Both of the addresses needed](/img/get-delegate.png)
-
    - This will return three numbers. The first number is the amount you can unstake.
 
 10. After you have called `unstake`, you can withdraw after approximately 28 epochs (28 days) by calling the `withdraw` function.
diff --git a/website/src/pages/ko/subgraphs/best-practices/grafting-hotfix.mdx b/website/src/pages/ko/subgraphs/best-practices/grafting-hotfix.mdx
index 674cf6b87c62..591914aca81e 100644
--- a/website/src/pages/ko/subgraphs/best-practices/grafting-hotfix.mdx
+++ b/website/src/pages/ko/subgraphs/best-practices/grafting-hotfix.mdx
@@ -14,12 +14,10 @@ This feature enables quick deployment of hotfixes for critical issues, eliminati
 ## Benefits of Grafting for Hotfixes
 
 1. **Rapid Deployment**
-
    - **Minimize Downtime**: When a Subgraph encounters a critical error and stops indexing, grafting enables you to deploy a fix immediately without waiting for re-indexing.
    - **Immediate Recovery**: The new Subgraph continues from the last indexed block, ensuring that data services remain uninterrupted.
 
 2. **Data Preservation**
-
    - **Reuse Historical Data**: Grafting copies the existing data from the base Subgraph, so you don’t lose valuable historical records.
    - **Consistency**: Maintains data continuity, which is crucial for applications relying on consistent historical data.
 
@@ -30,19 +28,16 @@ This feature enables quick deployment of hotfixes for critical issues, eliminati
 ## Best Practices When Using Grafting for Hotfixes
 
 1. **Initial Deployment Without Grafting**
-
    - **Start Clean**: Always deploy your initial Subgraph without grafting to ensure that it’s stable and functions as expected.
    - **Test Thoroughly**: Validate the Subgraph’s performance to minimize the need for future hotfixes.
 
 2. **Implementing the Hotfix with Grafting**
-
    - **Identify the Issue**: When a critical error occurs, determine the block number of the last successfully indexed event.
    - **Create a New Subgraph**: Develop a new Subgraph that includes the hotfix.
    - **Configure Grafting**: Use grafting to copy data up to the identified block number from the failed Subgraph.
    - **Deploy Quickly**: Publish the grafted Subgraph to restore service as soon as possible.
 
 3. **Post-Hotfix Actions**
-
    - **Monitor Performance**: Ensure the grafted Subgraph is indexing correctly and the hotfix resolves the issue.
    - **Republish Without Grafting**: Once stable, deploy a new version of the Subgraph without grafting for long-term maintenance.
      > Note: Relying on grafting indefinitely is not recommended as it can complicate future updates and maintenance.
@@ -130,7 +125,6 @@ Suppose you have a Subgraph tracking a smart contract that has stopped indexing
   - **block**: Block number where grafting should begin.
 
 3. **Deployment Steps**
-
    - **Update the Code**: Implement the hotfix in your mapping scripts (e.g., handleWithdrawal).
    - **Adjust the Manifest**: As shown above, update the `subgraph.yaml` with grafting configurations.
    - **Deploy the Subgraph**:
diff --git a/website/src/pages/ko/subgraphs/developing/creating/install-the-cli.mdx b/website/src/pages/ko/subgraphs/developing/creating/install-the-cli.mdx
index c9d6966ef5fe..904aa6cd172b 100644
--- a/website/src/pages/ko/subgraphs/developing/creating/install-the-cli.mdx
+++ b/website/src/pages/ko/subgraphs/developing/creating/install-the-cli.mdx
@@ -46,7 +46,6 @@ graph init \
 ```
 
 - The command tries to retrieve the contract ABI from Etherscan.
-
   - The Graph CLI relies on a public RPC endpoint. While occasional failures are expected, retries typically resolve this issue. If failures persist, consider using a local ABI.
 
 - If any of the optional arguments are missing, it guides you through an interactive form.
@@ -87,7 +86,6 @@ Options:
 The `graph add` command will fetch the ABI from Etherscan (unless an ABI path is specified with the `--abi` option) and creates a new `dataSource`, similar to how the `graph init` command creates a `dataSource` `--from-contract`, updating the schema and mappings accordingly. This allows you to index implementation contracts from their proxy contracts.
 
 - The `--merge-entities` option identifies how the developer would like to handle `entity` and `event` name conflicts:
-
   - If `true`: the new `dataSource` should use existing `eventHandlers` & `entities`.
 
   - If `false`: a new `entity` & `event` handler should be created with `${dataSourceName}{EventName}`.
diff --git a/website/src/pages/ko/subgraphs/developing/managing/deleting-a-subgraph.mdx b/website/src/pages/ko/subgraphs/developing/managing/deleting-a-subgraph.mdx
index b8c2330ca49d..f842a0e04ac4 100644
--- a/website/src/pages/ko/subgraphs/developing/managing/deleting-a-subgraph.mdx
+++ b/website/src/pages/ko/subgraphs/developing/managing/deleting-a-subgraph.mdx
@@ -17,7 +17,6 @@ Delete your Subgraph using [Subgraph Studio](https://thegraph.com/studio/).
    ![Delete-subgraph](/img/Delete-subgraph.png)
 
 4. Depending on the Subgraph's status, you will be prompted with various options.
-
    - If the Subgraph is not published, simply click “delete” and confirm.
    - If the Subgraph is published, you will need to confirm on your wallet before the Subgraph can be deleted from Studio. If a Subgraph is published to multiple networks, such as testnet and mainnet, additional steps may be required.
 
diff --git a/website/src/pages/ko/subgraphs/explorer.mdx b/website/src/pages/ko/subgraphs/explorer.mdx
index 499fcede88d3..2da8a191ca99 100644
--- a/website/src/pages/ko/subgraphs/explorer.mdx
+++ b/website/src/pages/ko/subgraphs/explorer.mdx
@@ -26,7 +26,6 @@ When you click into a Subgraph, you will be able to do the following:
 
 - Test queries in the playground and be able to leverage network details to make informed decisions.
 - Signal GRT on your own Subgraph or the Subgraphs of others to make indexers aware of its importance and quality.
-
   - This is critical because signaling on a Subgraph incentivizes it to be indexed, meaning it’ll eventually surface on the network to serve queries.
 
 ![Explorer Image 2](/img/Subgraph-Details.png)
diff --git a/website/src/pages/ko/subgraphs/mcp/claude.mdx b/website/src/pages/ko/subgraphs/mcp/claude.mdx
index 8b61438d2ab7..027b272cb942 100644
--- a/website/src/pages/ko/subgraphs/mcp/claude.mdx
+++ b/website/src/pages/ko/subgraphs/mcp/claude.mdx
@@ -85,7 +85,6 @@ Once you've entered your Gateway API key into your settings, save the file and r
 2. **Find the Command Path**
 
    After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory.
-
    - Navigate to your `subgraph-mcp` directory in terminal
    - Run `pwd` to get the full path
    - Combine the output with `/target/release/subgraph-mcp`
diff --git a/website/src/pages/ko/subgraphs/quick-start.mdx b/website/src/pages/ko/subgraphs/quick-start.mdx
index a803ac8695fa..3c43e2dc2bb4 100644
--- a/website/src/pages/ko/subgraphs/quick-start.mdx
+++ b/website/src/pages/ko/subgraphs/quick-start.mdx
@@ -166,11 +166,9 @@ To customize your deployment, see [Publishing a Subgraph](/subgraphs/developing/
 #### Adding signal to your Subgraph
 
 1. To attract Indexers to query your Subgraph, you should add GRT curation signal to it.
-
    - This action improves quality of service, reduces latency, and enhances network redundancy and availability for your Subgraph.
 
 2. If eligible for indexing rewards, Indexers receive GRT rewards based on the signaled amount.
-
    - It’s recommended to curate at least 3,000 GRT to attract 3 Indexers. Check reward eligibility based on Subgraph feature usage and supported networks.
 
 To learn more about curation, read [Curating](/resources/roles/curating/).
diff --git a/website/src/pages/mr/archived/arbitrum/arbitrum-faq.mdx b/website/src/pages/mr/archived/arbitrum/arbitrum-faq.mdx
index d121f5a2d0f3..270a5f547a74 100644
--- a/website/src/pages/mr/archived/arbitrum/arbitrum-faq.mdx
+++ b/website/src/pages/mr/archived/arbitrum/arbitrum-faq.mdx
@@ -25,7 +25,6 @@ The Graph’s billing system accepts GRT on Arbitrum, and users will need ETH on
 Consequently, to pay for queries, you need GRT on Arbitrum. Here are a few different ways to achieve this:
 
 - If you already have GRT on Ethereum, you can bridge it to Arbitrum. You can do this via the GRT bridging option provided in Subgraph Studio or by using one of the following bridges:
-
   - [The Arbitrum Bridge](https://bridge.arbitrum.io/?l2ChainId=42161)
   - [TransferTo](https://transferto.xyz/swap)
 
diff --git a/website/src/pages/mr/indexing/overview.mdx b/website/src/pages/mr/indexing/overview.mdx
index a7a768afd00b..16ccc43f2dd8 100644
--- a/website/src/pages/mr/indexing/overview.mdx
+++ b/website/src/pages/mr/indexing/overview.mdx
@@ -680,13 +680,11 @@ graph indexer actions execute approve
 Note that supported action types for allocation management have different input requirements:
 
 - `Allocate` - allocate stake to a specific Subgraph deployment
-
   - required action params:
     - deploymentID
     - amount
 
 - `Unallocate` - close allocation, freeing up the stake to reallocate elsewhere
-
   - required action params:
     - allocationID
     - deploymentID
@@ -695,7 +693,6 @@ Note that supported action types for allocation management have different input
     - force (forces using the provided POI even if it doesn’t match what the graph-node provides)
 
 - `Reallocate` - atomically close allocation and open a fresh allocation for the same Subgraph deployment
-
   - required action params:
     - allocationID
     - deploymentID
diff --git a/website/src/pages/mr/indexing/tap.mdx b/website/src/pages/mr/indexing/tap.mdx
index dd5401d6e9d5..c82d2fcda6b9 100644
--- a/website/src/pages/mr/indexing/tap.mdx
+++ b/website/src/pages/mr/indexing/tap.mdx
@@ -38,7 +38,6 @@ As long as you run `tap-agent` and `indexer-agent`, everything will be executed
 3. `indexer-agent` takes all the last RAVS and sends redeem requests to the blockchain, which will update the value of `redeem_at`.
 
 4. During the `<finality-time>` period, `indexer-agent` monitors if the blockchain has any reorganizations that revert the transaction.
-
    - If it was reverted, the RAV is resent to the blockchain. If it was not reverted, it gets marked as `final`.
 
 ## Blockchain Addresses
@@ -77,17 +76,14 @@ The required software version can be found [here](https://github.com/graphprotoc
 ### Steps
 
 1. **Indexer Agent**
-
    - Follow the [same process](https://github.com/graphprotocol/indexer/pkgs/container/indexer-agent#graph-protocol-indexer-components).
    - Give the new argument `--tap-subgraph-endpoint` to activate the new GraphTally codepaths and enable redeeming of RAVs.
 
 2. **Indexer Service**
-
    - Fully replace your current configuration with the [new Indexer Service rs](https://github.com/graphprotocol/indexer-rs). It's recommend that you use the [container image](https://github.com/orgs/graphprotocol/packages?repo_name=indexer-rs).
    - Like the older version, you can scale Indexer Service horizontally easily. It is still stateless.
 
 3. **TAP Agent**
-
    - Run _one_ single instance of [TAP Agent](https://github.com/graphprotocol/indexer-rs) at all times. It's recommend that you use the [container image](https://github.com/orgs/graphprotocol/packages?repo_name=indexer-rs).
 
 4. **Configure Indexer Service and TAP Agent**
diff --git a/website/src/pages/mr/resources/glossary.mdx b/website/src/pages/mr/resources/glossary.mdx
index 4c5ad55cd0d3..31402db1084a 100644
--- a/website/src/pages/mr/resources/glossary.mdx
+++ b/website/src/pages/mr/resources/glossary.mdx
@@ -15,7 +15,6 @@ title: Glossary
 - **Indexer**: Network participants that run indexing nodes to index data from blockchains and serve GraphQL queries.
 
 - **Indexer Revenue Streams**: Indexers are rewarded in GRT with two components: query fee rebates and indexing rewards.
-
   1. **Query Fee Rebates**: Payments from Subgraph consumers for serving queries on the network.
 
   2. **Indexing Rewards**: The rewards that Indexers receive for indexing Subgraphs. Indexing rewards are generated via new issuance of 3% GRT annually.
@@ -43,7 +42,6 @@ title: Glossary
 - **Epoch**: A unit of time within the network. Currently, one epoch is 6,646 blocks or approximately 1 day.
 
 - **Allocation**: An Indexer can allocate their total GRT stake (including Delegators' stake) towards Subgraphs that have been published on The Graph's decentralized network. Allocations can have different statuses:
-
   1. **Active**: An allocation is considered active when it is created onchain. This is called opening an allocation, and indicates to the network that the Indexer is actively indexing and serving queries for a particular Subgraph. Active allocations accrue indexing rewards proportional to the signal on the Subgraph, and the amount of GRT allocated.
 
   2. **Closed**: An Indexer may claim the accrued indexing rewards on a given Subgraph by submitting a recent, and valid, Proof of Indexing (POI). This is known as closing an allocation. An allocation must have been open for a minimum of one epoch before it can be closed. The maximum allocation period is 28 epochs. If an Indexer leaves an allocation open beyond 28 epochs, it is known as a stale allocation. When an allocation is in the **Closed** state, a Fisherman can still open a dispute to challenge an Indexer for serving false data.
diff --git a/website/src/pages/mr/resources/roles/delegating/undelegating.mdx b/website/src/pages/mr/resources/roles/delegating/undelegating.mdx
index 0f7eee794703..8453ef86806c 100644
--- a/website/src/pages/mr/resources/roles/delegating/undelegating.mdx
+++ b/website/src/pages/mr/resources/roles/delegating/undelegating.mdx
@@ -13,13 +13,11 @@ Learn how to withdraw your delegated tokens through [Graph Explorer](https://the
 1. Visit [Graph Explorer](https://thegraph.com/explorer). Please make sure you're on Explorer and **not** Subgraph Studio.
 
 2. Click on your profile. You can find it on the top right corner of the page.
-
    - Make sure that your wallet is connected. If it's not connected, you will see the "connect" button instead.
 
 3. Once you're in your profile, click on the Delegating tab. In the Delegating tab, you can view the list of Indexers you have delegated to.
 
 4. Click on the Indexer from which you wish to withdraw your tokens.
-
    - Make sure to note the specific Indexer, as you will need to find them again to withdraw.
 
 5. Select the "Undelegate" option by clicking on the three dots next to the Indexer on the right side, see image below:
@@ -37,11 +35,9 @@ Learn how to withdraw your delegated tokens through [Graph Explorer](https://the
 ### Step-by-Step
 
 1. Find your delegation transaction on Arbiscan.
-
    - Here's an [example transaction on Arbiscan](https://arbiscan.io/tx/0xcf2110eac897099f821064445041031efb32786392bdbe7544a4cb7a6b2e4f9a)
 
 2. Navigate to "Transaction Action" where you can find the staking extension contract:
-
    - [This is the staking extension contract for the example listed above](https://arbiscan.io/address/0x00669A4CF01450B64E8A2A20E9b1FCB71E61eF03)
 
 3. Then click on "Contract". ![Contract tab on Arbiscan, between NFT Transfers and Events](/img/arbiscan-contract.png)
@@ -59,7 +55,6 @@ Learn how to withdraw your delegated tokens through [Graph Explorer](https://the
 9. If you don't know how many tokens you delegated, you can call `getDelegation` on the Read Custom tab. You will need to paste your address (delegator address) and the address of the Indexer that you delegated to, as shown in the following screenshot:
 
    ![Both of the addresses needed](/img/get-delegate.png)
-
    - This will return three numbers. The first number is the amount you can unstake.
 
 10. After you have called `unstake`, you can withdraw after approximately 28 epochs (28 days) by calling the `withdraw` function.
diff --git a/website/src/pages/mr/subgraphs/best-practices/grafting-hotfix.mdx b/website/src/pages/mr/subgraphs/best-practices/grafting-hotfix.mdx
index 63b5d9bbe017..149040721eab 100644
--- a/website/src/pages/mr/subgraphs/best-practices/grafting-hotfix.mdx
+++ b/website/src/pages/mr/subgraphs/best-practices/grafting-hotfix.mdx
@@ -14,12 +14,10 @@ This feature enables quick deployment of hotfixes for critical issues, eliminati
 ## Benefits of Grafting for Hotfixes
 
 1. **Rapid Deployment**
-
    - **Minimize Downtime**: When a Subgraph encounters a critical error and stops indexing, grafting enables you to deploy a fix immediately without waiting for re-indexing.
    - **Immediate Recovery**: The new Subgraph continues from the last indexed block, ensuring that data services remain uninterrupted.
 
 2. **Data Preservation**
-
    - **Reuse Historical Data**: Grafting copies the existing data from the base Subgraph, so you don’t lose valuable historical records.
    - **Consistency**: Maintains data continuity, which is crucial for applications relying on consistent historical data.
 
@@ -30,19 +28,16 @@ This feature enables quick deployment of hotfixes for critical issues, eliminati
 ## Best Practices When Using Grafting for Hotfixes
 
 1. **Initial Deployment Without Grafting**
-
    - **Start Clean**: Always deploy your initial Subgraph without grafting to ensure that it’s stable and functions as expected.
    - **Test Thoroughly**: Validate the Subgraph’s performance to minimize the need for future hotfixes.
 
 2. **Implementing the Hotfix with Grafting**
-
    - **Identify the Issue**: When a critical error occurs, determine the block number of the last successfully indexed event.
    - **Create a New Subgraph**: Develop a new Subgraph that includes the hotfix.
    - **Configure Grafting**: Use grafting to copy data up to the identified block number from the failed Subgraph.
    - **Deploy Quickly**: Publish the grafted Subgraph to restore service as soon as possible.
 
 3. **Post-Hotfix Actions**
-
    - **Monitor Performance**: Ensure the grafted Subgraph is indexing correctly and the hotfix resolves the issue.
    - **Republish Without Grafting**: Once stable, deploy a new version of the Subgraph without grafting for long-term maintenance.
      > Note: Relying on grafting indefinitely is not recommended as it can complicate future updates and maintenance.
@@ -130,7 +125,6 @@ Suppose you have a Subgraph tracking a smart contract that has stopped indexing
   - **block**: Block number where grafting should begin.
 
 3. **Deployment Steps**
-
    - **Update the Code**: Implement the hotfix in your mapping scripts (e.g., handleWithdrawal).
    - **Adjust the Manifest**: As shown above, update the `subgraph.yaml` with grafting configurations.
    - **Deploy the Subgraph**:
diff --git a/website/src/pages/mr/subgraphs/developing/creating/install-the-cli.mdx b/website/src/pages/mr/subgraphs/developing/creating/install-the-cli.mdx
index c6892188ddfa..873ab1e0ff29 100644
--- a/website/src/pages/mr/subgraphs/developing/creating/install-the-cli.mdx
+++ b/website/src/pages/mr/subgraphs/developing/creating/install-the-cli.mdx
@@ -46,7 +46,6 @@ graph init \
 ```
 
 - The command tries to retrieve the contract ABI from Etherscan.
-
   - The Graph CLI relies on a public RPC endpoint. While occasional failures are expected, retries typically resolve this issue. If failures persist, consider using a local ABI.
 
 - If any of the optional arguments are missing, it guides you through an interactive form.
@@ -87,7 +86,6 @@ Options:
 The `graph add` command will fetch the ABI from Etherscan (unless an ABI path is specified with the `--abi` option) and creates a new `dataSource`, similar to how the `graph init` command creates a `dataSource` `--from-contract`, updating the schema and mappings accordingly. This allows you to index implementation contracts from their proxy contracts.
 
 - The `--merge-entities` option identifies how the developer would like to handle `entity` and `event` name conflicts:
-
   - If `true`: the new `dataSource` should use existing `eventHandlers` & `entities`.
 
   - If `false`: a new `entity` & `event` handler should be created with `${dataSourceName}{EventName}`.
diff --git a/website/src/pages/mr/subgraphs/developing/managing/deleting-a-subgraph.mdx b/website/src/pages/mr/subgraphs/developing/managing/deleting-a-subgraph.mdx
index b8c2330ca49d..f842a0e04ac4 100644
--- a/website/src/pages/mr/subgraphs/developing/managing/deleting-a-subgraph.mdx
+++ b/website/src/pages/mr/subgraphs/developing/managing/deleting-a-subgraph.mdx
@@ -17,7 +17,6 @@ Delete your Subgraph using [Subgraph Studio](https://thegraph.com/studio/).
    ![Delete-subgraph](/img/Delete-subgraph.png)
 
 4. Depending on the Subgraph's status, you will be prompted with various options.
-
    - If the Subgraph is not published, simply click “delete” and confirm.
    - If the Subgraph is published, you will need to confirm on your wallet before the Subgraph can be deleted from Studio. If a Subgraph is published to multiple networks, such as testnet and mainnet, additional steps may be required.
 
diff --git a/website/src/pages/mr/subgraphs/explorer.mdx b/website/src/pages/mr/subgraphs/explorer.mdx
index afcc80c29f35..594bca73c7de 100644
--- a/website/src/pages/mr/subgraphs/explorer.mdx
+++ b/website/src/pages/mr/subgraphs/explorer.mdx
@@ -26,7 +26,6 @@ When you click into a Subgraph, you will be able to do the following:
 
 - Test queries in the playground and be able to leverage network details to make informed decisions.
 - Signal GRT on your own Subgraph or the Subgraphs of others to make indexers aware of its importance and quality.
-
   - This is critical because signaling on a Subgraph incentivizes it to be indexed, meaning it’ll eventually surface on the network to serve queries.
 
 ![Explorer Image 2](/img/Subgraph-Details.png)
diff --git a/website/src/pages/mr/subgraphs/mcp/claude.mdx b/website/src/pages/mr/subgraphs/mcp/claude.mdx
index 8b61438d2ab7..027b272cb942 100644
--- a/website/src/pages/mr/subgraphs/mcp/claude.mdx
+++ b/website/src/pages/mr/subgraphs/mcp/claude.mdx
@@ -85,7 +85,6 @@ Once you've entered your Gateway API key into your settings, save the file and r
 2. **Find the Command Path**
 
    After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory.
-
    - Navigate to your `subgraph-mcp` directory in terminal
    - Run `pwd` to get the full path
    - Combine the output with `/target/release/subgraph-mcp`
diff --git a/website/src/pages/mr/subgraphs/quick-start.mdx b/website/src/pages/mr/subgraphs/quick-start.mdx
index b14954bc11a4..a954833b82b4 100644
--- a/website/src/pages/mr/subgraphs/quick-start.mdx
+++ b/website/src/pages/mr/subgraphs/quick-start.mdx
@@ -166,11 +166,9 @@ To customize your deployment, see [Publishing a Subgraph](/subgraphs/developing/
 #### Adding signal to your Subgraph
 
 1. To attract Indexers to query your Subgraph, you should add GRT curation signal to it.
-
    - This action improves quality of service, reduces latency, and enhances network redundancy and availability for your Subgraph.
 
 2. If eligible for indexing rewards, Indexers receive GRT rewards based on the signaled amount.
-
    - It’s recommended to curate at least 3,000 GRT to attract 3 Indexers. Check reward eligibility based on Subgraph feature usage and supported networks.
 
 To learn more about curation, read [Curating](/resources/roles/curating/).
diff --git a/website/src/pages/nl/archived/arbitrum/arbitrum-faq.mdx b/website/src/pages/nl/archived/arbitrum/arbitrum-faq.mdx
index 0e19e7062073..37098c3462fa 100644
--- a/website/src/pages/nl/archived/arbitrum/arbitrum-faq.mdx
+++ b/website/src/pages/nl/archived/arbitrum/arbitrum-faq.mdx
@@ -25,7 +25,6 @@ The Graph’s billing system accepts GRT on Arbitrum, and users will need ETH on
 Consequently, to pay for queries, you need GRT on Arbitrum. Here are a few different ways to achieve this:
 
 - If you already have GRT on Ethereum, you can bridge it to Arbitrum. You can do this via the GRT bridging option provided in Subgraph Studio or by using one of the following bridges:
-
   - [The Arbitrum Bridge](https://bridge.arbitrum.io/?l2ChainId=42161)
   - [TransferTo](https://transferto.xyz/swap)
 
diff --git a/website/src/pages/nl/indexing/overview.mdx b/website/src/pages/nl/indexing/overview.mdx
index 8a9a992079b5..73f477411a4b 100644
--- a/website/src/pages/nl/indexing/overview.mdx
+++ b/website/src/pages/nl/indexing/overview.mdx
@@ -680,13 +680,11 @@ graph indexer actions execute approve
 Note that supported action types for allocation management have different input requirements:
 
 - `Allocate` - allocate stake to a specific Subgraph deployment
-
   - required action params:
     - deploymentID
     - amount
 
 - `Unallocate` - close allocation, freeing up the stake to reallocate elsewhere
-
   - required action params:
     - allocationID
     - deploymentID
@@ -695,7 +693,6 @@ Note that supported action types for allocation management have different input
     - force (forces using the provided POI even if it doesn’t match what the graph-node provides)
 
 - `Reallocate` - atomically close allocation and open a fresh allocation for the same Subgraph deployment
-
   - required action params:
     - allocationID
     - deploymentID
diff --git a/website/src/pages/nl/indexing/tap.mdx b/website/src/pages/nl/indexing/tap.mdx
index 477534d63201..e9667d498e0f 100644
--- a/website/src/pages/nl/indexing/tap.mdx
+++ b/website/src/pages/nl/indexing/tap.mdx
@@ -38,7 +38,6 @@ As long as you run `tap-agent` and `indexer-agent`, everything will be executed
 3. `indexer-agent` takes all the last RAVS and sends redeem requests to the blockchain, which will update the value of `redeem_at`.
 
 4. During the `<finality-time>` period, `indexer-agent` monitors if the blockchain has any reorganizations that revert the transaction.
-
    - If it was reverted, the RAV is resent to the blockchain. If it was not reverted, it gets marked as `final`.
 
 ## Blockchain Addresses
@@ -77,17 +76,14 @@ The required software version can be found [here](https://github.com/graphprotoc
 ### Steps
 
 1. **Indexer Agent**
-
    - Follow the [same process](https://github.com/graphprotocol/indexer/pkgs/container/indexer-agent#graph-protocol-indexer-components).
    - Give the new argument `--tap-subgraph-endpoint` to activate the new GraphTally codepaths and enable redeeming of RAVs.
 
 2. **Indexer Service**
-
    - Fully replace your current configuration with the [new Indexer Service rs](https://github.com/graphprotocol/indexer-rs). It's recommend that you use the [container image](https://github.com/orgs/graphprotocol/packages?repo_name=indexer-rs).
    - Like the older version, you can scale Indexer Service horizontally easily. It is still stateless.
 
 3. **TAP Agent**
-
    - Run _one_ single instance of [TAP Agent](https://github.com/graphprotocol/indexer-rs) at all times. It's recommend that you use the [container image](https://github.com/orgs/graphprotocol/packages?repo_name=indexer-rs).
 
 4. **Configure Indexer Service and TAP Agent**
diff --git a/website/src/pages/nl/resources/glossary.mdx b/website/src/pages/nl/resources/glossary.mdx
index 4c5ad55cd0d3..31402db1084a 100644
--- a/website/src/pages/nl/resources/glossary.mdx
+++ b/website/src/pages/nl/resources/glossary.mdx
@@ -15,7 +15,6 @@ title: Glossary
 - **Indexer**: Network participants that run indexing nodes to index data from blockchains and serve GraphQL queries.
 
 - **Indexer Revenue Streams**: Indexers are rewarded in GRT with two components: query fee rebates and indexing rewards.
-
   1. **Query Fee Rebates**: Payments from Subgraph consumers for serving queries on the network.
 
   2. **Indexing Rewards**: The rewards that Indexers receive for indexing Subgraphs. Indexing rewards are generated via new issuance of 3% GRT annually.
@@ -43,7 +42,6 @@ title: Glossary
 - **Epoch**: A unit of time within the network. Currently, one epoch is 6,646 blocks or approximately 1 day.
 
 - **Allocation**: An Indexer can allocate their total GRT stake (including Delegators' stake) towards Subgraphs that have been published on The Graph's decentralized network. Allocations can have different statuses:
-
   1. **Active**: An allocation is considered active when it is created onchain. This is called opening an allocation, and indicates to the network that the Indexer is actively indexing and serving queries for a particular Subgraph. Active allocations accrue indexing rewards proportional to the signal on the Subgraph, and the amount of GRT allocated.
 
   2. **Closed**: An Indexer may claim the accrued indexing rewards on a given Subgraph by submitting a recent, and valid, Proof of Indexing (POI). This is known as closing an allocation. An allocation must have been open for a minimum of one epoch before it can be closed. The maximum allocation period is 28 epochs. If an Indexer leaves an allocation open beyond 28 epochs, it is known as a stale allocation. When an allocation is in the **Closed** state, a Fisherman can still open a dispute to challenge an Indexer for serving false data.
diff --git a/website/src/pages/nl/resources/roles/delegating/undelegating.mdx b/website/src/pages/nl/resources/roles/delegating/undelegating.mdx
index c3e31e653941..9c10e47eb771 100644
--- a/website/src/pages/nl/resources/roles/delegating/undelegating.mdx
+++ b/website/src/pages/nl/resources/roles/delegating/undelegating.mdx
@@ -13,13 +13,11 @@ Learn how to withdraw your delegated tokens through [Graph Explorer](https://the
 1. Visit [Graph Explorer](https://thegraph.com/explorer). Please make sure you're on Explorer and **not** Subgraph Studio.
 
 2. Click on your profile. You can find it on the top right corner of the page.
-
    - Make sure that your wallet is connected. If it's not connected, you will see the "connect" button instead.
 
 3. Once you're in your profile, click on the Delegating tab. In the Delegating tab, you can view the list of Indexers you have delegated to.
 
 4. Click on the Indexer from which you wish to withdraw your tokens.
-
    - Make sure to note the specific Indexer, as you will need to find them again to withdraw.
 
 5. Select the "Undelegate" option by clicking on the three dots next to the Indexer on the right side, see image below:
@@ -37,11 +35,9 @@ Learn how to withdraw your delegated tokens through [Graph Explorer](https://the
 ### Step-by-Step
 
 1. Find your delegation transaction on Arbiscan.
-
    - Here's an [example transaction on Arbiscan](https://arbiscan.io/tx/0xcf2110eac897099f821064445041031efb32786392bdbe7544a4cb7a6b2e4f9a)
 
 2. Navigate to "Transaction Action" where you can find the staking extension contract:
-
    - [This is the staking extension contract for the example listed above](https://arbiscan.io/address/0x00669A4CF01450B64E8A2A20E9b1FCB71E61eF03)
 
 3. Then click on "Contract". ![Contract tab on Arbiscan, between NFT Transfers and Events](/img/arbiscan-contract.png)
@@ -59,7 +55,6 @@ Learn how to withdraw your delegated tokens through [Graph Explorer](https://the
 9. If you don't know how many tokens you delegated, you can call `getDelegation` on the Read Custom tab. You will need to paste your address (delegator address) and the address of the Indexer that you delegated to, as shown in the following screenshot:
 
    ![Both of the addresses needed](/img/get-delegate.png)
-
    - This will return three numbers. The first number is the amount you can unstake.
 
 10. After you have called `unstake`, you can withdraw after approximately 28 epochs (28 days) by calling the `withdraw` function.
diff --git a/website/src/pages/nl/subgraphs/best-practices/grafting-hotfix.mdx b/website/src/pages/nl/subgraphs/best-practices/grafting-hotfix.mdx
index 674cf6b87c62..591914aca81e 100644
--- a/website/src/pages/nl/subgraphs/best-practices/grafting-hotfix.mdx
+++ b/website/src/pages/nl/subgraphs/best-practices/grafting-hotfix.mdx
@@ -14,12 +14,10 @@ This feature enables quick deployment of hotfixes for critical issues, eliminati
 ## Benefits of Grafting for Hotfixes
 
 1. **Rapid Deployment**
-
    - **Minimize Downtime**: When a Subgraph encounters a critical error and stops indexing, grafting enables you to deploy a fix immediately without waiting for re-indexing.
    - **Immediate Recovery**: The new Subgraph continues from the last indexed block, ensuring that data services remain uninterrupted.
 
 2. **Data Preservation**
-
    - **Reuse Historical Data**: Grafting copies the existing data from the base Subgraph, so you don’t lose valuable historical records.
    - **Consistency**: Maintains data continuity, which is crucial for applications relying on consistent historical data.
 
@@ -30,19 +28,16 @@ This feature enables quick deployment of hotfixes for critical issues, eliminati
 ## Best Practices When Using Grafting for Hotfixes
 
 1. **Initial Deployment Without Grafting**
-
    - **Start Clean**: Always deploy your initial Subgraph without grafting to ensure that it’s stable and functions as expected.
    - **Test Thoroughly**: Validate the Subgraph’s performance to minimize the need for future hotfixes.
 
 2. **Implementing the Hotfix with Grafting**
-
    - **Identify the Issue**: When a critical error occurs, determine the block number of the last successfully indexed event.
    - **Create a New Subgraph**: Develop a new Subgraph that includes the hotfix.
    - **Configure Grafting**: Use grafting to copy data up to the identified block number from the failed Subgraph.
    - **Deploy Quickly**: Publish the grafted Subgraph to restore service as soon as possible.
 
 3. **Post-Hotfix Actions**
-
    - **Monitor Performance**: Ensure the grafted Subgraph is indexing correctly and the hotfix resolves the issue.
    - **Republish Without Grafting**: Once stable, deploy a new version of the Subgraph without grafting for long-term maintenance.
      > Note: Relying on grafting indefinitely is not recommended as it can complicate future updates and maintenance.
@@ -130,7 +125,6 @@ Suppose you have a Subgraph tracking a smart contract that has stopped indexing
   - **block**: Block number where grafting should begin.
 
 3. **Deployment Steps**
-
    - **Update the Code**: Implement the hotfix in your mapping scripts (e.g., handleWithdrawal).
    - **Adjust the Manifest**: As shown above, update the `subgraph.yaml` with grafting configurations.
    - **Deploy the Subgraph**:
diff --git a/website/src/pages/nl/subgraphs/developing/creating/install-the-cli.mdx b/website/src/pages/nl/subgraphs/developing/creating/install-the-cli.mdx
index 004d0f94c99e..f1716516229e 100644
--- a/website/src/pages/nl/subgraphs/developing/creating/install-the-cli.mdx
+++ b/website/src/pages/nl/subgraphs/developing/creating/install-the-cli.mdx
@@ -46,7 +46,6 @@ graph init \
 ```
 
 - The command tries to retrieve the contract ABI from Etherscan.
-
   - The Graph CLI relies on a public RPC endpoint. While occasional failures are expected, retries typically resolve this issue. If failures persist, consider using a local ABI.
 
 - If any of the optional arguments are missing, it guides you through an interactive form.
@@ -87,7 +86,6 @@ Options:
 The `graph add` command will fetch the ABI from Etherscan (unless an ABI path is specified with the `--abi` option) and creates a new `dataSource`, similar to how the `graph init` command creates a `dataSource` `--from-contract`, updating the schema and mappings accordingly. This allows you to index implementation contracts from their proxy contracts.
 
 - The `--merge-entities` option identifies how the developer would like to handle `entity` and `event` name conflicts:
-
   - If `true`: the new `dataSource` should use existing `eventHandlers` & `entities`.
 
   - If `false`: a new `entity` & `event` handler should be created with `${dataSourceName}{EventName}`.
diff --git a/website/src/pages/nl/subgraphs/developing/managing/deleting-a-subgraph.mdx b/website/src/pages/nl/subgraphs/developing/managing/deleting-a-subgraph.mdx
index b8c2330ca49d..f842a0e04ac4 100644
--- a/website/src/pages/nl/subgraphs/developing/managing/deleting-a-subgraph.mdx
+++ b/website/src/pages/nl/subgraphs/developing/managing/deleting-a-subgraph.mdx
@@ -17,7 +17,6 @@ Delete your Subgraph using [Subgraph Studio](https://thegraph.com/studio/).
    ![Delete-subgraph](/img/Delete-subgraph.png)
 
 4. Depending on the Subgraph's status, you will be prompted with various options.
-
    - If the Subgraph is not published, simply click “delete” and confirm.
    - If the Subgraph is published, you will need to confirm on your wallet before the Subgraph can be deleted from Studio. If a Subgraph is published to multiple networks, such as testnet and mainnet, additional steps may be required.
 
diff --git a/website/src/pages/nl/subgraphs/explorer.mdx b/website/src/pages/nl/subgraphs/explorer.mdx
index 3df0b99d43ca..5265899ab358 100644
--- a/website/src/pages/nl/subgraphs/explorer.mdx
+++ b/website/src/pages/nl/subgraphs/explorer.mdx
@@ -26,7 +26,6 @@ When you click into a Subgraph, you will be able to do the following:
 
 - Test queries in the playground and be able to leverage network details to make informed decisions.
 - Signal GRT on your own Subgraph or the Subgraphs of others to make indexers aware of its importance and quality.
-
   - This is critical because signaling on a Subgraph incentivizes it to be indexed, meaning it’ll eventually surface on the network to serve queries.
 
 ![Explorer Image 2](/img/Subgraph-Details.png)
diff --git a/website/src/pages/nl/subgraphs/mcp/claude.mdx b/website/src/pages/nl/subgraphs/mcp/claude.mdx
index 8b61438d2ab7..027b272cb942 100644
--- a/website/src/pages/nl/subgraphs/mcp/claude.mdx
+++ b/website/src/pages/nl/subgraphs/mcp/claude.mdx
@@ -85,7 +85,6 @@ Once you've entered your Gateway API key into your settings, save the file and r
 2. **Find the Command Path**
 
    After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory.
-
    - Navigate to your `subgraph-mcp` directory in terminal
    - Run `pwd` to get the full path
    - Combine the output with `/target/release/subgraph-mcp`
diff --git a/website/src/pages/nl/subgraphs/quick-start.mdx b/website/src/pages/nl/subgraphs/quick-start.mdx
index 7efec0891fa6..60606374b7bc 100644
--- a/website/src/pages/nl/subgraphs/quick-start.mdx
+++ b/website/src/pages/nl/subgraphs/quick-start.mdx
@@ -166,11 +166,9 @@ To customize your deployment, see [Publishing a Subgraph](/subgraphs/developing/
 #### Adding signal to your Subgraph
 
 1. To attract Indexers to query your Subgraph, you should add GRT curation signal to it.
-
    - This action improves quality of service, reduces latency, and enhances network redundancy and availability for your Subgraph.
 
 2. If eligible for indexing rewards, Indexers receive GRT rewards based on the signaled amount.
-
    - It’s recommended to curate at least 3,000 GRT to attract 3 Indexers. Check reward eligibility based on Subgraph feature usage and supported networks.
 
 To learn more about curation, read [Curating](/resources/roles/curating/).
diff --git a/website/src/pages/pl/archived/arbitrum/arbitrum-faq.mdx b/website/src/pages/pl/archived/arbitrum/arbitrum-faq.mdx
index 8322010a2d88..a6f0cebf9105 100644
--- a/website/src/pages/pl/archived/arbitrum/arbitrum-faq.mdx
+++ b/website/src/pages/pl/archived/arbitrum/arbitrum-faq.mdx
@@ -25,7 +25,6 @@ The Graph’s billing system accepts GRT on Arbitrum, and users will need ETH on
 Consequently, to pay for queries, you need GRT on Arbitrum. Here are a few different ways to achieve this:
 
 - If you already have GRT on Ethereum, you can bridge it to Arbitrum. You can do this via the GRT bridging option provided in Subgraph Studio or by using one of the following bridges:
-
   - [The Arbitrum Bridge](https://bridge.arbitrum.io/?l2ChainId=42161)
   - [Przeniesienie do](https://transferto.xyz/swap)
 
diff --git a/website/src/pages/pl/indexing/overview.mdx b/website/src/pages/pl/indexing/overview.mdx
index fa6c22b77a86..80884f3109c1 100644
--- a/website/src/pages/pl/indexing/overview.mdx
+++ b/website/src/pages/pl/indexing/overview.mdx
@@ -680,13 +680,11 @@ graph indexer actions execute approve
 Note that supported action types for allocation management have different input requirements:
 
 - `Allocate` - allocate stake to a specific Subgraph deployment
-
   - required action params:
     - deploymentID
     - amount
 
 - `Unallocate` - close allocation, freeing up the stake to reallocate elsewhere
-
   - required action params:
     - allocationID
     - deploymentID
@@ -695,7 +693,6 @@ Note that supported action types for allocation management have different input
     - force (forces using the provided POI even if it doesn’t match what the graph-node provides)
 
 - `Reallocate` - atomically close allocation and open a fresh allocation for the same Subgraph deployment
-
   - required action params:
     - allocationID
     - deploymentID
diff --git a/website/src/pages/pl/indexing/tap.mdx b/website/src/pages/pl/indexing/tap.mdx
index 477534d63201..e9667d498e0f 100644
--- a/website/src/pages/pl/indexing/tap.mdx
+++ b/website/src/pages/pl/indexing/tap.mdx
@@ -38,7 +38,6 @@ As long as you run `tap-agent` and `indexer-agent`, everything will be executed
 3. `indexer-agent` takes all the last RAVS and sends redeem requests to the blockchain, which will update the value of `redeem_at`.
 
 4. During the `<finality-time>` period, `indexer-agent` monitors if the blockchain has any reorganizations that revert the transaction.
-
    - If it was reverted, the RAV is resent to the blockchain. If it was not reverted, it gets marked as `final`.
 
 ## Blockchain Addresses
@@ -77,17 +76,14 @@ The required software version can be found [here](https://github.com/graphprotoc
 ### Steps
 
 1. **Indexer Agent**
-
    - Follow the [same process](https://github.com/graphprotocol/indexer/pkgs/container/indexer-agent#graph-protocol-indexer-components).
    - Give the new argument `--tap-subgraph-endpoint` to activate the new GraphTally codepaths and enable redeeming of RAVs.
 
 2. **Indexer Service**
-
    - Fully replace your current configuration with the [new Indexer Service rs](https://github.com/graphprotocol/indexer-rs). It's recommend that you use the [container image](https://github.com/orgs/graphprotocol/packages?repo_name=indexer-rs).
    - Like the older version, you can scale Indexer Service horizontally easily. It is still stateless.
 
 3. **TAP Agent**
-
    - Run _one_ single instance of [TAP Agent](https://github.com/graphprotocol/indexer-rs) at all times. It's recommend that you use the [container image](https://github.com/orgs/graphprotocol/packages?repo_name=indexer-rs).
 
 4. **Configure Indexer Service and TAP Agent**
diff --git a/website/src/pages/pl/resources/glossary.mdx b/website/src/pages/pl/resources/glossary.mdx
index 4c5ad55cd0d3..31402db1084a 100644
--- a/website/src/pages/pl/resources/glossary.mdx
+++ b/website/src/pages/pl/resources/glossary.mdx
@@ -15,7 +15,6 @@ title: Glossary
 - **Indexer**: Network participants that run indexing nodes to index data from blockchains and serve GraphQL queries.
 
 - **Indexer Revenue Streams**: Indexers are rewarded in GRT with two components: query fee rebates and indexing rewards.
-
   1. **Query Fee Rebates**: Payments from Subgraph consumers for serving queries on the network.
 
   2. **Indexing Rewards**: The rewards that Indexers receive for indexing Subgraphs. Indexing rewards are generated via new issuance of 3% GRT annually.
@@ -43,7 +42,6 @@ title: Glossary
 - **Epoch**: A unit of time within the network. Currently, one epoch is 6,646 blocks or approximately 1 day.
 
 - **Allocation**: An Indexer can allocate their total GRT stake (including Delegators' stake) towards Subgraphs that have been published on The Graph's decentralized network. Allocations can have different statuses:
-
   1. **Active**: An allocation is considered active when it is created onchain. This is called opening an allocation, and indicates to the network that the Indexer is actively indexing and serving queries for a particular Subgraph. Active allocations accrue indexing rewards proportional to the signal on the Subgraph, and the amount of GRT allocated.
 
   2. **Closed**: An Indexer may claim the accrued indexing rewards on a given Subgraph by submitting a recent, and valid, Proof of Indexing (POI). This is known as closing an allocation. An allocation must have been open for a minimum of one epoch before it can be closed. The maximum allocation period is 28 epochs. If an Indexer leaves an allocation open beyond 28 epochs, it is known as a stale allocation. When an allocation is in the **Closed** state, a Fisherman can still open a dispute to challenge an Indexer for serving false data.
diff --git a/website/src/pages/pl/resources/roles/delegating/undelegating.mdx b/website/src/pages/pl/resources/roles/delegating/undelegating.mdx
index c3e31e653941..9c10e47eb771 100644
--- a/website/src/pages/pl/resources/roles/delegating/undelegating.mdx
+++ b/website/src/pages/pl/resources/roles/delegating/undelegating.mdx
@@ -13,13 +13,11 @@ Learn how to withdraw your delegated tokens through [Graph Explorer](https://the
 1. Visit [Graph Explorer](https://thegraph.com/explorer). Please make sure you're on Explorer and **not** Subgraph Studio.
 
 2. Click on your profile. You can find it on the top right corner of the page.
-
    - Make sure that your wallet is connected. If it's not connected, you will see the "connect" button instead.
 
 3. Once you're in your profile, click on the Delegating tab. In the Delegating tab, you can view the list of Indexers you have delegated to.
 
 4. Click on the Indexer from which you wish to withdraw your tokens.
-
    - Make sure to note the specific Indexer, as you will need to find them again to withdraw.
 
 5. Select the "Undelegate" option by clicking on the three dots next to the Indexer on the right side, see image below:
@@ -37,11 +35,9 @@ Learn how to withdraw your delegated tokens through [Graph Explorer](https://the
 ### Step-by-Step
 
 1. Find your delegation transaction on Arbiscan.
-
    - Here's an [example transaction on Arbiscan](https://arbiscan.io/tx/0xcf2110eac897099f821064445041031efb32786392bdbe7544a4cb7a6b2e4f9a)
 
 2. Navigate to "Transaction Action" where you can find the staking extension contract:
-
    - [This is the staking extension contract for the example listed above](https://arbiscan.io/address/0x00669A4CF01450B64E8A2A20E9b1FCB71E61eF03)
 
 3. Then click on "Contract". ![Contract tab on Arbiscan, between NFT Transfers and Events](/img/arbiscan-contract.png)
@@ -59,7 +55,6 @@ Learn how to withdraw your delegated tokens through [Graph Explorer](https://the
 9. If you don't know how many tokens you delegated, you can call `getDelegation` on the Read Custom tab. You will need to paste your address (delegator address) and the address of the Indexer that you delegated to, as shown in the following screenshot:
 
    ![Both of the addresses needed](/img/get-delegate.png)
-
    - This will return three numbers. The first number is the amount you can unstake.
 
 10. After you have called `unstake`, you can withdraw after approximately 28 epochs (28 days) by calling the `withdraw` function.
diff --git a/website/src/pages/pl/subgraphs/best-practices/grafting-hotfix.mdx b/website/src/pages/pl/subgraphs/best-practices/grafting-hotfix.mdx
index 674cf6b87c62..591914aca81e 100644
--- a/website/src/pages/pl/subgraphs/best-practices/grafting-hotfix.mdx
+++ b/website/src/pages/pl/subgraphs/best-practices/grafting-hotfix.mdx
@@ -14,12 +14,10 @@ This feature enables quick deployment of hotfixes for critical issues, eliminati
 ## Benefits of Grafting for Hotfixes
 
 1. **Rapid Deployment**
-
    - **Minimize Downtime**: When a Subgraph encounters a critical error and stops indexing, grafting enables you to deploy a fix immediately without waiting for re-indexing.
    - **Immediate Recovery**: The new Subgraph continues from the last indexed block, ensuring that data services remain uninterrupted.
 
 2. **Data Preservation**
-
    - **Reuse Historical Data**: Grafting copies the existing data from the base Subgraph, so you don’t lose valuable historical records.
    - **Consistency**: Maintains data continuity, which is crucial for applications relying on consistent historical data.
 
@@ -30,19 +28,16 @@ This feature enables quick deployment of hotfixes for critical issues, eliminati
 ## Best Practices When Using Grafting for Hotfixes
 
 1. **Initial Deployment Without Grafting**
-
    - **Start Clean**: Always deploy your initial Subgraph without grafting to ensure that it’s stable and functions as expected.
    - **Test Thoroughly**: Validate the Subgraph’s performance to minimize the need for future hotfixes.
 
 2. **Implementing the Hotfix with Grafting**
-
    - **Identify the Issue**: When a critical error occurs, determine the block number of the last successfully indexed event.
    - **Create a New Subgraph**: Develop a new Subgraph that includes the hotfix.
    - **Configure Grafting**: Use grafting to copy data up to the identified block number from the failed Subgraph.
    - **Deploy Quickly**: Publish the grafted Subgraph to restore service as soon as possible.
 
 3. **Post-Hotfix Actions**
-
    - **Monitor Performance**: Ensure the grafted Subgraph is indexing correctly and the hotfix resolves the issue.
    - **Republish Without Grafting**: Once stable, deploy a new version of the Subgraph without grafting for long-term maintenance.
      > Note: Relying on grafting indefinitely is not recommended as it can complicate future updates and maintenance.
@@ -130,7 +125,6 @@ Suppose you have a Subgraph tracking a smart contract that has stopped indexing
   - **block**: Block number where grafting should begin.
 
 3. **Deployment Steps**
-
    - **Update the Code**: Implement the hotfix in your mapping scripts (e.g., handleWithdrawal).
    - **Adjust the Manifest**: As shown above, update the `subgraph.yaml` with grafting configurations.
    - **Deploy the Subgraph**:
diff --git a/website/src/pages/pl/subgraphs/developing/creating/install-the-cli.mdx b/website/src/pages/pl/subgraphs/developing/creating/install-the-cli.mdx
index 112f0952a1e8..0e3373511b8b 100644
--- a/website/src/pages/pl/subgraphs/developing/creating/install-the-cli.mdx
+++ b/website/src/pages/pl/subgraphs/developing/creating/install-the-cli.mdx
@@ -46,7 +46,6 @@ graph init \
 ```
 
 - The command tries to retrieve the contract ABI from Etherscan.
-
   - The Graph CLI relies on a public RPC endpoint. While occasional failures are expected, retries typically resolve this issue. If failures persist, consider using a local ABI.
 
 - If any of the optional arguments are missing, it guides you through an interactive form.
@@ -87,7 +86,6 @@ Options:
 The `graph add` command will fetch the ABI from Etherscan (unless an ABI path is specified with the `--abi` option) and creates a new `dataSource`, similar to how the `graph init` command creates a `dataSource` `--from-contract`, updating the schema and mappings accordingly. This allows you to index implementation contracts from their proxy contracts.
 
 - The `--merge-entities` option identifies how the developer would like to handle `entity` and `event` name conflicts:
-
   - If `true`: the new `dataSource` should use existing `eventHandlers` & `entities`.
 
   - If `false`: a new `entity` & `event` handler should be created with `${dataSourceName}{EventName}`.
diff --git a/website/src/pages/pl/subgraphs/developing/managing/deleting-a-subgraph.mdx b/website/src/pages/pl/subgraphs/developing/managing/deleting-a-subgraph.mdx
index b8c2330ca49d..f842a0e04ac4 100644
--- a/website/src/pages/pl/subgraphs/developing/managing/deleting-a-subgraph.mdx
+++ b/website/src/pages/pl/subgraphs/developing/managing/deleting-a-subgraph.mdx
@@ -17,7 +17,6 @@ Delete your Subgraph using [Subgraph Studio](https://thegraph.com/studio/).
    ![Delete-subgraph](/img/Delete-subgraph.png)
 
 4. Depending on the Subgraph's status, you will be prompted with various options.
-
    - If the Subgraph is not published, simply click “delete” and confirm.
    - If the Subgraph is published, you will need to confirm on your wallet before the Subgraph can be deleted from Studio. If a Subgraph is published to multiple networks, such as testnet and mainnet, additional steps may be required.
 
diff --git a/website/src/pages/pl/subgraphs/explorer.mdx b/website/src/pages/pl/subgraphs/explorer.mdx
index 499fcede88d3..2da8a191ca99 100644
--- a/website/src/pages/pl/subgraphs/explorer.mdx
+++ b/website/src/pages/pl/subgraphs/explorer.mdx
@@ -26,7 +26,6 @@ When you click into a Subgraph, you will be able to do the following:
 
 - Test queries in the playground and be able to leverage network details to make informed decisions.
 - Signal GRT on your own Subgraph or the Subgraphs of others to make indexers aware of its importance and quality.
-
   - This is critical because signaling on a Subgraph incentivizes it to be indexed, meaning it’ll eventually surface on the network to serve queries.
 
 ![Explorer Image 2](/img/Subgraph-Details.png)
diff --git a/website/src/pages/pl/subgraphs/mcp/claude.mdx b/website/src/pages/pl/subgraphs/mcp/claude.mdx
index 8b61438d2ab7..027b272cb942 100644
--- a/website/src/pages/pl/subgraphs/mcp/claude.mdx
+++ b/website/src/pages/pl/subgraphs/mcp/claude.mdx
@@ -85,7 +85,6 @@ Once you've entered your Gateway API key into your settings, save the file and r
 2. **Find the Command Path**
 
    After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory.
-
    - Navigate to your `subgraph-mcp` directory in terminal
    - Run `pwd` to get the full path
    - Combine the output with `/target/release/subgraph-mcp`
diff --git a/website/src/pages/pl/subgraphs/quick-start.mdx b/website/src/pages/pl/subgraphs/quick-start.mdx
index 62c69977491f..66150bc55821 100644
--- a/website/src/pages/pl/subgraphs/quick-start.mdx
+++ b/website/src/pages/pl/subgraphs/quick-start.mdx
@@ -166,11 +166,9 @@ To customize your deployment, see [Publishing a Subgraph](/subgraphs/developing/
 #### Adding signal to your Subgraph
 
 1. To attract Indexers to query your Subgraph, you should add GRT curation signal to it.
-
    - This action improves quality of service, reduces latency, and enhances network redundancy and availability for your Subgraph.
 
 2. If eligible for indexing rewards, Indexers receive GRT rewards based on the signaled amount.
-
    - It’s recommended to curate at least 3,000 GRT to attract 3 Indexers. Check reward eligibility based on Subgraph feature usage and supported networks.
 
 To learn more about curation, read [Curating](/resources/roles/curating/).
diff --git a/website/src/pages/pt/archived/arbitrum/arbitrum-faq.mdx b/website/src/pages/pt/archived/arbitrum/arbitrum-faq.mdx
index 7932ad2508bd..8d4c8eb00e8b 100644
--- a/website/src/pages/pt/archived/arbitrum/arbitrum-faq.mdx
+++ b/website/src/pages/pt/archived/arbitrum/arbitrum-faq.mdx
@@ -25,7 +25,6 @@ O sistema de cobranças do The Graph aceita GRT no Arbitrum, e os utilizadores p
 Portanto, para pagar por queries, é necessário GRT no Arbitrum. Aqui estão algumas maneiras diferentes de consegui-lo:
 
 - Caso já tenha GRT no Ethereum, é possível enviá-lo ao Arbitrum via bridge. Isto é possível via a opção de bridging de GRT providenciada no Subgraph Studio ou uma das seguintes bridges:
-
   - [Bridge no Arbitrum](https://bridge.arbitrum.io/?l2ChainId=42161)
   - [TransferTo](https://transferto.xyz/swap)
 
diff --git a/website/src/pages/pt/indexing/overview.mdx b/website/src/pages/pt/indexing/overview.mdx
index db2298351ab2..acbcf278812b 100644
--- a/website/src/pages/pt/indexing/overview.mdx
+++ b/website/src/pages/pt/indexing/overview.mdx
@@ -680,13 +680,11 @@ graph indexer actions execute approve
 Observe que os tipos apoiados de ações para gestão de alocação têm requisitos diferentes de entrada:
 
 - `Allocate` — aloca stakes a uma implantação de subgraph específica
-
   - parâmetros de ação exigidos:
     - deploymentID
     - amount
 
 - `Unallocate` — fecha uma alocação, que libera o stake para ser redistribuído em outro lugar
-
   - parâmetros de ação exigidos:
     - allocationID
     - deploymentID
@@ -695,7 +693,6 @@ Observe que os tipos apoiados de ações para gestão de alocação têm requisi
     - force (força o uso do POI providenciado, mesmo se ele não corresponder ao providenciado pelo graph-node)
 
 - `Reallocate` — fecha a alocação automaticamente e abre uma alocação nova para a mesma implantação de subgraph
-
   - parâmetros de ação exigidos:
     - allocationID
     - deploymentID
diff --git a/website/src/pages/pt/indexing/tap.mdx b/website/src/pages/pt/indexing/tap.mdx
index 197d8757b967..0122b49bf2d8 100644
--- a/website/src/pages/pt/indexing/tap.mdx
+++ b/website/src/pages/pt/indexing/tap.mdx
@@ -38,7 +38,6 @@ Tudo será executado automaticamente enquanto `tap-agent` e `indexer-agent` fore
 3. O `indexer-agent` pega todos os últimos RAVs e manda solicitações de resgate à blockchain, que atualizará o valor de `redeem-at`.
 
 4. Durante o período de `<finality-time>`, o `indexer-agent` monitora se a blockchain tem reorganizações que possam reverter a transação.
-
    - Se revertida, o RAV é reenviado à blockchain. Se não for revertida, é marcada como `final`.
 
 ## Endereços de Blockchain
@@ -77,17 +76,14 @@ O software necessário está [aqui](https://github.com/graphprotocol/indexer/blo
 ### Passo a passo
 
 1. **Agente Indexador**
-
    - Siga o [mesmo processo](https://github.com/graphprotocol/indexer/pkgs/container/indexer-agent#graph-protocol-indexer-components).
    - Give the new argument `--tap-subgraph-endpoint` to activate the new GraphTally codepaths and enable redeeming of RAVs.
 
 2. **Serviço Indexador**
-
    - Substitua a sua configuração atual com o novo [rs do Serviço Indexador](https://github.com/graphprotocol/indexer-rs). Vale apena usar a [imagem recipiente](https://github.com/orgs/graphprotocol/packages?repo_name=indexer-rs).
    - Assim como a versão mais antiga, o Serviço Indexador pode ser horizontalmente escalado com facilidade. Neste caso, ainda não mantém memória.
 
 3. **Agente do TAP**
-
    - Execute _uma_ instância do [Agente do TAP](https://github.com/graphprotocol/indexer-rs) constantemente. Recomendamos usar a [imagem recipiente](https://github.com/orgs/graphprotocol/packages?repo_name=indexer-rs).
 
 4. **Configuração do Serviço Indexador e Agente do TAP**
diff --git a/website/src/pages/pt/resources/glossary.mdx b/website/src/pages/pt/resources/glossary.mdx
index d075e63e2c25..279c2ce20c7d 100644
--- a/website/src/pages/pt/resources/glossary.mdx
+++ b/website/src/pages/pt/resources/glossary.mdx
@@ -15,7 +15,6 @@ title: Glossário
 - **Indexador**: Um participante da rede que executa nodes de indexação para indexar dados de blockchains e servir queries da GraphQL.
 
 - **Fluxos de Receita de Indexadores:** Os Indexadores são recompensados em GRT com dois componentes: Rebates de taxa de query e recompensas de indexação.
-
   1. **Query Fee Rebates**: Payments from Subgraph consumers for serving queries on the network.
 
   2. **Indexing Rewards**: The rewards that Indexers receive for indexing Subgraphs. Indexing rewards are generated via new issuance of 3% GRT annually.
@@ -43,7 +42,6 @@ title: Glossário
 - **Epoch:** Uma unidade de tempo na rede. Um epoch atualmente dura 6.646 blocos, ou cerca de um dia.
 
 - **Allocation**: An Indexer can allocate their total GRT stake (including Delegators' stake) towards Subgraphs that have been published on The Graph's decentralized network. Allocations can have different statuses:
-
   1. **Active**: An allocation is considered active when it is created onchain. This is called opening an allocation, and indicates to the network that the Indexer is actively indexing and serving queries for a particular Subgraph. Active allocations accrue indexing rewards proportional to the signal on the Subgraph, and the amount of GRT allocated.
 
   2. **Closed**: An Indexer may claim the accrued indexing rewards on a given Subgraph by submitting a recent, and valid, Proof of Indexing (POI). This is known as closing an allocation. An allocation must have been open for a minimum of one epoch before it can be closed. The maximum allocation period is 28 epochs. If an Indexer leaves an allocation open beyond 28 epochs, it is known as a stale allocation. When an allocation is in the **Closed** state, a Fisherman can still open a dispute to challenge an Indexer for serving false data.
diff --git a/website/src/pages/pt/resources/roles/delegating/undelegating.mdx b/website/src/pages/pt/resources/roles/delegating/undelegating.mdx
index b2e3239a5ae3..8a07458d3797 100644
--- a/website/src/pages/pt/resources/roles/delegating/undelegating.mdx
+++ b/website/src/pages/pt/resources/roles/delegating/undelegating.mdx
@@ -13,13 +13,11 @@ Aprenda como retirar os seus tokens delegados através do [Graph Explorer](https
 1. Visite o [Graph Explorer](https://thegraph.com/explorer). Certifique-se que está no Explorer, e **não** no Subgraph Studio.
 
 2. Clique no seu perfil, no canto superior direito da página.
-
    - Verifique se a sua carteira está conectada. Se não estiver, o botão "connect" (conectar) aparecerá no lugar.
 
 3. Já no seu perfil, clique na aba "Delegating" (Delegação). Nessa aba, é possível visualizar a lista de Indexadores para os quais já delegou.
 
 4. Clique no indexador do qual deseja retirar os seus tokens.
-
    - Indique o Indexador específico, pois ele terá que ser encontrado novamente para fazer a retirada.
 
 5. Selecione a opção "Undelegate" (Retirar Delegação) nos três pontos ao lado do Indexador, ao lado direito. Conforme a imagem abaixo:
@@ -37,11 +35,9 @@ Aprenda como retirar os seus tokens delegados através do [Graph Explorer](https
 ### Passo a Passo
 
 1. Encontre a sua transação de delegação no Arbiscan.
-
    - Aqui está um [exemplo de transação pelo Arbiscan](https://arbiscan.io/tx/0xcf2110eac897099f821064445041031efb32786392bdbe7544a4cb7a6b2e4f9a)
 
 2. Navegue até "Transaction Action" (Ação de Transação), onde poderá encontrar o contrato da extensão de staking:
-
    - [Este é o contrato de extensão de staking do exemplo listado acima](https://arbiscan.io/address/0x00669A4CF01450B64E8A2A20E9b1FCB71E61eF03)
 
 3. Em seguida, clique em "Contract" (Contrato). ![Aba de contrato no Arbiscan, entre NFT Transfers (Transferências de NFT) e Events (Eventos)](/img/arbiscan-contract.png)
@@ -59,7 +55,6 @@ Aprenda como retirar os seus tokens delegados através do [Graph Explorer](https
 9. Se não souber quantos tokens delegou, chame `getDelegation` na aba "Read Custom" (Ler Personalização). Será necessário colar tanto o seu endereço (endereço de delegante) quanto o do indexador para o qual você delegou, conforme na seguinte imagem:
 
    ![Ambos os endereços necessários](/img/get-delegate.png)
-
    - Isto retornará três números. O primeiro número é a quantidade de staking que você pode retirar.
 
 10. Após chamar `unstake`, você pode retirar o stake após, em média, 28 epochs (28 dias) com a função `withdraw`.
diff --git a/website/src/pages/pt/subgraphs/best-practices/grafting-hotfix.mdx b/website/src/pages/pt/subgraphs/best-practices/grafting-hotfix.mdx
index 1bb1297526e7..a96bb4b738ad 100644
--- a/website/src/pages/pt/subgraphs/best-practices/grafting-hotfix.mdx
+++ b/website/src/pages/pt/subgraphs/best-practices/grafting-hotfix.mdx
@@ -14,12 +14,10 @@ This feature enables quick deployment of hotfixes for critical issues, eliminati
 ## Benefícios de Enxertos para Hotfixes
 
 1. **Lançamento Rápido**
-
    - **Minimize Downtime**: When a Subgraph encounters a critical error and stops indexing, grafting enables you to deploy a fix immediately without waiting for re-indexing.
    - **Immediate Recovery**: The new Subgraph continues from the last indexed block, ensuring that data services remain uninterrupted.
 
 2. **Preservação de Dados**
-
    - **Reuse Historical Data**: Grafting copies the existing data from the base Subgraph, so you don’t lose valuable historical records.
    - **Consistência**: Mantém a continuidade de dados, que é crucial para aplicativos que dependem de dados históricos consistentes.
 
@@ -30,19 +28,16 @@ This feature enables quick deployment of hotfixes for critical issues, eliminati
 ## Melhores Práticas ao Usar Enxertos para Hotfixes
 
 1. \*Implantação Inicial sem Enxerto\*\*
-
    - **Start Clean**: Always deploy your initial Subgraph without grafting to ensure that it’s stable and functions as expected.
    - **Test Thoroughly**: Validate the Subgraph’s performance to minimize the need for future hotfixes.
 
 2. **Implementação do Hotfix com Enxerto**
-
    - **Identificar o Problema**: Quando ocorrer um erro crítico, determine o número de bloco do último evento indexado com êxito.
    - **Create a New Subgraph**: Develop a new Subgraph that includes the hotfix.
    - **Configure Grafting**: Use grafting to copy data up to the identified block number from the failed Subgraph.
    - **Deploy Quickly**: Publish the grafted Subgraph to restore service as soon as possible.
 
 3. **Depois do Hotfix**
-
    - **Monitor Performance**: Ensure the grafted Subgraph is indexing correctly and the hotfix resolves the issue.
    - **Republish Without Grafting**: Once stable, deploy a new version of the Subgraph without grafting for long-term maintenance.
      > Nota: Não é recomendado depender de enxertos indefinidamente, pois isto pode complicar a manutenção e implantação de futuras atualizações.
@@ -130,7 +125,6 @@ Suppose you have a Subgraph tracking a smart contract that has stopped indexing
   - **block**: Número de blocos onde o enxerto deve começar.
 
 3. **Etapas de Implantação**
-
    - **Atualize o Código**: Implemente o hotfix nos seus scripts de mapeamento (por exemplo, handleWithdrawal).
    - **Ajuste o Manifest**: Conforme detalhado acima, atualize o `subgraph.yaml` com configurações de enxerto.
    - **Lance o Subgraph**:
diff --git a/website/src/pages/pt/subgraphs/developing/creating/install-the-cli.mdx b/website/src/pages/pt/subgraphs/developing/creating/install-the-cli.mdx
index ee2f14a8e76f..6f157fc47734 100644
--- a/website/src/pages/pt/subgraphs/developing/creating/install-the-cli.mdx
+++ b/website/src/pages/pt/subgraphs/developing/creating/install-the-cli.mdx
@@ -46,7 +46,6 @@ graph init \
 ```
 
 - O comando tenta resgatar o contrato da ABI do Etherscan.
-
   - A CLI do The Graph depende de um endpoint público de RPC. Enquanto falhas ocasionais são de se esperar, basta tentar de novo para resolver. Se as falhas persistirem, considere usar uma ABI local.
 
 - Se faltar algum dos argumentos opcionais, você será guiado para um formulário interativo.
@@ -87,7 +86,6 @@ Opções:
 O comando `graph add` pegará a ABI do Etherscan (a não ser que um local de ABI seja especificado com a opção --abi), e criará um novo `dataSource` da mesma maneira que o comando `graph init` cria um `dataSource` `--from-contract`, assim atualizando o schema e os mapeamentos de acordo.
 
 - A opção `--merge entities` identifica como o programador gostaria de lidar com conflitos de nome em `entity` e `event`:
-
   - Se for `true`: o novo `dataSource` deve usar `eventHandlers` e `entities` existentes.
 
   - Se for `false`: um novo handler de `entity` e `event` deve ser criado com `${dataSourceName}{EventName}`.
diff --git a/website/src/pages/pt/subgraphs/developing/managing/deleting-a-subgraph.mdx b/website/src/pages/pt/subgraphs/developing/managing/deleting-a-subgraph.mdx
index 49cb207e435e..bf7defbc7203 100644
--- a/website/src/pages/pt/subgraphs/developing/managing/deleting-a-subgraph.mdx
+++ b/website/src/pages/pt/subgraphs/developing/managing/deleting-a-subgraph.mdx
@@ -17,7 +17,6 @@ Delete your Subgraph using [Subgraph Studio](https://thegraph.com/studio/).
    ![Delete-subgraph](/img/Delete-subgraph.png)
 
 4. Depending on the Subgraph's status, you will be prompted with various options.
-
    - If the Subgraph is not published, simply click “delete” and confirm.
    - If the Subgraph is published, you will need to confirm on your wallet before the Subgraph can be deleted from Studio. If a Subgraph is published to multiple networks, such as testnet and mainnet, additional steps may be required.
 
diff --git a/website/src/pages/pt/subgraphs/explorer.mdx b/website/src/pages/pt/subgraphs/explorer.mdx
index c1681cf69573..8c1aa2e7b087 100644
--- a/website/src/pages/pt/subgraphs/explorer.mdx
+++ b/website/src/pages/pt/subgraphs/explorer.mdx
@@ -26,7 +26,6 @@ Ao clicar em um subgraph, será possível:
 
 - Testar queries na área de testes e aproveitar detalhes de rede para fazer decisões informadas.
 - Sinalizar GRT no seu próprio subgraph, ou nos subgraphs de outros, para avisar os indexadores sobre a sua importância e qualidade.
-
   - Isto é importante, porque sinalizar em um subgraph incentiva a sua indexação; ou seja, ele aparecerá em breve na rede para servir queries.
 
 ![Imagem do Explorer 2](/img/Subgraph-Details.png)
diff --git a/website/src/pages/pt/subgraphs/mcp/claude.mdx b/website/src/pages/pt/subgraphs/mcp/claude.mdx
index 8b61438d2ab7..027b272cb942 100644
--- a/website/src/pages/pt/subgraphs/mcp/claude.mdx
+++ b/website/src/pages/pt/subgraphs/mcp/claude.mdx
@@ -85,7 +85,6 @@ Once you've entered your Gateway API key into your settings, save the file and r
 2. **Find the Command Path**
 
    After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory.
-
    - Navigate to your `subgraph-mcp` directory in terminal
    - Run `pwd` to get the full path
    - Combine the output with `/target/release/subgraph-mcp`
diff --git a/website/src/pages/pt/subgraphs/quick-start.mdx b/website/src/pages/pt/subgraphs/quick-start.mdx
index 9fda78533084..202d85b0875c 100644
--- a/website/src/pages/pt/subgraphs/quick-start.mdx
+++ b/website/src/pages/pt/subgraphs/quick-start.mdx
@@ -166,11 +166,9 @@ Para personalizar a sua implantação, veja [Como Editar um Subgraph](/subgraphs
 #### Adding signal to your Subgraph
 
 1. Para atrair Indexadores de modo a fazer queries no seu subgraph, adicione um sinal de curadoria de GRT a ele.
-
    - Isto melhora a qualidade do serviço, reduz a latência, e aprimora a redundância e a disponibilidade da rede para o seu subgraph.
 
 2. Se tiverem direito a recompensas por indexação, os Indexadores recebem recompensas em GRT com base na quantia sinalizada.
-
    - Recomendamos curar pelo menos 3.000 GRT para atrair 3 Indexadores. Verifique a elegibilidade de recompensas com base no uso de funções do subgraph e nas redes apoiadas.
 
 Para saber mais sobre curadoria, clique [aqui](/resources/roles/curating/).
diff --git a/website/src/pages/ro/archived/arbitrum/arbitrum-faq.mdx b/website/src/pages/ro/archived/arbitrum/arbitrum-faq.mdx
index d121f5a2d0f3..270a5f547a74 100644
--- a/website/src/pages/ro/archived/arbitrum/arbitrum-faq.mdx
+++ b/website/src/pages/ro/archived/arbitrum/arbitrum-faq.mdx
@@ -25,7 +25,6 @@ The Graph’s billing system accepts GRT on Arbitrum, and users will need ETH on
 Consequently, to pay for queries, you need GRT on Arbitrum. Here are a few different ways to achieve this:
 
 - If you already have GRT on Ethereum, you can bridge it to Arbitrum. You can do this via the GRT bridging option provided in Subgraph Studio or by using one of the following bridges:
-
   - [The Arbitrum Bridge](https://bridge.arbitrum.io/?l2ChainId=42161)
   - [TransferTo](https://transferto.xyz/swap)
 
diff --git a/website/src/pages/ro/indexing/overview.mdx b/website/src/pages/ro/indexing/overview.mdx
index fa6c22b77a86..80884f3109c1 100644
--- a/website/src/pages/ro/indexing/overview.mdx
+++ b/website/src/pages/ro/indexing/overview.mdx
@@ -680,13 +680,11 @@ graph indexer actions execute approve
 Note that supported action types for allocation management have different input requirements:
 
 - `Allocate` - allocate stake to a specific Subgraph deployment
-
   - required action params:
     - deploymentID
     - amount
 
 - `Unallocate` - close allocation, freeing up the stake to reallocate elsewhere
-
   - required action params:
     - allocationID
     - deploymentID
@@ -695,7 +693,6 @@ Note that supported action types for allocation management have different input
     - force (forces using the provided POI even if it doesn’t match what the graph-node provides)
 
 - `Reallocate` - atomically close allocation and open a fresh allocation for the same Subgraph deployment
-
   - required action params:
     - allocationID
     - deploymentID
diff --git a/website/src/pages/ro/indexing/tap.mdx b/website/src/pages/ro/indexing/tap.mdx
index 477534d63201..e9667d498e0f 100644
--- a/website/src/pages/ro/indexing/tap.mdx
+++ b/website/src/pages/ro/indexing/tap.mdx
@@ -38,7 +38,6 @@ As long as you run `tap-agent` and `indexer-agent`, everything will be executed
 3. `indexer-agent` takes all the last RAVS and sends redeem requests to the blockchain, which will update the value of `redeem_at`.
 
 4. During the `<finality-time>` period, `indexer-agent` monitors if the blockchain has any reorganizations that revert the transaction.
-
    - If it was reverted, the RAV is resent to the blockchain. If it was not reverted, it gets marked as `final`.
 
 ## Blockchain Addresses
@@ -77,17 +76,14 @@ The required software version can be found [here](https://github.com/graphprotoc
 ### Steps
 
 1. **Indexer Agent**
-
    - Follow the [same process](https://github.com/graphprotocol/indexer/pkgs/container/indexer-agent#graph-protocol-indexer-components).
    - Give the new argument `--tap-subgraph-endpoint` to activate the new GraphTally codepaths and enable redeeming of RAVs.
 
 2. **Indexer Service**
-
    - Fully replace your current configuration with the [new Indexer Service rs](https://github.com/graphprotocol/indexer-rs). It's recommend that you use the [container image](https://github.com/orgs/graphprotocol/packages?repo_name=indexer-rs).
    - Like the older version, you can scale Indexer Service horizontally easily. It is still stateless.
 
 3. **TAP Agent**
-
    - Run _one_ single instance of [TAP Agent](https://github.com/graphprotocol/indexer-rs) at all times. It's recommend that you use the [container image](https://github.com/orgs/graphprotocol/packages?repo_name=indexer-rs).
 
 4. **Configure Indexer Service and TAP Agent**
diff --git a/website/src/pages/ro/resources/glossary.mdx b/website/src/pages/ro/resources/glossary.mdx
index 4c5ad55cd0d3..31402db1084a 100644
--- a/website/src/pages/ro/resources/glossary.mdx
+++ b/website/src/pages/ro/resources/glossary.mdx
@@ -15,7 +15,6 @@ title: Glossary
 - **Indexer**: Network participants that run indexing nodes to index data from blockchains and serve GraphQL queries.
 
 - **Indexer Revenue Streams**: Indexers are rewarded in GRT with two components: query fee rebates and indexing rewards.
-
   1. **Query Fee Rebates**: Payments from Subgraph consumers for serving queries on the network.
 
   2. **Indexing Rewards**: The rewards that Indexers receive for indexing Subgraphs. Indexing rewards are generated via new issuance of 3% GRT annually.
@@ -43,7 +42,6 @@ title: Glossary
 - **Epoch**: A unit of time within the network. Currently, one epoch is 6,646 blocks or approximately 1 day.
 
 - **Allocation**: An Indexer can allocate their total GRT stake (including Delegators' stake) towards Subgraphs that have been published on The Graph's decentralized network. Allocations can have different statuses:
-
   1. **Active**: An allocation is considered active when it is created onchain. This is called opening an allocation, and indicates to the network that the Indexer is actively indexing and serving queries for a particular Subgraph. Active allocations accrue indexing rewards proportional to the signal on the Subgraph, and the amount of GRT allocated.
 
   2. **Closed**: An Indexer may claim the accrued indexing rewards on a given Subgraph by submitting a recent, and valid, Proof of Indexing (POI). This is known as closing an allocation. An allocation must have been open for a minimum of one epoch before it can be closed. The maximum allocation period is 28 epochs. If an Indexer leaves an allocation open beyond 28 epochs, it is known as a stale allocation. When an allocation is in the **Closed** state, a Fisherman can still open a dispute to challenge an Indexer for serving false data.
diff --git a/website/src/pages/ro/resources/roles/delegating/undelegating.mdx b/website/src/pages/ro/resources/roles/delegating/undelegating.mdx
index c3e31e653941..9c10e47eb771 100644
--- a/website/src/pages/ro/resources/roles/delegating/undelegating.mdx
+++ b/website/src/pages/ro/resources/roles/delegating/undelegating.mdx
@@ -13,13 +13,11 @@ Learn how to withdraw your delegated tokens through [Graph Explorer](https://the
 1. Visit [Graph Explorer](https://thegraph.com/explorer). Please make sure you're on Explorer and **not** Subgraph Studio.
 
 2. Click on your profile. You can find it on the top right corner of the page.
-
    - Make sure that your wallet is connected. If it's not connected, you will see the "connect" button instead.
 
 3. Once you're in your profile, click on the Delegating tab. In the Delegating tab, you can view the list of Indexers you have delegated to.
 
 4. Click on the Indexer from which you wish to withdraw your tokens.
-
    - Make sure to note the specific Indexer, as you will need to find them again to withdraw.
 
 5. Select the "Undelegate" option by clicking on the three dots next to the Indexer on the right side, see image below:
@@ -37,11 +35,9 @@ Learn how to withdraw your delegated tokens through [Graph Explorer](https://the
 ### Step-by-Step
 
 1. Find your delegation transaction on Arbiscan.
-
    - Here's an [example transaction on Arbiscan](https://arbiscan.io/tx/0xcf2110eac897099f821064445041031efb32786392bdbe7544a4cb7a6b2e4f9a)
 
 2. Navigate to "Transaction Action" where you can find the staking extension contract:
-
    - [This is the staking extension contract for the example listed above](https://arbiscan.io/address/0x00669A4CF01450B64E8A2A20E9b1FCB71E61eF03)
 
 3. Then click on "Contract". ![Contract tab on Arbiscan, between NFT Transfers and Events](/img/arbiscan-contract.png)
@@ -59,7 +55,6 @@ Learn how to withdraw your delegated tokens through [Graph Explorer](https://the
 9. If you don't know how many tokens you delegated, you can call `getDelegation` on the Read Custom tab. You will need to paste your address (delegator address) and the address of the Indexer that you delegated to, as shown in the following screenshot:
 
    ![Both of the addresses needed](/img/get-delegate.png)
-
    - This will return three numbers. The first number is the amount you can unstake.
 
 10. After you have called `unstake`, you can withdraw after approximately 28 epochs (28 days) by calling the `withdraw` function.
diff --git a/website/src/pages/ro/subgraphs/best-practices/grafting-hotfix.mdx b/website/src/pages/ro/subgraphs/best-practices/grafting-hotfix.mdx
index 674cf6b87c62..591914aca81e 100644
--- a/website/src/pages/ro/subgraphs/best-practices/grafting-hotfix.mdx
+++ b/website/src/pages/ro/subgraphs/best-practices/grafting-hotfix.mdx
@@ -14,12 +14,10 @@ This feature enables quick deployment of hotfixes for critical issues, eliminati
 ## Benefits of Grafting for Hotfixes
 
 1. **Rapid Deployment**
-
    - **Minimize Downtime**: When a Subgraph encounters a critical error and stops indexing, grafting enables you to deploy a fix immediately without waiting for re-indexing.
    - **Immediate Recovery**: The new Subgraph continues from the last indexed block, ensuring that data services remain uninterrupted.
 
 2. **Data Preservation**
-
    - **Reuse Historical Data**: Grafting copies the existing data from the base Subgraph, so you don’t lose valuable historical records.
    - **Consistency**: Maintains data continuity, which is crucial for applications relying on consistent historical data.
 
@@ -30,19 +28,16 @@ This feature enables quick deployment of hotfixes for critical issues, eliminati
 ## Best Practices When Using Grafting for Hotfixes
 
 1. **Initial Deployment Without Grafting**
-
    - **Start Clean**: Always deploy your initial Subgraph without grafting to ensure that it’s stable and functions as expected.
    - **Test Thoroughly**: Validate the Subgraph’s performance to minimize the need for future hotfixes.
 
 2. **Implementing the Hotfix with Grafting**
-
    - **Identify the Issue**: When a critical error occurs, determine the block number of the last successfully indexed event.
    - **Create a New Subgraph**: Develop a new Subgraph that includes the hotfix.
    - **Configure Grafting**: Use grafting to copy data up to the identified block number from the failed Subgraph.
    - **Deploy Quickly**: Publish the grafted Subgraph to restore service as soon as possible.
 
 3. **Post-Hotfix Actions**
-
    - **Monitor Performance**: Ensure the grafted Subgraph is indexing correctly and the hotfix resolves the issue.
    - **Republish Without Grafting**: Once stable, deploy a new version of the Subgraph without grafting for long-term maintenance.
      > Note: Relying on grafting indefinitely is not recommended as it can complicate future updates and maintenance.
@@ -130,7 +125,6 @@ Suppose you have a Subgraph tracking a smart contract that has stopped indexing
   - **block**: Block number where grafting should begin.
 
 3. **Deployment Steps**
-
    - **Update the Code**: Implement the hotfix in your mapping scripts (e.g., handleWithdrawal).
    - **Adjust the Manifest**: As shown above, update the `subgraph.yaml` with grafting configurations.
    - **Deploy the Subgraph**:
diff --git a/website/src/pages/ro/subgraphs/developing/creating/install-the-cli.mdx b/website/src/pages/ro/subgraphs/developing/creating/install-the-cli.mdx
index ee168286548b..47db6a6ad7e4 100644
--- a/website/src/pages/ro/subgraphs/developing/creating/install-the-cli.mdx
+++ b/website/src/pages/ro/subgraphs/developing/creating/install-the-cli.mdx
@@ -46,7 +46,6 @@ graph init \
 ```
 
 - The command tries to retrieve the contract ABI from Etherscan.
-
   - The Graph CLI relies on a public RPC endpoint. While occasional failures are expected, retries typically resolve this issue. If failures persist, consider using a local ABI.
 
 - If any of the optional arguments are missing, it guides you through an interactive form.
@@ -87,7 +86,6 @@ Options:
 The `graph add` command will fetch the ABI from Etherscan (unless an ABI path is specified with the `--abi` option) and creates a new `dataSource`, similar to how the `graph init` command creates a `dataSource` `--from-contract`, updating the schema and mappings accordingly. This allows you to index implementation contracts from their proxy contracts.
 
 - The `--merge-entities` option identifies how the developer would like to handle `entity` and `event` name conflicts:
-
   - If `true`: the new `dataSource` should use existing `eventHandlers` & `entities`.
 
   - If `false`: a new `entity` & `event` handler should be created with `${dataSourceName}{EventName}`.
diff --git a/website/src/pages/ro/subgraphs/developing/managing/deleting-a-subgraph.mdx b/website/src/pages/ro/subgraphs/developing/managing/deleting-a-subgraph.mdx
index b8c2330ca49d..f842a0e04ac4 100644
--- a/website/src/pages/ro/subgraphs/developing/managing/deleting-a-subgraph.mdx
+++ b/website/src/pages/ro/subgraphs/developing/managing/deleting-a-subgraph.mdx
@@ -17,7 +17,6 @@ Delete your Subgraph using [Subgraph Studio](https://thegraph.com/studio/).
    ![Delete-subgraph](/img/Delete-subgraph.png)
 
 4. Depending on the Subgraph's status, you will be prompted with various options.
-
    - If the Subgraph is not published, simply click “delete” and confirm.
    - If the Subgraph is published, you will need to confirm on your wallet before the Subgraph can be deleted from Studio. If a Subgraph is published to multiple networks, such as testnet and mainnet, additional steps may be required.
 
diff --git a/website/src/pages/ro/subgraphs/explorer.mdx b/website/src/pages/ro/subgraphs/explorer.mdx
index 499fcede88d3..2da8a191ca99 100644
--- a/website/src/pages/ro/subgraphs/explorer.mdx
+++ b/website/src/pages/ro/subgraphs/explorer.mdx
@@ -26,7 +26,6 @@ When you click into a Subgraph, you will be able to do the following:
 
 - Test queries in the playground and be able to leverage network details to make informed decisions.
 - Signal GRT on your own Subgraph or the Subgraphs of others to make indexers aware of its importance and quality.
-
   - This is critical because signaling on a Subgraph incentivizes it to be indexed, meaning it’ll eventually surface on the network to serve queries.
 
 ![Explorer Image 2](/img/Subgraph-Details.png)
diff --git a/website/src/pages/ro/subgraphs/mcp/claude.mdx b/website/src/pages/ro/subgraphs/mcp/claude.mdx
index 8b61438d2ab7..027b272cb942 100644
--- a/website/src/pages/ro/subgraphs/mcp/claude.mdx
+++ b/website/src/pages/ro/subgraphs/mcp/claude.mdx
@@ -85,7 +85,6 @@ Once you've entered your Gateway API key into your settings, save the file and r
 2. **Find the Command Path**
 
    After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory.
-
    - Navigate to your `subgraph-mcp` directory in terminal
    - Run `pwd` to get the full path
    - Combine the output with `/target/release/subgraph-mcp`
diff --git a/website/src/pages/ro/subgraphs/quick-start.mdx b/website/src/pages/ro/subgraphs/quick-start.mdx
index a803ac8695fa..3c43e2dc2bb4 100644
--- a/website/src/pages/ro/subgraphs/quick-start.mdx
+++ b/website/src/pages/ro/subgraphs/quick-start.mdx
@@ -166,11 +166,9 @@ To customize your deployment, see [Publishing a Subgraph](/subgraphs/developing/
 #### Adding signal to your Subgraph
 
 1. To attract Indexers to query your Subgraph, you should add GRT curation signal to it.
-
    - This action improves quality of service, reduces latency, and enhances network redundancy and availability for your Subgraph.
 
 2. If eligible for indexing rewards, Indexers receive GRT rewards based on the signaled amount.
-
    - It’s recommended to curate at least 3,000 GRT to attract 3 Indexers. Check reward eligibility based on Subgraph feature usage and supported networks.
 
 To learn more about curation, read [Curating](/resources/roles/curating/).
diff --git a/website/src/pages/ru/archived/arbitrum/arbitrum-faq.mdx b/website/src/pages/ru/archived/arbitrum/arbitrum-faq.mdx
index 5e7bf098577d..fede5212cb2d 100644
--- a/website/src/pages/ru/archived/arbitrum/arbitrum-faq.mdx
+++ b/website/src/pages/ru/archived/arbitrum/arbitrum-faq.mdx
@@ -25,7 +25,6 @@ Scaling the protocol smart contracts onto L2 allows network participants to inte
 Поэтому для оплаты запросов Вам потребуется GRT на Arbitrum. Вот несколько способов, как это можно сделать:
 
 - Если у Вас уже есть GRT на Ethereum, Вы можете перенести его на Arbitrum. Вы можете сделать это через опцию переноса GRT, доступную в Subgraph Studio, или с помощью одного из следующих мостов:
-
   - [The Arbitrum Bridge](https://bridge.arbitrum.io/?l2ChainId=42161)
   - [TransferTo](https://transferto.xyz/swap)
 
diff --git a/website/src/pages/ru/indexing/overview.mdx b/website/src/pages/ru/indexing/overview.mdx
index 50c03111ca99..5b3186fa580f 100644
--- a/website/src/pages/ru/indexing/overview.mdx
+++ b/website/src/pages/ru/indexing/overview.mdx
@@ -680,13 +680,11 @@ graph indexer actions execute approve
 Обратите внимание, что поддерживаемые типы действий для управления аллокацией имеют различные требования к входным данным:
 
 - `Allocate` - выделение стейка для конкретного развертывания субграфа
-
   - необходимые параметры действия:
     - deploymentID
     - amount
 
 - `Unallocate` — закрыть аллокацию, освободив стейк для перераспределения в другое место
-
   - необходимые параметры действия:
     - allocationID
     - deploymentID
@@ -695,7 +693,6 @@ graph indexer actions execute approve
     - force (принудительно использует указанный POI, даже если он не совпадает с тем, что предоставляет graph-node)
 
 - `Reallocate` - атомарно закрывает распределение и открывает новое распределение для того же развертывания субграфа
-
   - необходимые параметры действия:
     - allocationID
     - deploymentID
diff --git a/website/src/pages/ru/indexing/tap.mdx b/website/src/pages/ru/indexing/tap.mdx
index 7703c14853a6..9d67cfeca45b 100644
--- a/website/src/pages/ru/indexing/tap.mdx
+++ b/website/src/pages/ru/indexing/tap.mdx
@@ -38,7 +38,6 @@ GraphTally allows a sender to make multiple payments to a receiver, **Receipts**
 3. `indexer-agent` берет все последние RAVS и отправляет запросы на выкуп в блокчейн, который обновит значение `redeem_at`.
 
 4. В течение периода `<finality-time>` `indexer-agent` отслеживает, происходят ли в блокчейне какие-либо реорганизации, которые отменяют транзакцию.
-
    - Если он был отменён, RAV повторно отправляется в блокчейн. Если он не был отменён, он помечается как `final`.
 
 ## Адреса блокчейна
@@ -77,17 +76,14 @@ In addition to the typical requirements to run an indexer, you’ll need a `tap-
 ### Шаги
 
 1. **Indexer Agent**
-
    - Следуйте [этому же процессу] (https://github.com/graphprotocol/indexer/pkgs/container/indexer-agent#graph-protocol-indexer-compents).
    - Give the new argument `--tap-subgraph-endpoint` to activate the new GraphTally codepaths and enable redeeming of RAVs.
 
 2. **Indexer Service**
-
    - Полностью замените текущую конфигурацию на [новую службу Индексатора rs](https://github.com/graphprotocol/indexer-rs). Рекомендуется использовать [образ контейнера](https://github.com/orgs/graphprotocol/packages?repo_name=indexer-rs).
    - Как и в старой версии, Вы можете легко расположить Indexer Service горизонтально. Он по-прежнему не закреплен.
 
 3. **TAP Agent**
-
    - Всегда запускайте _один_ единственный экземпляр [TAP Agent](https://github.com/graphprotocol/indexer-rs). Рекомендуется использовать [образ контейнера](https://github.com/orgs/graphprotocol/packages?repo_name=indexer-rs).
 
 4. **Настройка Indexer Service и TAP Agent**
diff --git a/website/src/pages/ru/resources/glossary.mdx b/website/src/pages/ru/resources/glossary.mdx
index 9f55e53ab4e5..4b8820b62199 100644
--- a/website/src/pages/ru/resources/glossary.mdx
+++ b/website/src/pages/ru/resources/glossary.mdx
@@ -15,7 +15,6 @@ title: Глоссарий
 - **Индексаторы**: Участники сети, которые запускают ноды индексирования для индексирования данных из блокчейнов и обслуживания запросов GraphQL.
 
 - **Потоки доходов Индексатора**: Индексаторы получают вознаграждение в GRT с помощью двух компонентов: скидки на сборы за запросы и вознаграждения за индексирование.
-
   1. **Query Fee Rebates**: Payments from Subgraph consumers for serving queries on the network.
 
   2. **Indexing Rewards**: The rewards that Indexers receive for indexing Subgraphs. Indexing rewards are generated via new issuance of 3% GRT annually.
@@ -43,7 +42,6 @@ title: Глоссарий
 - **Эпоха**: Единица времени в сети. В настоящее время одна эпоха составляет 6 646 блоков или приблизительно 1 день.
 
 - **Allocation**: An Indexer can allocate their total GRT stake (including Delegators' stake) towards Subgraphs that have been published on The Graph's decentralized network. Allocations can have different statuses:
-
   1. **Active**: An allocation is considered active when it is created onchain. This is called opening an allocation, and indicates to the network that the Indexer is actively indexing and serving queries for a particular Subgraph. Active allocations accrue indexing rewards proportional to the signal on the Subgraph, and the amount of GRT allocated.
 
   2. **Closed**: An Indexer may claim the accrued indexing rewards on a given Subgraph by submitting a recent, and valid, Proof of Indexing (POI). This is known as closing an allocation. An allocation must have been open for a minimum of one epoch before it can be closed. The maximum allocation period is 28 epochs. If an Indexer leaves an allocation open beyond 28 epochs, it is known as a stale allocation. When an allocation is in the **Closed** state, a Fisherman can still open a dispute to challenge an Indexer for serving false data.
diff --git a/website/src/pages/ru/resources/roles/delegating/undelegating.mdx b/website/src/pages/ru/resources/roles/delegating/undelegating.mdx
index c9f6de94cca2..fbb0578bd2e1 100644
--- a/website/src/pages/ru/resources/roles/delegating/undelegating.mdx
+++ b/website/src/pages/ru/resources/roles/delegating/undelegating.mdx
@@ -13,13 +13,11 @@ title: Отмена делегирования
 1. Посетите [Graph Explorer](https://thegraph.com/explorer). Убедитесь, что вы находитесь в Explorer, а **не** в Subgraph Studio.
 
 2. Нажмите на свой профиль. Он находится в верхнем правом углу страницы.
-
    - Убедитесь, что ваш кошелек подключен. Если он не подключен, вместо этого вы увидите кнопку "подключить".
 
 3. Когда вы окажетесь в своем профиле, нажмите на вкладку "Делегирование". В этой вкладке вы сможете увидеть список Индексаторов, которым вы делегировали свои токены.
 
 4. Нажмите на Индексатора, из которого вы хотите вывести свои токены.
-
    - Убедитесь, что вы записали конкретного Индексатора, так как вам нужно будет найти его снова для вывода.
 
 5. Выберите опцию "Отменить делегирование", кликнув на три точки рядом с Индексатором с правой стороны, как показано на изображении ниже:
@@ -37,11 +35,9 @@ title: Отмена делегирования
 ### Пошаговое руководство
 
 1. Найдите вашу транзакцию делегирования на Arbiscan.
-
    - Вот [пример транзакции на Arbiscan](https://arbiscan.io/tx/0xcf2110eac897099f821064445041031efb32786392bdbe7544a4cb7a6b2e4f9a)
 
 2. Перейдите в раздел "Действие по транзакции", где вы можете найти контракт расширения стейкинга:
-
    - [Это контракт расширения стейкинга для приведенного выше примера](https://arbiscan.io/address/0x00669A4CF01450B64E8A2A20E9b1FCB71E61eF03)
 
 3. Затем нажмите на «Контракт». ![Вкладка контракта на Arbiscan, между трансфер NFT и События](/img/arbiscan-contract.png)
@@ -59,7 +55,6 @@ title: Отмена делегирования
 9. Если вы не знаете, сколько токенов вы делегировали, вы можете вызвать `getDelegation` на вкладке Read Custom. Вам нужно будет вставить свой адрес (адрес делегатора) и адрес Индексатора, которому вы делегировали, как показано на следующем скриншоте:
 
    ![Оба адреса, которые нужны](/img/get-delegate.png)
-
    - Это вернет три числа. Первое число — это количество токенов, которые вы можете вывести.
 
 10. После того как вы вызовете `unstake`, вы сможете вывести токены примерно через 28 эпох (28 дней), вызвав функцию `withdraw`.
diff --git a/website/src/pages/ru/subgraphs/best-practices/grafting-hotfix.mdx b/website/src/pages/ru/subgraphs/best-practices/grafting-hotfix.mdx
index b169115f012c..42ec608729a4 100644
--- a/website/src/pages/ru/subgraphs/best-practices/grafting-hotfix.mdx
+++ b/website/src/pages/ru/subgraphs/best-practices/grafting-hotfix.mdx
@@ -14,12 +14,10 @@ This feature enables quick deployment of hotfixes for critical issues, eliminati
 ## Преимущества графтинга для оперативных исправлений
 
 1. **Быстрое развертывание**
-
    - **Minimize Downtime**: When a Subgraph encounters a critical error and stops indexing, grafting enables you to deploy a fix immediately without waiting for re-indexing.
    - **Immediate Recovery**: The new Subgraph continues from the last indexed block, ensuring that data services remain uninterrupted.
 
 2. **Сохранение данных**
-
    - **Reuse Historical Data**: Grafting copies the existing data from the base Subgraph, so you don’t lose valuable historical records.
    - **Консистентность**: поддерживает непрерывность данных, что имеет решающее значение для приложений, полагающихся на согласованные исторические данные.
 
@@ -30,19 +28,16 @@ This feature enables quick deployment of hotfixes for critical issues, eliminati
 ## Лучшие практики при использовании графтинга для оперативных исправлений
 
 1. **Первоначальное развертывание без графтинга**
-
    - **Start Clean**: Always deploy your initial Subgraph without grafting to ensure that it’s stable and functions as expected.
    - **Test Thoroughly**: Validate the Subgraph’s performance to minimize the need for future hotfixes.
 
 2. **Реализация исправления с использованием графтинга**
-
    - **Определите проблему**: при возникновении критической ошибки определите номер блока последнего успешно проиндексированного события.
    - **Create a New Subgraph**: Develop a new Subgraph that includes the hotfix.
    - **Configure Grafting**: Use grafting to copy data up to the identified block number from the failed Subgraph.
    - **Deploy Quickly**: Publish the grafted Subgraph to restore service as soon as possible.
 
 3. **Действия после оперативного исправления**
-
    - **Monitor Performance**: Ensure the grafted Subgraph is indexing correctly and the hotfix resolves the issue.
    - **Republish Without Grafting**: Once stable, deploy a new version of the Subgraph without grafting for long-term maintenance.
      > Примечание: Не рекомендуется использовать графтинг бесконечно, так как это может усложнить будущие обновления и обслуживание.
@@ -130,7 +125,6 @@ Suppose you have a Subgraph tracking a smart contract that has stopped indexing
   - **block**: номер блока, с которого должен начаться графтинг.
 
 3. **Шаги развертывания**
-
    - **Обновите код**: внедрите исправление в свои скрипты мэппинга (например, handleWithdrawal).
    - **Отредактируйте манифест**: как показано выше, обновите файл `subgraph.yaml` с конфигурациями для графтинга.
    - **Разверните субграф**:
diff --git a/website/src/pages/ru/subgraphs/developing/creating/install-the-cli.mdx b/website/src/pages/ru/subgraphs/developing/creating/install-the-cli.mdx
index 0208397aeb4d..53abc627eefe 100644
--- a/website/src/pages/ru/subgraphs/developing/creating/install-the-cli.mdx
+++ b/website/src/pages/ru/subgraphs/developing/creating/install-the-cli.mdx
@@ -46,7 +46,6 @@ graph init \
 ```
 
 - Команда пытается получить ABI контракта из Etherscan.
-
   - Интерфейс командной строки The Graph использует общедоступную конечную точку RPC. Несмотря на то, что возможны периодические сбои, повторные попытки обычно решают эту проблему. Если сбои продолжаются, рассмотрите возможность использования локального ABI.
 
 - Если какой-либо из необязательных аргументов отсутствует, Вам будет предложено воспользоваться интерактивной формой.
@@ -87,7 +86,6 @@ Options:
 The `graph add` command will fetch the ABI from Etherscan (unless an ABI path is specified with the `--abi` option) and creates a new `dataSource`, similar to how the `graph init` command creates a `dataSource` `--from-contract`, updating the schema and mappings accordingly. This allows you to index implementation contracts from their proxy contracts.
 
 - The `--merge-entities` option identifies how the developer would like to handle `entity` and `event` name conflicts:
-
   - If `true`: the new `dataSource` should use existing `eventHandlers` & `entities`.
 
   - If `false`: a new `entity` & `event` handler should be created with `${dataSourceName}{EventName}`.
diff --git a/website/src/pages/ru/subgraphs/developing/managing/deleting-a-subgraph.mdx b/website/src/pages/ru/subgraphs/developing/managing/deleting-a-subgraph.mdx
index 84674685403f..f82303c0df16 100644
--- a/website/src/pages/ru/subgraphs/developing/managing/deleting-a-subgraph.mdx
+++ b/website/src/pages/ru/subgraphs/developing/managing/deleting-a-subgraph.mdx
@@ -17,7 +17,6 @@ title: Удаление субграфа
    ![Удалить субграф](/img/Delete-subgraph.png)
 
 4. В зависимости от состояния субграфа, вам будут предложены различные варианты.
-
    - Если субграф не опубликован, просто нажмите «удалить» и подтвердите действие.
    - Если субграф опубликован, вам нужно будет подтвердить действие в вашем кошельке перед его удалением из Studio. Если субграф опубликован в нескольких сетях, таких как тестовая сеть и основная сеть, могут потребоваться дополнительные шаги.
 
diff --git a/website/src/pages/ru/subgraphs/explorer.mdx b/website/src/pages/ru/subgraphs/explorer.mdx
index b963e985dd99..73c93939f8af 100644
--- a/website/src/pages/ru/subgraphs/explorer.mdx
+++ b/website/src/pages/ru/subgraphs/explorer.mdx
@@ -26,7 +26,6 @@ When you click into a Subgraph, you will be able to do the following:
 
 - Протестировать запросы на тестовой площадке и использовать данные сети для принятия обоснованных решений.
 - Signal GRT on your own Subgraph or the Subgraphs of others to make indexers aware of its importance and quality.
-
   - This is critical because signaling on a Subgraph incentivizes it to be indexed, meaning it’ll eventually surface on the network to serve queries.
 
 ![Изображение Explorer 2](/img/Subgraph-Details.png)
diff --git a/website/src/pages/ru/subgraphs/mcp/claude.mdx b/website/src/pages/ru/subgraphs/mcp/claude.mdx
index 8b61438d2ab7..027b272cb942 100644
--- a/website/src/pages/ru/subgraphs/mcp/claude.mdx
+++ b/website/src/pages/ru/subgraphs/mcp/claude.mdx
@@ -85,7 +85,6 @@ Once you've entered your Gateway API key into your settings, save the file and r
 2. **Find the Command Path**
 
    After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory.
-
    - Navigate to your `subgraph-mcp` directory in terminal
    - Run `pwd` to get the full path
    - Combine the output with `/target/release/subgraph-mcp`
diff --git a/website/src/pages/ru/subgraphs/quick-start.mdx b/website/src/pages/ru/subgraphs/quick-start.mdx
index c676f1cf698d..6c71c52aed04 100644
--- a/website/src/pages/ru/subgraphs/quick-start.mdx
+++ b/website/src/pages/ru/subgraphs/quick-start.mdx
@@ -166,11 +166,9 @@ graph publish
 #### Добавление сигнала к Вашему субграфу
 
 1. Чтобы привлечь Индексаторов для запросов к вашему субграфу, вам следует добавить сигнал курирования GRT.
-
    - Это действие улучшает качество обслуживания, снижает задержку и повышает сетевую избыточность и доступность для вашего субграфа.
 
 2. Если индексаторы имеют право на получение вознаграждений за индексацию, они получат вознаграждения в GRT, в соответствии с количеством поданного сигнала.
-
    - Рекомендуется курировать как минимум 3,000 GRT, чтобы привлечь 3 Индексаторов. Проверьте право на вознаграждения в зависимости от использования функций субграфа и поддерживаемых сетей.
 
 Чтобы узнать больше о кураторстве, прочитайте статью [Курирование](/resources/roles/curating/).
diff --git a/website/src/pages/sv/archived/arbitrum/arbitrum-faq.mdx b/website/src/pages/sv/archived/arbitrum/arbitrum-faq.mdx
index aba7e13387a4..f8ce0521a166 100644
--- a/website/src/pages/sv/archived/arbitrum/arbitrum-faq.mdx
+++ b/website/src/pages/sv/archived/arbitrum/arbitrum-faq.mdx
@@ -25,7 +25,6 @@ The Graph’s billing system accepts GRT on Arbitrum, and users will need ETH on
 Consequently, to pay for queries, you need GRT on Arbitrum. Here are a few different ways to achieve this:
 
 - If you already have GRT on Ethereum, you can bridge it to Arbitrum. You can do this via the GRT bridging option provided in Subgraph Studio or by using one of the following bridges:
-
   - [The Arbitrum Bridge](https://bridge.arbitrum.io/?l2ChainId=42161)
   - [TransferTo](https://transferto.xyz/swap)
 
diff --git a/website/src/pages/sv/indexing/overview.mdx b/website/src/pages/sv/indexing/overview.mdx
index c265f0efff66..1192f4426430 100644
--- a/website/src/pages/sv/indexing/overview.mdx
+++ b/website/src/pages/sv/indexing/overview.mdx
@@ -680,13 +680,11 @@ graph indexer actions execute approve
 Note that supported action types for allocation management have different input requirements:
 
 - `Allocate` - allocate stake to a specific Subgraph deployment
-
   - required action params:
     - deploymentID
     - amount
 
 - `Unallocate` - close allocation, freeing up the stake to reallocate elsewhere
-
   - required action params:
     - allocationID
     - deploymentID
@@ -695,7 +693,6 @@ Note that supported action types for allocation management have different input
     - force (forces using the provided POI even if it doesn’t match what the graph-node provides)
 
 - `Reallocate` - atomically close allocation and open a fresh allocation for the same Subgraph deployment
-
   - required action params:
     - allocationID
     - deploymentID
diff --git a/website/src/pages/sv/indexing/tap.mdx b/website/src/pages/sv/indexing/tap.mdx
index 65582940a499..fefb56202cee 100644
--- a/website/src/pages/sv/indexing/tap.mdx
+++ b/website/src/pages/sv/indexing/tap.mdx
@@ -38,7 +38,6 @@ As long as you run `tap-agent` and `indexer-agent`, everything will be executed
 3. `indexer-agent` takes all the last RAVS and sends redeem requests to the blockchain, which will update the value of `redeem_at`.
 
 4. During the `<finality-time>` period, `indexer-agent` monitors if the blockchain has any reorganizations that revert the transaction.
-
    - If it was reverted, the RAV is resent to the blockchain. If it was not reverted, it gets marked as `final`.
 
 ## Blockchain Addresses
@@ -77,17 +76,14 @@ The required software version can be found [here](https://github.com/graphprotoc
 ### Steps
 
 1. **Indexer Agent**
-
    - Follow the [same process](https://github.com/graphprotocol/indexer/pkgs/container/indexer-agent#graph-protocol-indexer-components).
    - Give the new argument `--tap-subgraph-endpoint` to activate the new GraphTally codepaths and enable redeeming of RAVs.
 
 2. **Indexer Service**
-
    - Fully replace your current configuration with the [new Indexer Service rs](https://github.com/graphprotocol/indexer-rs). It's recommend that you use the [container image](https://github.com/orgs/graphprotocol/packages?repo_name=indexer-rs).
    - Like the older version, you can scale Indexer Service horizontally easily. It is still stateless.
 
 3. **TAP Agent**
-
    - Run _one_ single instance of [TAP Agent](https://github.com/graphprotocol/indexer-rs) at all times. It's recommend that you use the [container image](https://github.com/orgs/graphprotocol/packages?repo_name=indexer-rs).
 
 4. **Configure Indexer Service and TAP Agent**
diff --git a/website/src/pages/sv/resources/glossary.mdx b/website/src/pages/sv/resources/glossary.mdx
index 72ab2ba9333a..4cbb02afecf3 100644
--- a/website/src/pages/sv/resources/glossary.mdx
+++ b/website/src/pages/sv/resources/glossary.mdx
@@ -15,7 +15,6 @@ title: Ordlista
 - **Indexer**: Network participants that run indexing nodes to index data from blockchains and serve GraphQL queries.
 
 - **Indexer Revenue Streams**: Indexers are rewarded in GRT with two components: query fee rebates and indexing rewards.
-
   1. **Query Fee Rebates**: Payments from Subgraph consumers for serving queries on the network.
 
   2. **Indexing Rewards**: The rewards that Indexers receive for indexing Subgraphs. Indexing rewards are generated via new issuance of 3% GRT annually.
@@ -43,7 +42,6 @@ title: Ordlista
 - **Epoch**: A unit of time within the network. Currently, one epoch is 6,646 blocks or approximately 1 day.
 
 - **Allocation**: An Indexer can allocate their total GRT stake (including Delegators' stake) towards Subgraphs that have been published on The Graph's decentralized network. Allocations can have different statuses:
-
   1. **Active**: An allocation is considered active when it is created onchain. This is called opening an allocation, and indicates to the network that the Indexer is actively indexing and serving queries for a particular Subgraph. Active allocations accrue indexing rewards proportional to the signal on the Subgraph, and the amount of GRT allocated.
 
   2. **Closed**: An Indexer may claim the accrued indexing rewards on a given Subgraph by submitting a recent, and valid, Proof of Indexing (POI). This is known as closing an allocation. An allocation must have been open for a minimum of one epoch before it can be closed. The maximum allocation period is 28 epochs. If an Indexer leaves an allocation open beyond 28 epochs, it is known as a stale allocation. When an allocation is in the **Closed** state, a Fisherman can still open a dispute to challenge an Indexer for serving false data.
diff --git a/website/src/pages/sv/resources/roles/delegating/undelegating.mdx b/website/src/pages/sv/resources/roles/delegating/undelegating.mdx
index 9ea2ef752778..c10617374c5c 100644
--- a/website/src/pages/sv/resources/roles/delegating/undelegating.mdx
+++ b/website/src/pages/sv/resources/roles/delegating/undelegating.mdx
@@ -13,13 +13,11 @@ Learn how to withdraw your delegated tokens through [Graph Explorer](https://the
 1. Visit [Graph Explorer](https://thegraph.com/explorer). Please make sure you're on Explorer and **not** Subgraph Studio.
 
 2. Click on your profile. You can find it on the top right corner of the page.
-
    - Make sure that your wallet is connected. If it's not connected, you will see the "connect" button instead.
 
 3. Once you're in your profile, click on the Delegating tab. In the Delegating tab, you can view the list of Indexers you have delegated to.
 
 4. Click on the Indexer from which you wish to withdraw your tokens.
-
    - Make sure to note the specific Indexer, as you will need to find them again to withdraw.
 
 5. Select the "Undelegate" option by clicking on the three dots next to the Indexer on the right side, see image below:
@@ -37,11 +35,9 @@ Learn how to withdraw your delegated tokens through [Graph Explorer](https://the
 ### Step-by-Step
 
 1. Find your delegation transaction on Arbiscan.
-
    - Here's an [example transaction on Arbiscan](https://arbiscan.io/tx/0xcf2110eac897099f821064445041031efb32786392bdbe7544a4cb7a6b2e4f9a)
 
 2. Navigate to "Transaction Action" where you can find the staking extension contract:
-
    - [This is the staking extension contract for the example listed above](https://arbiscan.io/address/0x00669A4CF01450B64E8A2A20E9b1FCB71E61eF03)
 
 3. Then click on "Contract". ![Contract tab on Arbiscan, between NFT Transfers and Events](/img/arbiscan-contract.png)
@@ -59,7 +55,6 @@ Learn how to withdraw your delegated tokens through [Graph Explorer](https://the
 9. If you don't know how many tokens you delegated, you can call `getDelegation` on the Read Custom tab. You will need to paste your address (delegator address) and the address of the Indexer that you delegated to, as shown in the following screenshot:
 
    ![Both of the addresses needed](/img/get-delegate.png)
-
    - This will return three numbers. The first number is the amount you can unstake.
 
 10. After you have called `unstake`, you can withdraw after approximately 28 epochs (28 days) by calling the `withdraw` function.
diff --git a/website/src/pages/sv/subgraphs/best-practices/grafting-hotfix.mdx b/website/src/pages/sv/subgraphs/best-practices/grafting-hotfix.mdx
index acc7aa19a5ec..70a6a160be1a 100644
--- a/website/src/pages/sv/subgraphs/best-practices/grafting-hotfix.mdx
+++ b/website/src/pages/sv/subgraphs/best-practices/grafting-hotfix.mdx
@@ -14,12 +14,10 @@ This feature enables quick deployment of hotfixes for critical issues, eliminati
 ## Benefits of Grafting for Hotfixes
 
 1. **Rapid Deployment**
-
    - **Minimize Downtime**: When a Subgraph encounters a critical error and stops indexing, grafting enables you to deploy a fix immediately without waiting for re-indexing.
    - **Immediate Recovery**: The new Subgraph continues from the last indexed block, ensuring that data services remain uninterrupted.
 
 2. **Data Preservation**
-
    - **Reuse Historical Data**: Grafting copies the existing data from the base Subgraph, so you don’t lose valuable historical records.
    - **Consistency**: Maintains data continuity, which is crucial for applications relying on consistent historical data.
 
@@ -30,19 +28,16 @@ This feature enables quick deployment of hotfixes for critical issues, eliminati
 ## Best Practices When Using Grafting for Hotfixes
 
 1. **Initial Deployment Without Grafting**
-
    - **Start Clean**: Always deploy your initial Subgraph without grafting to ensure that it’s stable and functions as expected.
    - **Test Thoroughly**: Validate the Subgraph’s performance to minimize the need for future hotfixes.
 
 2. **Implementing the Hotfix with Grafting**
-
    - **Identify the Issue**: When a critical error occurs, determine the block number of the last successfully indexed event.
    - **Create a New Subgraph**: Develop a new Subgraph that includes the hotfix.
    - **Configure Grafting**: Use grafting to copy data up to the identified block number from the failed Subgraph.
    - **Deploy Quickly**: Publish the grafted Subgraph to restore service as soon as possible.
 
 3. **Post-Hotfix Actions**
-
    - **Monitor Performance**: Ensure the grafted Subgraph is indexing correctly and the hotfix resolves the issue.
    - **Republish Without Grafting**: Once stable, deploy a new version of the Subgraph without grafting for long-term maintenance.
      > Note: Relying on grafting indefinitely is not recommended as it can complicate future updates and maintenance.
@@ -130,7 +125,6 @@ Suppose you have a Subgraph tracking a smart contract that has stopped indexing
   - **block**: Block number where grafting should begin.
 
 3. **Deployment Steps**
-
    - **Update the Code**: Implement the hotfix in your mapping scripts (e.g., handleWithdrawal).
    - **Adjust the Manifest**: As shown above, update the `subgraph.yaml` with grafting configurations.
    - **Deploy the Subgraph**:
diff --git a/website/src/pages/sv/subgraphs/developing/creating/install-the-cli.mdx b/website/src/pages/sv/subgraphs/developing/creating/install-the-cli.mdx
index 21e3401cd8e9..500bd1b42581 100644
--- a/website/src/pages/sv/subgraphs/developing/creating/install-the-cli.mdx
+++ b/website/src/pages/sv/subgraphs/developing/creating/install-the-cli.mdx
@@ -46,7 +46,6 @@ graph init \
 ```
 
 - The command tries to retrieve the contract ABI from Etherscan.
-
   - The Graph CLI relies on a public RPC endpoint. While occasional failures are expected, retries typically resolve this issue. If failures persist, consider using a local ABI.
 
 - If any of the optional arguments are missing, it guides you through an interactive form.
@@ -87,7 +86,6 @@ Options:
 The `graph add` command will fetch the ABI from Etherscan (unless an ABI path is specified with the `--abi` option) and creates a new `dataSource`, similar to how the `graph init` command creates a `dataSource` `--from-contract`, updating the schema and mappings accordingly. This allows you to index implementation contracts from their proxy contracts.
 
 - The `--merge-entities` option identifies how the developer would like to handle `entity` and `event` name conflicts:
-
   - If `true`: the new `dataSource` should use existing `eventHandlers` & `entities`.
 
   - If `false`: a new `entity` & `event` handler should be created with `${dataSourceName}{EventName}`.
diff --git a/website/src/pages/sv/subgraphs/developing/managing/deleting-a-subgraph.mdx b/website/src/pages/sv/subgraphs/developing/managing/deleting-a-subgraph.mdx
index b8c2330ca49d..f842a0e04ac4 100644
--- a/website/src/pages/sv/subgraphs/developing/managing/deleting-a-subgraph.mdx
+++ b/website/src/pages/sv/subgraphs/developing/managing/deleting-a-subgraph.mdx
@@ -17,7 +17,6 @@ Delete your Subgraph using [Subgraph Studio](https://thegraph.com/studio/).
    ![Delete-subgraph](/img/Delete-subgraph.png)
 
 4. Depending on the Subgraph's status, you will be prompted with various options.
-
    - If the Subgraph is not published, simply click “delete” and confirm.
    - If the Subgraph is published, you will need to confirm on your wallet before the Subgraph can be deleted from Studio. If a Subgraph is published to multiple networks, such as testnet and mainnet, additional steps may be required.
 
diff --git a/website/src/pages/sv/subgraphs/explorer.mdx b/website/src/pages/sv/subgraphs/explorer.mdx
index 87b670a3247d..b5a5564ab85d 100644
--- a/website/src/pages/sv/subgraphs/explorer.mdx
+++ b/website/src/pages/sv/subgraphs/explorer.mdx
@@ -26,7 +26,6 @@ When you click into a Subgraph, you will be able to do the following:
 
 - Test queries in the playground and be able to leverage network details to make informed decisions.
 - Signal GRT on your own Subgraph or the Subgraphs of others to make indexers aware of its importance and quality.
-
   - This is critical because signaling on a Subgraph incentivizes it to be indexed, meaning it’ll eventually surface on the network to serve queries.
 
 ![Explorer Image 2](/img/Subgraph-Details.png)
diff --git a/website/src/pages/sv/subgraphs/mcp/claude.mdx b/website/src/pages/sv/subgraphs/mcp/claude.mdx
index 8b61438d2ab7..027b272cb942 100644
--- a/website/src/pages/sv/subgraphs/mcp/claude.mdx
+++ b/website/src/pages/sv/subgraphs/mcp/claude.mdx
@@ -85,7 +85,6 @@ Once you've entered your Gateway API key into your settings, save the file and r
 2. **Find the Command Path**
 
    After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory.
-
    - Navigate to your `subgraph-mcp` directory in terminal
    - Run `pwd` to get the full path
    - Combine the output with `/target/release/subgraph-mcp`
diff --git a/website/src/pages/sv/subgraphs/quick-start.mdx b/website/src/pages/sv/subgraphs/quick-start.mdx
index f3fba67ef0d7..4ef6044acfcd 100644
--- a/website/src/pages/sv/subgraphs/quick-start.mdx
+++ b/website/src/pages/sv/subgraphs/quick-start.mdx
@@ -166,11 +166,9 @@ To customize your deployment, see [Publishing a Subgraph](/subgraphs/developing/
 #### Adding signal to your Subgraph
 
 1. To attract Indexers to query your Subgraph, you should add GRT curation signal to it.
-
    - This action improves quality of service, reduces latency, and enhances network redundancy and availability for your Subgraph.
 
 2. If eligible for indexing rewards, Indexers receive GRT rewards based on the signaled amount.
-
    - It’s recommended to curate at least 3,000 GRT to attract 3 Indexers. Check reward eligibility based on Subgraph feature usage and supported networks.
 
 To learn more about curation, read [Curating](/resources/roles/curating/).
diff --git a/website/src/pages/tr/archived/arbitrum/arbitrum-faq.mdx b/website/src/pages/tr/archived/arbitrum/arbitrum-faq.mdx
index eeb1e61127b5..a06a4e00087d 100644
--- a/website/src/pages/tr/archived/arbitrum/arbitrum-faq.mdx
+++ b/website/src/pages/tr/archived/arbitrum/arbitrum-faq.mdx
@@ -25,7 +25,6 @@ The Graph'in faturalandırma sistemi, Arbitrum ağı üzerinde GRT ile ödeme al
 Dolayısıyla, sorgu ödemelerini yapmak için Arbitrum üzerinde GRT'ye ihtiyacınız var. İşte GRT elde etmenin birkaç farklı yolu:
 
 - Ethereum üzerinde zaten GRT'niz varsa, bunu Arbitrum'a köprüleyebilirsiniz. Bunu, Subgraph Studio'da sunulan GRT köprüleme seçeneği aracılığıyla veya aşağıdaki köprülerden birini kullanarak yapabilirsiniz:
-
   - [Arbitrum Köprüsü](https://bridge.arbitrum.io/?l2ChainId=42161)
   - [TransferTo](https://transferto.xyz/swap)
 
diff --git a/website/src/pages/tr/indexing/overview.mdx b/website/src/pages/tr/indexing/overview.mdx
index 6017f2fdc09e..57d4c8943607 100644
--- a/website/src/pages/tr/indexing/overview.mdx
+++ b/website/src/pages/tr/indexing/overview.mdx
@@ -680,13 +680,11 @@ graph indexer actions execute approve
 Note that supported action types for allocation management have different input requirements:
 
 - `Allocate` - allocate stake to a specific Subgraph deployment
-
   - required action params:
     - deploymentID
     - amount
 
 - `Unallocate` - close allocation, freeing up the stake to reallocate elsewhere
-
   - required action params:
     - allocationID
     - deploymentID
@@ -695,7 +693,6 @@ Note that supported action types for allocation management have different input
     - force (forces using the provided POI even if it doesn’t match what the graph-node provides)
 
 - `Reallocate` - atomically close allocation and open a fresh allocation for the same Subgraph deployment
-
   - required action params:
     - allocationID
     - deploymentID
diff --git a/website/src/pages/tr/indexing/tap.mdx b/website/src/pages/tr/indexing/tap.mdx
index d59e66ef4a76..8377de25d05f 100644
--- a/website/src/pages/tr/indexing/tap.mdx
+++ b/website/src/pages/tr/indexing/tap.mdx
@@ -38,7 +38,6 @@ Ağ geçidi her sorgu için size veritabanınızda saklanan bir `signed receipt`
 3. `indexer-agent`, tüm son RAV'leri alır ve blokzincirine kullanma talepleri gönderir, bu da `redeem_at` değerini güncelleyecektir.
 
 4. `<finality-time>` dönemi boyunca, `indexer-agent`, blokzincirinin işlemi geri çeviren herhangi bir yeniden düzenleme (reorg) yaşayıp yaşamadığını izler.
-
    - Eğer işlem geri çevrildiyse, RAV tekrar blokzincire gönderilir. Eğer geri çevrilmediyse, `final` (nihai) olarak işaretlenir.
 
 ## Blokzinciri Adresleri
@@ -77,17 +76,14 @@ Gerekli yazılım sürümü [burada](https://github.com/graphprotocol/indexer/bl
 ### Adımlar
 
 1. **Endeksleyici Aracı**
-
    - [Buradaki süreci](https://github.com/graphprotocol/indexer/pkgs/container/indexer-agent#graph-protocol-indexer-components) takip edin.
    - Give the new argument `--tap-subgraph-endpoint` to activate the new GraphTally codepaths and enable redeeming of RAVs.
 
 2. **Endeksleyici Hizmeti**
-
    - Mevcut yapılandırmanızı tamamen [yeni Indexer Service rs (Endeksleyici Hizmeti)](https://github.com/graphprotocol/indexer-rs) ile değiştirin. [Konteyner imajını](https://github.com/orgs/graphprotocol/packages?repo_name=indexer-rs) kullanmanız tavsiye edilir.
    - Eski versiyonda olduğu gibi, Endeksleyici Hizmeti'ni yatay olarak kolayca ölçekleyebilirsiniz. Hala durumsuz (stateless) bir yapıya sahiptir.
 
 3. **TAP Aracı**
-
    - Her zaman [TAP Aracı](https://github.com/graphprotocol/indexer-rs)'nın _tek_ bir örneğini çalıştırın. [Konteyner imajını](https://github.com/orgs/graphprotocol/packages?repo_name=indexer-rs) kullanmanız önerilir.
 
 4. **Endeksleyici Servisi'ni ve TAP Aracı'nı Yapılandırma**
diff --git a/website/src/pages/tr/resources/glossary.mdx b/website/src/pages/tr/resources/glossary.mdx
index 75f3b5e3cb0b..c4c885bcf827 100644
--- a/website/src/pages/tr/resources/glossary.mdx
+++ b/website/src/pages/tr/resources/glossary.mdx
@@ -15,7 +15,6 @@ title: Sözlük
 - **Endeksleyici**: Blokzincirlerinden veri endekslemek ve GraphQL sorgularını sunmak için endeksleme düğümleri çalıştıran ağ katılımcıları.
 
 - **Endeksleyici Gelir Akışları**: Endeksleyiciler, sorgu ücreti iadeleri ve endeksleme ödülleri olmak üzere iki bileşenle GRT cinsinden ödüllendirilir.
-
   1. **Query Fee Rebates**: Payments from Subgraph consumers for serving queries on the network.
 
   2. **Indexing Rewards**: The rewards that Indexers receive for indexing Subgraphs. Indexing rewards are generated via new issuance of 3% GRT annually.
@@ -43,7 +42,6 @@ title: Sözlük
 - **Dönem**: Ağdaki bir zaman birimi. Şu anda, bir dönem 6.646 blok veya yaklaşık 1 gündür.
 
 - **Allocation**: An Indexer can allocate their total GRT stake (including Delegators' stake) towards Subgraphs that have been published on The Graph's decentralized network. Allocations can have different statuses:
-
   1. **Active**: An allocation is considered active when it is created onchain. This is called opening an allocation, and indicates to the network that the Indexer is actively indexing and serving queries for a particular Subgraph. Active allocations accrue indexing rewards proportional to the signal on the Subgraph, and the amount of GRT allocated.
 
   2. **Closed**: An Indexer may claim the accrued indexing rewards on a given Subgraph by submitting a recent, and valid, Proof of Indexing (POI). This is known as closing an allocation. An allocation must have been open for a minimum of one epoch before it can be closed. The maximum allocation period is 28 epochs. If an Indexer leaves an allocation open beyond 28 epochs, it is known as a stale allocation. When an allocation is in the **Closed** state, a Fisherman can still open a dispute to challenge an Indexer for serving false data.
diff --git a/website/src/pages/tr/resources/roles/delegating/undelegating.mdx b/website/src/pages/tr/resources/roles/delegating/undelegating.mdx
index 38296af1532f..a15e068d32cd 100644
--- a/website/src/pages/tr/resources/roles/delegating/undelegating.mdx
+++ b/website/src/pages/tr/resources/roles/delegating/undelegating.mdx
@@ -13,13 +13,11 @@ Learn how to withdraw your delegated tokens through [Graph Explorer](https://the
 1. Visit [Graph Explorer](https://thegraph.com/explorer). Please make sure you're on Explorer and **not** Subgraph Studio.
 
 2. Click on your profile. You can find it on the top right corner of the page.
-
    - Make sure that your wallet is connected. If it's not connected, you will see the "connect" button instead.
 
 3. Once you're in your profile, click on the Delegating tab. In the Delegating tab, you can view the list of Indexers you have delegated to.
 
 4. Click on the Indexer from which you wish to withdraw your tokens.
-
    - Make sure to note the specific Indexer, as you will need to find them again to withdraw.
 
 5. Select the "Undelegate" option by clicking on the three dots next to the Indexer on the right side, see image below:
@@ -37,11 +35,9 @@ Learn how to withdraw your delegated tokens through [Graph Explorer](https://the
 ### Adım Adım
 
 1. Find your delegation transaction on Arbiscan.
-
    - Here's an [example transaction on Arbiscan](https://arbiscan.io/tx/0xcf2110eac897099f821064445041031efb32786392bdbe7544a4cb7a6b2e4f9a)
 
 2. Navigate to "Transaction Action" where you can find the staking extension contract:
-
    - [This is the staking extension contract for the example listed above](https://arbiscan.io/address/0x00669A4CF01450B64E8A2A20E9b1FCB71E61eF03)
 
 3. Then click on "Contract". ![Contract tab on Arbiscan, between NFT Transfers and Events](/img/arbiscan-contract.png)
@@ -59,7 +55,6 @@ Learn how to withdraw your delegated tokens through [Graph Explorer](https://the
 9. If you don't know how many tokens you delegated, you can call `getDelegation` on the Read Custom tab. You will need to paste your address (delegator address) and the address of the Indexer that you delegated to, as shown in the following screenshot:
 
    ![Both of the addresses needed](/img/get-delegate.png)
-
    - This will return three numbers. The first number is the amount you can unstake.
 
 10. After you have called `unstake`, you can withdraw after approximately 28 epochs (28 days) by calling the `withdraw` function.
diff --git a/website/src/pages/tr/subgraphs/best-practices/grafting-hotfix.mdx b/website/src/pages/tr/subgraphs/best-practices/grafting-hotfix.mdx
index 1b661af00a2f..468f2603a6c6 100644
--- a/website/src/pages/tr/subgraphs/best-practices/grafting-hotfix.mdx
+++ b/website/src/pages/tr/subgraphs/best-practices/grafting-hotfix.mdx
@@ -14,12 +14,10 @@ This feature enables quick deployment of hotfixes for critical issues, eliminati
 ## Acil Güncellemelerde Aşılamanın Avantajları
 
 1. **Hızlı Dağıtım**
-
    - **Minimize Downtime**: When a Subgraph encounters a critical error and stops indexing, grafting enables you to deploy a fix immediately without waiting for re-indexing.
    - **Immediate Recovery**: The new Subgraph continues from the last indexed block, ensuring that data services remain uninterrupted.
 
 2. **Veri Koruma**
-
    - **Reuse Historical Data**: Grafting copies the existing data from the base Subgraph, so you don’t lose valuable historical records.
    - **Tutarlılık**: Tutarlı tarihsel verilere bağımlı uygulamalar için veri sürekliliğini sağlar.
 
@@ -30,19 +28,16 @@ This feature enables quick deployment of hotfixes for critical issues, eliminati
 ## Acil Güncellemeler için Aşılama Kullanmak - Örnek Uygulamalar
 
 1. **Aşılama Olmadan Başlangıç Dağıtımı**
-
    - **Start Clean**: Always deploy your initial Subgraph without grafting to ensure that it’s stable and functions as expected.
    - **Test Thoroughly**: Validate the Subgraph’s performance to minimize the need for future hotfixes.
 
 2. **Aşılama ile Acil Güncelleme Yapmak**
-
    - **Sorunu Belirleme**: Kritik bir hata oluştuğunda, son başarılı endekslenmiş olayın blok numarasını belirleyin.
    - **Create a New Subgraph**: Develop a new Subgraph that includes the hotfix.
    - **Configure Grafting**: Use grafting to copy data up to the identified block number from the failed Subgraph.
    - **Deploy Quickly**: Publish the grafted Subgraph to restore service as soon as possible.
 
 3. **Acil Güncelleme Sonrasındaki Aksiyonlar**
-
    - **Monitor Performance**: Ensure the grafted Subgraph is indexing correctly and the hotfix resolves the issue.
    - **Republish Without Grafting**: Once stable, deploy a new version of the Subgraph without grafting for long-term maintenance.
      > Not: Aşılamaya süresiz olarak güvenmek önerilmez. Bu durum gelecekteki güncellemeleri ve bakımı karmaşık hale getirebilir.
@@ -130,7 +125,6 @@ Suppose you have a Subgraph tracking a smart contract that has stopped indexing
   - **block**: Aşılama işleminin başlaması gereken blok numarası.
 
 3. **Dağıtım Adımları**
-
    - **Kodu Güncelleyin**: eşleme kodlarınıza (örneğin, handleWithdrawal kısmına) acil güncelleme uygulayın.
    - **Manifestoyu Ayarlayın**: Yukarıda gösterildiği gibi, `subgraph.yaml` dosyasını aşılama yapılandırmalarıyla güncelleyin.
    - **Subgraph'i Dağıtın**:
diff --git a/website/src/pages/tr/subgraphs/developing/creating/install-the-cli.mdx b/website/src/pages/tr/subgraphs/developing/creating/install-the-cli.mdx
index 08c282f651d6..43c1b5b8d37d 100644
--- a/website/src/pages/tr/subgraphs/developing/creating/install-the-cli.mdx
+++ b/website/src/pages/tr/subgraphs/developing/creating/install-the-cli.mdx
@@ -46,7 +46,6 @@ graph init \
 ```
 
 - Bu komut, sözleşme ABI'sini Etherscan’den almaya çalışır.
-
   - Graph CLI, bir umumi RPC uç noktasına bağlıdır. Ara sıra başarısızlık beklenebilir, ancak genellikle yeniden denemeler sorunu çözer. Sorunlar devam ederse, yerel bir ABI kullanmayı düşünün.
 
 - İsteğe bağlı argümanlar eksikse, komut sizi bir etkileşimli forma yönlendirir.
@@ -87,7 +86,6 @@ Options:
 The `graph add` command will fetch the ABI from Etherscan (unless an ABI path is specified with the `--abi` option) and creates a new `dataSource`, similar to how the `graph init` command creates a `dataSource` `--from-contract`, updating the schema and mappings accordingly. This allows you to index implementation contracts from their proxy contracts.
 
 - The `--merge-entities` option identifies how the developer would like to handle `entity` and `event` name conflicts:
-
   - If `true`: the new `dataSource` should use existing `eventHandlers` & `entities`.
 
   - If `false`: a new `entity` & `event` handler should be created with `${dataSourceName}{EventName}`.
diff --git a/website/src/pages/tr/subgraphs/developing/managing/deleting-a-subgraph.mdx b/website/src/pages/tr/subgraphs/developing/managing/deleting-a-subgraph.mdx
index 23574d11eff3..190c6caf9547 100644
--- a/website/src/pages/tr/subgraphs/developing/managing/deleting-a-subgraph.mdx
+++ b/website/src/pages/tr/subgraphs/developing/managing/deleting-a-subgraph.mdx
@@ -17,7 +17,6 @@ Delete your Subgraph using [Subgraph Studio](https://thegraph.com/studio/).
    ![Delete-subgraph](/img/Delete-subgraph.png)
 
 4. Depending on the Subgraph's status, you will be prompted with various options.
-
    - If the Subgraph is not published, simply click “delete” and confirm.
    - If the Subgraph is published, you will need to confirm on your wallet before the Subgraph can be deleted from Studio. If a Subgraph is published to multiple networks, such as testnet and mainnet, additional steps may be required.
 
diff --git a/website/src/pages/tr/subgraphs/explorer.mdx b/website/src/pages/tr/subgraphs/explorer.mdx
index 95128bd87f9e..5000c65ceadd 100644
--- a/website/src/pages/tr/subgraphs/explorer.mdx
+++ b/website/src/pages/tr/subgraphs/explorer.mdx
@@ -26,7 +26,6 @@ Bir Subgraph'e tıkladığınızda aşağıdakileri yapabilirsiniz:
 
 - Oyun alanında (playground) sorguları test edin ve ağ detaylarından faydalanarak bilgili kararlar alın.
 - Kendi Subgraph'inize veya başkalarının Subgraph'lerine GRT sinyali göndererek Endeksleyicilere bunların önemini ve kalitesini bildirin.
-
   - Bu kritik bir öneme sahiptir çünkü bir Subgraph'e sinyal vermek, onun endekslenmesini teşvik eder. Bu da, sonunda ağ üzerinde ön plana çıkıp sorgulara hizmet verebileceği anlamına gelir.
 
 ![Gezgin Görüntüsü 2](/img/Subgraph-Details.png)
diff --git a/website/src/pages/tr/subgraphs/mcp/claude.mdx b/website/src/pages/tr/subgraphs/mcp/claude.mdx
index 8b61438d2ab7..027b272cb942 100644
--- a/website/src/pages/tr/subgraphs/mcp/claude.mdx
+++ b/website/src/pages/tr/subgraphs/mcp/claude.mdx
@@ -85,7 +85,6 @@ Once you've entered your Gateway API key into your settings, save the file and r
 2. **Find the Command Path**
 
    After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory.
-
    - Navigate to your `subgraph-mcp` directory in terminal
    - Run `pwd` to get the full path
    - Combine the output with `/target/release/subgraph-mcp`
diff --git a/website/src/pages/tr/subgraphs/quick-start.mdx b/website/src/pages/tr/subgraphs/quick-start.mdx
index f0687717220f..9eb62ae775d4 100644
--- a/website/src/pages/tr/subgraphs/quick-start.mdx
+++ b/website/src/pages/tr/subgraphs/quick-start.mdx
@@ -166,11 +166,9 @@ To customize your deployment, see [Publishing a Subgraph](/subgraphs/developing/
 #### Adding signal to your Subgraph
 
 1. To attract Indexers to query your Subgraph, you should add GRT curation signal to it.
-
    - This action improves quality of service, reduces latency, and enhances network redundancy and availability for your Subgraph.
 
 2. Endeksleme ödüllerine hak kazanan Endeksleyiciler sinyal miktarına bağlı olarak GRT ödülü alırlar.
-
    - It’s recommended to curate at least 3,000 GRT to attract 3 Indexers. Check reward eligibility based on Subgraph feature usage and supported networks.
 
 To learn more about curation, read [Curating](/resources/roles/curating/).
diff --git a/website/src/pages/uk/archived/arbitrum/arbitrum-faq.mdx b/website/src/pages/uk/archived/arbitrum/arbitrum-faq.mdx
index 8e6d1bd8d962..4438fb3ef5aa 100644
--- a/website/src/pages/uk/archived/arbitrum/arbitrum-faq.mdx
+++ b/website/src/pages/uk/archived/arbitrum/arbitrum-faq.mdx
@@ -25,7 +25,6 @@ The Graph’s billing system accepts GRT on Arbitrum, and users will need ETH on
 Consequently, to pay for queries, you need GRT on Arbitrum. Here are a few different ways to achieve this:
 
 - If you already have GRT on Ethereum, you can bridge it to Arbitrum. You can do this via the GRT bridging option provided in Subgraph Studio or by using one of the following bridges:
-
   - [The Arbitrum Bridge](https://bridge.arbitrum.io/?l2ChainId=42161)
   - [TransferTo](https://transferto.xyz/swap)
 
diff --git a/website/src/pages/uk/indexing/overview.mdx b/website/src/pages/uk/indexing/overview.mdx
index e2da100cbe73..bea439a53654 100644
--- a/website/src/pages/uk/indexing/overview.mdx
+++ b/website/src/pages/uk/indexing/overview.mdx
@@ -680,13 +680,11 @@ graph indexer actions execute approve
 Note that supported action types for allocation management have different input requirements:
 
 - `Allocate` - allocate stake to a specific Subgraph deployment
-
   - required action params:
     - deploymentID
     - amount
 
 - `Unallocate` - close allocation, freeing up the stake to reallocate elsewhere
-
   - required action params:
     - allocationID
     - deploymentID
@@ -695,7 +693,6 @@ Note that supported action types for allocation management have different input
     - force (forces using the provided POI even if it doesn’t match what the graph-node provides)
 
 - `Reallocate` - atomically close allocation and open a fresh allocation for the same Subgraph deployment
-
   - required action params:
     - allocationID
     - deploymentID
diff --git a/website/src/pages/uk/indexing/tap.mdx b/website/src/pages/uk/indexing/tap.mdx
index 477534d63201..e9667d498e0f 100644
--- a/website/src/pages/uk/indexing/tap.mdx
+++ b/website/src/pages/uk/indexing/tap.mdx
@@ -38,7 +38,6 @@ As long as you run `tap-agent` and `indexer-agent`, everything will be executed
 3. `indexer-agent` takes all the last RAVS and sends redeem requests to the blockchain, which will update the value of `redeem_at`.
 
 4. During the `<finality-time>` period, `indexer-agent` monitors if the blockchain has any reorganizations that revert the transaction.
-
    - If it was reverted, the RAV is resent to the blockchain. If it was not reverted, it gets marked as `final`.
 
 ## Blockchain Addresses
@@ -77,17 +76,14 @@ The required software version can be found [here](https://github.com/graphprotoc
 ### Steps
 
 1. **Indexer Agent**
-
    - Follow the [same process](https://github.com/graphprotocol/indexer/pkgs/container/indexer-agent#graph-protocol-indexer-components).
    - Give the new argument `--tap-subgraph-endpoint` to activate the new GraphTally codepaths and enable redeeming of RAVs.
 
 2. **Indexer Service**
-
    - Fully replace your current configuration with the [new Indexer Service rs](https://github.com/graphprotocol/indexer-rs). It's recommend that you use the [container image](https://github.com/orgs/graphprotocol/packages?repo_name=indexer-rs).
    - Like the older version, you can scale Indexer Service horizontally easily. It is still stateless.
 
 3. **TAP Agent**
-
    - Run _one_ single instance of [TAP Agent](https://github.com/graphprotocol/indexer-rs) at all times. It's recommend that you use the [container image](https://github.com/orgs/graphprotocol/packages?repo_name=indexer-rs).
 
 4. **Configure Indexer Service and TAP Agent**
diff --git a/website/src/pages/uk/resources/glossary.mdx b/website/src/pages/uk/resources/glossary.mdx
index ef7f1d9c23b9..4206c0f6622b 100644
--- a/website/src/pages/uk/resources/glossary.mdx
+++ b/website/src/pages/uk/resources/glossary.mdx
@@ -15,7 +15,6 @@ title: Глосарій
 - **Indexer**: Network participants that run indexing nodes to index data from blockchains and serve GraphQL queries.
 
 - **Indexer Revenue Streams**: Indexers are rewarded in GRT with two components: query fee rebates and indexing rewards.
-
   1. **Query Fee Rebates**: Payments from Subgraph consumers for serving queries on the network.
 
   2. **Indexing Rewards**: The rewards that Indexers receive for indexing Subgraphs. Indexing rewards are generated via new issuance of 3% GRT annually.
@@ -43,7 +42,6 @@ title: Глосарій
 - **Epoch**: A unit of time within the network. Currently, one epoch is 6,646 blocks or approximately 1 day.
 
 - **Allocation**: An Indexer can allocate their total GRT stake (including Delegators' stake) towards Subgraphs that have been published on The Graph's decentralized network. Allocations can have different statuses:
-
   1. **Active**: An allocation is considered active when it is created onchain. This is called opening an allocation, and indicates to the network that the Indexer is actively indexing and serving queries for a particular Subgraph. Active allocations accrue indexing rewards proportional to the signal on the Subgraph, and the amount of GRT allocated.
 
   2. **Closed**: An Indexer may claim the accrued indexing rewards on a given Subgraph by submitting a recent, and valid, Proof of Indexing (POI). This is known as closing an allocation. An allocation must have been open for a minimum of one epoch before it can be closed. The maximum allocation period is 28 epochs. If an Indexer leaves an allocation open beyond 28 epochs, it is known as a stale allocation. When an allocation is in the **Closed** state, a Fisherman can still open a dispute to challenge an Indexer for serving false data.
diff --git a/website/src/pages/uk/resources/roles/delegating/undelegating.mdx b/website/src/pages/uk/resources/roles/delegating/undelegating.mdx
index 8a22e8954fd9..5b98f68edbd7 100644
--- a/website/src/pages/uk/resources/roles/delegating/undelegating.mdx
+++ b/website/src/pages/uk/resources/roles/delegating/undelegating.mdx
@@ -13,13 +13,11 @@ Learn how to withdraw your delegated tokens through [Graph Explorer](https://the
 1. Visit [Graph Explorer](https://thegraph.com/explorer). Please make sure you're on Explorer and **not** Subgraph Studio.
 
 2. Click on your profile. You can find it on the top right corner of the page.
-
    - Make sure that your wallet is connected. If it's not connected, you will see the "connect" button instead.
 
 3. Once you're in your profile, click on the Delegating tab. In the Delegating tab, you can view the list of Indexers you have delegated to.
 
 4. Click on the Indexer from which you wish to withdraw your tokens.
-
    - Make sure to note the specific Indexer, as you will need to find them again to withdraw.
 
 5. Select the "Undelegate" option by clicking on the three dots next to the Indexer on the right side, see image below:
@@ -37,11 +35,9 @@ Learn how to withdraw your delegated tokens through [Graph Explorer](https://the
 ### Step-by-Step
 
 1. Find your delegation transaction on Arbiscan.
-
    - Here's an [example transaction on Arbiscan](https://arbiscan.io/tx/0xcf2110eac897099f821064445041031efb32786392bdbe7544a4cb7a6b2e4f9a)
 
 2. Navigate to "Transaction Action" where you can find the staking extension contract:
-
    - [This is the staking extension contract for the example listed above](https://arbiscan.io/address/0x00669A4CF01450B64E8A2A20E9b1FCB71E61eF03)
 
 3. Then click on "Contract". ![Contract tab on Arbiscan, between NFT Transfers and Events](/img/arbiscan-contract.png)
@@ -59,7 +55,6 @@ Learn how to withdraw your delegated tokens through [Graph Explorer](https://the
 9. If you don't know how many tokens you delegated, you can call `getDelegation` on the Read Custom tab. You will need to paste your address (delegator address) and the address of the Indexer that you delegated to, as shown in the following screenshot:
 
    ![Both of the addresses needed](/img/get-delegate.png)
-
    - This will return three numbers. The first number is the amount you can unstake.
 
 10. After you have called `unstake`, you can withdraw after approximately 28 epochs (28 days) by calling the `withdraw` function.
diff --git a/website/src/pages/uk/subgraphs/best-practices/grafting-hotfix.mdx b/website/src/pages/uk/subgraphs/best-practices/grafting-hotfix.mdx
index 91ec6dff40bc..9301610e3c1b 100644
--- a/website/src/pages/uk/subgraphs/best-practices/grafting-hotfix.mdx
+++ b/website/src/pages/uk/subgraphs/best-practices/grafting-hotfix.mdx
@@ -14,12 +14,10 @@ This feature enables quick deployment of hotfixes for critical issues, eliminati
 ## Benefits of Grafting for Hotfixes
 
 1. **Rapid Deployment**
-
    - **Minimize Downtime**: When a Subgraph encounters a critical error and stops indexing, grafting enables you to deploy a fix immediately without waiting for re-indexing.
    - **Immediate Recovery**: The new Subgraph continues from the last indexed block, ensuring that data services remain uninterrupted.
 
 2. **Data Preservation**
-
    - **Reuse Historical Data**: Grafting copies the existing data from the base Subgraph, so you don’t lose valuable historical records.
    - **Consistency**: Maintains data continuity, which is crucial for applications relying on consistent historical data.
 
@@ -30,19 +28,16 @@ This feature enables quick deployment of hotfixes for critical issues, eliminati
 ## Best Practices When Using Grafting for Hotfixes
 
 1. **Initial Deployment Without Grafting**
-
    - **Start Clean**: Always deploy your initial Subgraph without grafting to ensure that it’s stable and functions as expected.
    - **Test Thoroughly**: Validate the Subgraph’s performance to minimize the need for future hotfixes.
 
 2. **Implementing the Hotfix with Grafting**
-
    - **Identify the Issue**: When a critical error occurs, determine the block number of the last successfully indexed event.
    - **Create a New Subgraph**: Develop a new Subgraph that includes the hotfix.
    - **Configure Grafting**: Use grafting to copy data up to the identified block number from the failed Subgraph.
    - **Deploy Quickly**: Publish the grafted Subgraph to restore service as soon as possible.
 
 3. **Post-Hotfix Actions**
-
    - **Monitor Performance**: Ensure the grafted Subgraph is indexing correctly and the hotfix resolves the issue.
    - **Republish Without Grafting**: Once stable, deploy a new version of the Subgraph without grafting for long-term maintenance.
      > Note: Relying on grafting indefinitely is not recommended as it can complicate future updates and maintenance.
@@ -130,7 +125,6 @@ Suppose you have a Subgraph tracking a smart contract that has stopped indexing
   - **block**: Block number where grafting should begin.
 
 3. **Deployment Steps**
-
    - **Update the Code**: Implement the hotfix in your mapping scripts (e.g., handleWithdrawal).
    - **Adjust the Manifest**: As shown above, update the `subgraph.yaml` with grafting configurations.
    - **Deploy the Subgraph**:
diff --git a/website/src/pages/uk/subgraphs/developing/creating/install-the-cli.mdx b/website/src/pages/uk/subgraphs/developing/creating/install-the-cli.mdx
index cac462d8e960..16cd6a31140e 100644
--- a/website/src/pages/uk/subgraphs/developing/creating/install-the-cli.mdx
+++ b/website/src/pages/uk/subgraphs/developing/creating/install-the-cli.mdx
@@ -46,7 +46,6 @@ graph init \
 ```
 
 - The command tries to retrieve the contract ABI from Etherscan.
-
   - The Graph CLI relies on a public RPC endpoint. While occasional failures are expected, retries typically resolve this issue. If failures persist, consider using a local ABI.
 
 - If any of the optional arguments are missing, it guides you through an interactive form.
@@ -87,7 +86,6 @@ Options:
 The `graph add` command will fetch the ABI from Etherscan (unless an ABI path is specified with the `--abi` option) and creates a new `dataSource`, similar to how the `graph init` command creates a `dataSource` `--from-contract`, updating the schema and mappings accordingly. This allows you to index implementation contracts from their proxy contracts.
 
 - The `--merge-entities` option identifies how the developer would like to handle `entity` and `event` name conflicts:
-
   - If `true`: the new `dataSource` should use existing `eventHandlers` & `entities`.
 
   - If `false`: a new `entity` & `event` handler should be created with `${dataSourceName}{EventName}`.
diff --git a/website/src/pages/uk/subgraphs/developing/managing/deleting-a-subgraph.mdx b/website/src/pages/uk/subgraphs/developing/managing/deleting-a-subgraph.mdx
index b8c2330ca49d..f842a0e04ac4 100644
--- a/website/src/pages/uk/subgraphs/developing/managing/deleting-a-subgraph.mdx
+++ b/website/src/pages/uk/subgraphs/developing/managing/deleting-a-subgraph.mdx
@@ -17,7 +17,6 @@ Delete your Subgraph using [Subgraph Studio](https://thegraph.com/studio/).
    ![Delete-subgraph](/img/Delete-subgraph.png)
 
 4. Depending on the Subgraph's status, you will be prompted with various options.
-
    - If the Subgraph is not published, simply click “delete” and confirm.
    - If the Subgraph is published, you will need to confirm on your wallet before the Subgraph can be deleted from Studio. If a Subgraph is published to multiple networks, such as testnet and mainnet, additional steps may be required.
 
diff --git a/website/src/pages/uk/subgraphs/explorer.mdx b/website/src/pages/uk/subgraphs/explorer.mdx
index fd1259ea78b1..8830ad6c050c 100644
--- a/website/src/pages/uk/subgraphs/explorer.mdx
+++ b/website/src/pages/uk/subgraphs/explorer.mdx
@@ -26,7 +26,6 @@ When you click into a Subgraph, you will be able to do the following:
 
 - Test queries in the playground and be able to leverage network details to make informed decisions.
 - Signal GRT on your own Subgraph or the Subgraphs of others to make indexers aware of its importance and quality.
-
   - This is critical because signaling on a Subgraph incentivizes it to be indexed, meaning it’ll eventually surface on the network to serve queries.
 
 ![Explorer Image 2](/img/Subgraph-Details.png)
diff --git a/website/src/pages/uk/subgraphs/mcp/claude.mdx b/website/src/pages/uk/subgraphs/mcp/claude.mdx
index 8b61438d2ab7..027b272cb942 100644
--- a/website/src/pages/uk/subgraphs/mcp/claude.mdx
+++ b/website/src/pages/uk/subgraphs/mcp/claude.mdx
@@ -85,7 +85,6 @@ Once you've entered your Gateway API key into your settings, save the file and r
 2. **Find the Command Path**
 
    After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory.
-
    - Navigate to your `subgraph-mcp` directory in terminal
    - Run `pwd` to get the full path
    - Combine the output with `/target/release/subgraph-mcp`
diff --git a/website/src/pages/uk/subgraphs/quick-start.mdx b/website/src/pages/uk/subgraphs/quick-start.mdx
index 8ed3c12ffaa9..59d859d67588 100644
--- a/website/src/pages/uk/subgraphs/quick-start.mdx
+++ b/website/src/pages/uk/subgraphs/quick-start.mdx
@@ -166,11 +166,9 @@ To customize your deployment, see [Publishing a Subgraph](/subgraphs/developing/
 #### Adding signal to your Subgraph
 
 1. To attract Indexers to query your Subgraph, you should add GRT curation signal to it.
-
    - This action improves quality of service, reduces latency, and enhances network redundancy and availability for your Subgraph.
 
 2. If eligible for indexing rewards, Indexers receive GRT rewards based on the signaled amount.
-
    - It’s recommended to curate at least 3,000 GRT to attract 3 Indexers. Check reward eligibility based on Subgraph feature usage and supported networks.
 
 To learn more about curation, read [Curating](/resources/roles/curating/).
diff --git a/website/src/pages/ur/archived/arbitrum/arbitrum-faq.mdx b/website/src/pages/ur/archived/arbitrum/arbitrum-faq.mdx
index 1483cf6b2a4e..7bf006a09a39 100644
--- a/website/src/pages/ur/archived/arbitrum/arbitrum-faq.mdx
+++ b/website/src/pages/ur/archived/arbitrum/arbitrum-faq.mdx
@@ -25,7 +25,6 @@ The Graph’s billing system accepts GRT on Arbitrum, and users will need ETH on
 Consequently, to pay for queries, you need GRT on Arbitrum. Here are a few different ways to achieve this:
 
 - If you already have GRT on Ethereum, you can bridge it to Arbitrum. You can do this via the GRT bridging option provided in Subgraph Studio or by using one of the following bridges:
-
   - [The Arbitrum Bridge](https://bridge.arbitrum.io/?l2ChainId=42161)
   - [TransferTo](https://transferto.xyz/swap)
 
diff --git a/website/src/pages/ur/indexing/overview.mdx b/website/src/pages/ur/indexing/overview.mdx
index 22bc108de688..4198190b1254 100644
--- a/website/src/pages/ur/indexing/overview.mdx
+++ b/website/src/pages/ur/indexing/overview.mdx
@@ -680,13 +680,11 @@ graph indexer actions execute approve
 Note that supported action types for allocation management have different input requirements:
 
 - `Allocate` - allocate stake to a specific Subgraph deployment
-
   - required action params:
     - deploymentID
     - amount
 
 - `Unallocate` - close allocation, freeing up the stake to reallocate elsewhere
-
   - required action params:
     - allocationID
     - deploymentID
@@ -695,7 +693,6 @@ Note that supported action types for allocation management have different input
     - force (forces using the provided POI even if it doesn’t match what the graph-node provides)
 
 - `Reallocate` - atomically close allocation and open a fresh allocation for the same Subgraph deployment
-
   - required action params:
     - allocationID
     - deploymentID
diff --git a/website/src/pages/ur/indexing/tap.mdx b/website/src/pages/ur/indexing/tap.mdx
index b7347fb63141..64ebd5b363f7 100644
--- a/website/src/pages/ur/indexing/tap.mdx
+++ b/website/src/pages/ur/indexing/tap.mdx
@@ -38,7 +38,6 @@ As long as you run `tap-agent` and `indexer-agent`, everything will be executed
 3. `indexer-agent` takes all the last RAVS and sends redeem requests to the blockchain, which will update the value of `redeem_at`.
 
 4. During the `<finality-time>` period, `indexer-agent` monitors if the blockchain has any reorganizations that revert the transaction.
-
    - If it was reverted, the RAV is resent to the blockchain. If it was not reverted, it gets marked as `final`.
 
 ## Blockchain Addresses
@@ -77,17 +76,14 @@ The required software version can be found [here](https://github.com/graphprotoc
 ### Steps
 
 1. **Indexer Agent**
-
    - Follow the [same process](https://github.com/graphprotocol/indexer/pkgs/container/indexer-agent#graph-protocol-indexer-components).
    - Give the new argument `--tap-subgraph-endpoint` to activate the new GraphTally codepaths and enable redeeming of RAVs.
 
 2. **Indexer Service**
-
    - Fully replace your current configuration with the [new Indexer Service rs](https://github.com/graphprotocol/indexer-rs). It's recommend that you use the [container image](https://github.com/orgs/graphprotocol/packages?repo_name=indexer-rs).
    - Like the older version, you can scale Indexer Service horizontally easily. It is still stateless.
 
 3. **TAP Agent**
-
    - Run _one_ single instance of [TAP Agent](https://github.com/graphprotocol/indexer-rs) at all times. It's recommend that you use the [container image](https://github.com/orgs/graphprotocol/packages?repo_name=indexer-rs).
 
 4. **Configure Indexer Service and TAP Agent**
diff --git a/website/src/pages/ur/resources/glossary.mdx b/website/src/pages/ur/resources/glossary.mdx
index 8b3d3ba9814c..9fdca06e33ed 100644
--- a/website/src/pages/ur/resources/glossary.mdx
+++ b/website/src/pages/ur/resources/glossary.mdx
@@ -15,7 +15,6 @@ title: لغت
 - **Indexer**: Network participants that run indexing nodes to index data from blockchains and serve GraphQL queries.
 
 - **Indexer Revenue Streams**: Indexers are rewarded in GRT with two components: query fee rebates and indexing rewards.
-
   1. **Query Fee Rebates**: Payments from Subgraph consumers for serving queries on the network.
 
   2. **Indexing Rewards**: The rewards that Indexers receive for indexing Subgraphs. Indexing rewards are generated via new issuance of 3% GRT annually.
@@ -43,7 +42,6 @@ title: لغت
 - **Epoch**: A unit of time within the network. Currently, one epoch is 6,646 blocks or approximately 1 day.
 
 - **Allocation**: An Indexer can allocate their total GRT stake (including Delegators' stake) towards Subgraphs that have been published on The Graph's decentralized network. Allocations can have different statuses:
-
   1. **Active**: An allocation is considered active when it is created onchain. This is called opening an allocation, and indicates to the network that the Indexer is actively indexing and serving queries for a particular Subgraph. Active allocations accrue indexing rewards proportional to the signal on the Subgraph, and the amount of GRT allocated.
 
   2. **Closed**: An Indexer may claim the accrued indexing rewards on a given Subgraph by submitting a recent, and valid, Proof of Indexing (POI). This is known as closing an allocation. An allocation must have been open for a minimum of one epoch before it can be closed. The maximum allocation period is 28 epochs. If an Indexer leaves an allocation open beyond 28 epochs, it is known as a stale allocation. When an allocation is in the **Closed** state, a Fisherman can still open a dispute to challenge an Indexer for serving false data.
diff --git a/website/src/pages/ur/resources/roles/delegating/undelegating.mdx b/website/src/pages/ur/resources/roles/delegating/undelegating.mdx
index 598eb5897993..15d2cad2162f 100644
--- a/website/src/pages/ur/resources/roles/delegating/undelegating.mdx
+++ b/website/src/pages/ur/resources/roles/delegating/undelegating.mdx
@@ -13,13 +13,11 @@ Learn how to withdraw your delegated tokens through [Graph Explorer](https://the
 1. Visit [Graph Explorer](https://thegraph.com/explorer). Please make sure you're on Explorer and **not** Subgraph Studio.
 
 2. Click on your profile. You can find it on the top right corner of the page.
-
    - Make sure that your wallet is connected. If it's not connected, you will see the "connect" button instead.
 
 3. Once you're in your profile, click on the Delegating tab. In the Delegating tab, you can view the list of Indexers you have delegated to.
 
 4. Click on the Indexer from which you wish to withdraw your tokens.
-
    - Make sure to note the specific Indexer, as you will need to find them again to withdraw.
 
 5. Select the "Undelegate" option by clicking on the three dots next to the Indexer on the right side, see image below:
@@ -37,11 +35,9 @@ Learn how to withdraw your delegated tokens through [Graph Explorer](https://the
 ### Step-by-Step
 
 1. Find your delegation transaction on Arbiscan.
-
    - Here's an [example transaction on Arbiscan](https://arbiscan.io/tx/0xcf2110eac897099f821064445041031efb32786392bdbe7544a4cb7a6b2e4f9a)
 
 2. Navigate to "Transaction Action" where you can find the staking extension contract:
-
    - [This is the staking extension contract for the example listed above](https://arbiscan.io/address/0x00669A4CF01450B64E8A2A20E9b1FCB71E61eF03)
 
 3. Then click on "Contract". ![Contract tab on Arbiscan, between NFT Transfers and Events](/img/arbiscan-contract.png)
@@ -59,7 +55,6 @@ Learn how to withdraw your delegated tokens through [Graph Explorer](https://the
 9. If you don't know how many tokens you delegated, you can call `getDelegation` on the Read Custom tab. You will need to paste your address (delegator address) and the address of the Indexer that you delegated to, as shown in the following screenshot:
 
    ![Both of the addresses needed](/img/get-delegate.png)
-
    - This will return three numbers. The first number is the amount you can unstake.
 
 10. After you have called `unstake`, you can withdraw after approximately 28 epochs (28 days) by calling the `withdraw` function.
diff --git a/website/src/pages/ur/subgraphs/best-practices/grafting-hotfix.mdx b/website/src/pages/ur/subgraphs/best-practices/grafting-hotfix.mdx
index 89b675d3acab..256c64ca0b44 100644
--- a/website/src/pages/ur/subgraphs/best-practices/grafting-hotfix.mdx
+++ b/website/src/pages/ur/subgraphs/best-practices/grafting-hotfix.mdx
@@ -14,12 +14,10 @@ This feature enables quick deployment of hotfixes for critical issues, eliminati
 ## Benefits of Grafting for Hotfixes
 
 1. **Rapid Deployment**
-
    - **Minimize Downtime**: When a Subgraph encounters a critical error and stops indexing, grafting enables you to deploy a fix immediately without waiting for re-indexing.
    - **Immediate Recovery**: The new Subgraph continues from the last indexed block, ensuring that data services remain uninterrupted.
 
 2. **Data Preservation**
-
    - **Reuse Historical Data**: Grafting copies the existing data from the base Subgraph, so you don’t lose valuable historical records.
    - **Consistency**: Maintains data continuity, which is crucial for applications relying on consistent historical data.
 
@@ -30,19 +28,16 @@ This feature enables quick deployment of hotfixes for critical issues, eliminati
 ## Best Practices When Using Grafting for Hotfixes
 
 1. **Initial Deployment Without Grafting**
-
    - **Start Clean**: Always deploy your initial Subgraph without grafting to ensure that it’s stable and functions as expected.
    - **Test Thoroughly**: Validate the Subgraph’s performance to minimize the need for future hotfixes.
 
 2. **Implementing the Hotfix with Grafting**
-
    - **Identify the Issue**: When a critical error occurs, determine the block number of the last successfully indexed event.
    - **Create a New Subgraph**: Develop a new Subgraph that includes the hotfix.
    - **Configure Grafting**: Use grafting to copy data up to the identified block number from the failed Subgraph.
    - **Deploy Quickly**: Publish the grafted Subgraph to restore service as soon as possible.
 
 3. **Post-Hotfix Actions**
-
    - **Monitor Performance**: Ensure the grafted Subgraph is indexing correctly and the hotfix resolves the issue.
    - **Republish Without Grafting**: Once stable, deploy a new version of the Subgraph without grafting for long-term maintenance.
      > Note: Relying on grafting indefinitely is not recommended as it can complicate future updates and maintenance.
@@ -130,7 +125,6 @@ Suppose you have a Subgraph tracking a smart contract that has stopped indexing
   - **block**: Block number where grafting should begin.
 
 3. **Deployment Steps**
-
    - **Update the Code**: Implement the hotfix in your mapping scripts (e.g., handleWithdrawal).
    - **Adjust the Manifest**: As shown above, update the `subgraph.yaml` with grafting configurations.
    - **Deploy the Subgraph**:
diff --git a/website/src/pages/ur/subgraphs/developing/creating/install-the-cli.mdx b/website/src/pages/ur/subgraphs/developing/creating/install-the-cli.mdx
index fc2b95935dc4..6537ad2f6194 100644
--- a/website/src/pages/ur/subgraphs/developing/creating/install-the-cli.mdx
+++ b/website/src/pages/ur/subgraphs/developing/creating/install-the-cli.mdx
@@ -46,7 +46,6 @@ graph init \
 ```
 
 - The command tries to retrieve the contract ABI from Etherscan.
-
   - The Graph CLI relies on a public RPC endpoint. While occasional failures are expected, retries typically resolve this issue. If failures persist, consider using a local ABI.
 
 - If any of the optional arguments are missing, it guides you through an interactive form.
@@ -87,7 +86,6 @@ Options:
 The `graph add` command will fetch the ABI from Etherscan (unless an ABI path is specified with the `--abi` option) and creates a new `dataSource`, similar to how the `graph init` command creates a `dataSource` `--from-contract`, updating the schema and mappings accordingly. This allows you to index implementation contracts from their proxy contracts.
 
 - The `--merge-entities` option identifies how the developer would like to handle `entity` and `event` name conflicts:
-
   - If `true`: the new `dataSource` should use existing `eventHandlers` & `entities`.
 
   - If `false`: a new `entity` & `event` handler should be created with `${dataSourceName}{EventName}`.
diff --git a/website/src/pages/ur/subgraphs/developing/managing/deleting-a-subgraph.mdx b/website/src/pages/ur/subgraphs/developing/managing/deleting-a-subgraph.mdx
index b8c2330ca49d..f842a0e04ac4 100644
--- a/website/src/pages/ur/subgraphs/developing/managing/deleting-a-subgraph.mdx
+++ b/website/src/pages/ur/subgraphs/developing/managing/deleting-a-subgraph.mdx
@@ -17,7 +17,6 @@ Delete your Subgraph using [Subgraph Studio](https://thegraph.com/studio/).
    ![Delete-subgraph](/img/Delete-subgraph.png)
 
 4. Depending on the Subgraph's status, you will be prompted with various options.
-
    - If the Subgraph is not published, simply click “delete” and confirm.
    - If the Subgraph is published, you will need to confirm on your wallet before the Subgraph can be deleted from Studio. If a Subgraph is published to multiple networks, such as testnet and mainnet, additional steps may be required.
 
diff --git a/website/src/pages/ur/subgraphs/explorer.mdx b/website/src/pages/ur/subgraphs/explorer.mdx
index 6074ff5c5b2f..3b5719a70b1c 100644
--- a/website/src/pages/ur/subgraphs/explorer.mdx
+++ b/website/src/pages/ur/subgraphs/explorer.mdx
@@ -26,7 +26,6 @@ When you click into a Subgraph, you will be able to do the following:
 
 - Test queries in the playground and be able to leverage network details to make informed decisions.
 - Signal GRT on your own Subgraph or the Subgraphs of others to make indexers aware of its importance and quality.
-
   - This is critical because signaling on a Subgraph incentivizes it to be indexed, meaning it’ll eventually surface on the network to serve queries.
 
 ![Explorer Image 2](/img/Subgraph-Details.png)
diff --git a/website/src/pages/ur/subgraphs/mcp/claude.mdx b/website/src/pages/ur/subgraphs/mcp/claude.mdx
index 8b61438d2ab7..027b272cb942 100644
--- a/website/src/pages/ur/subgraphs/mcp/claude.mdx
+++ b/website/src/pages/ur/subgraphs/mcp/claude.mdx
@@ -85,7 +85,6 @@ Once you've entered your Gateway API key into your settings, save the file and r
 2. **Find the Command Path**
 
    After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory.
-
    - Navigate to your `subgraph-mcp` directory in terminal
    - Run `pwd` to get the full path
    - Combine the output with `/target/release/subgraph-mcp`
diff --git a/website/src/pages/ur/subgraphs/quick-start.mdx b/website/src/pages/ur/subgraphs/quick-start.mdx
index 280a19a8a3d9..4c34d481913d 100644
--- a/website/src/pages/ur/subgraphs/quick-start.mdx
+++ b/website/src/pages/ur/subgraphs/quick-start.mdx
@@ -166,11 +166,9 @@ To customize your deployment, see [Publishing a Subgraph](/subgraphs/developing/
 #### Adding signal to your Subgraph
 
 1. To attract Indexers to query your Subgraph, you should add GRT curation signal to it.
-
    - This action improves quality of service, reduces latency, and enhances network redundancy and availability for your Subgraph.
 
 2. If eligible for indexing rewards, Indexers receive GRT rewards based on the signaled amount.
-
    - It’s recommended to curate at least 3,000 GRT to attract 3 Indexers. Check reward eligibility based on Subgraph feature usage and supported networks.
 
 To learn more about curation, read [Curating](/resources/roles/curating/).
diff --git a/website/src/pages/vi/archived/arbitrum/arbitrum-faq.mdx b/website/src/pages/vi/archived/arbitrum/arbitrum-faq.mdx
index d121f5a2d0f3..270a5f547a74 100644
--- a/website/src/pages/vi/archived/arbitrum/arbitrum-faq.mdx
+++ b/website/src/pages/vi/archived/arbitrum/arbitrum-faq.mdx
@@ -25,7 +25,6 @@ The Graph’s billing system accepts GRT on Arbitrum, and users will need ETH on
 Consequently, to pay for queries, you need GRT on Arbitrum. Here are a few different ways to achieve this:
 
 - If you already have GRT on Ethereum, you can bridge it to Arbitrum. You can do this via the GRT bridging option provided in Subgraph Studio or by using one of the following bridges:
-
   - [The Arbitrum Bridge](https://bridge.arbitrum.io/?l2ChainId=42161)
   - [TransferTo](https://transferto.xyz/swap)
 
diff --git a/website/src/pages/vi/indexing/overview.mdx b/website/src/pages/vi/indexing/overview.mdx
index 88daf48cff6d..c8572a2cd18d 100644
--- a/website/src/pages/vi/indexing/overview.mdx
+++ b/website/src/pages/vi/indexing/overview.mdx
@@ -680,13 +680,11 @@ graph indexer actions execute approve
 Note that supported action types for allocation management have different input requirements:
 
 - `Allocate` - allocate stake to a specific Subgraph deployment
-
   - required action params:
     - deploymentID
     - amount
 
 - `Unallocate` - close allocation, freeing up the stake to reallocate elsewhere
-
   - required action params:
     - allocationID
     - deploymentID
@@ -695,7 +693,6 @@ Note that supported action types for allocation management have different input
     - force (forces using the provided POI even if it doesn’t match what the graph-node provides)
 
 - `Reallocate` - atomically close allocation and open a fresh allocation for the same Subgraph deployment
-
   - required action params:
     - allocationID
     - deploymentID
diff --git a/website/src/pages/vi/indexing/tap.mdx b/website/src/pages/vi/indexing/tap.mdx
index a754e67819a3..59f33b3e9ac4 100644
--- a/website/src/pages/vi/indexing/tap.mdx
+++ b/website/src/pages/vi/indexing/tap.mdx
@@ -38,7 +38,6 @@ As long as you run `tap-agent` and `indexer-agent`, everything will be executed
 3. `indexer-agent` takes all the last RAVS and sends redeem requests to the blockchain, which will update the value of `redeem_at`.
 
 4. During the `<finality-time>` period, `indexer-agent` monitors if the blockchain has any reorganizations that revert the transaction.
-
    - If it was reverted, the RAV is resent to the blockchain. If it was not reverted, it gets marked as `final`.
 
 ## Blockchain Addresses
@@ -77,17 +76,14 @@ The required software version can be found [here](https://github.com/graphprotoc
 ### Steps
 
 1. **Indexer Agent**
-
    - Follow the [same process](https://github.com/graphprotocol/indexer/pkgs/container/indexer-agent#graph-protocol-indexer-components).
    - Give the new argument `--tap-subgraph-endpoint` to activate the new GraphTally codepaths and enable redeeming of RAVs.
 
 2. **Indexer Service**
-
    - Fully replace your current configuration with the [new Indexer Service rs](https://github.com/graphprotocol/indexer-rs). It's recommend that you use the [container image](https://github.com/orgs/graphprotocol/packages?repo_name=indexer-rs).
    - Like the older version, you can scale Indexer Service horizontally easily. It is still stateless.
 
 3. **TAP Agent**
-
    - Run _one_ single instance of [TAP Agent](https://github.com/graphprotocol/indexer-rs) at all times. It's recommend that you use the [container image](https://github.com/orgs/graphprotocol/packages?repo_name=indexer-rs).
 
 4. **Configure Indexer Service and TAP Agent**
diff --git a/website/src/pages/vi/resources/glossary.mdx b/website/src/pages/vi/resources/glossary.mdx
index 4c5ad55cd0d3..31402db1084a 100644
--- a/website/src/pages/vi/resources/glossary.mdx
+++ b/website/src/pages/vi/resources/glossary.mdx
@@ -15,7 +15,6 @@ title: Glossary
 - **Indexer**: Network participants that run indexing nodes to index data from blockchains and serve GraphQL queries.
 
 - **Indexer Revenue Streams**: Indexers are rewarded in GRT with two components: query fee rebates and indexing rewards.
-
   1. **Query Fee Rebates**: Payments from Subgraph consumers for serving queries on the network.
 
   2. **Indexing Rewards**: The rewards that Indexers receive for indexing Subgraphs. Indexing rewards are generated via new issuance of 3% GRT annually.
@@ -43,7 +42,6 @@ title: Glossary
 - **Epoch**: A unit of time within the network. Currently, one epoch is 6,646 blocks or approximately 1 day.
 
 - **Allocation**: An Indexer can allocate their total GRT stake (including Delegators' stake) towards Subgraphs that have been published on The Graph's decentralized network. Allocations can have different statuses:
-
   1. **Active**: An allocation is considered active when it is created onchain. This is called opening an allocation, and indicates to the network that the Indexer is actively indexing and serving queries for a particular Subgraph. Active allocations accrue indexing rewards proportional to the signal on the Subgraph, and the amount of GRT allocated.
 
   2. **Closed**: An Indexer may claim the accrued indexing rewards on a given Subgraph by submitting a recent, and valid, Proof of Indexing (POI). This is known as closing an allocation. An allocation must have been open for a minimum of one epoch before it can be closed. The maximum allocation period is 28 epochs. If an Indexer leaves an allocation open beyond 28 epochs, it is known as a stale allocation. When an allocation is in the **Closed** state, a Fisherman can still open a dispute to challenge an Indexer for serving false data.
diff --git a/website/src/pages/vi/resources/roles/delegating/undelegating.mdx b/website/src/pages/vi/resources/roles/delegating/undelegating.mdx
index c3e31e653941..9c10e47eb771 100644
--- a/website/src/pages/vi/resources/roles/delegating/undelegating.mdx
+++ b/website/src/pages/vi/resources/roles/delegating/undelegating.mdx
@@ -13,13 +13,11 @@ Learn how to withdraw your delegated tokens through [Graph Explorer](https://the
 1. Visit [Graph Explorer](https://thegraph.com/explorer). Please make sure you're on Explorer and **not** Subgraph Studio.
 
 2. Click on your profile. You can find it on the top right corner of the page.
-
    - Make sure that your wallet is connected. If it's not connected, you will see the "connect" button instead.
 
 3. Once you're in your profile, click on the Delegating tab. In the Delegating tab, you can view the list of Indexers you have delegated to.
 
 4. Click on the Indexer from which you wish to withdraw your tokens.
-
    - Make sure to note the specific Indexer, as you will need to find them again to withdraw.
 
 5. Select the "Undelegate" option by clicking on the three dots next to the Indexer on the right side, see image below:
@@ -37,11 +35,9 @@ Learn how to withdraw your delegated tokens through [Graph Explorer](https://the
 ### Step-by-Step
 
 1. Find your delegation transaction on Arbiscan.
-
    - Here's an [example transaction on Arbiscan](https://arbiscan.io/tx/0xcf2110eac897099f821064445041031efb32786392bdbe7544a4cb7a6b2e4f9a)
 
 2. Navigate to "Transaction Action" where you can find the staking extension contract:
-
    - [This is the staking extension contract for the example listed above](https://arbiscan.io/address/0x00669A4CF01450B64E8A2A20E9b1FCB71E61eF03)
 
 3. Then click on "Contract". ![Contract tab on Arbiscan, between NFT Transfers and Events](/img/arbiscan-contract.png)
@@ -59,7 +55,6 @@ Learn how to withdraw your delegated tokens through [Graph Explorer](https://the
 9. If you don't know how many tokens you delegated, you can call `getDelegation` on the Read Custom tab. You will need to paste your address (delegator address) and the address of the Indexer that you delegated to, as shown in the following screenshot:
 
    ![Both of the addresses needed](/img/get-delegate.png)
-
    - This will return three numbers. The first number is the amount you can unstake.
 
 10. After you have called `unstake`, you can withdraw after approximately 28 epochs (28 days) by calling the `withdraw` function.
diff --git a/website/src/pages/vi/subgraphs/best-practices/grafting-hotfix.mdx b/website/src/pages/vi/subgraphs/best-practices/grafting-hotfix.mdx
index 79ac8203aaef..4aa69ac21d97 100644
--- a/website/src/pages/vi/subgraphs/best-practices/grafting-hotfix.mdx
+++ b/website/src/pages/vi/subgraphs/best-practices/grafting-hotfix.mdx
@@ -14,12 +14,10 @@ This feature enables quick deployment of hotfixes for critical issues, eliminati
 ## Benefits of Grafting for Hotfixes
 
 1. **Rapid Deployment**
-
    - **Minimize Downtime**: When a Subgraph encounters a critical error and stops indexing, grafting enables you to deploy a fix immediately without waiting for re-indexing.
    - **Immediate Recovery**: The new Subgraph continues from the last indexed block, ensuring that data services remain uninterrupted.
 
 2. **Data Preservation**
-
    - **Reuse Historical Data**: Grafting copies the existing data from the base Subgraph, so you don’t lose valuable historical records.
    - **Consistency**: Maintains data continuity, which is crucial for applications relying on consistent historical data.
 
@@ -30,19 +28,16 @@ This feature enables quick deployment of hotfixes for critical issues, eliminati
 ## Best Practices When Using Grafting for Hotfixes
 
 1. **Initial Deployment Without Grafting**
-
    - **Start Clean**: Always deploy your initial Subgraph without grafting to ensure that it’s stable and functions as expected.
    - **Test Thoroughly**: Validate the Subgraph’s performance to minimize the need for future hotfixes.
 
 2. **Implementing the Hotfix with Grafting**
-
    - **Identify the Issue**: When a critical error occurs, determine the block number of the last successfully indexed event.
    - **Create a New Subgraph**: Develop a new Subgraph that includes the hotfix.
    - **Configure Grafting**: Use grafting to copy data up to the identified block number from the failed Subgraph.
    - **Deploy Quickly**: Publish the grafted Subgraph to restore service as soon as possible.
 
 3. **Post-Hotfix Actions**
-
    - **Monitor Performance**: Ensure the grafted Subgraph is indexing correctly and the hotfix resolves the issue.
    - **Republish Without Grafting**: Once stable, deploy a new version of the Subgraph without grafting for long-term maintenance.
      > Note: Relying on grafting indefinitely is not recommended as it can complicate future updates and maintenance.
@@ -130,7 +125,6 @@ Suppose you have a Subgraph tracking a smart contract that has stopped indexing
   - **block**: Block number where grafting should begin.
 
 3. **Deployment Steps**
-
    - **Update the Code**: Implement the hotfix in your mapping scripts (e.g., handleWithdrawal).
    - **Adjust the Manifest**: As shown above, update the `subgraph.yaml` with grafting configurations.
    - **Deploy the Subgraph**:
diff --git a/website/src/pages/vi/subgraphs/developing/creating/install-the-cli.mdx b/website/src/pages/vi/subgraphs/developing/creating/install-the-cli.mdx
index f9573b198f89..ad530b365515 100644
--- a/website/src/pages/vi/subgraphs/developing/creating/install-the-cli.mdx
+++ b/website/src/pages/vi/subgraphs/developing/creating/install-the-cli.mdx
@@ -46,7 +46,6 @@ graph init \
 ```
 
 - The command tries to retrieve the contract ABI from Etherscan.
-
   - The Graph CLI relies on a public RPC endpoint. While occasional failures are expected, retries typically resolve this issue. If failures persist, consider using a local ABI.
 
 - If any of the optional arguments are missing, it guides you through an interactive form.
@@ -87,7 +86,6 @@ Options:
 The `graph add` command will fetch the ABI from Etherscan (unless an ABI path is specified with the `--abi` option) and creates a new `dataSource`, similar to how the `graph init` command creates a `dataSource` `--from-contract`, updating the schema and mappings accordingly. This allows you to index implementation contracts from their proxy contracts.
 
 - The `--merge-entities` option identifies how the developer would like to handle `entity` and `event` name conflicts:
-
   - If `true`: the new `dataSource` should use existing `eventHandlers` & `entities`.
 
   - If `false`: a new `entity` & `event` handler should be created with `${dataSourceName}{EventName}`.
diff --git a/website/src/pages/vi/subgraphs/developing/managing/deleting-a-subgraph.mdx b/website/src/pages/vi/subgraphs/developing/managing/deleting-a-subgraph.mdx
index b8c2330ca49d..f842a0e04ac4 100644
--- a/website/src/pages/vi/subgraphs/developing/managing/deleting-a-subgraph.mdx
+++ b/website/src/pages/vi/subgraphs/developing/managing/deleting-a-subgraph.mdx
@@ -17,7 +17,6 @@ Delete your Subgraph using [Subgraph Studio](https://thegraph.com/studio/).
    ![Delete-subgraph](/img/Delete-subgraph.png)
 
 4. Depending on the Subgraph's status, you will be prompted with various options.
-
    - If the Subgraph is not published, simply click “delete” and confirm.
    - If the Subgraph is published, you will need to confirm on your wallet before the Subgraph can be deleted from Studio. If a Subgraph is published to multiple networks, such as testnet and mainnet, additional steps may be required.
 
diff --git a/website/src/pages/vi/subgraphs/explorer.mdx b/website/src/pages/vi/subgraphs/explorer.mdx
index 2a5747208705..fd125d66526f 100644
--- a/website/src/pages/vi/subgraphs/explorer.mdx
+++ b/website/src/pages/vi/subgraphs/explorer.mdx
@@ -26,7 +26,6 @@ When you click into a Subgraph, you will be able to do the following:
 
 - Test queries in the playground and be able to leverage network details to make informed decisions.
 - Signal GRT on your own Subgraph or the Subgraphs of others to make indexers aware of its importance and quality.
-
   - This is critical because signaling on a Subgraph incentivizes it to be indexed, meaning it’ll eventually surface on the network to serve queries.
 
 ![Explorer Image 2](/img/Subgraph-Details.png)
diff --git a/website/src/pages/vi/subgraphs/mcp/claude.mdx b/website/src/pages/vi/subgraphs/mcp/claude.mdx
index 8b61438d2ab7..027b272cb942 100644
--- a/website/src/pages/vi/subgraphs/mcp/claude.mdx
+++ b/website/src/pages/vi/subgraphs/mcp/claude.mdx
@@ -85,7 +85,6 @@ Once you've entered your Gateway API key into your settings, save the file and r
 2. **Find the Command Path**
 
    After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory.
-
    - Navigate to your `subgraph-mcp` directory in terminal
    - Run `pwd` to get the full path
    - Combine the output with `/target/release/subgraph-mcp`
diff --git a/website/src/pages/vi/subgraphs/quick-start.mdx b/website/src/pages/vi/subgraphs/quick-start.mdx
index 0af59e0b4c46..c09444859562 100644
--- a/website/src/pages/vi/subgraphs/quick-start.mdx
+++ b/website/src/pages/vi/subgraphs/quick-start.mdx
@@ -166,11 +166,9 @@ To customize your deployment, see [Publishing a Subgraph](/subgraphs/developing/
 #### Adding signal to your Subgraph
 
 1. To attract Indexers to query your Subgraph, you should add GRT curation signal to it.
-
    - This action improves quality of service, reduces latency, and enhances network redundancy and availability for your Subgraph.
 
 2. If eligible for indexing rewards, Indexers receive GRT rewards based on the signaled amount.
-
    - It’s recommended to curate at least 3,000 GRT to attract 3 Indexers. Check reward eligibility based on Subgraph feature usage and supported networks.
 
 To learn more about curation, read [Curating](/resources/roles/curating/).
diff --git a/website/src/pages/zh/archived/arbitrum/arbitrum-faq.mdx b/website/src/pages/zh/archived/arbitrum/arbitrum-faq.mdx
index 1394b869f02e..e827f0a40490 100644
--- a/website/src/pages/zh/archived/arbitrum/arbitrum-faq.mdx
+++ b/website/src/pages/zh/archived/arbitrum/arbitrum-faq.mdx
@@ -25,7 +25,6 @@ Graph的计费系统在Arbitrum上接受GRT，用户将需要Arbitrum的ETH来
 因此，要为查询付费，您需要Arbitrum上的GRT。以下是实现这一目标的几种不同方法：
 
 - 如果你已经在以太坊上有了GRT，你可以把它连接到Arbitrum。您可以通过Subgraph Studio中提供的GRT桥接选项或使用以下桥接器之一来完成此操作：
-
   - Arbitrum大桥(https://bridge.arbitrum.io/?l2ChainId=42161)
   - [TransferTo](https://transferto.xyz/swap)
 
diff --git a/website/src/pages/zh/indexing/overview.mdx b/website/src/pages/zh/indexing/overview.mdx
index b2d640e79fe2..7809da642bf3 100644
--- a/website/src/pages/zh/indexing/overview.mdx
+++ b/website/src/pages/zh/indexing/overview.mdx
@@ -680,13 +680,11 @@ graph indexer actions execute approve
 请注意，分配管理支持的操作类型有不同的输入要求：
 
 - `Allocate` - 将份额分配给特定的子图部署
-
   - 所需的操作参数：
     - 部署ID
     - 数量
 
 - `Unallocate` - 结束分配，腾出份额重新分配到其他地方
-
   - 所需的操作参数：
     - 分配ID
     - 部署ID
@@ -695,7 +693,6 @@ graph indexer actions execute approve
     - force（使用提供的POI的力量，即使它与图形节点提供的不匹配)
 
 - `Reallocate` - 自动关闭分配并为相同的子图部署打开新的分配
-
   - 所需的操作参数：
     - 分配ID
     - 部署ID
diff --git a/website/src/pages/zh/indexing/tap.mdx b/website/src/pages/zh/indexing/tap.mdx
index 8a3aa1a43d1a..aed41cbf6f54 100644
--- a/website/src/pages/zh/indexing/tap.mdx
+++ b/website/src/pages/zh/indexing/tap.mdx
@@ -38,7 +38,6 @@ TAP允许发送方向接收方进行多次付款，**TAP收据**将这些付款
 3. `indexer代理`获取所有最后一次的RAVS，并向区块链发送兑换请求，区块链将更新`recent_at`的值。
 
 4. 在`<finality-time>`期间，`索引人代理`监控区块链是否有任何重组来恢复交易。
-
    - 如果被回退，RAV将重新发送到区块链。如果它没有被回退，它将被标记为最终版本。
 
 ## 区块链地址
@@ -77,17 +76,14 @@ TAP允许发送方向接收方进行多次付款，**TAP收据**将这些付款
 ### 步骤
 
 1. **索引人代理**
-
    - 遵循[相同的过程](https://github.com/graphprotocol/indexer/pkgs/container/indexer-agent#graph-protocol-indexer-components)。
    - Give the new argument `--tap-subgraph-endpoint` to activate the new GraphTally codepaths and enable redeeming of RAVs.
 
 2. **索引人服务**
-
    - 用[新的索引人服务](https://github.com/graphprotocol/indexer-rs)完全替换当前的配置。建议您使用[容器映像](https://github.com/orgs/graphprotocol/packages?repo_name=indexer-rs)。
    - 与旧版本一样，您可以轻松地水平扩展索引人服务。它仍然是无状态的。
 
 3. **TAP代理**
-
    - 运行 _一个_ [TAP代理](https://github.com/graphprotocol/indexer-rs)实例。建议您使用[容器映像](https://github.com/orgs/graphprotocol/packages?repo_name=indexer-rs)。
 
 4. **配置索引人服务和TAP代理**
diff --git a/website/src/pages/zh/resources/glossary.mdx b/website/src/pages/zh/resources/glossary.mdx
index bb993a1dffa7..46cfa0865ac8 100644
--- a/website/src/pages/zh/resources/glossary.mdx
+++ b/website/src/pages/zh/resources/glossary.mdx
@@ -15,7 +15,6 @@ title: 术语汇编
 - **Indexers**：网络参与者运行索引节点，从区块链索引数据并提供 GraphQL 查询。
 
 - **Indexer Revenue Streams**：索引人在 GRT 中的获得包括两个组成部分: 查询费用回扣和索引奖励。
-
   1. **Query Fee Rebates**: 子图消费者为网络上的查询提供服务支付的费用。
 
   2. **Indexing Rewards**: 索引人因为索引子图而获得的奖励。索引奖励是通过每年发行3% 的 GRT 来产生的。
@@ -43,7 +42,6 @@ title: 术语汇编
 - **Epoch**: 网络中的时间单位。一个时期目前为6,646个区块或大约1天。
 
 - **Allocation**: 一个索引人可以分配他们的总 GRT 份额(包括委托人的股份) 到已经部署在The Graph去中心化网络的子图。分配可以有不同的状态：
-
   1. **Active**: 分配在链上创建时被认为是活跃的。这称为开启一个分配，并向网络表明索引人正在为特定子图建立索引并提供查询服务。活跃分配的索引奖励与子图上的信号以及分配的 GRT 的数量成正比。
 
   2. **Closed**：索引人可以通过提交最近有效的索引证明（POI）来获得给定子图的累积索引奖励。这被称为关闭分配。分配必须至少开放一个时期，然后才能关闭。最大分配周期为28个时期。如果索引人在28个时期之后留下一个开放的分配，则称为陈旧分配。当分配处于**Closed**状态时，Fisherman仍然可以发起争议，质疑索引人提供虚假数据。
diff --git a/website/src/pages/zh/resources/roles/delegating/undelegating.mdx b/website/src/pages/zh/resources/roles/delegating/undelegating.mdx
index c7bcbb60817e..31606dd6ce82 100644
--- a/website/src/pages/zh/resources/roles/delegating/undelegating.mdx
+++ b/website/src/pages/zh/resources/roles/delegating/undelegating.mdx
@@ -13,13 +13,11 @@ title: 取消授权
 1. 访问[Graph Explorer](https://thegraph.com/explorer)。请确保您使用的是Explorer而**不是** Subgraph Studio。
 
 2. 点击您的个人资料。你可以在页面的右上角找到它。
-
    - 确保您的钱包已连接。如果它没有连接，您将看到“连接”按钮。
 
 3. 进入个人资料后，单击委托选项卡。在委托选项卡中，您可以查看已委托的索引人列表。
 
 4. 单击要从中提取代币的索引人。
-
    - 请务必注意特定的索引人，因为您需要再次找到它们才能提取。
 
 5. 通过单击右侧索引人旁边的三个点来选择“Undelegate”选项，请参阅下图：
@@ -37,11 +35,9 @@ title: 取消授权
 ### 步骤
 
 1. 在Arbiscan上查找您的委托交易。
-
    - 这是[Arbiscan上的一个交易示例](https://arbiscan.io/tx/0xcf2110eac897099f821064445041031efb32786392bdbe7544a4cb7a6b2e4f9a)。
 
 2. 导航到“交易操作”，您可以在其中找到质押延期合约：
-
    - [这是上述示例的质押延期合约](https://arbiscan.io/address/0x00669A4CF01450B64E8A2A20E9b1FCB71E61eF03)。
 
 3. 然后点击“合约”。![Arbiscan上NFT传输和事件之间的合约选项卡](/img/arbiscan-contract.png)。
@@ -59,7 +55,6 @@ title: 取消授权
 9. 如果你不知道你委托了多少代币，你可以在读取自定义选项卡上调用`getDelegation`。你需要粘贴你的地址（委托人地址）和你委托给的索引人的地址，如下图所示：
 
    ![这两个地址都需要](/img/get-delegate.png)
-
    - 这将返回三个数字。第一个数字是您可以取消预订的金额。
 
 10. 调用`unstake`后，您可以在大约28个时期（28天）后通过调用 `withdraw`函数进行撤回。
diff --git a/website/src/pages/zh/subgraphs/best-practices/grafting-hotfix.mdx b/website/src/pages/zh/subgraphs/best-practices/grafting-hotfix.mdx
index 2fd2d120ee1f..5b0518c1e23f 100644
--- a/website/src/pages/zh/subgraphs/best-practices/grafting-hotfix.mdx
+++ b/website/src/pages/zh/subgraphs/best-practices/grafting-hotfix.mdx
@@ -14,12 +14,10 @@ sidebarTitle: 嫁接和修补
 ## 嫁接修复补丁的好处
 
 1. **快速部署**
-
    - **最小化停机时间**：当子图遇到严重错误并停止索引时，嫁接使您能够立即部署修复程序，而无需等待重新索引。
    - **立即恢复**：新的子图从最后一个索引块继续，确保数据服务保持不间断。
 
 2. **数据保存**
-
    - **重用历史数据**：嫁接会从基础子图复制现有数据，这样就不会丢失有价值的历史记录。
    - **一致性**：保持数据连续性，这对于依赖一致历史数据的应用程序至关重要。
 
@@ -30,19 +28,16 @@ sidebarTitle: 嫁接和修补
 ## 使用嫁接修复补丁的最佳实践
 
 1. **无嫁接的初始部署**
-
    - **开始清理**：始终部署初始子图而不进行嫁接，以确保其稳定并按预期运行。
    - **彻底测试**：验证子图的性能，以尽量减少对未来补丁的需求。
 
 2. **用嫁接实现补丁**
-
    - **识别问题**：当发生严重错误时，确定最后一个成功索引事件的块号。
    - **创建新子图**：开发一个包含修补程序的新子图。
    - **配置嫁接**：使用嫁接将数据从失败的子图复制到识别的块号。
    - **快速部署**：发布嫁接的子图，尽快恢复服务。
 
 3. **发布修补程序操作**
-
    - **监控性能**：确保嫁接的子图正确索引，并且修补程序解决了该问题。
    - **无嫁接的重新发布**：一旦稳定，部署新版本的子图，无需嫁接以进行长期维护。
      > 注意：不建议无限期地依赖嫁接，因为这会使未来的更新和维护复杂化。
@@ -130,7 +125,6 @@ sidebarTitle: 嫁接和修补
   - **block**：应该开始嫁接的块号。
 
 3. **部署步骤**
-
    - **更新代码**：在映射脚本中实现修补程序（例如handleWithdrawal）。
    - **调整Manifest**：如上所示，使用嫁接配置更新`subgraph.yaml`。
    - **部署子图**：
diff --git a/website/src/pages/zh/subgraphs/developing/creating/install-the-cli.mdx b/website/src/pages/zh/subgraphs/developing/creating/install-the-cli.mdx
index b8fa541b7453..ce010b7da9c4 100644
--- a/website/src/pages/zh/subgraphs/developing/creating/install-the-cli.mdx
+++ b/website/src/pages/zh/subgraphs/developing/creating/install-the-cli.mdx
@@ -46,7 +46,6 @@ graph init \
 ```
 
 - 该命令试图从Etherscan检索合约ABI。
-
   - Graph CLI依赖于公共RPC端点。虽然偶尔会出现故障，但重试通常可以解决此问题。如果故障持续存在，请考虑使用本地ABI。
 
 - 如果缺少任何可选参数，它将引导您完成交互式表单。
@@ -87,7 +86,6 @@ Options:
 `graph add`命令将从Etherscan获取ABI（除非使用`--abi`选项指定了ABI路径），并创建一个新的`dataSource`，类似于`graph-init`指令如何`从合约`创建`data. Source`，从而相应地更新模式和映射。这允许您从代理合约中索引实现合约。
 
 - `--merge-entities`选项标识开发人员希望如何处理`实体`和`事件`名称冲突：
-
   - 如果为`真`：新的`数据源`应该使用现有的`事件处理程序`和`实体`。
 
   - 如果为`假`：应使用`${dataSourceName}{EventName}`创建新的`实体`和`事件`处理程序。
diff --git a/website/src/pages/zh/subgraphs/developing/managing/deleting-a-subgraph.mdx b/website/src/pages/zh/subgraphs/developing/managing/deleting-a-subgraph.mdx
index 6c01e7a3e67b..57ce8a95030e 100644
--- a/website/src/pages/zh/subgraphs/developing/managing/deleting-a-subgraph.mdx
+++ b/website/src/pages/zh/subgraphs/developing/managing/deleting-a-subgraph.mdx
@@ -17,7 +17,6 @@ title: 删除子图
    ![Delete-subgraph](/img/Delete-subgraph.png)
 
 4. 视子图的状态而定，您将会收到各种选项提示。
-
    - 如果子图未发布，请单击“删除”并确认。
    - 如果子图已发布，您需要先确认钱包，然后才能从工作室删除子图。 如果子图被发布到多个网络，如测试网和主网，则可能需要额外的步骤。
 
diff --git a/website/src/pages/zh/subgraphs/explorer.mdx b/website/src/pages/zh/subgraphs/explorer.mdx
index e2e8147cd683..9698d4154172 100644
--- a/website/src/pages/zh/subgraphs/explorer.mdx
+++ b/website/src/pages/zh/subgraphs/explorer.mdx
@@ -26,7 +26,6 @@ Graph Explorer由多个部分组成，您可以在其中与 [Subgraphs](https://
 
 - 在面板测试查询，并能够通过网络细节来做出知情的决定。
 - 您还可以在自己的子图或其他人的子图中发出 GRT 信号，以使索引人意识到其重要性和质量。
-
   - 这很关键，因为子图上的信号会激励它被索引，这意味着它将出现在网络上，最终为查询提供服务。
 
 ![Explorer 图像 2](/img/Subgraph-Details.png)
diff --git a/website/src/pages/zh/subgraphs/mcp/claude.mdx b/website/src/pages/zh/subgraphs/mcp/claude.mdx
index 8b61438d2ab7..027b272cb942 100644
--- a/website/src/pages/zh/subgraphs/mcp/claude.mdx
+++ b/website/src/pages/zh/subgraphs/mcp/claude.mdx
@@ -85,7 +85,6 @@ Once you've entered your Gateway API key into your settings, save the file and r
 2. **Find the Command Path**
 
    After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory.
-
    - Navigate to your `subgraph-mcp` directory in terminal
    - Run `pwd` to get the full path
    - Combine the output with `/target/release/subgraph-mcp`
diff --git a/website/src/pages/zh/subgraphs/quick-start.mdx b/website/src/pages/zh/subgraphs/quick-start.mdx
index 01a0c5cbcfc5..e1954fa18ab2 100644
--- a/website/src/pages/zh/subgraphs/quick-start.mdx
+++ b/website/src/pages/zh/subgraphs/quick-start.mdx
@@ -166,11 +166,9 @@ graph publish
 #### 将信号添加到您的子图
 
 1. 为了吸引索引人查询您的子图，您应该添加 GRT 策展信号。
-
    - 此操作可以提高服务质量，减少延迟，提高网络冗余性和子图的可用性。
 
 2. 如果符合索引奖励，索引人将根据信号金额获得GRT奖励。
-
    - 建议策展至少 3 000GRT 来吸引3个索引人。根据子图功能的使用情况和支持的网络检查奖励资格。
 
 要了解更多关于策展的信息，请访问 [Curating](/resources/roles/curating/)。
diff --git a/website/src/remarkTransformRemoteGitHub.js b/website/src/remarkTransformRemoteGitHub.js
deleted file mode 100644
index 2999d9806b55..000000000000
--- a/website/src/remarkTransformRemoteGitHub.js
+++ /dev/null
@@ -1,67 +0,0 @@
-import path from 'path'
-
-import { EXIT, visit } from 'unist-util-visit'
-
-const GITHUB_DATA = {
-  'graph-ts': {
-    user: 'graphprotocol',
-    repo: 'graph-tooling',
-    branch: 'main',
-    docsPath: 'packages/ts/',
-    basePath: '/subgraphs/developing/creating/graph-ts/',
-  },
-  'graph-client': {
-    user: 'graphprotocol',
-    repo: 'graph-client',
-    branch: 'main',
-    docsPath: 'docs/',
-    basePath: '/subgraphs/querying/graph-client/',
-  },
-}
-
-const GO_BACK_REPEATED_REGEX = /(\.\.\/)+/
-
-const EXTERNAL_LINK_REGEX = /^(https?:)?\/\//
-
-export const remarkTransformRemoteGitHub = () => (tree, file) => {
-  // Rewrite relative links to ensure they work
-  const filePath = path.relative(process.cwd(), file.history[0])
-  const [fileName, directory] = filePath.split('/').reverse()
-
-  const data = GITHUB_DATA[directory]
-
-  if (!data) {
-    return
-  }
-
-  const { user, repo, branch, basePath, docsPath } = data
-
-  visit(tree, 'link', (node) => {
-    if (node.url.startsWith('../')) {
-      node.url = node.url.replace(GO_BACK_REPEATED_REGEX, `https://github.com/${user}/${repo}/tree/${branch}/`)
-    }
-    // Skip external links and same-page anchor links
-    if (EXTERNAL_LINK_REGEX.test(node.url) || node.url.startsWith('#')) {
-      return
-    }
-    if (node.url.startsWith('/')) {
-      // Relative to the base path, e.g. (foo)[/bar]
-      node.url = node.url.replace('/', basePath)
-    } else {
-      // Relative to the current path, e.g. (foo)[bar] or (foo)[./bar] or (foo)[../bar]
-      node.url = path.join(basePath + path.dirname(fileName), node.url)
-    }
-  })
-
-  visit(tree, { type: 'heading', depth: 1 }, (node) => {
-    // Replace h1 with YAML frontmatter
-    node.type = 'yaml'
-    node.value = `title: "${node.children[0].value}"
-remotePageUrl: https://github.com/${user}/${repo}/tree/${branch}/${docsPath}${fileName}`
-    delete node.depth
-    delete node.children
-    delete node.position
-
-    return EXIT // stop traversing in case there are other h1 nodes
-  })
-}
diff --git a/website/src/remoteDocs/index.ts b/website/src/remoteDocs/index.ts
new file mode 100644
index 000000000000..c220b1b1c152
--- /dev/null
+++ b/website/src/remoteDocs/index.ts
@@ -0,0 +1,28 @@
+import path from 'node:path'
+
+export interface RemoteDocsRepo {
+  user: string
+  name: string
+  branch: string
+  docsPath: string
+  basePath: string
+}
+
+export const REMOTE_DOCS_REPOS: RemoteDocsRepo[] = [
+  {
+    user: 'graphprotocol',
+    name: 'graph-tooling',
+    branch: 'main',
+    docsPath: 'packages/ts/',
+    basePath: '/subgraphs/developing/creating/graph-ts/',
+  },
+  {
+    user: 'graphprotocol',
+    name: 'graph-client',
+    branch: 'main',
+    docsPath: 'docs/',
+    basePath: '/subgraphs/querying/graph-client/',
+  },
+]
+
+export const ENGLISH_PAGES_DIRECTORY = path.join(process.cwd(), 'src/pages/en')
diff --git a/website/src/supportedNetworks/NetworksTable.tsx b/website/src/supportedNetworks/NetworksTable.tsx
index f7a4ec8627bc..feebf4f6bd20 100644
--- a/website/src/supportedNetworks/NetworksTable.tsx
+++ b/website/src/supportedNetworks/NetworksTable.tsx
@@ -56,12 +56,11 @@ export function NetworksTable({ networks }: { networks: SupportedNetwork[] }) {
   return (
     <>
       <Callout variant="info" className="mb-6">
+        <p>{t('index.supportedNetworks.infoText')}</p>
         <p>
-          {t('index.supportedNetworks.infoText')}{' '}
           <ExperimentalLink href="https://edgeandnode.typeform.com/to/b3507xSL">
             {t('index.supportedNetworks.infoLink')}
           </ExperimentalLink>
-          .
         </p>
       </Callout>
 
diff --git a/website/src/supportedNetworks/index.tsx b/website/src/supportedNetworks/index.ts
similarity index 100%
rename from website/src/supportedNetworks/index.tsx
rename to website/src/supportedNetworks/index.ts

From f1feebfae353cb9d5febb7fda6c3d720dd10fbb2 Mon Sep 17 00:00:00 2001
From: Idalith <126833353+idalithb@users.noreply.github.com>
Date: Thu, 26 Jun 2025 11:29:04 -0700
Subject: [PATCH 07/36] Adding TRON (#991)

---
 website/src/pages/en/substreams/quick-start.mdx | 1 +
 1 file changed, 1 insertion(+)

diff --git a/website/src/pages/en/substreams/quick-start.mdx b/website/src/pages/en/substreams/quick-start.mdx
index acd3029d1376..c9f310b847a1 100644
--- a/website/src/pages/en/substreams/quick-start.mdx
+++ b/website/src/pages/en/substreams/quick-start.mdx
@@ -28,6 +28,7 @@ If you can't find a Substreams package that meets your specific needs, you can d
 
 - [EVM](https://docs.substreams.dev/tutorials/intro-to-tutorials/evm)
 - [Solana](https://docs.substreams.dev/tutorials/intro-to-tutorials/on-solana)
+- [TRON](https://docs.substreams.dev/tutorials/intro-to-tutorials/tron)
 - [Starknet](https://docs.substreams.dev/tutorials/intro-to-tutorials/starknet)
 - [Injective](https://docs.substreams.dev/tutorials/intro-to-tutorials/on-cosmos/injective)
 - [MANTRA](https://docs.substreams.dev/tutorials/intro-to-tutorials/on-cosmos/mantra)

From 6c1fe5b9292bfa7f7495ba005c4db72d0424fbb9 Mon Sep 17 00:00:00 2001
From: Idalith <126833353+idalithb@users.noreply.github.com>
Date: Fri, 27 Jun 2025 15:25:45 -0700
Subject: [PATCH 08/36] AI Revamp (#987)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* working draft

* Add icon to “AI Suite” section

* updates

* Edits

* Updating

* More Updates

* Edits

* Adding disclaimer

* Minor edits

* touchups

---------

Co-authored-by: benface <benoit.rouleau@icloud.com>
---
 nginx.conf                                    |   7 +
 website/next.config.js                        |   7 +
 website/src/layout/Layout.tsx                 |   4 +
 .../src/pages/en/ai-suite/_meta-titles.json   |   6 +
 website/src/pages/en/ai-suite/_meta.js        |   8 ++
 .../src/pages/en/ai-suite/ai-introduction.mdx |  60 +++++++++
 .../en/ai-suite/graph-assistant/_meta.js      |   6 +
 .../pages/en/ai-suite/graph-assistant/faq.mdx |  26 ++++
 .../ai-suite/graph-assistant/how-to-guide.mdx |  56 ++++++++
 .../ai-suite/graph-assistant/introduction.mdx |  31 +++++
 .../ai-suite/graph-assistant/quick-start.mdx  |  44 +++++++
 .../mcp => ai-suite/subgraph-mcp}/_meta.js    |   1 +
 .../mcp => ai-suite/subgraph-mcp}/claude.mdx  |  12 +-
 .../mcp => ai-suite/subgraph-mcp}/cline.mdx   |   2 +-
 .../mcp => ai-suite/subgraph-mcp}/cursor.mdx  |   2 +-
 .../en/ai-suite/subgraph-mcp/introduction.mdx |  22 ++++
 .../mcp => ai-suite/token-api-mcp}/_meta.js   |   1 +
 .../mcp => ai-suite/token-api-mcp}/claude.mdx |   0
 .../mcp => ai-suite/token-api-mcp}/cline.mdx  |   0
 .../mcp => ai-suite/token-api-mcp}/cursor.mdx |   0
 .../ai-suite/token-api-mcp/introduction.mdx   |  23 ++++
 website/src/pages/en/global.json              |   1 +
 website/src/pages/en/resources/_meta.js       |   1 -
 website/src/pages/en/resources/claude-mcp.mdx | 122 ------------------
 .../src/pages/en/subgraphs/_meta-titles.json  |   3 +-
 website/src/pages/en/subgraphs/_meta.js       |   1 -
 .../src/pages/en/token-api/_meta-titles.json  |   1 -
 website/src/pages/en/token-api/_meta.js       |   1 -
 28 files changed, 307 insertions(+), 141 deletions(-)
 create mode 100644 website/src/pages/en/ai-suite/_meta-titles.json
 create mode 100644 website/src/pages/en/ai-suite/_meta.js
 create mode 100644 website/src/pages/en/ai-suite/ai-introduction.mdx
 create mode 100644 website/src/pages/en/ai-suite/graph-assistant/_meta.js
 create mode 100644 website/src/pages/en/ai-suite/graph-assistant/faq.mdx
 create mode 100644 website/src/pages/en/ai-suite/graph-assistant/how-to-guide.mdx
 create mode 100644 website/src/pages/en/ai-suite/graph-assistant/introduction.mdx
 create mode 100644 website/src/pages/en/ai-suite/graph-assistant/quick-start.mdx
 rename website/src/pages/en/{subgraphs/mcp => ai-suite/subgraph-mcp}/_meta.js (75%)
 rename website/src/pages/en/{subgraphs/mcp => ai-suite/subgraph-mcp}/claude.mdx (87%)
 rename website/src/pages/en/{subgraphs/mcp => ai-suite/subgraph-mcp}/cline.mdx (89%)
 rename website/src/pages/en/{subgraphs/mcp => ai-suite/subgraph-mcp}/cursor.mdx (88%)
 create mode 100644 website/src/pages/en/ai-suite/subgraph-mcp/introduction.mdx
 rename website/src/pages/en/{token-api/mcp => ai-suite/token-api-mcp}/_meta.js (75%)
 rename website/src/pages/en/{token-api/mcp => ai-suite/token-api-mcp}/claude.mdx (100%)
 rename website/src/pages/en/{token-api/mcp => ai-suite/token-api-mcp}/cline.mdx (100%)
 rename website/src/pages/en/{token-api/mcp => ai-suite/token-api-mcp}/cursor.mdx (100%)
 create mode 100644 website/src/pages/en/ai-suite/token-api-mcp/introduction.mdx
 delete mode 100644 website/src/pages/en/resources/claude-mcp.mdx

diff --git a/nginx.conf b/nginx.conf
index ae4fd7fa98e7..32b0fdd48183 100644
--- a/nginx.conf
+++ b/nginx.conf
@@ -161,6 +161,13 @@ http {
         rewrite ^/docs/([a-zA-Z][a-zA-Z])/tokenomics/$                                  $scheme://$http_host/docs/$1/resources/tokenomics/                                  permanent;
         rewrite ^/docs/([a-zA-Z][a-zA-Z])/token-api/$                                   $scheme://$http_host/docs/$1/token-api/quick-start/                                 permanent;
         rewrite ^/docs/([a-zA-Z][a-zA-Z])/token-api/evm/get-transfers-evm-by-address/$  $scheme://$http_host/docs/$1/token-api/evm/get-transfers-evm/                       permanent;
+        rewrite ^/docs/([a-zA-Z][a-zA-Z])/subgraphs/mcp/claude/$                        $scheme://$http_host/docs/$1/ai-suite/subgraph-mcp/                                 permanent;
+        rewrite ^/docs/([a-zA-Z][a-zA-Z])/subgraphs/mcp/cline/$                         $scheme://$http_host/docs/$1/ai-suite/subgraph-mcp/                                 permanent;
+        rewrite ^/docs/([a-zA-Z][a-zA-Z])/subgraphs/mcp/cursor/$                         $scheme://$http_host/docs/$1/ai-suite/subgraph-mcp/                                permanent;
+        rewrite ^/docs/([a-zA-Z][a-zA-Z])/subgraphs/mcp/cline/$                         $scheme://$http_host/docs/$1/ai-suite/subgraph-mcp/                                 permanent;
+        rewrite ^/docs/([a-zA-Z][a-zA-Z])/token-api/mcp/cline/$                         $scheme://$http_host/docs/$1/ai-suite/token-api-mcp/                                permanent;
+        rewrite ^/docs/([a-zA-Z][a-zA-Z])/token-api/mcp/cline/$                         $scheme://$http_host/docs/$1/ai-suite/token-api-mcp/                                permanent;
+        rewrite ^/docs/([a-zA-Z][a-zA-Z])/token-api/mcp/cline/$                         $scheme://$http_host/docs/$1/ai-suite/token-api-mcp/                                permanent;
         # Temporary redirects (302)
         rewrite ^/docs/en/querying/graph-client/$                                       $scheme://$http_host/docs/en/subgraphs/querying/graph-client/README/                redirect;
         rewrite ^/docs/en/developing/graph-ts/$                                         $scheme://$http_host/docs/en/subgraphs/developing/creating/graph-ts/README/         redirect;
diff --git a/website/next.config.js b/website/next.config.js
index 6fd1e9a9160a..e1338f8b251e 100644
--- a/website/next.config.js
+++ b/website/next.config.js
@@ -70,6 +70,13 @@ const withNextra = nextra({
         type: 'children',
         title: t('global.navigation.tokenApi'),
       },
+      '---4': {
+        type: 'separator',
+      },
+      'ai-suite': {
+        type: 'children',
+        title: t('global.navigation.ai-suite'),
+      },
       '---5': {
         type: 'separator',
       },
diff --git a/website/src/layout/Layout.tsx b/website/src/layout/Layout.tsx
index 5f377c84fc64..fce5483d21fb 100644
--- a/website/src/layout/Layout.tsx
+++ b/website/src/layout/Layout.tsx
@@ -43,6 +43,7 @@ import {
   SocialGitHub,
   SocialTelegram,
   SocialX,
+  Sparkle,
   Stack,
   Subgraph,
   Substreams,
@@ -198,6 +199,9 @@ export default function Layout({ pageOpts, children }: NextraThemeLayoutProps<Fr
         if (routeWithoutLocale === '/token-api' || routeWithoutLocale.startsWith('/token-api/')) {
           return <APIToken alt="" />
         }
+        if (routeWithoutLocale === '/ai-suite' || routeWithoutLocale.startsWith('/ai-suite/')) {
+          return <Sparkle alt="" variant={selected ? 'fill' : 'regular'} />
+        }
         if (routeWithoutLocale === '/indexing' || routeWithoutLocale.startsWith('/indexing/')) {
           return <RoleIndexer alt="" />
         }
diff --git a/website/src/pages/en/ai-suite/_meta-titles.json b/website/src/pages/en/ai-suite/_meta-titles.json
new file mode 100644
index 000000000000..5eb482a7092b
--- /dev/null
+++ b/website/src/pages/en/ai-suite/_meta-titles.json
@@ -0,0 +1,6 @@
+{
+  "graph-assistant": "Graph Assistant",
+  "ai-introduction": "The Graph's AI",
+  "subgraph-mcp": "Subgraph MCP",
+  "token-api-mcp": "Token API MCP"
+}
diff --git a/website/src/pages/en/ai-suite/_meta.js b/website/src/pages/en/ai-suite/_meta.js
new file mode 100644
index 000000000000..c9e51dfd35fb
--- /dev/null
+++ b/website/src/pages/en/ai-suite/_meta.js
@@ -0,0 +1,8 @@
+import titles from './_meta-titles.json'
+
+export default {
+  'ai-introduction': titles['ai-introduction'],
+  'graph-assistant': titles['graph-assistant'],
+  'subgraph-mcp': titles['subgraph-mcp'],
+  'token-api-mcp': titles['token-api-mcp'],
+}
diff --git a/website/src/pages/en/ai-suite/ai-introduction.mdx b/website/src/pages/en/ai-suite/ai-introduction.mdx
new file mode 100644
index 000000000000..9b661875bb18
--- /dev/null
+++ b/website/src/pages/en/ai-suite/ai-introduction.mdx
@@ -0,0 +1,60 @@
+---
+title: The Graph's AI
+---
+
+Build with speed and scale faster with The Graph's AI.
+
+## Using AI on The Graph
+
+Instead of relying on static datasets or centralized APIs, you can now access live blockchain data through our **agentic** app, [Graph Assistant](/ai-suite/graph-assistant/introduction/), and use our AI-native tooling, [Subgraph MCP](/ai-suite/subgraph-mcp/introduction/), and [Token API MCP](/ai-suite/token-api-mcp/introduction/).
+
+### Why Use Onchain Data with AI?
+
+Using onchain data with AI unlocks powerful new ways to interact with and understand blockchain ecosystems.
+
+- **AI for Non-Technical End Users**: AI can turn complex onchain data into accessible insights. Assistants powered by AI enable you to explore and analyze blockchain data without coding.
+- **AI for Developers**: You can use AI to interact directly with The Graph's data through your agents or build AI-powered applications on top of it. This streamlines development and opens up more intuitive, dynamic use cases.
+
+## AI for Non-Technical/End Users
+
+[Graph Assistant](/ai-suite/graph-assistant/introduction/) is a powerful **agentic** application that empowers users to easily interact with blockchain data. Ask questions in simple, natural language and get rich, AI powered insights. Both technical developers and non-technical product teams can move faster, make smarter decisions, and gain a clearer understanding than ever before.
+
+### Benefits of Using Graph Assistant
+
+- **Natural language Input**: You don't need to write complex queries or sift through dashboards. Simply ask your question in plain English and get clear, structured results.
+- **Multi-source support**: Works across multiple Subgraphs and Token API. The Assistant automatically determines which data source to use, so you don't have to switch tools or manage endpoints.
+- **Schema-free access**: You don't need to understand the schema. You can refer to tokens, protocols, dates, or addresses using natural language. The Assistant takes care of the rest.
+
+### Conversational Querying with Graph Assistant
+
+**Example queries:**
+
+- "List the top-5 swaps by USD value in the last 24 hours."
+- "Give me the daily volume on Uniswap."
+- "List the 20 most recently registered .eth names."
+- "What's the best liqudity pool to put my ETH into?"
+- "What is the total delegated stake in The Graph network?"
+
+[Graph Assistant](/ai-suite/graph-assistant/introduction/) will eventually be a one-stop shop for interacting with The Graph. Right now, it's an agentic AI app that uses state-of-the-art AI techniques, LLMs, and MCPs to understand and answer your questions about [Subgraphs](/subgraphs/developing/subgraphs/) and [Token API](/token-api/quick-start/) data.
+
+## AI for Developers
+
+### Enable Natural Language Access to Onchain Data
+
+[Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) servers connect to Claude, Cline, and Cursor. They enable models to understand, query, and interact with structured onchain data using natural language. MCPs remove the need to write low-level queries or interact with APIs directly.
+
+### Subgraph MCP
+
+The [Subgraph MCP](/ai-suite/subgraph-mcp/introduction/) server connects models to Subgraphs on The Graph Network. It allows language models to explore Subgraph schemas, execute GraphQL queries, find relevant Subgraphs by keyword or contract, and surface usage metrics using natural language.
+
+### Token API MCP
+
+The [Token API MCP](/ai-suite/token-api-mcp/introduction/) MCP server enables models to access onchain token data. It supports querying token metadata, wallet balances, transfer history, and top token holders through simple prompts.
+
+#### Benefits of Using Subgraph and Token API MCPs
+
+- Query Subgraphs and token data using natural language
+- Access GraphQL schemas and token metadata without manual queries
+- Find Subgraphs by keyword or contract and check 30-day usage
+- Retrieve real-time data from The Graph and onchain token sources
+- Get wallet balances, transfer history, and top token holders
diff --git a/website/src/pages/en/ai-suite/graph-assistant/_meta.js b/website/src/pages/en/ai-suite/graph-assistant/_meta.js
new file mode 100644
index 000000000000..74da5e0686a7
--- /dev/null
+++ b/website/src/pages/en/ai-suite/graph-assistant/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  'quick-start': '',
+  introduction: '',
+  'how-to-guide': '',
+  faq: '',
+}
diff --git a/website/src/pages/en/ai-suite/graph-assistant/faq.mdx b/website/src/pages/en/ai-suite/graph-assistant/faq.mdx
new file mode 100644
index 000000000000..8addf9935524
--- /dev/null
+++ b/website/src/pages/en/ai-suite/graph-assistant/faq.mdx
@@ -0,0 +1,26 @@
+---
+title: Graph Assistant FAQ
+sidebarTitle: 'FAQ'
+---
+
+This page summarizes some of the most common questions for developers using Graph Assistant.
+
+1. What is The Graph Assistant?
+
+The Graph Assistant is an AI-powered chat interface that lets you query blockchain data in plain English. Under the hood, it translates your questions into GraphQL calls against Subgraphs and the Token API, then returns results, no coding required.
+
+2. What is an agentic application?
+
+An agentic application combines AI-driven reasoning with external data sources or APIs to take autonomous actions on your behalf. In this case, Graph Assistant acts as an “agent” that interprets your natural-language prompts, builds and dispatches GraphQL queries, and formats the results so that you don't need to write or manage queries yourself.
+
+3. Which networks and data does Graph Assistant support?
+
+The Assistant has access to Subgraphs across multiple chains. If a Subgraph is published to The Graph Network and is being indexed, the Assistant can automatically route queries to it. The Assistant also has access to the Token API on Ethereum Mainnet, BSC, Unichain, Arbitrum-One, Optimism, and Polygon.
+
+4. Is there a usage limit or quota?
+
+Yes, 10 questions per hour.
+
+5. What if the Assistant can't interpret my question?
+
+When the Assistant fails to parse your intent (for example, ambiguous token name, missing context, or an unsupported request), it will prompt you for clarification. For instance, it might ask, “Did you mean XYZ on Ethereum or XYZ on Arbitrum?” or “Please specify a date range for this query.” If you continue to see parsing errors, check that you're using correct token symbols or specifying networks and time frames clearly.
diff --git a/website/src/pages/en/ai-suite/graph-assistant/how-to-guide.mdx b/website/src/pages/en/ai-suite/graph-assistant/how-to-guide.mdx
new file mode 100644
index 000000000000..463130894ad8
--- /dev/null
+++ b/website/src/pages/en/ai-suite/graph-assistant/how-to-guide.mdx
@@ -0,0 +1,56 @@
+---
+title: How To Use The Graph Assistant
+sidebarTitle: 'How-to Guide'
+---
+
+## Overview
+
+You type a natural language question into the chat interface, such as:
+
+```yaml
+'On Uniswap, return the top-10 pools by total value locked in USD.'
+```
+
+> [!IMPORTANT] All users can process 10 free queries per user per hour.
+
+> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the underlying agents. Do not share sensitive, personal, or private information.
+
+### Behind the Scenes
+
+The Assistant:
+
+1. Interprets your intent
+2. Maps it to the correct Subgraphs or Token API endpoint
+3. Executes optimized queries
+4. Returns clean, structured results
+
+You don't need to write queries or understand a Subgraph's schema, you simply ask.
+
+### Example Use Cases
+
+**Protocol Analytics**
+
+- “Compare daily active users on Aave vs. Compound in May 2025.”
+- “Show me the total value locked (TVL) for XYZDAO over the last quarter.”
+
+**Token Insights**
+
+- “What are the top 10 tokens by market cap on Ethereum right now?”
+- “How many XYZ did I receive between May 1 and May 15?”
+
+**Historical Data Retrieval**
+
+- “Fetch the token price history of XYZ for the last six months.”
+- “What was the average gas price on Ethereum during April?”
+
+**Portfolio Monitoring**
+
+- “List my wallet’s current token balances and their USD equivalents.”
+- “Calculate profit/loss on XYZ since xyz date.”
+
+**Cross-Chain Comparison**
+
+- “Show me the 7-day trading volume of XYZ on Ethereum vs. Polygon.”
+- “How many XYZ swaps occurred on Arbitrum yesterday?”
+
+To get started follow the [quickstart](/ai-suite/graph-assistant/quick-start/) and explore its capabilities.
diff --git a/website/src/pages/en/ai-suite/graph-assistant/introduction.mdx b/website/src/pages/en/ai-suite/graph-assistant/introduction.mdx
new file mode 100644
index 000000000000..65fdf0f96028
--- /dev/null
+++ b/website/src/pages/en/ai-suite/graph-assistant/introduction.mdx
@@ -0,0 +1,31 @@
+---
+title: Introduction
+---
+
+> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime.
+
+[Graph Assistant](https://thegraph.com/graph-assistant) (Beta) gives instant, code-free access to blockchain data, transforming natural language into precise, AI-powered queries without the need to code.
+
+## Overview
+
+[Graph Assistant](https://thegraph.com/graph-assistant) is an advanced, [agentic](/en/ai-suite/graph-assistant/faq/) easy-to-use chat interface for querying blockchain data using natural language. Unlike a basic chatbot, Graph Assistant can understand your intent, build complex queries, and execute them automatically. This gives you rich, AI-powered insights from onchain data without writing any code.
+
+- **Automatically** interprets user intent, generates precise queries, executes them via The Graph's Subgraphs and Token API, and presents structured, AI-powered answers without requiring any code.
+- **Removes** the technical complexity found in traditional dashboards or chatbots. It provides composable insights directly from indexed Subgraphs and Token datasets.
+
+## Core Features
+
+| Feature | Description |
+| --- | --- |
+| **Friendly Interface** | Conversational access to blockchain data via natural language. You simply ask questions, the Assistant fetches the answer, and renders results. |
+| **Backed by Subgraphs** | Uses subgraphs to index protocol-specific data like transactions, events, and protocol metrics. |
+| **Backed by Token API** | Uses Token API for token-level information like balances, transfers, and metadata. |
+| **No Setup Required** | No need to configure data sources or write queries. |
+| **Automatic Query Building** | The Assistant performs complex queries such as fetching historical token volumes, protocol analytics, or cross-chain data and handles filtering, pagination, and joins across Subgraphs automatically. |
+
+## Help Shape What's Next
+
+This is in **beta**, and community input is essential. If you have ideas, questions, or run into anything unexpected, we'd love to hear from you:
+
+- Join the community on [Discord](https://discord.com/invite/graphprotocol): Provide feedback and stay in the loop with other builders. You'll be able to join the `#graph-assistant` channel to share your experience directly.
+- Interested in going deeper? Reach out to become a dedicated beta tester so your specific use case can be better supported.
diff --git a/website/src/pages/en/ai-suite/graph-assistant/quick-start.mdx b/website/src/pages/en/ai-suite/graph-assistant/quick-start.mdx
new file mode 100644
index 000000000000..13f8478b8d2b
--- /dev/null
+++ b/website/src/pages/en/ai-suite/graph-assistant/quick-start.mdx
@@ -0,0 +1,44 @@
+---
+title: Quick Start
+---
+
+> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime.
+
+This guide provides step-by-step instructions for getting started with Graph Assistant quickly.
+
+## Step-by Step
+
+### Step 1. Create an Account
+
+Go to: [Graph Assistant](https://thegraph.com/graph-assistant)
+
+- Click Sign Up (or Log In if you already have an account).
+- Use your Google, GitHub, X, email or wallet credentials to log in.
+- No additional setup is required.
+
+### Step 2. Open the Assistant Chat
+
+After logging in:
+
+- You'll see Graph Assistant's interface.
+- At the bottom of the page, you will find a chat input bar. This is where you will interact with the Assistant.
+
+### Step 3: Ask Your First Question
+
+> [!IMPORTANT] All users can process 10 free queries per user per hour.
+
+In the input bar, type a natural-language query (everyday language).
+
+Example:
+
+```yaml
+Show me the 24-hour trading volume of XYZ token on Ethereum
+```
+
+> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the AI interface. Do not share sensitive, personal, or private information.
+
+The Assistant will:
+
+- Digest your question
+- Fetch onchain data using Subgraphs or the Token API
+- Return a clean, formatted response with the data you need
diff --git a/website/src/pages/en/subgraphs/mcp/_meta.js b/website/src/pages/en/ai-suite/subgraph-mcp/_meta.js
similarity index 75%
rename from website/src/pages/en/subgraphs/mcp/_meta.js
rename to website/src/pages/en/ai-suite/subgraph-mcp/_meta.js
index 8630d4da27b3..6f527b4e53e4 100644
--- a/website/src/pages/en/subgraphs/mcp/_meta.js
+++ b/website/src/pages/en/ai-suite/subgraph-mcp/_meta.js
@@ -1,4 +1,5 @@
 export default {
+  introduction: '',
   claude: '',
   cline: '',
   cursor: '',
diff --git a/website/src/pages/en/subgraphs/mcp/claude.mdx b/website/src/pages/en/ai-suite/subgraph-mcp/claude.mdx
similarity index 87%
rename from website/src/pages/en/subgraphs/mcp/claude.mdx
rename to website/src/pages/en/ai-suite/subgraph-mcp/claude.mdx
index 027b272cb942..ff3caa4e3e7f 100644
--- a/website/src/pages/en/subgraphs/mcp/claude.mdx
+++ b/website/src/pages/en/ai-suite/subgraph-mcp/claude.mdx
@@ -2,17 +2,7 @@
 title: Claude Desktop
 ---
 
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Claude to interact directly with Subgraphs on The Graph Network. This integration allows you to find relevant Subgraphs for specific keywords and contracts, explore Subgraph schemas, and execute GraphQL queries—all through natural language conversations with Claude.
-
-## What You Can Do
-
-The Subgraph MCP integration enables you to:
-
-- Access the GraphQL schema for any Subgraph on The Graph Network
-- Execute GraphQL queries against any Subgraph deployment
-- Find top Subgraph deployments for a given keyword or contract address
-- Get 30-day query volume for Subgraph deployments
-- Ask natural language questions about Subgraph data without writing GraphQL queries manually
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data via natural language conversations with Claude.
 
 ## Prerequisites
 
diff --git a/website/src/pages/en/subgraphs/mcp/cline.mdx b/website/src/pages/en/ai-suite/subgraph-mcp/cline.mdx
similarity index 89%
rename from website/src/pages/en/subgraphs/mcp/cline.mdx
rename to website/src/pages/en/ai-suite/subgraph-mcp/cline.mdx
index 156221d9a127..eb8044bfe991 100644
--- a/website/src/pages/en/subgraphs/mcp/cline.mdx
+++ b/website/src/pages/en/ai-suite/subgraph-mcp/cline.mdx
@@ -2,7 +2,7 @@
 title: Cline
 ---
 
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Cline to interact directly with Subgraphs on The Graph Network. This integration allows you to explore Subgraph schemas, execute GraphQL queries, and find relevant Subgraphs for specific contracts—all through natural language conversations with Cline.
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data through natural language conversations with Cline.
 
 ## Prerequisites
 
diff --git a/website/src/pages/en/subgraphs/mcp/cursor.mdx b/website/src/pages/en/ai-suite/subgraph-mcp/cursor.mdx
similarity index 88%
rename from website/src/pages/en/subgraphs/mcp/cursor.mdx
rename to website/src/pages/en/ai-suite/subgraph-mcp/cursor.mdx
index 298f43ece048..6291caf4b06b 100644
--- a/website/src/pages/en/subgraphs/mcp/cursor.mdx
+++ b/website/src/pages/en/ai-suite/subgraph-mcp/cursor.mdx
@@ -2,7 +2,7 @@
 title: Cursor
 ---
 
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Cursor to interact directly with Subgraphs on The Graph Network. This integration allows you to explore Subgraph schemas, execute GraphQL queries, and find relevant Subgraphs for specific contracts—all through natural language conversations with Cursor.
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data through natural language conversations with Cline.
 
 ## Prerequisites
 
diff --git a/website/src/pages/en/ai-suite/subgraph-mcp/introduction.mdx b/website/src/pages/en/ai-suite/subgraph-mcp/introduction.mdx
new file mode 100644
index 000000000000..da1272cf9a36
--- /dev/null
+++ b/website/src/pages/en/ai-suite/subgraph-mcp/introduction.mdx
@@ -0,0 +1,22 @@
+---
+title: Subgraph MCP Introduction
+sidebarTitle: 'Introduction'
+---
+
+Subgraph MCP server is an open-source implementation of [Anthropic's Model Context Protocol](https://modelcontextprotocol.io/introduction).
+
+It presents The Graph's Subgraph data through a set of MCP tools that any MCP-compatible client can call. With these tools, clients can search for relevant Subgraphs, inspect GraphQL schemas, and run queries against specific deployments on The Graph Network all within a single, standardized interface.
+
+The server itself does not hold a language model. Instead, it translates incoming MCP requests into Subgraph queries and returns the structured results, allowing the client's LLM to transform a natural-language prompt into actionable blockchain data.
+
+Think of it as a USB-C hub: it standardizes the plug-and-play connection between AI agents and The Graph's Subgraph ecosystem.
+
+## What You Can Do
+
+- Access GraphQL schemas for any Subgraph on The Graph Network
+- Run GraphQL queries on any Subgraph deployment
+- Discover top Subgraph deployments by keyword or contract address
+- Retrieve 30-day query volumes for Subgraph deployments
+- Ask questions about Subgraph data without writing GraphQL manually
+
+The Subgraph MCP server allows smooth integration with [Claude](/ai-suite/subgraph-mcp/claude/), [Cline](/ai-suite/subgraph-mcp/cline/), or [Cursor](/ai-suite/subgraph-mcp/cursor/), making blockchain data queries with The Graph Network a conversational experience.
diff --git a/website/src/pages/en/token-api/mcp/_meta.js b/website/src/pages/en/ai-suite/token-api-mcp/_meta.js
similarity index 75%
rename from website/src/pages/en/token-api/mcp/_meta.js
rename to website/src/pages/en/ai-suite/token-api-mcp/_meta.js
index 8630d4da27b3..6f527b4e53e4 100644
--- a/website/src/pages/en/token-api/mcp/_meta.js
+++ b/website/src/pages/en/ai-suite/token-api-mcp/_meta.js
@@ -1,4 +1,5 @@
 export default {
+  introduction: '',
   claude: '',
   cline: '',
   cursor: '',
diff --git a/website/src/pages/en/token-api/mcp/claude.mdx b/website/src/pages/en/ai-suite/token-api-mcp/claude.mdx
similarity index 100%
rename from website/src/pages/en/token-api/mcp/claude.mdx
rename to website/src/pages/en/ai-suite/token-api-mcp/claude.mdx
diff --git a/website/src/pages/en/token-api/mcp/cline.mdx b/website/src/pages/en/ai-suite/token-api-mcp/cline.mdx
similarity index 100%
rename from website/src/pages/en/token-api/mcp/cline.mdx
rename to website/src/pages/en/ai-suite/token-api-mcp/cline.mdx
diff --git a/website/src/pages/en/token-api/mcp/cursor.mdx b/website/src/pages/en/ai-suite/token-api-mcp/cursor.mdx
similarity index 100%
rename from website/src/pages/en/token-api/mcp/cursor.mdx
rename to website/src/pages/en/ai-suite/token-api-mcp/cursor.mdx
diff --git a/website/src/pages/en/ai-suite/token-api-mcp/introduction.mdx b/website/src/pages/en/ai-suite/token-api-mcp/introduction.mdx
new file mode 100644
index 000000000000..d35905196d22
--- /dev/null
+++ b/website/src/pages/en/ai-suite/token-api-mcp/introduction.mdx
@@ -0,0 +1,23 @@
+---
+title: Token API MCP Introduction
+sidebarTitle: 'Introduction'
+---
+
+Token API MCP server is an open-source implementation of [Anthropic's Model Context Protocol](https://modelcontextprotocol.io/introduction).
+
+It makes on-chain token data, including metadata, balances, transfers, and holder statistics, accessible through a set of MCP tools. Any compatible client can use these tools to fetch and analyze token information through a standardized interface.
+
+The server itself does not host any language model. It simply converts MCP calls into data look-ups and returns structured results, letting the client's own LLM incorporate the results.
+
+Think of it as a USB-C hub: it standardizes the plug-and-play connection between AI agents and The Graph's Token API data.
+
+## What You Can Do
+
+- Retrieve token metadata including name, symbol, decimals, total supply, and contract address
+- Get token balances for any wallet address holding a supported ERC-20 token
+- Fetch token transfer activity including sender, receiver, amount, and timestamp
+- Identify top holders and analyze token distribution
+- Ask natural language questions about token data without writing smart contract calls
+- Access historical transfer data to analyze token movement over time
+
+The Token MCP server provides [Claude](/ai-suite/token-api-mcp/claude/), [Cline](/ai-suite/token-api-mcp/cline/), and [Cursor](/ai-suite/token-api-mcp/cursor/) with direct, conversational access to onchain token data.
diff --git a/website/src/pages/en/global.json b/website/src/pages/en/global.json
index 4364984ad90c..f1d954fe756e 100644
--- a/website/src/pages/en/global.json
+++ b/website/src/pages/en/global.json
@@ -6,6 +6,7 @@
     "subgraphs": "Subgraphs",
     "substreams": "Substreams",
     "sps": "Substreams-Powered Subgraphs",
+    "ai-suite": "AI Suite",
     "tokenApi": "Token API",
     "indexing": "Indexing",
     "resources": "Resources",
diff --git a/website/src/pages/en/resources/_meta.js b/website/src/pages/en/resources/_meta.js
index aa8e2d0ec6a8..38c56cf56c43 100644
--- a/website/src/pages/en/resources/_meta.js
+++ b/website/src/pages/en/resources/_meta.js
@@ -7,5 +7,4 @@ export default {
   roles: titles.roles ?? '',
   'migration-guides': titles['migration-guides'] ?? '',
   'subgraph-studio-faq': '',
-  'claude-mcp': '',
 }
diff --git a/website/src/pages/en/resources/claude-mcp.mdx b/website/src/pages/en/resources/claude-mcp.mdx
deleted file mode 100644
index 44ed075cffda..000000000000
--- a/website/src/pages/en/resources/claude-mcp.mdx
+++ /dev/null
@@ -1,122 +0,0 @@
----
-title: Claude MCP
----
-
-This guide walks you through configuring Claude Desktop to use The Graph ecosystem's [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) resources: Token API and Subgraph. These integrations allow you to interact with blockchain data through natural language conversations with Claude.
-
-## What You Can Do
-
-With these integrations, you can:
-
-- **Token API**: Access token and wallet information across multiple blockchains
-- **Subgraph**: Find relevant Subgraphs for specific keywords and contracts, explore Subgraph schemas, and execute GraphQL queries
-
-## Prerequisites
-
-- [Node.js](https://nodejs.org/en/download/) installed and available in your path
-- [Claude Desktop](https://claude.ai/download) installed
-- API keys:
-  - Token API key from [The Graph Market](https://thegraph.market/)
-  - Gateway API key from [Subgraph Studio](https://thegraph.com/studio/apikeys/)
-
-## Configuration Steps
-
-### 1. Open Configuration File
-
-Navigate to your `claude_desktop_config.json` file:
-
-> **Claude Desktop** > **Settings** > **Developer** > **Edit Config**
-
-Paths by operating system:
-
-- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
-- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
-- Linux: `.config/Claude/claude_desktop_config.json`
-
-### 2. Add Configuration
-
-Replace the contents of the existing config file with:
-
-```json
-{
-  "mcpServers": {
-    "token-api": {
-      "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
-      "env": {
-        "ACCESS_TOKEN": "ACCESS_TOKEN"
-      }
-    },
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-### 3. Add Your API Keys
-
-Replace:
-
-- `ACCESS_TOKEN` with your Token API key from [The Graph Market](https://thegraph.market/)
-- `GATEWAY_API_KEY` with your Gateway API key from [Subgraph Studio](https://thegraph.com/studio/apikeys/)
-
-### 4. Save and Restart
-
-- Save the configuration file
-- Restart Claude Desktop
-
-### 5. Add The Graph Resources in Claude
-
-After configuration:
-
-1. Start a new conversation in Claude Desktop
-2. Click on the context menu (top right)
-3. Add "Subgraph Server Instructions" as a resource by entering `graphql://subgraph` for Subgraph MCP
-
-> **Important**: You must manually add The Graph resources to your chat context for each conversation where you want to use them.
-
-### 6. Run Queries
-
-Here are some example queries you can try after setting up the resources:
-
-### Subgraph Queries
-
-```
-What are the top pools in Uniswap?
-```
-
-```
-Who are the top Delegators of The Graph Protocol?
-```
-
-```
-Please make a bar chart for the number of active loans in Compound for the last 7 days
-```
-
-### Token API Queries
-
-```
-Show me the current price of ETH
-```
-
-```
-What are the top tokens by market cap on Ethereum?
-```
-
-```
-Analyze this wallet address: 0x...
-```
-
-## Troubleshooting
-
-If you encounter issues:
-
-1. **Verify Node.js Installation**: Ensure Node.js is correctly installed by running `node -v` in your terminal
-2. **Check API Keys**: Verify that your API keys are correctly entered in the configuration file
-3. **Enable Verbose Logging**: Add `--verbose true` to the args array in your configuration to see detailed logs
-4. **Restart Claude Desktop**: After making changes to the configuration, always restart Claude Desktop
diff --git a/website/src/pages/en/subgraphs/_meta-titles.json b/website/src/pages/en/subgraphs/_meta-titles.json
index f095d374344f..3fd405eed29a 100644
--- a/website/src/pages/en/subgraphs/_meta-titles.json
+++ b/website/src/pages/en/subgraphs/_meta-titles.json
@@ -2,6 +2,5 @@
   "querying": "Querying",
   "developing": "Developing",
   "guides": "How-to Guides",
-  "best-practices": "Best Practices",
-  "mcp": "MCP"
+  "best-practices": "Best Practices"
 }
diff --git a/website/src/pages/en/subgraphs/_meta.js b/website/src/pages/en/subgraphs/_meta.js
index 4365293ffc72..45841d5f3355 100644
--- a/website/src/pages/en/subgraphs/_meta.js
+++ b/website/src/pages/en/subgraphs/_meta.js
@@ -6,7 +6,6 @@ export default {
   querying: titles.querying ?? '',
   developing: titles.developing ?? '',
   billing: '',
-  mcp: titles.mcp ?? '',
   guides: titles.guides,
   'best-practices': titles['best-practices'],
   'fair-use-policy': '',
diff --git a/website/src/pages/en/token-api/_meta-titles.json b/website/src/pages/en/token-api/_meta-titles.json
index 7ed31e0af95d..b606a87808a1 100644
--- a/website/src/pages/en/token-api/_meta-titles.json
+++ b/website/src/pages/en/token-api/_meta-titles.json
@@ -1,5 +1,4 @@
 {
-  "mcp": "MCP",
   "evm": "EVM Endpoints",
   "monitoring": "Monitoring Endpoints",
   "faq": "FAQ"
diff --git a/website/src/pages/en/token-api/_meta.js b/website/src/pages/en/token-api/_meta.js
index f67576d7f612..39b28f89b7b4 100644
--- a/website/src/pages/en/token-api/_meta.js
+++ b/website/src/pages/en/token-api/_meta.js
@@ -2,7 +2,6 @@ import titles from './_meta-titles.json'
 
 export default {
   'quick-start': '',
-  mcp: titles.mcp ?? '',
   evm: titles.evm ?? '',
   monitoring: titles.monitoring ?? '',
   faq: '',

From 376c64c29cbf1a91b57461be4303e8e156cbc17f Mon Sep 17 00:00:00 2001
From: Idalith <126833353+idalithb@users.noreply.github.com>
Date: Fri, 27 Jun 2025 17:23:13 -0700
Subject: [PATCH 09/36] Removing SpS folder (#993)

* Removing SpS folder

* fixing file
---
 website/src/pages/ar/substreams/sps/_meta.js  |   6 -
 website/src/pages/ar/substreams/sps/faq.mdx   |  96 -----------
 .../pages/ar/substreams/sps/introduction.mdx  |  31 ----
 .../src/pages/ar/substreams/sps/triggers.mdx  |  47 ------
 .../src/pages/ar/substreams/sps/tutorial.mdx  | 155 ------------------
 website/src/pages/cs/substreams/sps/_meta.js  |   6 -
 website/src/pages/cs/substreams/sps/faq.mdx   |  96 -----------
 .../pages/cs/substreams/sps/introduction.mdx  |  31 ----
 .../src/pages/cs/substreams/sps/triggers.mdx  |  47 ------
 .../src/pages/cs/substreams/sps/tutorial.mdx  | 155 ------------------
 website/src/pages/de/substreams/sps/_meta.js  |   6 -
 website/src/pages/de/substreams/sps/faq.mdx   |  96 -----------
 .../pages/de/substreams/sps/introduction.mdx  |  31 ----
 .../src/pages/de/substreams/sps/triggers.mdx  |  47 ------
 .../src/pages/de/substreams/sps/tutorial.mdx  | 155 ------------------
 .../src/pages/en/substreams/_meta-titles.json |   3 +-
 website/src/pages/en/substreams/_meta.js      |   1 -
 website/src/pages/en/substreams/sps/_meta.js  |   6 -
 website/src/pages/en/substreams/sps/faq.mdx   |  96 -----------
 .../pages/en/substreams/sps/introduction.mdx  |  31 ----
 .../src/pages/en/substreams/sps/triggers.mdx  |  47 ------
 .../src/pages/en/substreams/sps/tutorial.mdx  | 154 -----------------
 website/src/pages/es/substreams/sps/_meta.js  |   6 -
 website/src/pages/es/substreams/sps/faq.mdx   |  96 -----------
 .../pages/es/substreams/sps/introduction.mdx  |  31 ----
 .../src/pages/es/substreams/sps/triggers.mdx  |  47 ------
 .../src/pages/es/substreams/sps/tutorial.mdx  | 155 ------------------
 website/src/pages/fr/substreams/sps/_meta.js  |   6 -
 website/src/pages/fr/substreams/sps/faq.mdx   |  96 -----------
 .../pages/fr/substreams/sps/introduction.mdx  |  31 ----
 .../src/pages/fr/substreams/sps/triggers.mdx  |  47 ------
 .../src/pages/fr/substreams/sps/tutorial.mdx  | 155 ------------------
 website/src/pages/hi/substreams/sps/_meta.js  |   6 -
 website/src/pages/hi/substreams/sps/faq.mdx   |  96 -----------
 .../pages/hi/substreams/sps/introduction.mdx  |  31 ----
 .../src/pages/hi/substreams/sps/triggers.mdx  |  47 ------
 .../src/pages/hi/substreams/sps/tutorial.mdx  | 155 ------------------
 website/src/pages/it/substreams/sps/_meta.js  |   6 -
 website/src/pages/it/substreams/sps/faq.mdx   |  96 -----------
 .../pages/it/substreams/sps/introduction.mdx  |  31 ----
 .../src/pages/it/substreams/sps/triggers.mdx  |  47 ------
 .../src/pages/it/substreams/sps/tutorial.mdx  | 155 ------------------
 website/src/pages/ja/substreams/sps/_meta.js  |   6 -
 website/src/pages/ja/substreams/sps/faq.mdx   |  96 -----------
 .../pages/ja/substreams/sps/introduction.mdx  |  31 ----
 .../src/pages/ja/substreams/sps/triggers.mdx  |  47 ------
 .../src/pages/ja/substreams/sps/tutorial.mdx  | 155 ------------------
 website/src/pages/ko/substreams/sps/_meta.js  |   6 -
 website/src/pages/ko/substreams/sps/faq.mdx   |  96 -----------
 .../pages/ko/substreams/sps/introduction.mdx  |  31 ----
 .../src/pages/ko/substreams/sps/triggers.mdx  |  47 ------
 .../src/pages/ko/substreams/sps/tutorial.mdx  | 155 ------------------
 website/src/pages/mr/substreams/sps/_meta.js  |   6 -
 website/src/pages/mr/substreams/sps/faq.mdx   |  96 -----------
 .../pages/mr/substreams/sps/introduction.mdx  |  31 ----
 .../src/pages/mr/substreams/sps/triggers.mdx  |  47 ------
 .../src/pages/mr/substreams/sps/tutorial.mdx  | 155 ------------------
 website/src/pages/nl/substreams/sps/_meta.js  |   6 -
 website/src/pages/nl/substreams/sps/faq.mdx   |  96 -----------
 .../pages/nl/substreams/sps/introduction.mdx  |  31 ----
 .../src/pages/nl/substreams/sps/triggers.mdx  |  47 ------
 .../src/pages/nl/substreams/sps/tutorial.mdx  | 155 ------------------
 website/src/pages/pl/substreams/sps/_meta.js  |   6 -
 website/src/pages/pl/substreams/sps/faq.mdx   |  96 -----------
 .../pages/pl/substreams/sps/introduction.mdx  |  31 ----
 .../src/pages/pl/substreams/sps/triggers.mdx  |  47 ------
 .../src/pages/pl/substreams/sps/tutorial.mdx  | 155 ------------------
 website/src/pages/pt/substreams/sps/_meta.js  |   6 -
 website/src/pages/pt/substreams/sps/faq.mdx   |  96 -----------
 .../pages/pt/substreams/sps/introduction.mdx  |  31 ----
 .../src/pages/pt/substreams/sps/triggers.mdx  |  47 ------
 .../src/pages/pt/substreams/sps/tutorial.mdx  | 137 ----------------
 website/src/pages/ro/substreams/sps/_meta.js  |   6 -
 website/src/pages/ro/substreams/sps/faq.mdx   |  96 -----------
 .../pages/ro/substreams/sps/introduction.mdx  |  31 ----
 .../src/pages/ro/substreams/sps/triggers.mdx  |  47 ------
 .../src/pages/ro/substreams/sps/tutorial.mdx  | 155 ------------------
 website/src/pages/ru/substreams/sps/_meta.js  |   6 -
 website/src/pages/ru/substreams/sps/faq.mdx   |  96 -----------
 .../pages/ru/substreams/sps/introduction.mdx  |  31 ----
 .../src/pages/ru/substreams/sps/triggers.mdx  |  47 ------
 .../src/pages/ru/substreams/sps/tutorial.mdx  | 154 -----------------
 website/src/pages/sv/substreams/sps/_meta.js  |   6 -
 website/src/pages/sv/substreams/sps/faq.mdx   |  96 -----------
 .../pages/sv/substreams/sps/introduction.mdx  |  31 ----
 .../src/pages/sv/substreams/sps/triggers.mdx  |  47 ------
 .../src/pages/sv/substreams/sps/tutorial.mdx  | 155 ------------------
 website/src/pages/tr/substreams/sps/_meta.js  |   6 -
 website/src/pages/tr/substreams/sps/faq.mdx   |  96 -----------
 .../pages/tr/substreams/sps/introduction.mdx  |  31 ----
 .../src/pages/tr/substreams/sps/triggers.mdx  |  47 ------
 .../src/pages/tr/substreams/sps/tutorial.mdx  | 155 ------------------
 website/src/pages/uk/substreams/sps/_meta.js  |   6 -
 website/src/pages/uk/substreams/sps/faq.mdx   |  96 -----------
 .../pages/uk/substreams/sps/introduction.mdx  |  31 ----
 .../src/pages/uk/substreams/sps/triggers.mdx  |  47 ------
 .../src/pages/uk/substreams/sps/tutorial.mdx  | 155 ------------------
 website/src/pages/ur/substreams/sps/_meta.js  |   6 -
 website/src/pages/ur/substreams/sps/faq.mdx   |  96 -----------
 .../pages/ur/substreams/sps/introduction.mdx  |  31 ----
 .../src/pages/ur/substreams/sps/triggers.mdx  |  47 ------
 .../src/pages/ur/substreams/sps/tutorial.mdx  | 155 ------------------
 website/src/pages/vi/substreams/sps/_meta.js  |   6 -
 website/src/pages/vi/substreams/sps/faq.mdx   |  96 -----------
 .../pages/vi/substreams/sps/introduction.mdx  |  31 ----
 .../src/pages/vi/substreams/sps/triggers.mdx  |  47 ------
 .../src/pages/vi/substreams/sps/tutorial.mdx  | 155 ------------------
 website/src/pages/zh/substreams/sps/_meta.js  |   6 -
 website/src/pages/zh/substreams/sps/faq.mdx   |  96 -----------
 .../pages/zh/substreams/sps/introduction.mdx  |  31 ----
 .../src/pages/zh/substreams/sps/triggers.mdx  |  47 ------
 .../src/pages/zh/substreams/sps/tutorial.mdx  | 155 ------------------
 112 files changed, 1 insertion(+), 7353 deletions(-)
 delete mode 100644 website/src/pages/ar/substreams/sps/_meta.js
 delete mode 100644 website/src/pages/ar/substreams/sps/faq.mdx
 delete mode 100644 website/src/pages/ar/substreams/sps/introduction.mdx
 delete mode 100644 website/src/pages/ar/substreams/sps/triggers.mdx
 delete mode 100644 website/src/pages/ar/substreams/sps/tutorial.mdx
 delete mode 100644 website/src/pages/cs/substreams/sps/_meta.js
 delete mode 100644 website/src/pages/cs/substreams/sps/faq.mdx
 delete mode 100644 website/src/pages/cs/substreams/sps/introduction.mdx
 delete mode 100644 website/src/pages/cs/substreams/sps/triggers.mdx
 delete mode 100644 website/src/pages/cs/substreams/sps/tutorial.mdx
 delete mode 100644 website/src/pages/de/substreams/sps/_meta.js
 delete mode 100644 website/src/pages/de/substreams/sps/faq.mdx
 delete mode 100644 website/src/pages/de/substreams/sps/introduction.mdx
 delete mode 100644 website/src/pages/de/substreams/sps/triggers.mdx
 delete mode 100644 website/src/pages/de/substreams/sps/tutorial.mdx
 delete mode 100644 website/src/pages/en/substreams/sps/_meta.js
 delete mode 100644 website/src/pages/en/substreams/sps/faq.mdx
 delete mode 100644 website/src/pages/en/substreams/sps/introduction.mdx
 delete mode 100644 website/src/pages/en/substreams/sps/triggers.mdx
 delete mode 100644 website/src/pages/en/substreams/sps/tutorial.mdx
 delete mode 100644 website/src/pages/es/substreams/sps/_meta.js
 delete mode 100644 website/src/pages/es/substreams/sps/faq.mdx
 delete mode 100644 website/src/pages/es/substreams/sps/introduction.mdx
 delete mode 100644 website/src/pages/es/substreams/sps/triggers.mdx
 delete mode 100644 website/src/pages/es/substreams/sps/tutorial.mdx
 delete mode 100644 website/src/pages/fr/substreams/sps/_meta.js
 delete mode 100644 website/src/pages/fr/substreams/sps/faq.mdx
 delete mode 100644 website/src/pages/fr/substreams/sps/introduction.mdx
 delete mode 100644 website/src/pages/fr/substreams/sps/triggers.mdx
 delete mode 100644 website/src/pages/fr/substreams/sps/tutorial.mdx
 delete mode 100644 website/src/pages/hi/substreams/sps/_meta.js
 delete mode 100644 website/src/pages/hi/substreams/sps/faq.mdx
 delete mode 100644 website/src/pages/hi/substreams/sps/introduction.mdx
 delete mode 100644 website/src/pages/hi/substreams/sps/triggers.mdx
 delete mode 100644 website/src/pages/hi/substreams/sps/tutorial.mdx
 delete mode 100644 website/src/pages/it/substreams/sps/_meta.js
 delete mode 100644 website/src/pages/it/substreams/sps/faq.mdx
 delete mode 100644 website/src/pages/it/substreams/sps/introduction.mdx
 delete mode 100644 website/src/pages/it/substreams/sps/triggers.mdx
 delete mode 100644 website/src/pages/it/substreams/sps/tutorial.mdx
 delete mode 100644 website/src/pages/ja/substreams/sps/_meta.js
 delete mode 100644 website/src/pages/ja/substreams/sps/faq.mdx
 delete mode 100644 website/src/pages/ja/substreams/sps/introduction.mdx
 delete mode 100644 website/src/pages/ja/substreams/sps/triggers.mdx
 delete mode 100644 website/src/pages/ja/substreams/sps/tutorial.mdx
 delete mode 100644 website/src/pages/ko/substreams/sps/_meta.js
 delete mode 100644 website/src/pages/ko/substreams/sps/faq.mdx
 delete mode 100644 website/src/pages/ko/substreams/sps/introduction.mdx
 delete mode 100644 website/src/pages/ko/substreams/sps/triggers.mdx
 delete mode 100644 website/src/pages/ko/substreams/sps/tutorial.mdx
 delete mode 100644 website/src/pages/mr/substreams/sps/_meta.js
 delete mode 100644 website/src/pages/mr/substreams/sps/faq.mdx
 delete mode 100644 website/src/pages/mr/substreams/sps/introduction.mdx
 delete mode 100644 website/src/pages/mr/substreams/sps/triggers.mdx
 delete mode 100644 website/src/pages/mr/substreams/sps/tutorial.mdx
 delete mode 100644 website/src/pages/nl/substreams/sps/_meta.js
 delete mode 100644 website/src/pages/nl/substreams/sps/faq.mdx
 delete mode 100644 website/src/pages/nl/substreams/sps/introduction.mdx
 delete mode 100644 website/src/pages/nl/substreams/sps/triggers.mdx
 delete mode 100644 website/src/pages/nl/substreams/sps/tutorial.mdx
 delete mode 100644 website/src/pages/pl/substreams/sps/_meta.js
 delete mode 100644 website/src/pages/pl/substreams/sps/faq.mdx
 delete mode 100644 website/src/pages/pl/substreams/sps/introduction.mdx
 delete mode 100644 website/src/pages/pl/substreams/sps/triggers.mdx
 delete mode 100644 website/src/pages/pl/substreams/sps/tutorial.mdx
 delete mode 100644 website/src/pages/pt/substreams/sps/_meta.js
 delete mode 100644 website/src/pages/pt/substreams/sps/faq.mdx
 delete mode 100644 website/src/pages/pt/substreams/sps/introduction.mdx
 delete mode 100644 website/src/pages/pt/substreams/sps/triggers.mdx
 delete mode 100644 website/src/pages/pt/substreams/sps/tutorial.mdx
 delete mode 100644 website/src/pages/ro/substreams/sps/_meta.js
 delete mode 100644 website/src/pages/ro/substreams/sps/faq.mdx
 delete mode 100644 website/src/pages/ro/substreams/sps/introduction.mdx
 delete mode 100644 website/src/pages/ro/substreams/sps/triggers.mdx
 delete mode 100644 website/src/pages/ro/substreams/sps/tutorial.mdx
 delete mode 100644 website/src/pages/ru/substreams/sps/_meta.js
 delete mode 100644 website/src/pages/ru/substreams/sps/faq.mdx
 delete mode 100644 website/src/pages/ru/substreams/sps/introduction.mdx
 delete mode 100644 website/src/pages/ru/substreams/sps/triggers.mdx
 delete mode 100644 website/src/pages/ru/substreams/sps/tutorial.mdx
 delete mode 100644 website/src/pages/sv/substreams/sps/_meta.js
 delete mode 100644 website/src/pages/sv/substreams/sps/faq.mdx
 delete mode 100644 website/src/pages/sv/substreams/sps/introduction.mdx
 delete mode 100644 website/src/pages/sv/substreams/sps/triggers.mdx
 delete mode 100644 website/src/pages/sv/substreams/sps/tutorial.mdx
 delete mode 100644 website/src/pages/tr/substreams/sps/_meta.js
 delete mode 100644 website/src/pages/tr/substreams/sps/faq.mdx
 delete mode 100644 website/src/pages/tr/substreams/sps/introduction.mdx
 delete mode 100644 website/src/pages/tr/substreams/sps/triggers.mdx
 delete mode 100644 website/src/pages/tr/substreams/sps/tutorial.mdx
 delete mode 100644 website/src/pages/uk/substreams/sps/_meta.js
 delete mode 100644 website/src/pages/uk/substreams/sps/faq.mdx
 delete mode 100644 website/src/pages/uk/substreams/sps/introduction.mdx
 delete mode 100644 website/src/pages/uk/substreams/sps/triggers.mdx
 delete mode 100644 website/src/pages/uk/substreams/sps/tutorial.mdx
 delete mode 100644 website/src/pages/ur/substreams/sps/_meta.js
 delete mode 100644 website/src/pages/ur/substreams/sps/faq.mdx
 delete mode 100644 website/src/pages/ur/substreams/sps/introduction.mdx
 delete mode 100644 website/src/pages/ur/substreams/sps/triggers.mdx
 delete mode 100644 website/src/pages/ur/substreams/sps/tutorial.mdx
 delete mode 100644 website/src/pages/vi/substreams/sps/_meta.js
 delete mode 100644 website/src/pages/vi/substreams/sps/faq.mdx
 delete mode 100644 website/src/pages/vi/substreams/sps/introduction.mdx
 delete mode 100644 website/src/pages/vi/substreams/sps/triggers.mdx
 delete mode 100644 website/src/pages/vi/substreams/sps/tutorial.mdx
 delete mode 100644 website/src/pages/zh/substreams/sps/_meta.js
 delete mode 100644 website/src/pages/zh/substreams/sps/faq.mdx
 delete mode 100644 website/src/pages/zh/substreams/sps/introduction.mdx
 delete mode 100644 website/src/pages/zh/substreams/sps/triggers.mdx
 delete mode 100644 website/src/pages/zh/substreams/sps/tutorial.mdx

diff --git a/website/src/pages/ar/substreams/sps/_meta.js b/website/src/pages/ar/substreams/sps/_meta.js
deleted file mode 100644
index 86fcd3df5ec0..000000000000
--- a/website/src/pages/ar/substreams/sps/_meta.js
+++ /dev/null
@@ -1,6 +0,0 @@
-export default {
-  introduction: '',
-  triggers: '',
-  tutorial: '',
-  faq: '',
-}
diff --git a/website/src/pages/ar/substreams/sps/faq.mdx b/website/src/pages/ar/substreams/sps/faq.mdx
deleted file mode 100644
index c19b0a950297..000000000000
--- a/website/src/pages/ar/substreams/sps/faq.mdx
+++ /dev/null
@@ -1,96 +0,0 @@
----
-title: Substreams-Powered Subgraphs FAQ
-sidebarTitle: FAQ
----
-
-## What are Substreams?
-
-Substreams is an exceptionally powerful processing engine capable of consuming rich streams of blockchain data. It allows you to refine and shape blockchain data for fast and seamless digestion by end-user applications.
-
-Specifically, it's a blockchain-agnostic, parallelized, and streaming-first engine that serves as a blockchain data transformation layer. It's powered by [Firehose](https://firehose.streamingfast.io/), and enables developers to write Rust modules, build upon community modules, provide extremely high-performance indexing, and [sink](/substreams/developing/sinks/) their data anywhere.
-
-Substreams is developed by [StreamingFast](https://www.streamingfast.io/). Visit the [Substreams Documentation](/substreams/introduction/) to learn more about Substreams.
-
-## What are Substreams-powered Subgraphs?
-
-[Substreams-powered Subgraphs](/sps/introduction/) combine the power of Substreams with the queryability of Subgraphs. When publishing a Substreams-powered Subgraph, the data produced by the Substreams transformations, can [output entity changes](https://github.com/streamingfast/substreams-sink-entity-changes/blob/develop/substreams-entity-change/src/tables.rs) that are compatible with Subgraph entities.
-
-If you are already familiar with Subgraph development, note that Substreams-powered Subgraphs can then be queried just as if it had been produced by the AssemblyScript transformation layer. This provides all the benefits of Subgraphs, including a dynamic and flexible GraphQL API.
-
-## How are Substreams-powered Subgraphs different from Subgraphs?
-
-Subgraphs are made up of datasources which specify onchain events, and how those events should be transformed via handlers written in Assemblyscript. These events are processed sequentially, based on the order in which events happen onchain.
-
-By contrast, substreams-powered Subgraphs have a single datasource which references a substreams package, which is processed by the Graph Node. Substreams have access to additional granular onchain data compared to conventional Subgraphs, and can also benefit from massively parallelised processing, which can mean much faster processing times.
-
-## What are the benefits of using Substreams-powered Subgraphs?
-
-Substreams-powered Subgraphs combine all the benefits of Substreams with the queryability of Subgraphs. They bring greater composability and high-performance indexing to The Graph. They also enable new data use cases; for example, once you've built your Substreams-powered Subgraph, you can reuse your [Substreams modules](https://docs.substreams.dev/reference-material/substreams-components/modules#modules) to output to different [sinks](https://substreams.streamingfast.io/reference-and-specs/manifests#sink) such as PostgreSQL, MongoDB, and Kafka.
-
-## ماهي فوائد سبستريمز؟
-
-There are many benefits to using Substreams, including:
-
-- Composable: You can stack Substreams modules like LEGO blocks, and build upon community modules, further refining public data.
-
-- High-performance indexing: Orders of magnitude faster indexing through large-scale clusters of parallel operations (think BigQuery).
-
-- Sink anywhere: Sink your data to anywhere you want: PostgreSQL, MongoDB, Kafka, Subgraphs, flat files, Google Sheets.
-
-- Programmable: Use code to customize extraction, do transformation-time aggregations, and model your output for multiple sinks.
-
-- الوصول إلى بيانات إضافية غير متاحة كجزء من إجراء الإستدعاء عن بعد للترميز الكائني لجافاسكريبت
-
-- All the benefits of the Firehose.
-
-## What is the Firehose?
-
-تم تطوير فايرهوز بواسطة [StreamingFast] (https://www.streamingfast.io/) وهو طبقة استخراج بيانات سلاسل الكتل مصممة من الصفر لمعالجة كامل تاريخ سلاسل الكتل بسرعات لم يشهدها من قبل. يوفر نهجاً قائماً على الملفات وأولوية-التدفق، وهو مكون أساسي في مجموعة تقنيات ستريمنج فاست مفتوحة المصدر والأساس لسبستريمز.
-
-انتقل إلى [الوثائق](https://firehose.streamingfast.io/) لمعرفة المزيد حول فايرهوز.
-
-## What are the benefits of the Firehose?
-
-There are many benefits to using Firehose, including:
-
-- أقل تأخير وعدم الاستقصاء: بطريقة قائمة على أولوية-التدفق، تم تصميم نقاط فايرهوز للتسابق لدفع بيانات الكتلة أولاً.
-
-- Prevents downtimes: Designed from the ground up for High Availability.
-
-- Never miss a beat: The Firehose stream cursor is designed to handle forks and to continue where you left off in any condition.
-
-- Richest data model:  Best data model that includes the balance changes, the full call tree, internal transactions, logs, storage changes, gas costs, and more.
-
-- يستفيد من الملفات المسطحة: يتم استخراج بيانات سلسلة الكتل إلى ملفات مسطحة، وهي أرخص وأكثر موارد الحوسبة تحسيناً.
-
-## Where can developers access more information about Substreams-powered Subgraphs and Substreams?
-
-The [Substreams documentation](/substreams/introduction/) will teach you how to build Substreams modules.
-
-The [Substreams-powered Subgraphs documentation](/sps/introduction/) will show you how to package them for deployment on The Graph.
-
-The [latest Substreams Codegen tool](https://streamingfastio.medium.com/substreams-codegen-no-code-tool-to-bootstrap-your-project-a11efe0378c6) will allow you to bootstrap a Substreams project without any code.
-
-## What is the role of Rust modules in Substreams?
-
-Rust modules are the equivalent of the AssemblyScript mappers in Subgraphs. They are compiled to WASM in a similar way, but the programming model allows for parallel execution. They define the sort of transformations and aggregations you want to apply to the raw blockchain data.
-
-See [modules documentation](https://docs.substreams.dev/reference-material/substreams-components/modules#modules) for details.
-
-## What makes Substreams composable?
-
-When using Substreams, the composition happens at the transformation layer enabling cached modules to be re-used.
-
-As an example, Alice can build a DEX price module, Bob can use it to build a volume aggregator for some tokens of his interest, and Lisa can combine four individual DEX price modules to create a price oracle. A single Substreams request will package all of these individual's modules, link them together, to offer a much more refined stream of data. That stream can then be used to populate a Subgraph, and be queried by consumers.
-
-## كيف يمكنك إنشاء ونشر غراف فرعي مدعوم بسبستريمز؟
-
-After [defining](/sps/introduction/) a Substreams-powered Subgraph, you can use the Graph CLI to deploy it in [Subgraph Studio](https://thegraph.com/studio/).
-
-## Where can I find examples of Substreams and Substreams-powered Subgraphs?
-
-You can visit [this Github repo](https://github.com/pinax-network/awesome-substreams) to find examples of Substreams and Substreams-powered Subgraphs.
-
-## What do Substreams and Substreams-powered Subgraphs mean for The Graph Network?
-
-إن التكامل مع سبستريمز والغرافات الفرعية المدعومة بسبستريمز واعدة بالعديد من الفوائد، بما في ذلك عمليات فهرسة عالية الأداء وقابلية أكبر للتركيبية من خلال استخدام وحدات المجتمع والبناء عليها.
diff --git a/website/src/pages/ar/substreams/sps/introduction.mdx b/website/src/pages/ar/substreams/sps/introduction.mdx
deleted file mode 100644
index e74abf2f0998..000000000000
--- a/website/src/pages/ar/substreams/sps/introduction.mdx
+++ /dev/null
@@ -1,31 +0,0 @@
----
-title: Introduction to Substreams-Powered Subgraphs
-sidebarTitle: مقدمة
----
-
-Boost your Subgraph's efficiency and scalability by using [Substreams](/substreams/introduction/) to stream pre-indexed blockchain data.
-
-## نظره عامة
-
-Use a Substreams package (`.spkg`) as a data source to give your Subgraph access to a stream of pre-indexed blockchain data. This enables more efficient and scalable data handling, especially with large or complex blockchain networks.
-
-### Specifics
-
-There are two methods of enabling this technology:
-
-1. **Using Substreams [triggers](/sps/triggers/)**: Consume from any Substreams module by importing the Protobuf model through a Subgraph handler and move all your logic into a Subgraph. This method creates the Subgraph entities directly in the Subgraph.
-
-2. **Using [Entity Changes](https://docs.substreams.dev/how-to-guides/sinks/subgraph/graph-out)**: By writing more of the logic into Substreams, you can consume the module's output directly into [graph-node](/indexing/tooling/graph-node/). In graph-node, you can use the Substreams data to create your Subgraph entities.
-
-You can choose where to place your logic, either in the Subgraph or Substreams. However, consider what aligns with your data needs, as Substreams has a parallelized model, and triggers are consumed linearly in the graph node.
-
-### مصادر إضافية
-
-Visit the following links for tutorials on using code-generation tooling to build your first end-to-end Substreams project quickly:
-
-- [Solana](/substreams/developing/solana/transactions/)
-- [EVM](https://docs.substreams.dev/tutorials/intro-to-tutorials/evm)
-- [Starknet](https://docs.substreams.dev/tutorials/intro-to-tutorials/starknet)
-- [Injective](https://docs.substreams.dev/tutorials/intro-to-tutorials/on-cosmos/injective)
-- [MANTRA](https://docs.substreams.dev/tutorials/intro-to-tutorials/on-cosmos/mantra)
-- [Stellar](https://docs.substreams.dev/tutorials/intro-to-tutorials/stellar)
diff --git a/website/src/pages/ar/substreams/sps/triggers.mdx b/website/src/pages/ar/substreams/sps/triggers.mdx
deleted file mode 100644
index 1bf1a2cf3f51..000000000000
--- a/website/src/pages/ar/substreams/sps/triggers.mdx
+++ /dev/null
@@ -1,47 +0,0 @@
----
-title: Substreams Triggers
----
-
-Use Custom Triggers and enable the full use GraphQL.
-
-## نظره عامة
-
-Custom Triggers allow you to send data directly into your Subgraph mappings file and entities, which are similar to tables and fields. This enables you to fully use the GraphQL layer.
-
-By importing the Protobuf definitions emitted by your Substreams module, you can receive and process this data in your Subgraph's handler. This ensures efficient and streamlined data management within the Subgraph framework.
-
-### Defining `handleTransactions`
-
-The following code demonstrates how to define a `handleTransactions` function in a Subgraph handler. This function receives raw Substreams bytes as a parameter and decodes them into a `Transactions` object. For each transaction, a new Subgraph entity is created.
-
-```tsx
-export function handleTransactions(bytes: Uint8Array): void {
-  let transactions = assembly.eth.transaction.v1.Transactions.decode(bytes.buffer).transactions // 1.
-  if (transactions.length == 0) {
-    log.info('No transactions found', [])
-    return
-  }
-
-  for (let i = 0; i < transactions.length; i++) {
-    // 2.
-    let transaction = transactions[i]
-
-    let entity = new Transaction(transaction.hash) // 3.
-    entity.from = transaction.from
-    entity.to = transaction.to
-    entity.save()
-  }
-}
-```
-
-Here's what you're seeing in the `mappings.ts` file:
-
-1. The bytes containing Substreams data are decoded into the generated `Transactions` object, this object is used like any other AssemblyScript object
-2. Looping over the transactions
-3. Create a new Subgraph entity for every transaction
-
-To go through a detailed example of a trigger-based Subgraph, [check out the tutorial](/sps/tutorial/).
-
-### مصادر إضافية
-
-To scaffold your first project in the Development Container, check out one of the [How-To Guide](/substreams/developing/dev-container/).
diff --git a/website/src/pages/ar/substreams/sps/tutorial.mdx b/website/src/pages/ar/substreams/sps/tutorial.mdx
deleted file mode 100644
index c41b10d885cd..000000000000
--- a/website/src/pages/ar/substreams/sps/tutorial.mdx
+++ /dev/null
@@ -1,155 +0,0 @@
----
-title: 'Tutorial: Set Up a Substreams-Powered Subgraph on Solana'
-sidebarTitle: Tutorial
----
-
-Successfully set up a trigger-based Substreams-powered Subgraph for a Solana SPL token.
-
-## Get Started
-
-For a video tutorial, check out [How to Index Solana with a Substreams-powered Subgraph](/sps/tutorial/#video-tutorial)
-
-### Prerequisites
-
-Before starting, make sure to:
-
-- Complete the [Getting Started Guide](https://github.com/streamingfast/substreams-starter) to set up your development environment using a Dev Container.
-- Be familiar with The Graph and basic blockchain concepts such as transactions and Protobufs.
-
-### Step 1: Initialize Your Project
-
-1. Open your Dev Container and run the following command to initialize your project:
-
-   ```bash
-   substreams init
-   ```
-
-2. Select the "minimal" project option.
-
-3. Replace the contents of the generated `substreams.yaml` file with the following configuration, which filters transactions for the Orca account on the SPL token program ID:
-
-```yaml
-specVersion: v0.1.0
-package:
-  name: my_project_sol
-  version: v0.1.0
-
-imports: # Pass your spkg of interest
-  solana: https://github.com/streamingfast/substreams-solana-spl-token/raw/master/tokens/solana-spl-token-v0.1.0.spkg
-
-modules:
-  - name: map_spl_transfers
-    use: solana:map_block # Select corresponding modules available within your spkg
-    initialBlock: 260000082
-
-  - name: map_transactions_by_programid
-    use: solana:solana:transactions_by_programid_without_votes
-
-network: solana-mainnet-beta
-
-params: # Modify the param fields to meet your needs
-  # For program_id: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
-  map_spl_transfers: token_contract:orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE
-```
-
-### Step 2: Generate the Subgraph Manifest
-
-Once the project is initialized, generate a Subgraph manifest by running the following command in the Dev Container:
-
-```bash
-substreams codegen subgraph
-```
-
-You will generate a`subgraph.yaml` manifest which imports the Substreams package as a data source:
-
-```yaml
----
-dataSources:
-  - kind: substreams
-    name: my_project_sol
-    network: solana-mainnet-beta
-    source:
-      package:
-        moduleName: map_spl_transfers # Module defined in the substreams.yaml
-        file: ./my-project-sol-v0.1.0.spkg
-    mapping:
-      apiVersion: 0.0.9
-      kind: substreams/graph-entities
-      file: ./src/mappings.ts
-      handler: handleTriggers
-```
-
-### Step 3: Define Entities in `schema.graphql`
-
-Define the fields you want to save in your Subgraph entities by updating the `schema.graphql` file.
-
-Here is an example:
-
-```graphql
-type MyTransfer @entity {
-  id: ID!
-  amount: String!
-  source: String!
-  designation: String!
-  signers: [String!]!
-}
-```
-
-This schema defines a `MyTransfer` entity with fields such as `id`, `amount`, `source`, `designation`, and `signers`.
-
-### Step 4: Handle Substreams Data in `mappings.ts`
-
-With the Protobuf objects generated, you can now handle the decoded Substreams data in your `mappings.ts` file found in the `./src` directory.
-
-The example below demonstrates how to extract to Subgraph entities the non-derived transfers associated to the Orca account id:
-
-```ts
-import { Protobuf } from 'as-proto/assembly'
-import { Events as protoEvents } from './pb/sf/solana/spl/token/v1/Events'
-import { MyTransfer } from '../generated/schema'
-
-export function handleTriggers(bytes: Uint8Array): void {
-  const input: protoEvents = Protobuf.decode<protoEvents>(bytes, protoEvents.decode)
-
-  for (let i = 0; i < input.data.length; i++) {
-    const event = input.data[i]
-
-    if (event.transfer != null) {
-      let entity_id: string = `${event.txnId}-${i}`
-      const entity = new MyTransfer(entity_id)
-      entity.amount = event.transfer!.instruction!.amount.toString()
-      entity.source = event.transfer!.accounts!.source
-      entity.designation = event.transfer!.accounts!.destination
-
-      if (event.transfer!.accounts!.signer!.single != null) {
-        entity.signers = [event.transfer!.accounts!.signer!.single!.signer]
-      } else if (event.transfer!.accounts!.signer!.multisig != null) {
-        entity.signers = event.transfer!.accounts!.signer!.multisig!.signers
-      }
-      entity.save()
-    }
-  }
-}
-```
-
-### Step 5: Generate Protobuf Files
-
-To generate Protobuf objects in AssemblyScript, run the following command:
-
-```bash
-npm run protogen
-```
-
-This command converts the Protobuf definitions into AssemblyScript, allowing you to use them in the Subgraph's handler.
-
-### Conclusion
-
-Congratulations! You've successfully set up a trigger-based Substreams-powered Subgraph for a Solana SPL token. You can take the next step by customizing your schema, mappings, and modules to fit your specific use case.
-
-### Video Tutorial
-
-<VideoEmbed title="How to Index Solana with a Substreams-powered Subgraph" youtube="RmKi-Nq9E_A" />
-
-### مصادر إضافية
-
-For more advanced customization and optimizations, check out the official [Substreams documentation](https://substreams.streamingfast.io/tutorials/solana).
diff --git a/website/src/pages/cs/substreams/sps/_meta.js b/website/src/pages/cs/substreams/sps/_meta.js
deleted file mode 100644
index 86fcd3df5ec0..000000000000
--- a/website/src/pages/cs/substreams/sps/_meta.js
+++ /dev/null
@@ -1,6 +0,0 @@
-export default {
-  introduction: '',
-  triggers: '',
-  tutorial: '',
-  faq: '',
-}
diff --git a/website/src/pages/cs/substreams/sps/faq.mdx b/website/src/pages/cs/substreams/sps/faq.mdx
deleted file mode 100644
index 25e77dc3c7f1..000000000000
--- a/website/src/pages/cs/substreams/sps/faq.mdx
+++ /dev/null
@@ -1,96 +0,0 @@
----
-title: Substreams-Powered Subgraphs FAQ
-sidebarTitle: FAQ
----
-
-## Co jsou substreamu?
-
-Substreams is an exceptionally powerful processing engine capable of consuming rich streams of blockchain data. It allows you to refine and shape blockchain data for fast and seamless digestion by end-user applications.
-
-Specifically, it's a blockchain-agnostic, parallelized, and streaming-first engine that serves as a blockchain data transformation layer. It's powered by [Firehose](https://firehose.streamingfast.io/), and enables developers to write Rust modules, build upon community modules, provide extremely high-performance indexing, and [sink](/substreams/developing/sinks/) their data anywhere.
-
-Substreams is developed by [StreamingFast](https://www.streamingfast.io/). Visit the [Substreams Documentation](/substreams/introduction/) to learn more about Substreams.
-
-## What are Substreams-powered Subgraphs?
-
-[Substreams-powered Subgraphs](/sps/introduction/) combine the power of Substreams with the queryability of Subgraphs. When publishing a Substreams-powered Subgraph, the data produced by the Substreams transformations, can [output entity changes](https://github.com/streamingfast/substreams-sink-entity-changes/blob/develop/substreams-entity-change/src/tables.rs) that are compatible with Subgraph entities.
-
-If you are already familiar with Subgraph development, note that Substreams-powered Subgraphs can then be queried just as if it had been produced by the AssemblyScript transformation layer. This provides all the benefits of Subgraphs, including a dynamic and flexible GraphQL API.
-
-## How are Substreams-powered Subgraphs different from Subgraphs?
-
-Subgraphs are made up of datasources which specify onchain events, and how those events should be transformed via handlers written in Assemblyscript. These events are processed sequentially, based on the order in which events happen onchain.
-
-By contrast, substreams-powered Subgraphs have a single datasource which references a substreams package, which is processed by the Graph Node. Substreams have access to additional granular onchain data compared to conventional Subgraphs, and can also benefit from massively parallelised processing, which can mean much faster processing times.
-
-## What are the benefits of using Substreams-powered Subgraphs?
-
-Substreams-powered Subgraphs combine all the benefits of Substreams with the queryability of Subgraphs. They bring greater composability and high-performance indexing to The Graph. They also enable new data use cases; for example, once you've built your Substreams-powered Subgraph, you can reuse your [Substreams modules](https://docs.substreams.dev/reference-material/substreams-components/modules#modules) to output to different [sinks](https://substreams.streamingfast.io/reference-and-specs/manifests#sink) such as PostgreSQL, MongoDB, and Kafka.
-
-## Jaké jsou výhody Substreams?
-
-Používání ubstreams má mnoho výhod, mimo jiné:
-
-- Složitelný: Moduly Substreams můžete skládat na sebe jako kostky LEGO, stavět na komunitních moduly a dále vylepšovat veřejná data.
-
-- Vysoce výkonné indexování: Řádově rychlejší indexování prostřednictvím rozsáhlých klastrů paralelních operací (viz BigQuery).
-
-- Sink anywhere: Sink your data to anywhere you want: PostgreSQL, MongoDB, Kafka, Subgraphs, flat files, Google Sheets.
-
-- Programovatelné: Pomocí kódu můžete přizpůsobit extrakci, provádět agregace v čase transformace a modelovat výstup pro více zdrojů.
-
-- Přístup k dalším údajům, které nejsou k dispozici jako součást JSON RPC
-
-- Všechny výhody Firehose.
-
-## Co je Firehose?
-
-Firehose, vyvinutý společností [StreamingFast](https://www.streamingfast.io/), je vrstva pro extrakci dat z blockchainu, která byla od základu navržena tak, aby zpracovávala celou historii blockchainu dosud nevídanou rychlostí. Poskytuje přístup založený na souborech a streamování v první řadě a je klíčovou součástí sady open-source technologií StreamingFast a základem pro Substreams.
-
-Další informace o Firehose najdete v [dokumentaci](https://firehose.streamingfast.io/).
-
-## Jaké jsou výhody Firehose?
-
-Používání Firehose přináší mnoho výhod, včetně:
-
-- Nejnižší latence a žádné dotazování: Uzly Firehose jsou navrženy tak, aby se předháněly v odesílání blokových dat jako první.
-
-- Předchází výpadkům: Navrženo od základu pro vysokou dostupnost.
-
-- Nikdy nezmeškáte ani minutu: Proudový kurzor Firehose je navržen tak, aby si poradil s rozcestími a pokračoval tam, kde jste skončili, za jakýchkoli podmínek.
-
-- Nejbohatší datový model:  Nejlepší datový model, který zahrnuje změny zůstatku, celý strom volání, interní transakce, protokoly, změny v úložišti, náklady na plyn a další.
-
-- Využívá ploché soubory: Blockchain data jsou extrahována do plochých souborů, což je nejlevnější a nejoptimálnější dostupný výpočetní zdroj.
-
-## Where can developers access more information about Substreams-powered Subgraphs and Substreams?
-
-The [Substreams documentation](/substreams/introduction/) will teach you how to build Substreams modules.
-
-The [Substreams-powered Subgraphs documentation](/sps/introduction/) will show you how to package them for deployment on The Graph.
-
-The [latest Substreams Codegen tool](https://streamingfastio.medium.com/substreams-codegen-no-code-tool-to-bootstrap-your-project-a11efe0378c6) will allow you to bootstrap a Substreams project without any code.
-
-## Jaká je role modulů Rust v Substreamu?
-
-Rust modules are the equivalent of the AssemblyScript mappers in Subgraphs. They are compiled to WASM in a similar way, but the programming model allows for parallel execution. They define the sort of transformations and aggregations you want to apply to the raw blockchain data.
-
-See [modules documentation](https://docs.substreams.dev/reference-material/substreams-components/modules#modules) for details.
-
-## Co dělá Substreamy složitelnými?
-
-Při použití substreamů probíhá kompozice na transformační vrstvě, což umožňuje opakované použití modulů uložených v mezipaměti.
-
-As an example, Alice can build a DEX price module, Bob can use it to build a volume aggregator for some tokens of his interest, and Lisa can combine four individual DEX price modules to create a price oracle. A single Substreams request will package all of these individual's modules, link them together, to offer a much more refined stream of data. That stream can then be used to populate a Subgraph, and be queried by consumers.
-
-## Jak můžete vytvořit a nasadit Substreams využívající podgraf?
-
-After [defining](/sps/introduction/) a Substreams-powered Subgraph, you can use the Graph CLI to deploy it in [Subgraph Studio](https://thegraph.com/studio/).
-
-## Where can I find examples of Substreams and Substreams-powered Subgraphs?
-
-You can visit [this Github repo](https://github.com/pinax-network/awesome-substreams) to find examples of Substreams and Substreams-powered Subgraphs.
-
-## What do Substreams and Substreams-powered Subgraphs mean for The Graph Network?
-
-Integrace slibuje mnoho výhod, včetně extrémně výkonného indexování a větší složitelnosti díky využití komunitních modulů a stavění na nich.
diff --git a/website/src/pages/cs/substreams/sps/introduction.mdx b/website/src/pages/cs/substreams/sps/introduction.mdx
deleted file mode 100644
index 4938d23102e4..000000000000
--- a/website/src/pages/cs/substreams/sps/introduction.mdx
+++ /dev/null
@@ -1,31 +0,0 @@
----
-title: Introduction to Substreams-Powered Subgraphs
-sidebarTitle: Úvod
----
-
-Boost your Subgraph's efficiency and scalability by using [Substreams](/substreams/introduction/) to stream pre-indexed blockchain data.
-
-## Přehled
-
-Use a Substreams package (`.spkg`) as a data source to give your Subgraph access to a stream of pre-indexed blockchain data. This enables more efficient and scalable data handling, especially with large or complex blockchain networks.
-
-### Specifics
-
-There are two methods of enabling this technology:
-
-1. **Using Substreams [triggers](/sps/triggers/)**: Consume from any Substreams module by importing the Protobuf model through a Subgraph handler and move all your logic into a Subgraph. This method creates the Subgraph entities directly in the Subgraph.
-
-2. **Using [Entity Changes](https://docs.substreams.dev/how-to-guides/sinks/subgraph/graph-out)**: By writing more of the logic into Substreams, you can consume the module's output directly into [graph-node](/indexing/tooling/graph-node/). In graph-node, you can use the Substreams data to create your Subgraph entities.
-
-You can choose where to place your logic, either in the Subgraph or Substreams. However, consider what aligns with your data needs, as Substreams has a parallelized model, and triggers are consumed linearly in the graph node.
-
-### Další zdroje
-
-Visit the following links for tutorials on using code-generation tooling to build your first end-to-end Substreams project quickly:
-
-- [Solana](/substreams/developing/solana/transactions/)
-- [EVM](https://docs.substreams.dev/tutorials/intro-to-tutorials/evm)
-- [Starknet](https://docs.substreams.dev/tutorials/intro-to-tutorials/starknet)
-- [Injective](https://docs.substreams.dev/tutorials/intro-to-tutorials/on-cosmos/injective)
-- [MANTRA](https://docs.substreams.dev/tutorials/intro-to-tutorials/on-cosmos/mantra)
-- [Stellar](https://docs.substreams.dev/tutorials/intro-to-tutorials/stellar)
diff --git a/website/src/pages/cs/substreams/sps/triggers.mdx b/website/src/pages/cs/substreams/sps/triggers.mdx
deleted file mode 100644
index b0c4bea23f3d..000000000000
--- a/website/src/pages/cs/substreams/sps/triggers.mdx
+++ /dev/null
@@ -1,47 +0,0 @@
----
-title: Substreams Triggers
----
-
-Use Custom Triggers and enable the full use GraphQL.
-
-## Přehled
-
-Custom Triggers allow you to send data directly into your Subgraph mappings file and entities, which are similar to tables and fields. This enables you to fully use the GraphQL layer.
-
-By importing the Protobuf definitions emitted by your Substreams module, you can receive and process this data in your Subgraph's handler. This ensures efficient and streamlined data management within the Subgraph framework.
-
-### Defining `handleTransactions`
-
-The following code demonstrates how to define a `handleTransactions` function in a Subgraph handler. This function receives raw Substreams bytes as a parameter and decodes them into a `Transactions` object. For each transaction, a new Subgraph entity is created.
-
-```tsx
-export function handleTransactions(bytes: Uint8Array): void {
-  let transactions = assembly.eth.transaction.v1.Transactions.decode(bytes.buffer).transactions // 1.
-  if (transactions.length == 0) {
-    log.info('No transactions found', [])
-    return
-  }
-
-  for (let i = 0; i < transactions.length; i++) {
-    // 2.
-    let transaction = transactions[i]
-
-    let entity = new Transaction(transaction.hash) // 3.
-    entity.from = transaction.from
-    entity.to = transaction.to
-    entity.save()
-  }
-}
-```
-
-Here's what you're seeing in the `mappings.ts` file:
-
-1. The bytes containing Substreams data are decoded into the generated `Transactions` object, this object is used like any other AssemblyScript object
-2. Looping over the transactions
-3. Create a new Subgraph entity for every transaction
-
-To go through a detailed example of a trigger-based Subgraph, [check out the tutorial](/sps/tutorial/).
-
-### Další zdroje
-
-To scaffold your first project in the Development Container, check out one of the [How-To Guide](/substreams/developing/dev-container/).
diff --git a/website/src/pages/cs/substreams/sps/tutorial.mdx b/website/src/pages/cs/substreams/sps/tutorial.mdx
deleted file mode 100644
index 67d564483af1..000000000000
--- a/website/src/pages/cs/substreams/sps/tutorial.mdx
+++ /dev/null
@@ -1,155 +0,0 @@
----
-title: 'Tutorial: Set Up a Substreams-Powered Subgraph on Solana'
-sidebarTitle: Tutorial
----
-
-Successfully set up a trigger-based Substreams-powered Subgraph for a Solana SPL token.
-
-## Začněte
-
-For a video tutorial, check out [How to Index Solana with a Substreams-powered Subgraph](/sps/tutorial/#video-tutorial)
-
-### Prerequisites
-
-Before starting, make sure to:
-
-- Complete the [Getting Started Guide](https://github.com/streamingfast/substreams-starter) to set up your development environment using a Dev Container.
-- Be familiar with The Graph and basic blockchain concepts such as transactions and Protobufs.
-
-### Step 1: Initialize Your Project
-
-1. Open your Dev Container and run the following command to initialize your project:
-
-   ```bash
-   substreams init
-   ```
-
-2. Select the "minimal" project option.
-
-3. Replace the contents of the generated `substreams.yaml` file with the following configuration, which filters transactions for the Orca account on the SPL token program ID:
-
-```yaml
-specVersion: v0.1.0
-package:
-  name: my_project_sol
-  version: v0.1.0
-
-imports: # Pass your spkg of interest
-  solana: https://github.com/streamingfast/substreams-solana-spl-token/raw/master/tokens/solana-spl-token-v0.1.0.spkg
-
-modules:
-  - name: map_spl_transfers
-    use: solana:map_block # Select corresponding modules available within your spkg
-    initialBlock: 260000082
-
-  - name: map_transactions_by_programid
-    use: solana:solana:transactions_by_programid_without_votes
-
-network: solana-mainnet-beta
-
-params: # Modify the param fields to meet your needs
-  # For program_id: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
-  map_spl_transfers: token_contract:orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE
-```
-
-### Step 2: Generate the Subgraph Manifest
-
-Once the project is initialized, generate a Subgraph manifest by running the following command in the Dev Container:
-
-```bash
-substreams codegen subgraph
-```
-
-You will generate a`subgraph.yaml` manifest which imports the Substreams package as a data source:
-
-```yaml
----
-dataSources:
-  - kind: substreams
-    name: my_project_sol
-    network: solana-mainnet-beta
-    source:
-      package:
-        moduleName: map_spl_transfers # Module defined in the substreams.yaml
-        file: ./my-project-sol-v0.1.0.spkg
-    mapping:
-      apiVersion: 0.0.9
-      kind: substreams/graph-entities
-      file: ./src/mappings.ts
-      handler: handleTriggers
-```
-
-### Step 3: Define Entities in `schema.graphql`
-
-Define the fields you want to save in your Subgraph entities by updating the `schema.graphql` file.
-
-Here is an example:
-
-```graphql
-type MyTransfer @entity {
-  id: ID!
-  amount: String!
-  source: String!
-  designation: String!
-  signers: [String!]!
-}
-```
-
-This schema defines a `MyTransfer` entity with fields such as `id`, `amount`, `source`, `designation`, and `signers`.
-
-### Step 4: Handle Substreams Data in `mappings.ts`
-
-With the Protobuf objects generated, you can now handle the decoded Substreams data in your `mappings.ts` file found in the `./src` directory.
-
-The example below demonstrates how to extract to Subgraph entities the non-derived transfers associated to the Orca account id:
-
-```ts
-import { Protobuf } from 'as-proto/assembly'
-import { Events as protoEvents } from './pb/sf/solana/spl/token/v1/Events'
-import { MyTransfer } from '../generated/schema'
-
-export function handleTriggers(bytes: Uint8Array): void {
-  const input: protoEvents = Protobuf.decode<protoEvents>(bytes, protoEvents.decode)
-
-  for (let i = 0; i < input.data.length; i++) {
-    const event = input.data[i]
-
-    if (event.transfer != null) {
-      let entity_id: string = `${event.txnId}-${i}`
-      const entity = new MyTransfer(entity_id)
-      entity.amount = event.transfer!.instruction!.amount.toString()
-      entity.source = event.transfer!.accounts!.source
-      entity.designation = event.transfer!.accounts!.destination
-
-      if (event.transfer!.accounts!.signer!.single != null) {
-        entity.signers = [event.transfer!.accounts!.signer!.single!.signer]
-      } else if (event.transfer!.accounts!.signer!.multisig != null) {
-        entity.signers = event.transfer!.accounts!.signer!.multisig!.signers
-      }
-      entity.save()
-    }
-  }
-}
-```
-
-### Step 5: Generate Protobuf Files
-
-To generate Protobuf objects in AssemblyScript, run the following command:
-
-```bash
-npm run protogen
-```
-
-This command converts the Protobuf definitions into AssemblyScript, allowing you to use them in the Subgraph's handler.
-
-### Závěr
-
-Congratulations! You've successfully set up a trigger-based Substreams-powered Subgraph for a Solana SPL token. You can take the next step by customizing your schema, mappings, and modules to fit your specific use case.
-
-### Video Tutorial
-
-<VideoEmbed title="How to Index Solana with a Substreams-powered Subgraph" youtube="RmKi-Nq9E_A" />
-
-### Další zdroje
-
-For more advanced customization and optimizations, check out the official [Substreams documentation](https://substreams.streamingfast.io/tutorials/solana).
diff --git a/website/src/pages/de/substreams/sps/_meta.js b/website/src/pages/de/substreams/sps/_meta.js
deleted file mode 100644
index 86fcd3df5ec0..000000000000
--- a/website/src/pages/de/substreams/sps/_meta.js
+++ /dev/null
@@ -1,6 +0,0 @@
-export default {
-  introduction: '',
-  triggers: '',
-  tutorial: '',
-  faq: '',
-}
diff --git a/website/src/pages/de/substreams/sps/faq.mdx b/website/src/pages/de/substreams/sps/faq.mdx
deleted file mode 100644
index 705188578529..000000000000
--- a/website/src/pages/de/substreams/sps/faq.mdx
+++ /dev/null
@@ -1,96 +0,0 @@
----
-title: Substreams-basierte Subgraphen FAQ
-sidebarTitle: FAQ
----
-
-## Was sind Substreams?
-
-Substreams ist eine außergewöhnlich leistungsstarke Verarbeitungsmaschine, die umfangreiche Blockchain-Datenströme verarbeiten kann. Sie ermöglicht es Ihnen, Blockchain-Daten für eine schnelle und nahtlose Verarbeitung durch Endbenutzeranwendungen zu verfeinern und zu gestalten.
-
-Genauer gesagt handelt es sich um eine Blockchain-agnostische, parallelisierte und Streaming-first-Engine, die als Blockchain-Datenumwandlungsschicht dient. Sie wird von [Firehose](https://firehose.streamingfast.io/) angetrieben und ermöglicht es Entwicklern, Rust-Module zu schreiben, auf Community-Modulen aufzubauen, eine extrem leistungsstarke Indizierung bereitzustellen und ihre Daten überall [zu versenken](/substreams/developing/sinks/).
-
-Substreams wird von [StreamingFast](https://www.streamingfast.io/) entwickelt. Besuchen Sie die [Substreams-Dokumentation](/substreams/introduction/), um mehr über Substreams zu erfahren.
-
-## Was sind Substreams-basierte Subgraphen?
-
-Die [Substreams-basierte Subgraphen](/sps/introduction/) kombinieren die Leistungsfähigkeit von Substreams mit der Abfragefähigkeit von Subgraphen. Bei der Veröffentlichung eines Substreams-basierten Subgraphen können die von den Substreams-Transformationen erzeugten Daten [Entitätsänderungen ausgeben](https://github.com/streamingfast/substreams-sink-entity-changes/blob/develop/substreams-entity-change/src/tables.rs), die mit Subgraph-Entitäten kompatibel sind.
-
-Wenn Sie bereits mit der Entwicklung von Subgraphen vertraut sind, dann beachten Sie, dass Substreams-basierte Subgraphen dann abgefragt werden können, als ob sie von der AssemblyScript-Transformationsschicht erzeugt worden wären, mit allen Vorteilen von Subgraphen, wie der Bereitstellung einer dynamischen und flexiblen GraphQL-API.
-
-## Wie unterscheiden sich Substreams-basierte Subgraphen von Subgraphen?
-
-Subgraphen bestehen aus Datenquellen, die Onchain-Ereignisse spezifizieren und angeben, wie diese Ereignisse über in Assemblyscript geschriebene Handler umgewandelt werden sollen. Diese Ereignisse werden nacheinander verarbeitet, basierend auf der Reihenfolge, in der die Ereignisse in der Kette auftreten.
-
-Im Gegensatz dazu haben Substreams-basierte Subgraphen eine einzige Datenquelle, die auf ein Substreams-Paket verweist, das vom Graph Node verarbeitet wird. Substreams haben im Vergleich zu herkömmlichen Subgraphen Zugriff auf zusätzliche granulare Onchain-Daten und können zudem von einer massiv parallelisierten Verarbeitung profitieren, was zu deutlich schnelleren Verarbeitungszeiten führen kann.
-
-## Was sind die Vorteile der Verwendung von Substreams-basierten Subgraphen?
-
-Substreams-basierte Subgraphen kombinieren alle Vorteile von Substreams mit der Abfragefähigkeit von Subgraphen. Sie bieten The Graph eine bessere Zusammensetzbarkeit und eine leistungsstarke Indizierung. Sie ermöglichen auch neue Datenanwendungsfälle; sobald Sie beispielsweise Ihren Substreams-basierten Subgraphen erstellt haben, können Sie Ihre [Substreams-Module] (https://docs.substreams.dev/reference-material/substreams-components/modules#modules) für die Ausgabe an verschiedene [Senken] (https://substreams.streamingfast.io/reference-and-specs/manifests#sink) wie PostgreSQL, MongoDB und Kafka wiederverwenden.
-
-## Was sind die Vorteile von Substreams?
-
-Die Verwendung von Substreams hat viele Vorteile, unter anderem:
-
-- Zusammensetzbar: Sie können Substreams-Module wie LEGO-Steine stapeln und auf Community-Modulen aufbauen, um öffentliche Daten weiter zu verfeinern.
-
-- Leistungsstarke Indexierung: Um Größenordnungen schnellere Indizierung durch groß angelegte Cluster paralleler Operationen (siehe BigQuery).
-
-- Versenken Sie überall: Versenken Sie Ihre Daten, wo immer Sie wollen: PostgreSQL, MongoDB, Kafka, Subgraphen, Flat Files, Google Sheets.
-
-- Programmierbar: Verwenden Sie Code, um die Extraktion anzupassen, Aggregationen zur Transformationszeit durchzuführen und Ihre Ausgabe für mehrere Sinken zu modellieren.
-
-- Zugang zu zusätzlichen Daten, die nicht als Teil des JSON RPC verfügbar sind
-
-- Alle Vorteile von Firehose.
-
-## Was ist überhaupt Firehose?
-
-Der von [StreamingFast] (https://www.streamingfast.io/) entwickelte Firehose ist eine Blockchain-Datenextraktionsschicht, die von Grund auf neu entwickelt wurde, um die gesamte Historie von Blockchains mit bisher nicht gekannter Geschwindigkeit zu verarbeiten. Sie bietet einen dateibasierten und streamingorientierten Ansatz und ist eine Kernkomponente der Open-Source-Technologien von StreamingFast und die Grundlage für Substreams.
-
-Besuchen Sie die [Dokumentation] (https://firehose.streamingfast.io/), um mehr über Firehose zu erfahren.
-
-## Was sind die Vorteile von Firehose?
-
-Die Verwendung von Firehose bietet viele Vorteile, darunter:
-
-- Geringste Latenz und kein Polling: Die Firehose-Knoten sind so konstruiert, dass sie die Blockdaten zuerst herausgeben, und zwar nach dem Streaming-Prinzip.
-
-- Verhindert Ausfallzeiten: Von Grund auf für Hochverfügbarkeit konzipiert.
-
-- Verpassen Sie nie einen Beat: Der Firehose Stream Cursor ist so konzipiert, dass er mit Forks umgehen kann und in jeder Situation dort weitermacht, wo Sie aufgehört haben.
-
-- Umfangreichstes Datenmodell: Bestes Datenmodell, das die Änderungen des Kontostands, den vollständigen Aufrufbaum, interne Transaktionen, Logs, Speicheränderungen, Gaskosten und mehr enthält.
-
-- Nutzung von Flat Files: Blockchain-Daten werden in Flat Files extrahiert, der billigsten und optimalsten verfügbaren Rechenressource.
-
-## Wo erhalten Entwickler weitere Informationen über Substreams-basierten Subgraphen und Substreams?
-
-In der [Substreams-Dokumentation](/substreams/introduction/) erfahren Sie, wie Sie Substreams-Module erstellen können.
-
-Die [Dokumentation zu Substreams-basierten Subgraphen](/sps/introduction/) zeigt Ihnen, wie Sie diese für die Bereitstellung in The Graph verpacken können.
-
-Das [neueste Substreams Codegen-Tool] (https://streamingfastio.medium.com/substreams-codegen-no-code-tool-to-bootstrap-your-project-a11efe0378c6) ermöglicht es Ihnen, ein Substreams-Projekt ohne jeglichen Code zu booten.
-
-## Welche Rolle spielen die Rust-Module in Substreams?
-
-Rust-Module sind das Äquivalent zu den AssemblyScript-Mappern in Subgraphen. Sie werden auf ähnliche Weise in WASM kompiliert, aber das Programmiermodell ermöglicht eine parallele Ausführung. Sie definieren die Art der Transformationen und Aggregationen, die Sie auf die Blockchain-Rohdaten anwenden möchten.
-
-Weitere Informationen finden Sie in der [Moduldokumentation](https://docs.substreams.dev/reference-material/substreams-components/modules#modules).
-
-## Was macht Substreams kompositionsfähig?
-
-Bei der Verwendung von Substreams erfolgt die Komposition auf der Transformationsschicht, wodurch zwischengespeicherte Module wiederverwendet werden können.
-
-Als Datenbeispiel kann Alice ein DEX-Preismodul erstellen, Bob kann damit einen Volumenaggregator für einige Token seines Interesses erstellen, und Lisa kann vier einzelne DEX-Preismodule zu einem Preisorakel kombinieren. Eine einzige Substreams-Anfrage bündelt all diese individuellen Module und verbindet sie miteinander, um einen viel feineren Datenstrom anzubieten. Dieser Datenstrom kann dann verwendet werden, um einen Subgraphen aufzufüllen und von den Verbrauchern abgefragt zu werden.
-
-## Wie können Sie einen Substreams-basierten Subgraphen erstellen und einsetzen?
-
-Nach der [Definition](/sps/introduction/) eines Subgraphen können Sie den Graph CLI verwenden, um ihn in [Subgraph Studio](https://thegraph.com/studio/) einzusetzen.
-
-## Wo finde ich Datenbeispiele für Substreams und Substreams-basierte Subgraphen?
-
-Sie können [dieses Github Repo] (https://github.com/pinax-network/awesome-substreams) besuchen, um Datenbeispiele für Substreams und Substreams-basierte Subgraphen zu finden.
-
-## Was bedeuten Substreams und Substreams-basierte Subgraphen für The Graph Network?
-
-Die Integration verspricht viele Vorteile, darunter eine extrem leistungsstarke Indizierung und eine größere Kompositionsfähigkeit durch die Nutzung von Community-Modulen und deren Weiterentwicklung.
diff --git a/website/src/pages/de/substreams/sps/introduction.mdx b/website/src/pages/de/substreams/sps/introduction.mdx
deleted file mode 100644
index 396c53077fd1..000000000000
--- a/website/src/pages/de/substreams/sps/introduction.mdx
+++ /dev/null
@@ -1,31 +0,0 @@
----
-title: Einführung in Substreams-Powered Subgraphen
-sidebarTitle: Einführung
----
-
-Steigern Sie die Effizienz und Skalierbarkeit Ihres Subgraphen, indem Sie [Substreams](/substreams/introduction/) verwenden, um vorindizierte Blockchain-Daten zu streamen.
-
-## Überblick
-
-Verwenden Sie ein Substreams-Paket (`.spkg`) als Datenquelle, um Ihrem Subgraph Zugang zu einem Strom von vorindizierten Blockchain-Daten zu geben. Dies ermöglicht eine effizientere und skalierbarere Datenverarbeitung, insbesondere bei großen oder komplexen Blockchain-Netzwerken.
-
-### Besonderheiten
-
-Es gibt zwei Methoden zur Aktivierung dieser Technologie:
-
-1. **Verwendung von Substreams [triggers](/sps/triggers/)**: Nutzen Sie ein beliebiges Substreams-Modul, indem Sie das Protobuf-Modell über einen Subgraph-Handler importieren und Ihre gesamte Logik in einen Subgraph verschieben. Diese Methode erstellt die Subgraph-Entitäten direkt im Subgraph.
-
-2. **Unter Verwendung von [Entity Changes](https://docs.substreams.dev/how-to-guides/sinks/subgraph/graph-out)**: Wenn Sie einen größeren Teil der Logik in Substreams schreiben, können Sie die Ausgabe des Moduls direkt in [graph-node](/indexing/tooling/graph-node/) verwenden. In graph-node können Sie die Substreams-Daten verwenden, um Ihre Subgraph-Entitäten zu erstellen.
-
-Sie können wählen, wo Sie Ihre Logik platzieren möchten, entweder im Subgraph oder in Substreams. Überlegen Sie jedoch, was mit Ihren Datenanforderungen übereinstimmt, da Substreams ein parallelisiertes Modell hat und Auslöser linear in den Graphknoten verbraucht werden.
-
-### Zusätzliche Ressourcen
-
-Unter den folgenden Links finden Sie Anleitungen zur Verwendung von Tools zur Codegenerierung, mit denen Sie schnell Ihr erstes durchgängiges Substreams-Projekt erstellen können:
-
-- [Solana](/substreams/developing/solana/transactions/)
-- [EVM](https://docs.substreams.dev/tutorials/intro-to-tutorials/evm)
-- [Starknet](https://docs.substreams.dev/tutorials/intro-to-tutorials/starknet)
-- [Injective](https://docs.substreams.dev/tutorials/intro-to-tutorials/on-cosmos/injective)
-- [MANTRA](https://docs.substreams.dev/tutorials/intro-to-tutorials/on-cosmos/mantra)
-- [Stellar](https://docs.substreams.dev/tutorials/intro-to-tutorials/stellar)
diff --git a/website/src/pages/de/substreams/sps/triggers.mdx b/website/src/pages/de/substreams/sps/triggers.mdx
deleted file mode 100644
index 792dee351596..000000000000
--- a/website/src/pages/de/substreams/sps/triggers.mdx
+++ /dev/null
@@ -1,47 +0,0 @@
----
-title: Trigger für Substreams
----
-
-Verwenden Sie Custom Triggers und aktivieren Sie die volle Nutzung von GraphQL.
-
-## Überblick
-
-Mit benutzerdefinierten Triggern können Sie Daten direkt in Ihre Subgraph-Mappings-Datei und Entitäten senden, die Tabellen und Feldern ähneln. So können Sie die GraphQL-Schicht vollständig nutzen.
-
-Durch den Import der Protobuf-Definitionen, die von Ihrem Substreams-Modul ausgegeben werden, können Sie diese Daten in Ihrem Subgraph-Handler empfangen und verarbeiten. Dies gewährleistet eine effiziente und schlanke Datenverwaltung innerhalb des Subgraph-Frameworks.
-
-### Definieren von `handleTransactions`
-
-Der folgende Code veranschaulicht, wie eine Funktion `handleTransactions` in einem Subgraph-Handler definiert wird. Diese Funktion empfängt rohe Substream-Bytes als Parameter und dekodiert sie in ein `Transactions`-Objekt. Für jede Transaktion wird eine neue Subgraph-Entität erstellt.
-
-```tsx
-export function handleTransactions(bytes: Uint8Array): void {
-  let transactions = assembly.eth.transaction.v1.Transactions.decode(bytes.buffer).transactions // 1.
-  if (transactions.length == 0) {
-    log.info('No transactions found', [])
-    return
-  }
-
-  for (let i = 0; i < transactions.length; i++) {
-    // 2.
-    let transaction = transactions[i]
-
-    let entity = new Transaction(transaction.hash) // 3.
-    entity.from = transaction.from
-    entity.to = transaction.to
-    entity.save()
-  }
-}
-```
-
-Das sehen Sie in der Datei `mappings.ts`:
-
-1. Die Bytes, die die Substreams enthalten, werden in das generierte `Transactions`-Objekt dekodiert. Dieses Objekt wird wie jedes andere AssemblyScript-Objekt verwendet
-2. Looping über die Transaktionen
-3. Erstellen einer neuen Subgraph-Entität für jede Transaktion
-
-Ein ausführliches Datenbeispiel für einen auslöserbasierten Subgraphen finden Sie [hier](/sps/tutorial/).
-
-### Zusätzliche Ressourcen
-
-Um Ihr erstes Projekt im Entwicklungscontainer zu erstellen, lesen Sie einen der [Schritt-für-Schritt-Guide](/substreams/developing/dev-container/).
diff --git a/website/src/pages/de/substreams/sps/tutorial.mdx b/website/src/pages/de/substreams/sps/tutorial.mdx
deleted file mode 100644
index db9bb0793890..000000000000
--- a/website/src/pages/de/substreams/sps/tutorial.mdx
+++ /dev/null
@@ -1,155 +0,0 @@
----
-title: 'Tutorial: Einrichten eines Substreams-basierten Subgraphen auf Solana'
-sidebarTitle: Tutorial
----
-
-Erfolgreiche Einrichtung eines auslösungsbasierten Substreams-powered Subgraphs für ein Solana SPL-Token.
-
-## Los geht’s
-
-For a video tutorial, check out [How to Index Solana with a Substreams-powered Subgraph](/sps/tutorial/#video-tutorial)
-
-### Voraussetzungen
-
-Bevor Sie beginnen, stellen Sie Folgendes sicher:
-
-- Vervollständigen Sie das [Erste-Schritte-Guide] (https://github.com/streamingfast/substreams-starter), um Ihre Entwicklungsumgebung mit einem Dev Container einzurichten.
-- Sie sollten mit The Graph und grundlegenden Blockchain-Konzepten wie Transaktionen und Protobufs vertraut sein.
-
-### Schritt 1: Initialisieren Sie Ihr Projekt
-
-1. Öffnen Sie Ihren Dev Container und führen Sie den folgenden Befehl aus, um Ihr Projekt zu initialisieren:
-
-   ```bash
-   substreams init
-   ```
-
-2. Wählen Sie die Option „Minimalprojekt“.
-
-3. Ersetzen Sie den Inhalt der generierten Datei `substreams.yaml` durch die folgende Konfiguration, die Transaktionen für das Orca-Konto nach der SPL-Token-Programm-ID filtert:
-
-```yaml
-specVersion: v0.1.0
-Paket:
-  Name: my_project_sol
-  Version: v0.1.0
-
-importiert: # Übergeben Sie Ihr spkg von Interesse
-  solana: https://github.com/streamingfast/substreams-solana-spl-token/raw/master/tokens/solana-spl-token-v0.1.0.spkg
-
-Module:
-  - name: map_spl_transfers
-    use: solana:map_block # Wählen Sie die entsprechenden Module aus, die in Ihrem spkg verfügbar sind
-    initialBlock: 260000082
-
-  - name: map_transactions_by_programid
-    use: solana:solana:transactions_by_programid_without_votes
-
-netzwerk: solana-mainnet-beta
-
-params: # Passen Sie die param-Felder an Ihre Bedürfnisse an.
-  # Für program_id: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
-  map_spl_transfers: token_contract:orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE
-```
-
-### Schritt 2: Erzeugen des Subgraph-Manifests
-
-Sobald das Projekt initialisiert ist, erzeugen Sie ein Subgraph-Manifest, indem Sie den folgenden Befehl im Dev Container ausführen:
-
-```bash
-substreams codegen subgraph
-```
-
-Sie erzeugen ein `subgraph.yaml`-Manifest, das das Substreams-Paket als Datenquelle importiert:
-
-```yaml
----
-dataSources:
-  - kind: substreams
-    name: my_project_sol
-    network: solana-mainnet-beta
-    source:
-      package:
-        moduleName: map_spl_transfers # Module defined in the substreams.yaml
-        file: ./my-project-sol-v0.1.0.spkg
-    mapping:
-      apiVersion: 0.0.9
-      kind: substreams/graph-entities
-      file: ./src/mappings.ts
-      handler: handleTriggers
-```
-
-### Schritt 3: Definieren Sie Entitäten in `schema.graphql`
-
-Definieren Sie die Felder, die Sie in Ihren Subgraph-Entitäten speichern wollen, indem Sie die Datei `schema.graphql` aktualisieren.
-
-Hier ist ein Beispiel:
-
-```graphql
-type MyTransfer @entity {
-  id: ID!
-  amount: String!
-  source: String!
-  designation: String!
-  signers: [String!]!
-}
-```
-
-Dieses Schema definiert eine `MyTransfer`-Entität mit Feldern wie `id`, `amount`, `source`, `designation` und `signers`.
-
-### Schritt 4: Umgang mit Substreams Daten in `mappings.ts`
-
-Mit den erzeugten Protobuf-Objekten können Sie nun die dekodierten Substreams-Daten in Ihrer Datei `mappings.ts` im Verzeichnis `./src`verarbeiten.
-
-Das folgende Beispiel zeigt, wie die nicht abgeleiteten Überweisungen, die mit der Orca-Kontonummer verbunden sind, in die Subgraph-Entitäten extrahiert werden:
-
-```ts
-import { Protobuf } from 'as-proto/assembly'
-import { Events as protoEvents } from './pb/sf/solana/spl/token/v1/Events'
-import { MyTransfer } from '../generated/schema'
-
-export function handleTriggers(bytes: Uint8Array): void {
-  const input: protoEvents = Protobuf.decode<protoEvents>(bytes, protoEvents.decode)
-
-  for (let i = 0; i < input.data.length; i++) {
-    const event = input.data[i]
-
-    if (event.transfer != null) {
-      let entity_id: string = `${event.txnId}-${i}`
-      const entity = new MyTransfer(entity_id)
-      entity.amount = event.transfer!.instruction!.amount.toString()
-      entity.source = event.transfer!.accounts!.source
-      entity.designation = event.transfer!.accounts!.destination
-
-      if (event.transfer!.accounts!.signer!.single != null) {
-        entity.signers = [event.transfer!.accounts!.signer!.single!.signer]
-      } else if (event.transfer!.accounts!.signer!.multisig != null) {
-        entity.signers = event.transfer!.accounts!.signer!.multisig!.signers
-      }
-      entity.save()
-    }
-  }
-}
-```
-
-### Schritt 5: Erzeugen von Protobuf-Dateien
-
-Um Protobuf-Objekte in AssemblyScript zu erzeugen, führen Sie den folgenden Befehl aus:
-
-```bash
-npm run protogen
-```
-
-Dieser Befehl konvertiert die Protobuf-Definitionen in AssemblyScript, so dass Sie sie im Handler des Subgraphen verwenden können.
-
-### Schlussfolgerung
-
-Herzlichen Glückwunsch! Sie haben erfolgreich einen Trigger-basierten Substreams-powered Subgraph für ein Solana SPL-Token eingerichtet. Im nächsten Schritt können Sie Ihr Schema, Ihre Mappings und Module an Ihren spezifischen Anwendungsfall anpassen.
-
-### Video-Anleitung
-
-<VideoEmbed title="How to Index Solana with a Substreams-powered Subgraph" youtube="RmKi-Nq9E_A" />
-
-### Zusätzliche Ressourcen
-
-Für weitergehende Anpassungen und Optimierungen lesen Sie bitte die offizielle [Substreams-Dokumentation] (https://substreams.streamingfast.io/tutorials/solana).
diff --git a/website/src/pages/en/substreams/_meta-titles.json b/website/src/pages/en/substreams/_meta-titles.json
index b8799cc89251..6262ad528c3a 100644
--- a/website/src/pages/en/substreams/_meta-titles.json
+++ b/website/src/pages/en/substreams/_meta-titles.json
@@ -1,4 +1,3 @@
 {
-  "developing": "Developing",
-  "sps": "Substreams-powered Subgraphs"
+  "developing": "Developing"
 }
diff --git a/website/src/pages/en/substreams/_meta.js b/website/src/pages/en/substreams/_meta.js
index a8ee04618eae..658bb8c213c6 100644
--- a/website/src/pages/en/substreams/_meta.js
+++ b/website/src/pages/en/substreams/_meta.js
@@ -5,5 +5,4 @@ export default {
   introduction: '',
   developing: titles.developing ?? '',
   publishing: '',
-  sps: titles.sps ?? '',
 }
diff --git a/website/src/pages/en/substreams/sps/_meta.js b/website/src/pages/en/substreams/sps/_meta.js
deleted file mode 100644
index 86fcd3df5ec0..000000000000
--- a/website/src/pages/en/substreams/sps/_meta.js
+++ /dev/null
@@ -1,6 +0,0 @@
-export default {
-  introduction: '',
-  triggers: '',
-  tutorial: '',
-  faq: '',
-}
diff --git a/website/src/pages/en/substreams/sps/faq.mdx b/website/src/pages/en/substreams/sps/faq.mdx
deleted file mode 100644
index 250c466d5929..000000000000
--- a/website/src/pages/en/substreams/sps/faq.mdx
+++ /dev/null
@@ -1,96 +0,0 @@
----
-title: Substreams-Powered Subgraphs FAQ
-sidebarTitle: FAQ
----
-
-## What are Substreams?
-
-Substreams is an exceptionally powerful processing engine capable of consuming rich streams of blockchain data. It allows you to refine and shape blockchain data for fast and seamless digestion by end-user applications.
-
-Specifically, it's a blockchain-agnostic, parallelized, and streaming-first engine that serves as a blockchain data transformation layer. It's powered by [Firehose](https://firehose.streamingfast.io/), and enables developers to write Rust modules, build upon community modules, provide extremely high-performance indexing, and [sink](/substreams/developing/sinks/) their data anywhere.
-
-Substreams is developed by [StreamingFast](https://www.streamingfast.io/). Visit the [Substreams Documentation](/substreams/introduction/) to learn more about Substreams.
-
-## What are Substreams-powered Subgraphs?
-
-[Substreams-powered Subgraphs](/sps/introduction/) combine the power of Substreams with the queryability of Subgraphs. When publishing a Substreams-powered Subgraph, the data produced by the Substreams transformations, can [output entity changes](https://github.com/streamingfast/substreams-sink-entity-changes/blob/develop/substreams-entity-change/src/tables.rs) that are compatible with Subgraph entities.
-
-If you are already familiar with Subgraph development, note that Substreams-powered Subgraphs can then be queried just as if it had been produced by the AssemblyScript transformation layer. This provides all the benefits of Subgraphs, including a dynamic and flexible GraphQL API.
-
-## How are Substreams-powered Subgraphs different from Subgraphs?
-
-Subgraphs are made up of datasources which specify onchain events, and how those events should be transformed via handlers written in Assemblyscript. These events are processed sequentially, based on the order in which events happen onchain.
-
-By contrast, substreams-powered Subgraphs have a single datasource which references a substreams package, which is processed by the Graph Node. Substreams have access to additional granular onchain data compared to conventional Subgraphs, and can also benefit from massively parallelised processing, which can mean much faster processing times.
-
-## What are the benefits of using Substreams-powered Subgraphs?
-
-Substreams-powered Subgraphs combine all the benefits of Substreams with the queryability of Subgraphs. They bring greater composability and high-performance indexing to The Graph. They also enable new data use cases; for example, once you've built your Substreams-powered Subgraph, you can reuse your [Substreams modules](https://docs.substreams.dev/reference-material/substreams-components/modules#modules) to output to different [sinks](https://substreams.streamingfast.io/reference-and-specs/manifests#sink) such as PostgreSQL, MongoDB, and Kafka.
-
-## What are the benefits of Substreams?
-
-There are many benefits to using Substreams, including:
-
-- Composable: You can stack Substreams modules like LEGO blocks, and build upon community modules, further refining public data.
-
-- High-performance indexing: Orders of magnitude faster indexing through large-scale clusters of parallel operations (think BigQuery).
-
-- Sink anywhere: Sink your data to anywhere you want: PostgreSQL, MongoDB, Kafka, Subgraphs, flat files, Google Sheets.
-
-- Programmable: Use code to customize extraction, do transformation-time aggregations, and model your output for multiple sinks.
-
-- Access to additional data which is not available as part of the JSON RPC
-
-- All the benefits of the Firehose.
-
-## What is the Firehose?
-
-Developed by [StreamingFast](https://www.streamingfast.io/), the Firehose is a blockchain data extraction layer designed from scratch to process the full history of blockchains at speeds that were previously unseen. Providing a files-based and streaming-first approach, it is a core component of StreamingFast's suite of open-source technologies and the foundation for Substreams.
-
-Go to the [documentation](https://firehose.streamingfast.io/) to learn more about the Firehose.
-
-## What are the benefits of the Firehose?
-
-There are many benefits to using Firehose, including:
-
-- Lowest latency & no polling: In a streaming-first fashion, the Firehose nodes are designed to race to push out the block data first.
-
-- Prevents downtimes: Designed from the ground up for High Availability.
-
-- Never miss a beat: The Firehose stream cursor is designed to handle forks and to continue where you left off in any condition.
-
-- Richest data model:  Best data model that includes the balance changes, the full call tree, internal transactions, logs, storage changes, gas costs, and more.
-
-- Leverages flat files: Blockchain data is extracted into flat files, the cheapest and most optimized computing resource available.
-
-## Where can developers access more information about Substreams-powered Subgraphs and Substreams?
-
-The [Substreams documentation](/substreams/introduction/) will teach you how to build Substreams modules.
-
-The [Substreams-powered Subgraphs documentation](/sps/introduction/) will show you how to package them for deployment on The Graph.
-
-The [latest Substreams Codegen tool](https://streamingfastio.medium.com/substreams-codegen-no-code-tool-to-bootstrap-your-project-a11efe0378c6) will allow you to bootstrap a Substreams project without any code.
-
-## What is the role of Rust modules in Substreams?
-
-Rust modules are the equivalent of the AssemblyScript mappers in Subgraphs. They are compiled to WASM in a similar way, but the programming model allows for parallel execution. They define the sort of transformations and aggregations you want to apply to the raw blockchain data.
-
-See [modules documentation](https://docs.substreams.dev/reference-material/substreams-components/modules#modules) for details.
-
-## What makes Substreams composable?
-
-When using Substreams, the composition happens at the transformation layer enabling cached modules to be re-used.
-
-As an example, Alice can build a DEX price module, Bob can use it to build a volume aggregator for some tokens of his interest, and Lisa can combine four individual DEX price modules to create a price oracle. A single Substreams request will package all of these individual's modules, link them together, to offer a much more refined stream of data. That stream can then be used to populate a Subgraph, and be queried by consumers.
-
-## How can you build and deploy a Substreams-powered Subgraph?
-
-After [defining](/sps/introduction/) a Substreams-powered Subgraph, you can use the Graph CLI to deploy it in [Subgraph Studio](https://thegraph.com/studio/).
-
-## Where can I find examples of Substreams and Substreams-powered Subgraphs?
-
-You can visit [this Github repo](https://github.com/pinax-network/awesome-substreams) to find examples of Substreams and Substreams-powered Subgraphs.
-
-## What do Substreams and Substreams-powered Subgraphs mean for The Graph Network?
-
-The integration promises many benefits, including extremely high-performance indexing and greater composability by leveraging community modules and building on them.
diff --git a/website/src/pages/en/substreams/sps/introduction.mdx b/website/src/pages/en/substreams/sps/introduction.mdx
deleted file mode 100644
index 92d8618165dd..000000000000
--- a/website/src/pages/en/substreams/sps/introduction.mdx
+++ /dev/null
@@ -1,31 +0,0 @@
----
-title: Introduction to Substreams-Powered Subgraphs
-sidebarTitle: Introduction
----
-
-Boost your Subgraph's efficiency and scalability by using [Substreams](/substreams/introduction/) to stream pre-indexed blockchain data.
-
-## Overview
-
-Use a Substreams package (`.spkg`) as a data source to give your Subgraph access to a stream of pre-indexed blockchain data. This enables more efficient and scalable data handling, especially with large or complex blockchain networks.
-
-### Specifics
-
-There are two methods of enabling this technology:
-
-1. **Using Substreams [triggers](/sps/triggers/)**: Consume from any Substreams module by importing the Protobuf model through a Subgraph handler and move all your logic into a Subgraph. This method creates the Subgraph entities directly in the Subgraph.
-
-2. **Using [Entity Changes](https://docs.substreams.dev/how-to-guides/sinks/subgraph/graph-out)**: By writing more of the logic into Substreams, you can consume the module's output directly into [graph-node](/indexing/tooling/graph-node/). In graph-node, you can use the Substreams data to create your Subgraph entities.
-
-You can choose where to place your logic, either in the Subgraph or Substreams. However, consider what aligns with your data needs, as Substreams has a parallelized model, and triggers are consumed linearly in the graph node.
-
-### Additional Resources
-
-Visit the following links for tutorials on using code-generation tooling to build your first end-to-end Substreams project quickly:
-
-- [Solana](/substreams/developing/solana/transactions/)
-- [EVM](https://docs.substreams.dev/tutorials/intro-to-tutorials/evm)
-- [Starknet](https://docs.substreams.dev/tutorials/intro-to-tutorials/starknet)
-- [Injective](https://docs.substreams.dev/tutorials/intro-to-tutorials/on-cosmos/injective)
-- [MANTRA](https://docs.substreams.dev/tutorials/intro-to-tutorials/on-cosmos/mantra)
-- [Stellar](https://docs.substreams.dev/tutorials/intro-to-tutorials/stellar)
diff --git a/website/src/pages/en/substreams/sps/triggers.mdx b/website/src/pages/en/substreams/sps/triggers.mdx
deleted file mode 100644
index 66687aa21889..000000000000
--- a/website/src/pages/en/substreams/sps/triggers.mdx
+++ /dev/null
@@ -1,47 +0,0 @@
----
-title: Substreams Triggers
----
-
-Use Custom Triggers and enable the full use GraphQL.
-
-## Overview
-
-Custom Triggers allow you to send data directly into your Subgraph mappings file and entities, which are similar to tables and fields. This enables you to fully use the GraphQL layer.
-
-By importing the Protobuf definitions emitted by your Substreams module, you can receive and process this data in your Subgraph's handler. This ensures efficient and streamlined data management within the Subgraph framework.
-
-### Defining `handleTransactions`
-
-The following code demonstrates how to define a `handleTransactions` function in a Subgraph handler. This function receives raw Substreams bytes as a parameter and decodes them into a `Transactions` object. For each transaction, a new Subgraph entity is created.
-
-```tsx
-export function handleTransactions(bytes: Uint8Array): void {
-  let transactions = assembly.eth.transaction.v1.Transactions.decode(bytes.buffer).transactions // 1.
-  if (transactions.length == 0) {
-    log.info('No transactions found', [])
-    return
-  }
-
-  for (let i = 0; i < transactions.length; i++) {
-    // 2.
-    let transaction = transactions[i]
-
-    let entity = new Transaction(transaction.hash) // 3.
-    entity.from = transaction.from
-    entity.to = transaction.to
-    entity.save()
-  }
-}
-```
-
-Here's what you're seeing in the `mappings.ts` file:
-
-1. The bytes containing Substreams data are decoded into the generated `Transactions` object, this object is used like any other AssemblyScript object
-2. Looping over the transactions
-3. Create a new Subgraph entity for every transaction
-
-To go through a detailed example of a trigger-based Subgraph, [check out the tutorial](/sps/tutorial/).
-
-### Additional Resources
-
-To scaffold your first project in the Development Container, check out one of the [How-To Guide](/substreams/developing/dev-container/).
diff --git a/website/src/pages/en/substreams/sps/tutorial.mdx b/website/src/pages/en/substreams/sps/tutorial.mdx
deleted file mode 100644
index 4113baa43ae6..000000000000
--- a/website/src/pages/en/substreams/sps/tutorial.mdx
+++ /dev/null
@@ -1,154 +0,0 @@
----
-title: 'Tutorial: Set Up a Substreams-Powered Subgraph on Solana'
-sidebarTitle: Tutorial
----
-
-Successfully set up a trigger-based Substreams-powered Subgraph for a Solana SPL token.
-
-## Get Started
-
-For a video tutorial, check out [How to Index Solana with a Substreams-powered Subgraph](/sps/tutorial/#video-tutorial)
-
-### Prerequisites
-
-Before starting, make sure to:
-
-- Complete the [Getting Started Guide](https://github.com/streamingfast/substreams-starter) to set up your development environment using a Dev Container.
-- Be familiar with The Graph and basic blockchain concepts such as transactions and Protobufs.
-
-### Step 1: Initialize Your Project
-
-1. Open your Dev Container and run the following command to initialize your project:
-
-   ```bash
-   substreams init
-   ```
-
-2. Select the "minimal" project option.
-3. Replace the contents of the generated `substreams.yaml` file with the following configuration, which filters transactions for the Orca account on the SPL token program ID:
-
-```yaml
-specVersion: v0.1.0
-package:
-  name: my_project_sol
-  version: v0.1.0
-
-imports: # Pass your spkg of interest
-  solana: https://github.com/streamingfast/substreams-solana-spl-token/raw/master/tokens/solana-spl-token-v0.1.0.spkg
-
-modules:
-  - name: map_spl_transfers
-    use: solana:map_block # Select corresponding modules available within your spkg
-    initialBlock: 260000082
-
-  - name: map_transactions_by_programid
-    use: solana:solana:transactions_by_programid_without_votes
-
-network: solana-mainnet-beta
-
-params: # Modify the param fields to meet your needs
-  # For program_id: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
-  map_spl_transfers: token_contract:orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE
-```
-
-### Step 2: Generate the Subgraph Manifest
-
-Once the project is initialized, generate a Subgraph manifest by running the following command in the Dev Container:
-
-```bash
-substreams codegen subgraph
-```
-
-You will generate a`subgraph.yaml` manifest which imports the Substreams package as a data source:
-
-```yaml
----
-dataSources:
-  - kind: substreams
-    name: my_project_sol
-    network: solana-mainnet-beta
-    source:
-      package:
-        moduleName: map_spl_transfers # Module defined in the substreams.yaml
-        file: ./my-project-sol-v0.1.0.spkg
-    mapping:
-      apiVersion: 0.0.9
-      kind: substreams/graph-entities
-      file: ./src/mappings.ts
-      handler: handleTriggers
-```
-
-### Step 3: Define Entities in `schema.graphql`
-
-Define the fields you want to save in your Subgraph entities by updating the `schema.graphql` file.
-
-Here is an example:
-
-```graphql
-type MyTransfer @entity {
-  id: ID!
-  amount: String!
-  source: String!
-  designation: String!
-  signers: [String!]!
-}
-```
-
-This schema defines a `MyTransfer` entity with fields such as `id`, `amount`, `source`, `designation`, and `signers`.
-
-### Step 4: Handle Substreams Data in `mappings.ts`
-
-With the Protobuf objects generated, you can now handle the decoded Substreams data in your `mappings.ts` file found in the `./src` directory.
-
-The example below demonstrates how to extract to Subgraph entities the non-derived transfers associated to the Orca account id:
-
-```ts
-import { Protobuf } from 'as-proto/assembly'
-import { Events as protoEvents } from './pb/sf/solana/spl/token/v1/Events'
-import { MyTransfer } from '../generated/schema'
-
-export function handleTriggers(bytes: Uint8Array): void {
-  const input: protoEvents = Protobuf.decode<protoEvents>(bytes, protoEvents.decode)
-
-  for (let i = 0; i < input.data.length; i++) {
-    const event = input.data[i]
-
-    if (event.transfer != null) {
-      let entity_id: string = `${event.txnId}-${i}`
-      const entity = new MyTransfer(entity_id)
-      entity.amount = event.transfer!.instruction!.amount.toString()
-      entity.source = event.transfer!.accounts!.source
-      entity.designation = event.transfer!.accounts!.destination
-
-      if (event.transfer!.accounts!.signer!.single != null) {
-        entity.signers = [event.transfer!.accounts!.signer!.single!.signer]
-      } else if (event.transfer!.accounts!.signer!.multisig != null) {
-        entity.signers = event.transfer!.accounts!.signer!.multisig!.signers
-      }
-      entity.save()
-    }
-  }
-}
-```
-
-### Step 5: Generate Protobuf Files
-
-To generate Protobuf objects in AssemblyScript, run the following command:
-
-```bash
-npm run protogen
-```
-
-This command converts the Protobuf definitions into AssemblyScript, allowing you to use them in the Subgraph's handler.
-
-### Conclusion
-
-Congratulations! You've successfully set up a trigger-based Substreams-powered Subgraph for a Solana SPL token. You can take the next step by customizing your schema, mappings, and modules to fit your specific use case.
-
-### Video Tutorial
-
-<VideoEmbed title="How to Index Solana with a Substreams-powered Subgraph" youtube="RmKi-Nq9E_A" />
-
-### Additional Resources
-
-For more advanced customization and optimizations, check out the official [Substreams documentation](https://substreams.streamingfast.io/tutorials/solana).
diff --git a/website/src/pages/es/substreams/sps/_meta.js b/website/src/pages/es/substreams/sps/_meta.js
deleted file mode 100644
index 86fcd3df5ec0..000000000000
--- a/website/src/pages/es/substreams/sps/_meta.js
+++ /dev/null
@@ -1,6 +0,0 @@
-export default {
-  introduction: '',
-  triggers: '',
-  tutorial: '',
-  faq: '',
-}
diff --git a/website/src/pages/es/substreams/sps/faq.mdx b/website/src/pages/es/substreams/sps/faq.mdx
deleted file mode 100644
index dd7685e1a4be..000000000000
--- a/website/src/pages/es/substreams/sps/faq.mdx
+++ /dev/null
@@ -1,96 +0,0 @@
----
-title: Preguntas frecuentes sobre Subgrafos impulsados por Substreams - FAQ
-sidebarTitle: FAQ
----
-
-## ¿Qué son los Substreams?
-
-Substreams is an exceptionally powerful processing engine capable of consuming rich streams of blockchain data. It allows you to refine and shape blockchain data for fast and seamless digestion by end-user applications.
-
-Specifically, it's a blockchain-agnostic, parallelized, and streaming-first engine that serves as a blockchain data transformation layer. It's powered by [Firehose](https://firehose.streamingfast.io/), and enables developers to write Rust modules, build upon community modules, provide extremely high-performance indexing, and [sink](/substreams/developing/sinks/) their data anywhere.
-
-Substreams is developed by [StreamingFast](https://www.streamingfast.io/). Visit the [Substreams Documentation](/substreams/introduction/) to learn more about Substreams.
-
-## What are Substreams-powered Subgraphs?
-
-[Substreams-powered Subgraphs](/sps/introduction/) combine the power of Substreams with the queryability of Subgraphs. When publishing a Substreams-powered Subgraph, the data produced by the Substreams transformations, can [output entity changes](https://github.com/streamingfast/substreams-sink-entity-changes/blob/develop/substreams-entity-change/src/tables.rs) that are compatible with Subgraph entities.
-
-If you are already familiar with Subgraph development, note that Substreams-powered Subgraphs can then be queried just as if it had been produced by the AssemblyScript transformation layer. This provides all the benefits of Subgraphs, including a dynamic and flexible GraphQL API.
-
-## How are Substreams-powered Subgraphs different from Subgraphs?
-
-Los subgrafos están compuestos por fuentes de datos que especifican eventos en la cadena de bloques, y cómo esos eventos deben ser transformados mediante controladores escritos en AssemblyScript. Estos eventos se procesan de manera secuencial, según el orden en el que ocurren los eventos onchain.
-
-By contrast, substreams-powered Subgraphs have a single datasource which references a substreams package, which is processed by the Graph Node. Substreams have access to additional granular onchain data compared to conventional Subgraphs, and can also benefit from massively parallelised processing, which can mean much faster processing times.
-
-## What are the benefits of using Substreams-powered Subgraphs?
-
-Substreams-powered Subgraphs combine all the benefits of Substreams with the queryability of Subgraphs. They bring greater composability and high-performance indexing to The Graph. They also enable new data use cases; for example, once you've built your Substreams-powered Subgraph, you can reuse your [Substreams modules](https://docs.substreams.dev/reference-material/substreams-components/modules#modules) to output to different [sinks](https://substreams.streamingfast.io/reference-and-specs/manifests#sink) such as PostgreSQL, MongoDB, and Kafka.
-
-## ¿Cuáles son los beneficios de Substreams?
-
-Hay muchos beneficios al usar Substreams, incluyendo:
-
-- Componible: Puedes apilar módulos de Substreams como bloques de LEGO y construir sobre módulos de la comunidad, refinando aún más los datos públicos.
-
-- Indexación de alto rendimiento: Indexación mucho más rápida mediante grandes clústeres de operaciones en paralelo (piensa en BigQuery).
-
-- Sink anywhere: Sink your data to anywhere you want: PostgreSQL, MongoDB, Kafka, Subgraphs, flat files, Google Sheets.
-
-- Programable: Usa código para personalizar la extracción, realizar agregaciones en tiempo de transformación y modelar tu salida para múltiples destinos.
-
-- Acceso a datos adicionales que no están disponibles como parte del JSON RPC
-
-- Todos los beneficios de Firehose.
-
-## ¿Qué es el Firehose?
-
-Desarrollado por StreamingFast (https://www.streamingfast.io/), Firehose es una capa de extracción de datos blockchain diseñada desde cero para procesar el historial completo de las blockchains a velocidades nunca antes vistas. Proporcionando un enfoque basado en archivos y priorizando la transmisión de datos, es un componente clave del conjunto de tecnologías de código abierto de StreamingFast y la base de Substreams.
-
-Visita la [documentación] (https://firehose.streamingfast.io/) para obtener más información sobre Firehose.
-
-## ¿Cuáles son los beneficios de Firehose?
-
-There are many benefits to using Firehose, including:
-
-- Lowest latency & no polling: In a streaming-first fashion, the Firehose nodes are designed to race to push out the block data first.
-
-- Prevents downtimes: Designed from the ground up for High Availability.
-
-- Never miss a beat: The Firehose stream cursor is designed to handle forks and to continue where you left off in any condition.
-
-- Richest data model:  Best data model that includes the balance changes, the full call tree, internal transactions, logs, storage changes, gas costs, and more.
-
-- Leverages flat files: Blockchain data is extracted into flat files, the cheapest and most optimized computing resource available.
-
-## Where can developers access more information about Substreams-powered Subgraphs and Substreams?
-
-La [documentación de Substreams] (/substreams/introduction/) te enseñará cómo construir módulos de Substreams.
-
-The [Substreams-powered Subgraphs documentation](/sps/introduction/) will show you how to package them for deployment on The Graph.
-
-La [última herramienta de Substreams Codegen] (https://streamingfastio.medium.com/substreams-codegen-no-code-tool-to-bootstrap-your-project-a11efe0378c6) te permitirá iniciar un proyecto de Substreams sin necesidad de escribir código.
-
-## ¿Cuál es el papel de los módulos de Rust en Substreams?
-
-Rust modules are the equivalent of the AssemblyScript mappers in Subgraphs. They are compiled to WASM in a similar way, but the programming model allows for parallel execution. They define the sort of transformations and aggregations you want to apply to the raw blockchain data.
-
-See [modules documentation](https://docs.substreams.dev/reference-material/substreams-components/modules#modules) for details.
-
-## ¿Qué hace que Substreams sea componible?
-
-Cuando se usa Substreams, la composición ocurre en la capa de transformación, lo que permite que los módulos en caché sean reutilizados.
-
-As an example, Alice can build a DEX price module, Bob can use it to build a volume aggregator for some tokens of his interest, and Lisa can combine four individual DEX price modules to create a price oracle. A single Substreams request will package all of these individual's modules, link them together, to offer a much more refined stream of data. That stream can then be used to populate a Subgraph, and be queried by consumers.
-
-## How can you build and deploy a Substreams-powered Subgraph?
-
-After [defining](/sps/introduction/) a Substreams-powered Subgraph, you can use the Graph CLI to deploy it in [Subgraph Studio](https://thegraph.com/studio/).
-
-## Where can I find examples of Substreams and Substreams-powered Subgraphs?
-
-You can visit [this Github repo](https://github.com/pinax-network/awesome-substreams) to find examples of Substreams and Substreams-powered Subgraphs.
-
-## What do Substreams and Substreams-powered Subgraphs mean for The Graph Network?
-
-The integration promises many benefits, including extremely high-performance indexing and greater composability by leveraging community modules and building on them.
diff --git a/website/src/pages/es/substreams/sps/introduction.mdx b/website/src/pages/es/substreams/sps/introduction.mdx
deleted file mode 100644
index 4340733cfc84..000000000000
--- a/website/src/pages/es/substreams/sps/introduction.mdx
+++ /dev/null
@@ -1,31 +0,0 @@
----
-title: Introducción a los Subgrafos Impulsados por Substreams
-sidebarTitle: Introducción
----
-
-Boost your Subgraph's efficiency and scalability by using [Substreams](/substreams/introduction/) to stream pre-indexed blockchain data.
-
-## Descripción
-
-Use a Substreams package (`.spkg`) as a data source to give your Subgraph access to a stream of pre-indexed blockchain data. This enables more efficient and scalable data handling, especially with large or complex blockchain networks.
-
-### Specifics
-
-Existen dos métodos para habilitar esta tecnología:
-
-1. **Using Substreams [triggers](/sps/triggers/)**: Consume from any Substreams module by importing the Protobuf model through a Subgraph handler and move all your logic into a Subgraph. This method creates the Subgraph entities directly in the Subgraph.
-
-2. **Using [Entity Changes](https://docs.substreams.dev/how-to-guides/sinks/subgraph/graph-out)**: By writing more of the logic into Substreams, you can consume the module's output directly into [graph-node](/indexing/tooling/graph-node/). In graph-node, you can use the Substreams data to create your Subgraph entities.
-
-You can choose where to place your logic, either in the Subgraph or Substreams. However, consider what aligns with your data needs, as Substreams has a parallelized model, and triggers are consumed linearly in the graph node.
-
-### Recursos Adicionales
-
-Visit the following links for tutorials on using code-generation tooling to build your first end-to-end Substreams project quickly:
-
-- [Solana](/substreams/developing/solana/transactions/)
-- [EVM](https://docs.substreams.dev/tutorials/intro-to-tutorials/evm)
-- [Starknet](https://docs.substreams.dev/tutorials/intro-to-tutorials/starknet)
-- [Injective](https://docs.substreams.dev/tutorials/intro-to-tutorials/on-cosmos/injective)
-- [MANTRA](https://docs.substreams.dev/tutorials/intro-to-tutorials/on-cosmos/mantra)
-- [Stellar](https://docs.substreams.dev/tutorials/intro-to-tutorials/stellar)
diff --git a/website/src/pages/es/substreams/sps/triggers.mdx b/website/src/pages/es/substreams/sps/triggers.mdx
deleted file mode 100644
index 16db4057a732..000000000000
--- a/website/src/pages/es/substreams/sps/triggers.mdx
+++ /dev/null
@@ -1,47 +0,0 @@
----
-title: Disparadores de Substreams
----
-
-Use Custom Triggers and enable the full use GraphQL.
-
-## Descripción
-
-Custom Triggers allow you to send data directly into your Subgraph mappings file and entities, which are similar to tables and fields. This enables you to fully use the GraphQL layer.
-
-By importing the Protobuf definitions emitted by your Substreams module, you can receive and process this data in your Subgraph's handler. This ensures efficient and streamlined data management within the Subgraph framework.
-
-### Defining `handleTransactions`
-
-The following code demonstrates how to define a `handleTransactions` function in a Subgraph handler. This function receives raw Substreams bytes as a parameter and decodes them into a `Transactions` object. For each transaction, a new Subgraph entity is created.
-
-```tsx
-export function handleTransactions(bytes: Uint8Array): void {
-  let transactions = assembly.eth.transaction.v1.Transactions.decode(bytes.buffer).transactions // 1.
-  if (transactions.length == 0) {
-    log.info('No transactions found', [])
-    return
-  }
-
-  for (let i = 0; i < transactions.length; i++) {
-    // 2.
-    let transaction = transactions[i]
-
-    let entity = new Transaction(transaction.hash) // 3.
-    entity.from = transaction.from
-    entity.to = transaction.to
-    entity.save()
-  }
-}
-```
-
-Here's what you're seeing in the `mappings.ts` file:
-
-1. Los bytes que contienen los datos de Substreams se decodifican en el objeto 'Transactions' generado, y este objeto se utiliza como cualquier otro objeto de AssemblyScript.
-2. Iterando sobre las transacciones
-3. Create a new Subgraph entity for every transaction
-
-To go through a detailed example of a trigger-based Subgraph, [check out the tutorial](/sps/tutorial/).
-
-### Recursos Adicionales
-
-To scaffold your first project in the Development Container, check out one of the [How-To Guide](/substreams/developing/dev-container/).
diff --git a/website/src/pages/es/substreams/sps/tutorial.mdx b/website/src/pages/es/substreams/sps/tutorial.mdx
deleted file mode 100644
index 52ebe46d1753..000000000000
--- a/website/src/pages/es/substreams/sps/tutorial.mdx
+++ /dev/null
@@ -1,155 +0,0 @@
----
-title: 'Tutorial: Configurar un Subgrafo Potenciado por Substreams en Solana'
-sidebarTitle: Tutorial
----
-
-Successfully set up a trigger-based Substreams-powered Subgraph for a Solana SPL token.
-
-## Comenzar
-
-For a video tutorial, check out [How to Index Solana with a Substreams-powered Subgraph](/sps/tutorial/#video-tutorial)
-
-### Prerequisites
-
-Antes de comenzar, asegúrate de:
-
-- Complete the [Getting Started Guide](https://github.com/streamingfast/substreams-starter) to set up your development environment using a Dev Container.
-- Estar familiarizado con The Graph y conceptos básicos de blockchain, como transacciones y Protobufs.
-
-### Paso 1: Inicializa tu proyecto
-
-1. Abre tu Dev Container y ejecuta el siguiente comando para inicializar tu proyecto:
-
-   ```bash
-   substreams init
-   ```
-
-2. Selecciona la opción de proyecto "mínimo".
-
-3. Reemplaza el contenido del archivo 'substreams.yam'l generado con la siguiente configuración, que filtra las transacciones para la cuenta de Orca en el ID del programa SPL token:
-
-```yaml
-specVersion: v0.1.0
-package:
-  name: my_project_sol
-  version: v0.1.0
-
-imports: # Pass your spkg of interest
-  solana: https://github.com/streamingfast/substreams-solana-spl-token/raw/master/tokens/solana-spl-token-v0.1.0.spkg
-
-modules:
-  - name: map_spl_transfers
-    use: solana:map_block # Select corresponding modules available within your spkg
-    initialBlock: 260000082
-
-  - name: map_transactions_by_programid
-    use: solana:solana:transactions_by_programid_without_votes
-
-network: solana-mainnet-beta
-
-params: # Modify the param fields to meet your needs
-  # For program_id: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
-  map_spl_transfers: token_contract:orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE
-```
-
-### Paso 2: Generar el Manifiesto del Subgrafo
-
-Once the project is initialized, generate a Subgraph manifest by running the following command in the Dev Container:
-
-```bash
-substreams codegen subgrafo
-```
-
-Generarás un manifiesto subgraph.yaml que importa el paquete de Substreams como una fuente de datos:
-
-```yaml
----
-dataSources:
-  - kind: substreams
-    name: my_project_sol
-    network: solana-mainnet-beta
-    source:
-      package:
-        moduleName: map_spl_transfers # Module defined in the substreams.yaml
-        file: ./my-project-sol-v0.1.0.spkg
-    mapping:
-      apiVersion: 0.0.9
-      kind: substreams/graph-entities
-      file: ./src/mappings.ts
-      handler: handleTriggers
-```
-
-### Paso 3: Definir Entidades en schema.graphql
-
-Define the fields you want to save in your Subgraph entities by updating the `schema.graphql` file.
-
-Here is an example:
-
-```graphql
-type MyTransfer @entity {
-  id: ID!
-  amount: String!
-  source: String!
-  designation: String!
-  signers: [String!]!
-}
-```
-
-Este esquema define una entidad 'MyTransfer' con campos como 'id', 'amount', 'source', 'designation' y 'signers'.
-
-### Paso 4: Manejar los datos de Substreams en 'mappings.ts'
-
-With the Protobuf objects generated, you can now handle the decoded Substreams data in your `mappings.ts` file found in the `./src` directory.
-
-The example below demonstrates how to extract to Subgraph entities the non-derived transfers associated to the Orca account id:
-
-```ts
-import { Protobuf } from 'as-proto/assembly'
-import { Events as protoEvents } from './pb/sf/solana/spl/token/v1/Events'
-import { MyTransfer } from '../generated/schema'
-
-export function handleTriggers(bytes: Uint8Array): void {
-  const input: protoEvents = Protobuf.decode<protoEvents>(bytes, protoEvents.decode)
-
-  for (let i = 0; i < input.data.length; i++) {
-    const event = input.data[i]
-
-    if (event.transfer != null) {
-      let entity_id: string = `${event.txnId}-${i}`
-      const entity = new MyTransfer(entity_id)
-      entity.amount = event.transfer!.instruction!.amount.toString()
-      entity.source = event.transfer!.accounts!.source
-      entity.designation = event.transfer!.accounts!.destination
-
-      if (event.transfer!.accounts!.signer!.single != null) {
-        entity.signers = [event.transfer!.accounts!.signer!.single!.signer]
-      } else if (event.transfer!.accounts!.signer!.multisig != null) {
-        entity.signers = event.transfer!.accounts!.signer!.multisig!.signers
-      }
-      entity.save()
-    }
-  }
-}
-```
-
-### Paso 5: Generar Archivos Protobuf
-
-Para generar objetos Protobuf en AssemblyScript, ejecuta el siguiente comando:
-
-```bash
-npm run protogen
-```
-
-This command converts the Protobuf definitions into AssemblyScript, allowing you to use them in the Subgraph's handler.
-
-### Conclusion
-
-Congratulations! You've successfully set up a trigger-based Substreams-powered Subgraph for a Solana SPL token. You can take the next step by customizing your schema, mappings, and modules to fit your specific use case.
-
-### Video Tutorial
-
-<VideoEmbed title="How to Index Solana with a Substreams-powered Subgraph" youtube="RmKi-Nq9E_A" />
-
-### Recursos Adicionales
-
-Para una personalización y optimización más avanzada, consulta la [documentación oficial de Substreams] (https://substreams.streamingfast.io/tutorials/solana).
diff --git a/website/src/pages/fr/substreams/sps/_meta.js b/website/src/pages/fr/substreams/sps/_meta.js
deleted file mode 100644
index 86fcd3df5ec0..000000000000
--- a/website/src/pages/fr/substreams/sps/_meta.js
+++ /dev/null
@@ -1,6 +0,0 @@
-export default {
-  introduction: '',
-  triggers: '',
-  tutorial: '',
-  faq: '',
-}
diff --git a/website/src/pages/fr/substreams/sps/faq.mdx b/website/src/pages/fr/substreams/sps/faq.mdx
deleted file mode 100644
index 9519360ba265..000000000000
--- a/website/src/pages/fr/substreams/sps/faq.mdx
+++ /dev/null
@@ -1,96 +0,0 @@
----
-title: FAQ sur les Subgraphs alimentés par Substreams
-sidebarTitle: FAQ
----
-
-## Que sont les sous-flux ?
-
-Substreams est un moteur de traitement exceptionnellement puissant capable de consommer de riches flux de données blockchain. Il vous permet d'affiner et de façonner les données de la blockchain pour une digestion rapide et transparente par les applications des utilisateurs finaux.
-
-Specifically, it's a blockchain-agnostic, parallelized, and streaming-first engine that serves as a blockchain data transformation layer. It's powered by [Firehose](https://firehose.streamingfast.io/), and enables developers to write Rust modules, build upon community modules, provide extremely high-performance indexing, and [sink](/substreams/developing/sinks/) their data anywhere.
-
-Substreams est développé par [StreamingFast](https://www.streamingfast.io/). Visitez la [Documentation Substreams](/substreams/introduction/) pour en savoir plus sur Substreams.
-
-## Qu'est-ce qu'un subgraph alimenté par Substreams ?
-
-Les [subgraphs alimentés par Substreams](/sps/introduction/) combinent la puissance de Substreams avec la capacité d'interrogation des subgraphs. Lors de la publication d'un subgraph alimenté par Substreams, les données produites par les transformations Substreams peuvent [produire des changements d'entité](https://github.com/streamingfast/substreams-sink-entity-changes/blob/develop/substreams-entity-change/src/tables.rs) compatibles avec les entités du subgraph.
-
-Si vous êtes déjà familiarisé avec le développement de subgraphs, notez que les subgraphs alimentés par Substreams peuvent être interrogés comme s'ils avaient été produits par la couche de transformation AssemblyScript. Cela permet de bénéficier de tous les avantages des subgraphs, y compris d'une API GraphQL dynamique et flexible.
-
-## En quoi les Subgraphs alimentés par Substreams se distinguent-ils des Subgraphs ?
-
-Les subgraphs sont constitués de sources de données qui spécifient des événements onchain et comment ces événements doivent être transformés via des gestionnaires écrits en Assemblyscript. Ces événements sont traités de manière séquentielle, en fonction de l'ordre dans lequel ils se produisent onchain.
-
-En revanche, les subgraphs alimentés par Substreams ont une source de données unique qui fait référence à un package substream, qui est traité par le Graph Node. Les subgraphs ont accès à des données granulaires supplémentaires onchain par rapport aux subgraphs conventionnels et peuvent également bénéficier d'un traitement massivement parallélisé, ce qui peut se traduire par des temps de traitement beaucoup plus rapides.
-
-## Quels sont les avantages de l'utilisation des subgraphs alimentés par Substreams ?
-
-Les subgraphs alimentés par Substreams combinent tous les avantages de Substreams avec la capacité d'interrogation des subgraphs. Ils apportent à The Graph une plus grande composabilité et une indexation très performante. Ils permettent également de nouveaux cas d'utilisation des données ; par exemple, une fois que vous avez construit votre subgraph alimenté par Substreams, vous pouvez réutiliser vos [modules Substreams](https://docs.substreams.dev/reference-material/substreams-components/modules#modules) pour sortir vers différents [sinks](https://substreams.streamingfast.io/reference-and-specs/manifests#sink) tels que PostgreSQL, MongoDB et Kafka.
-
-## Quels sont les avantages de Substreams ?
-
-L'utilisation de Substreams présente de nombreux avantages, notamment:
-
-- Composable : Vous pouvez empiler les modules Substreams comme des blocs LEGO et construire des modules communautaires pour affiner les données publiques.
-
-- Indexation haute performance : Indexation plus rapide d'un ordre de grandeur grâce à des grappes d'opérations parallèles à grande échelle (comme BigQuery).
-
-- "Sinkez" n'importe où : "Sinkez" vos données où vous le souhaitez : PostgreSQL, MongoDB, Kafka, Subgraphs, fichiers plats, Google Sheets.
-
-- Programmable : Utilisez du code pour personnaliser l'extraction, effectuer des agrégations au moment de la transformation et modéliser vos résultats pour plusieurs puits.
-
-- Accès à des données supplémentaires qui ne sont pas disponibles dans le cadre de la RPC JSON
-
-- Tous les avantages du Firehose.
-
-## Tous les avantages du Firehose?
-
-Développé par [StreamingFast] (https://www.streamingfast.io/), le Firehose est une couche d'extraction de données de blockchain conçue à partir de zéro pour traiter l'historique complet des blockchains à des vitesses jusqu'alors inconnues . Obtenez une approche basée sur les fichiers et le streaming, il s'agit d'un composant essentiel de la suite de technologies open-source de StreamingFast et de la base de Substreams.
-
-Consultez la [documentation] (https://firehose.streamingfast.io/) pour en savoir plus sur le Firehose.
-
-## Quels sont les avantages du Firehose ?
-
-L'utilisation de Firehose présente de nombreux avantages, notamment:
-
-- Temps de latence le plus faible et pas d'interrogation : Les nœuds Firehose sont conçus pour faire la course afin de diffuser les données en bloc en premier, selon le principe "streaming-first".
-
-- Prévient les temps d'arrêt : Conçu dès le départ pour une haute disponibilité.
-
-- Ne manquez jamais le rythme : Le curseur du flux Firehose est conçu pour gérer les bifurcations et pour reprendre là où vous vous êtes arrêté dans n'importe quelle condition.
-
-- Modèle de données le plus riche :   Meilleur modèle de données qui inclut les changements de solde, l'arbre d'appel complet, les transactions internes, les journaux, les changements de stockage, les coûts du gaz, etc.
-
-- Exploite les fichiers plats : Les données de la blockchain sont extraites dans des fichiers plats, la ressource informatique la moins chère et la plus optimisée disponible.
-
-## Où les développeurs peuvent-ils trouver plus d'informations sur les Substreams et les Subgraphs alimentés par Substreams ?
-
-La [documentation Substreams ](/substreams/introduction/) vous explique comment construire des modules Substreams.
-
-La [documentation sur les subgraphs alimentés par Substreams](/sps/introduction/) vous montrera comment les packager pour les déployer sur The Graph.
-
-Le [dernier outil Substreams Codegen ](https://streamingfastio.medium.com/substreams-codegen-no-code-tool-to-bootstrap-your-project-a11efe0378c6) vous permettra de lancer un projet Substreams sans aucun code.
-
-## Quel est le rôle des modules Rust dans Substreams ?
-
-Les modules Rust sont l'équivalent des mappeurs AssemblyScript dans Subgraphs. Ils sont compilés dans WASM de la même manière, mais le modèle de programmation permet une exécution parallèle. Ils définissent le type de transformations et d'agrégations que vous souhaitez appliquer aux données brutes de la blockchain.
-
-Consultez la [documentation des modules](https://docs.substreams.dev/reference-material/substreams-components/modules#modules) pour plus de détails.
-
-## Qu'est-ce qui rend Substreams composable ?
-
-Lors de l'utilisation de Substreams, la composition a lieu au niveau de la couche de transformation, ce qui permet de réutiliser les modules mis en cache.
-
-Par exemple, Alice peut créer un module de prix DEX, Bob peut l'utiliser pour créer un agrégateur de volume pour certains jetons qui l'intéressent, et Lisa peut combiner quatre modules de prix DEX individuels pour créer un oracle de prix. Une seule requête Substreams regroupera tous ces modules individuels, les reliera entre eux, pour offrir un flux de données beaucoup plus raffiné. Ce flux peut ensuite être utilisé pour alimenter un subgraph et être interrogé par les consommateurs.
-
-## Comment pouvez-vous créer et déployer un Subgraph basé sur Substreams ?
-
-Après avoir [défini](/sps/introduction/) un subgraph basé sur Substreams, vous pouvez utiliser Graph CLI pour le déployer dans [Subgraph Studio](https://thegraph.com/studio/).
-
-## Où puis-je trouver des exemples de Substreams et de Subgraphs alimentés par Substreams ?
-
-Vous pouvez consulter [cette repo Github](https://github.com/pinax-network/awesome-substreams) pour trouver des exemples de Substreams et de subgraphs alimentés par Substreams.
-
-## Que signifient les Substreams et les subgraphs alimentés par Substreams pour The Gaph Network ?
-
-L'intégration promet de nombreux avantages, notamment une indexation extrêmement performante et une plus grande composabilité grâce à l'exploitation des modules de la communauté et à leur développement.
diff --git a/website/src/pages/fr/substreams/sps/introduction.mdx b/website/src/pages/fr/substreams/sps/introduction.mdx
deleted file mode 100644
index 0454b6f4acee..000000000000
--- a/website/src/pages/fr/substreams/sps/introduction.mdx
+++ /dev/null
@@ -1,31 +0,0 @@
----
-title: Introduction aux Subgraphs alimentés par Substreams
-sidebarTitle: Présentation
----
-
-Améliorez l'efficacité et l'évolutivité de votre subgraph en utilisant [Substreams](/substreams/introduction/) pour streamer des données blockchain pré-indexées.
-
-## Aperçu
-
-Utilisez un package Substreams (`.spkg`) comme source de données pour donner à votre Subgraph l'accès à un flux de données blockchain pré-indexées. Cela permet un traitement des données plus efficace et évolutif, en particulier avec des réseaux de blockchain complexes ou de grande taille.
-
-### Spécificités⁠
-
-Il existe deux méthodes pour activer cette technologie :
-
-1. **Utilisation des [déclencheurs](/sps/triggers/) de Substreams ** : Consommez à partir de n'importe quel module Substreams en important le modèle Protobuf par le biais d'un gestionnaire de subgraph et déplacez toute votre logique dans un subgraph. Cette méthode crée les entités du subgraph directement dans le subgraph.
-
-2. **En utilisant [Entity Changes](https://docs.substreams.dev/how-to-guides/sinks/subgraph/graph-out)** : En écrivant une plus grande partie de la logique dans Substreams, vous pouvez consommer la sortie du module directement dans [graph-node](/indexing/tooling/graph-node/). Dans graph-node, vous pouvez utiliser les données de Substreams pour créer vos entités Subgraph.
-
-Vous pouvez choisir où placer votre logique, soit dans le subgraph, soit dans Substreams. Cependant, réfléchissez à ce qui correspond à vos besoins en matière de données, car Substreams a un modèle parallélisé et les déclencheurs sont consommés de manière linéaire dans graph node.
-
-### Ressources supplémentaires
-
-Consultez les liens suivants pour obtenir des tutoriels sur l'utilisation de l'outil de génération de code afin de créer rapidement votre premier projet Substreams de bout en bout :
-
-- [Solana](/substreams/developing/solana/transactions/)
-- [EVM](https://docs.substreams.dev/tutorials/intro-to-tutorials/evm)
-- [Starknet](https://docs.substreams.dev/tutorials/intro-to-tutorials/starknet)
-- [Injective](https://docs.substreams.dev/tutorials/intro-to-tutorials/on-cosmos/injective)
-- [MANTRA](https://docs.substreams.dev/tutorials/intro-to-tutorials/on-cosmos/mantra)
-- [Stellar](https://docs.substreams.dev/tutorials/intro-to-tutorials/stellar)
diff --git a/website/src/pages/fr/substreams/sps/triggers.mdx b/website/src/pages/fr/substreams/sps/triggers.mdx
deleted file mode 100644
index ecd1253f24c7..000000000000
--- a/website/src/pages/fr/substreams/sps/triggers.mdx
+++ /dev/null
@@ -1,47 +0,0 @@
----
-title: Déclencheurs de Substreams
----
-
-Use Custom Triggers and enable the full use GraphQL.
-
-## Aperçu
-
-Les déclencheurs personnalisés vous permettent d'envoyer des données directement dans votre fichier de mappage de subgraph et dans vos entités, qui sont similaires aux tables et aux champs. Cela vous permet d'utiliser pleinement la couche GraphQL.
-
-En important les définitions Protobuf émises par votre module Substreams, vous pouvez recevoir et traiter ces données dans le gestionnaire de votre subgraph. Cela garantit une gestion efficace et rationalisée des données dans le cadre du Subgraph.
-
-### Définition de `handleTransactions`
-
-Le code suivant montre comment définir une fonction `handleTransactions` dans un gestionnaire de Subgraph. Cette fonction reçoit comme paramètre de Substreams des Bytes bruts et les décode en un objet `Transactions`. Pour chaque transaction, une nouvelle entité Subgraph est créée.
-
-```tsx
-export function handleTransactions(bytes: Uint8Array): void {
-  let transactions = assembly.eth.transaction.v1.Transactions.decode(bytes.buffer).transactions // 1.
-  if (transactions.length == 0) {
-    log.info('No transactions found', [])
-    return
-  }
-
-  for (let i = 0; i < transactions.length; i++) {
-    // 2.
-    let transaction = transactions[i]
-
-    let entity = new Transaction(transaction.hash) // 3.
-    entity.from = transaction.from
-    entity.to = transaction.to
-    entity.save()
-  }
-}
-```
-
-Voici ce que vous voyez dans le fichier `mappings.ts` :
-
-1. Les bytes contenant les données Substreams sont décodés en un objet `Transactions` généré, qui est utilisé comme n’importe quel autre objet AssemblyScript
-2. Boucle sur les transactions
-3. Créer une nouvelle entité de subgraph pour chaque transaction
-
-Pour découvrir un exemple détaillé de subgraph à déclencheurs, [consultez le tutoriel](/sps/tutorial/).
-
-### Ressources supplémentaires
-
-Pour élaborer votre premier projet dans le conteneur de développement, consultez l'un des [guides pratiques](/substreams/developing/dev-container/).
diff --git a/website/src/pages/fr/substreams/sps/tutorial.mdx b/website/src/pages/fr/substreams/sps/tutorial.mdx
deleted file mode 100644
index d4876d6000bd..000000000000
--- a/website/src/pages/fr/substreams/sps/tutorial.mdx
+++ /dev/null
@@ -1,155 +0,0 @@
----
-title: 'Tutoriel : Configurer un Subgraph alimenté par Substreams sur Solana'
-sidebarTitle: Tutoriel
----
-
-Mise en place réussie d'un subgraph alimenté par Substreams basé sur des déclencheurs pour un jeton Solana SPL.
-
-## Commencer
-
-Pour un tutoriel vidéo, consultez [Comment indexer Solana avec un subgraph alimenté par des Substreams](/sps/tutorial/#video-tutorial)
-
-### Prérequis
-
-Avant de commencer, assurez-vous de :
-
-- Avoir suivi le Guide [Getting Started](https://github.com/streamingfast/substreams-starter) pour configurer votre environnement de développement à l’aide d’un Dev Container.
-- Être familier avec The Graph et des concepts de base de la blockchain tels que les transactions et les Protobufs.
-
-### Étape 1 : Initialiser votre projet
-
-1. Ouvrez votre Dev Container et exécutez la commande suivante pour initialiser votre projet :
-
-   ```bash
-   substreams init
-   ```
-
-2. Sélectionnez l'option de projet "minimal".
-
-3. Remplacez le contenu du fichier généré `substreams.yaml` par la configuration suivante, qui filtre les transactions du compte Orca sur l’ID du programme SPL token :
-
-```yaml
-specVersion: v0.1.0
-package:
-  name: my_project_sol
-  version: v0.1.0
-
-imports: # Passez le spkg qui vous intéresse
-  solana: https://github.com/streamingfast/substreams-solana-spl-token/raw/master/tokens/solana-spl-token-v0.1.0.spkg
-
-modules:
-  - name: map_spl_transfers
-    use: solana:map_block # Sélectionnez les modules disponibles dans votre spkg
-    initialBlock: 260000082
-
-  - name: map_transactions_by_programid
-    use: solana:solana:transactions_by_programid_without_votes
-
-network: solana-mainnet-beta
-
-params: # Modifiez les champs param pour répondre à vos besoins
-  # Pour program_id: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
-  map_spl_transfers: token_contract:orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE
-```
-
-### Étape 2 : Générer le Manifeste du Subgraph
-
-Une fois le projet initialisé, générez un manifeste de subgraph en exécutant la commande suivante dans le Dev Container :
-
-```bash
-substreams codegen subgraph
-```
-
-Cette commande génère un fichier `subgraph.yaml` qui importe le package Substreams comme source de données:
-
-```yaml
----
-dataSources:
-  - kind: substreams
-    name: my_project_sol
-    network: solana-mainnet-beta
-    source:
-      package:
-        moduleName: map_spl_transfers # Module defined in the substreams.yaml
-        file: ./my-project-sol-v0.1.0.spkg
-    mapping:
-      apiVersion: 0.0.9
-      kind: substreams/graph-entities
-      file: ./src/mappings.ts
-      handler: handleTriggers
-```
-
-### Étape 3 : Définir les Entités dans `schema.graphql`
-
-Définissez les champs que vous souhaitez enregistrer dans vos entités Subgraph en mettant à jour le fichier `schema.graphql`.
-
-Voici un exemple :
-
-```graphql
-type MyTransfer @entity {
-  id: ID!
-  amount: String!
-  source: String!
-  designation: String!
-  signers: [String!]!
-}
-```
-
-Ce schéma définit une entité `MyTransfer` avec des champs tels que `id`, `amount`, `source`, `designation` et `signers`.
-
-### Étape 4 : Gérer les Données Substreams dans `mappings.ts`
-
-Avec les objets Protobuf générés, vous pouvez désormais gérer les données de Substreams décodées dans votre fichier `mappings.ts` trouvé dans le répertoire `./src`.
-
-L'exemple ci-dessous montre comment extraire vers les entités du subgraph les transferts non dérivés associés à l'Id du compte Orca :
-
-```ts
-import { Protobuf } from 'as-proto/assembly'
-import { Events as protoEvents } from './pb/sf/solana/spl/token/v1/Events'
-import { MyTransfer } from '../generated/schema'
-
-export function handleTriggers(bytes: Uint8Array): void {
-  const input: protoEvents = Protobuf.decode<protoEvents>(bytes, protoEvents.decode)
-
-  for (let i = 0; i < input.data.length; i++) {
-    const event = input.data[i]
-
-    if (event.transfer != null) {
-      let entity_id: string = `${event.txnId}-${i}`
-      const entity = new MyTransfer(entity_id)
-      entity.amount = event.transfer!.instruction!.amount.toString()
-      entity.source = event.transfer!.accounts!.source
-      entity.designation = event.transfer!.accounts!.destination
-
-      if (event.transfer!.accounts!.signer!.single != null) {
-        entity.signers = [event.transfer!.accounts!.signer!.single!.signer]
-      } else if (event.transfer!.accounts!.signer!.multisig != null) {
-        entity.signers = event.transfer!.accounts!.signer!.multisig!.signers
-      }
-      entity.save()
-    }
-  }
-}
-```
-
-### Étape 5 : Générer les Fichiers Protobuf
-
-Pour générer les objets Protobuf en AssemblyScript, exécutez la commande suivante :
-
-```bash
-npm run protogen
-```
-
-Cette commande convertit les définitions Protobuf en AssemblyScript, ce qui permet de les utiliser dans le gestionnaire du subgraph.
-
-### Conclusion
-
-Félicitations ! Vous avez configuré avec succès un subgraph alimenté par Substreams basé sur des déclencheurs pour un jeton Solana SPL. Vous pouvez passer à l'étape suivante en personnalisant votre schéma, vos mappages et vos modules pour les adapter à votre cas d'utilisation spécifique.
-
-### Tutoriel Vidéo
-
-<VideoEmbed title="How to Index Solana with a Substreams-powered Subgraph" youtube="RmKi-Nq9E_A" />
-
-### Ressources supplémentaires
-
-Pour aller plus loin en matière de personnalisation et d’optimisation, consultez la [documentation officielle de Substreams](https://substreams.streamingfast.io/tutorials/solana).
diff --git a/website/src/pages/hi/substreams/sps/_meta.js b/website/src/pages/hi/substreams/sps/_meta.js
deleted file mode 100644
index 86fcd3df5ec0..000000000000
--- a/website/src/pages/hi/substreams/sps/_meta.js
+++ /dev/null
@@ -1,6 +0,0 @@
-export default {
-  introduction: '',
-  triggers: '',
-  tutorial: '',
-  faq: '',
-}
diff --git a/website/src/pages/hi/substreams/sps/faq.mdx b/website/src/pages/hi/substreams/sps/faq.mdx
deleted file mode 100644
index 3c77c89cebb0..000000000000
--- a/website/src/pages/hi/substreams/sps/faq.mdx
+++ /dev/null
@@ -1,96 +0,0 @@
----
-title: सबस्ट्रीम्स-पावर्ड सबग्राफ FAQ
-sidebarTitle: FAQ
----
-
-## सबस्ट्रीम क्या होते हैं?
-
-सबस्ट्रीम एक अत्यधिक शक्तिशाली प्रोसेसिंग इंजन है जो ब्लॉकचेन डेटा की समृद्ध स्ट्रीम्स को उपभोग करने में सक्षम है। यह आपको ब्लॉकचेन डेटा को परिष्कृत और आकार देने की अनुमति देता है ताकि एंड-यूजर applications द्वारा इसे तेजी और सहजता से पचाया जा सके।
-
-यह एक ब्लॉकचेन-अज्ञेयवादी, समानांतरित, और स्ट्रीमिंग-प्रथम इंजन है, जो ब्लॉकचेन डेटा ट्रांसफॉर्मेशन लेयर के रूप में कार्य करता है। यह [Firehose](https://firehose.streamingfast.io/) द्वारा संचालित है और डेवलपर्स को Rust मॉड्यूल लिखने, कम्युनिटी मॉड्यूल्स पर निर्माण करने, बेहद उच्च-प्रदर्शन इंडेक्सिंग प्रदान करने, और अपना डेटा कहीं भी [sink](/substreams/developing/sinks/) करने में सक्षम बनाता है।
-
-सबस्ट्रीम को [StreamingFast](https://www.streamingfast.io/) द्वारा विकसित किया गया है। सबस्ट्रीम के बारे में अधिक जानने के लिए [सबस्ट्रीम Documentation](/substreams/introduction/) पर जाएं।
-
-## सबस्ट्रीम-संचालित सबग्राफ क्या हैं?
-
-[सबस्ट्रीम-powered सबग्राफ](/sps/introduction/)सबस्ट्रीमकी शक्ति को सबग्राफ की queryability के साथ जोड़ते हैं। जब किसी सबस्ट्रीम-powered सबग्राफ को प्रकाशित किया जाता है, तो सबस्ट्रीम परिवर्तनों द्वारा निर्मित डेटा [output entity changes](https://github.com/streamingfast/substreams-sink-entity-changes/blob/develop/substreams-entity-change/src/tables.rs) उत्पन्न कर सकता है, जो सबग्राफ entities के साथ संगत होते हैं।
-
-यदि आप पहले से ही सबग्राफ विकास से परिचित हैं, तो ध्यान दें कि सबस्ट्रीम-संचालित सबग्राफ को उसी तरह से क्वेरी किया जा सकता है जैसे कि इसे AssemblyScript ट्रांसफॉर्मेशन लेयर द्वारा उत्पन्न किया गया हो। यह सबग्राफ के सभी लाभ प्रदान करता है, जिसमें एक डायनेमिक और लचीला GraphQL API शामिल है।
-
-## सबस्ट्रीम-powered सबग्राफ सामान्य सबग्राफ से कैसे भिन्न हैं?
-
-सबग्राफ डेटा सोर्सेस से बने होते हैं, जो ऑनचेन आयोजन को निर्धारित करते हैं और उन आयोजन को Assemblyscript में लिखे handler के माध्यम से कैसे ट्रांसफॉर्म करना चाहिए। ये आयोजन क्रमवार तरीके से प्रोसेस किए जाते हैं, जिस क्रम में ये आयोजन ऑनचेन होते हैं।
-
-By contrast, सबस्ट्रीम-powered सबग्राफ के पास एक ही datasource होता है जो एक सबस्ट्रीम package को संदर्भित करता है, जिसे ग्राफ नोड द्वारा प्रोसेस किया जाता है। सबस्ट्रीम को पारंपरिक सबग्राफ की तुलना में अतिरिक्त विस्तृत ऑनचेन डेटा तक पहुंच प्राप्त होती है, और यह बड़े पैमाने पर समानांतर प्रोसेसिंग से भी लाभ उठा सकते हैं, जिससे प्रोसेसिंग समय काफी तेज़ हो सकता है।
-
-## सबस्ट्रीम- powered सबग्राफ के उपयोग के लाभ क्या हैं?
-
-सबस्ट्रीम-powered सबग्राफ सभी लाभों को एक साथ लाते हैं जो सबस्ट्रीम और सबग्राफ प्रदान करते हैं। वे अधिक संयोजनशीलता और उच्च-प्रदर्शन इंडेक्सिंग को The Graph में लाते हैं। वे नए डेटा उपयोग के मामलों को भी सक्षम बनाते हैं; उदाहरण के लिए, एक बार जब आपने अपना सबस्ट्रीम-powered सबग्राफ बना लिया, तो आप अपने [सबस्ट्रीम modules](https://docs.substreams.dev/reference-material/substreams-components/modules#modules) को पुन: उपयोग कर सकते हैं ताकि विभिन्न [sinks](https://substreams.streamingfast.io/reference-and-specs/manifests#sink) जैसे कि PostgreSQL, MongoDB, और Kafka में आउटपुट किया जा सके।
-
-## Substream के क्या benefit हैं?
-
-Substream का उपयोग करने के कई benefit हैं, जिनमें:
-
-- Composable: आप Substreams modules को LEGO blocks की तरह stack कर सकते हैं, और community module पर निर्माण करके public data को अधिक refining कर कते हैं।
-
-- High-performance indexing: बड़े पैमाने पर parallel operation के विशाल संगठनों के माध्यम से कई गुना तेज़ सूचीकरण (think BigQuery).
-
-- Sink anywhere: अपना डेटा कहीं भी सिंक करें: PostgreSQL, MongoDB, Kafka, Subgraphs, flat files, Google Sheets.
-
-- Programmable: Use code to customize extraction, do transformation-time aggregations, and model your output for multiple sinks.
-
-- Access to additional data which is not available as part of the JSON RPC
-
-- All the benefits of the Firehose.
-
-## What is the Firehose?
-
-Developed by [StreamingFast](https://www.streamingfast.io/), the Firehose is a blockchain data extraction layer designed from scratch to process the full history of blockchains at speeds that were previously unseen. Providing a files-based and streaming-first approach, it is a core component of StreamingFast's suite of open-source technologies and the foundation for Substreams.
-
-Go to the [documentation](https://firehose.streamingfast.io/) to learn more about the Firehose.
-
-## Firehouse के क्या benefits हैं?
-
-Firehouse का उपयोग करने के कई benefits हैं, जिनमें:
-
-- सबसे कम latency और कोई मतदान नहीं: streaming-first fashion में, Firehose nodes को पहले block data को push करने की दौड़ के लिए designed किया गया है।
-
-- Prevents downtimes: उच्च उपलब्धता के लिए मौलिक रूप से design किया गया है।
-
-- Never miss a beat: Firehose stream cursor को forks to handle और किसी भी स्थिति में जहां आप छोड़े थे वहां जारी रहने के लिए design किया गया है।
-
-- Richest data model: Best data model जिसमें balance changes, the full call tree, आंतरिक लेनदेन, logs, storage changes, gas costs और बहुत कुछ शामिल है।
-
-- Leverages flat files: blockchain data को flat files में निकाला जाता है, जो सबसे सस्ते और सबसे अधिक अनुकूल गणना संसाधन होता है।
-
-## डेवलपर्स सबस्ट्रीम-powered सबग्राफ और सबस्ट्रीम के बारे में अधिक जानकारी कहाँ प्राप्त कर सकते हैं?
-
-[सबस्ट्रीम documentation](/substreams/introduction/) आपको सबस्ट्रीम modules बनाने का तरीका सिखाएगी।
-
-The [सबस्ट्रीम-powered सबग्राफ documentation](/sps/introduction/) आपको यह दिखाएगी कि उन्हें The Graph पर परिनियोजन के लिए कैसे संकलित किया जाए।
-
-[नवीनतम Substreams Codegen टूल](https://streamingfastio.medium.com/substreams-codegen-no-code-tool-to-bootstrap-your-project-a11efe0378c6) आपको बिना किसी कोड के एक Substreams प्रोजेक्ट शुरू करने की अनुमति देगा।
-
-## Substreams में Rust modules का क्या भूमिका है?
-
-Rust मॉड्यूल्स AssemblyScript मापर्स के समकक्ष होते हैं सबग्राफ में। इन्हें समान तरीके से WASM में संकलित किया जाता है, लेकिन प्रोग्रामिंग मॉडल समानांतर निष्पादन की अनुमति देता है। ये उस प्रकार के रूपांतरण और समुच्चयन को परिभाषित करते हैं, जिन्हें आप कच्चे ब्लॉकचेन डेटा पर लागू करना चाहते हैं।
-
-See [modules documentation](https://docs.substreams.dev/reference-material/substreams-components/modules#modules) for details.
-
-## Substreams को composable क्या बनाता है?
-
-When using Substreams, the composition happens at the transformation layer enabling cached modules to be re-used.
-
-ऐसे मान लीजिए, एलिस एक DEX प्राइस मॉड्यूल बना सकती है, बॉब इसका उपयोग करके अपने इच्छित कुछ टोकनों के लिए एक वॉल्यूम एग्रीगेटर बना सकता है, और लिसा चार अलग-अलग DEX प्राइस मॉड्यूल को जोड़कर एक प्राइस ओरैकल बना सकती है। एक ही सबस्ट्रीम अनुरोध इन सभी व्यक्तिगत मॉड्यूल्स को एक साथ पैकेज करेगा, उन्हें आपस में लिंक करेगा, और एक अधिक परिष्कृत डेटा स्ट्रीम प्रदान करेगा। उस स्ट्रीम का उपयोग फिर एक सबग्राफ को पॉप्युलेट करने के लिए किया जा सकता है और उपभोक्ताओं द्वारा क्वेरी किया जा सकता है।
-
-## आप कैसे एक Substreams-powered Subgraph बना सकते हैं और deploy कर सकते हैं?
-
-सबस्ट्रीम-समर्थित सबग्राफ को [परिभाषित](/sps/introduction/) करने के बाद, आप इसे Graph CLI का उपयोग करके [सबग्राफ Studio](https://thegraph.com/studio/) में डिप्लॉय कर सकते हैं।
-
-## आप सबस्ट्रीम और सबस्ट्रीम-powered सबग्राफ के उदाहरण कहाँ पा सकते हैं?
-
-आप [इस Github रिपॉज़िटरी](https://github.com/pinax-network/awesome-substreams) पर जाकर सबस्ट्रीम और सबस्ट्रीम -powered सबग्राफके उदाहरण देख सकते हैं।
-
-## सबस्ट्रीम और सबस्ट्रीम-powered सबग्राफ का The Graph Network के लिए क्या अर्थ है?
-
-The integration promises many benefits, including extremely high-performance indexing and greater composability by leveraging community modules and building on them.
diff --git a/website/src/pages/hi/substreams/sps/introduction.mdx b/website/src/pages/hi/substreams/sps/introduction.mdx
deleted file mode 100644
index 56ee02d1d54a..000000000000
--- a/website/src/pages/hi/substreams/sps/introduction.mdx
+++ /dev/null
@@ -1,31 +0,0 @@
----
-title: सबस्ट्रीम-पावर्ड सबग्राफ का परिचय
-sidebarTitle: Introduction
----
-
-अपने सबग्राफ की कार्यक्षमता और स्केलेबिलिटी को बढ़ाएं [सबस्ट्रीम](/substreams/introduction/) का उपयोग करके, जो प्री-इंडेक्स्ड ब्लॉकचेन डेटा को स्ट्रीम करता है।
-
-## Overview
-
-सबस्ट्रीम पैकेज (.spkg) को डेटा स्रोत के रूप में उपयोग करें ताकि आपका सबग्राफ पहले से इंडेक्स किए गए ब्लॉकचेन डेटा की स्ट्रीम तक पहुंच प्राप्त कर सके। यह बड़े या जटिल ब्लॉकचेन नेटवर्क के साथ अधिक कुशल और स्केलेबल डेटा हैंडलिंग को सक्षम बनाता है।
-
-### विशिष्टताएँ
-
-इस तकनीक को सक्षम करने के दो तरीके हैं:
-
-1. **सबस्ट्रीम [triggers](/sps/triggers/) का उपयोग करना**: किसी भी सबस्ट्रीम मॉड्यूल से उपभोग करने के लिए, Protobuf मॉडल को एक सबग्राफ हैंडलर के माध्यम से आयात करें और अपनी पूरी लॉजिक को एक सबग्राफ में स्थानांतरित करें। इस विधि से Subgraph में सीधे सबग्राफ entities बनाई जाती हैं।
-
-2. **[Entity Changes](https://docs.substreams.dev/how-to-guides/sinks/subgraph/graph-out) का उपयोग करके**: अधिक लॉजिक को सबस्ट्रीम में लिखकर, आप सीधे मॉड्यूल के आउटपुट को [`ग्राफ-नोड`](/indexing/tooling/graph-node/) में कंज्यूम कर सकते हैं। graph-node में, आप सबस्ट्रीम डेटा का उपयोग करके अपनी सबग्राफ entities बना सकते हैं।
-
-आप अपना लॉजिक सबग्राफ या सबस्ट्रीम में कहीं भी रख सकते हैं। हालाँकि, अपने डेटा की आवश्यकताओं के अनुसार निर्णय लें, क्योंकि सबस्ट्रीम एक समानांतर मॉडल का उपयोग करता है, और ट्रिगर `graph node` में रैखिक रूप से उपभोग किए जाते हैं।
-
-### Additional Resources
-
-इन लिंक पर जाएं ताकि आप कोड-जनरेशन टूलिंग का उपयोग करके अपना पहला एंड-टू-एंड सबस्ट्रीम प्रोजेक्ट तेजी से बना सकें:
-
-- [Solana](/substreams/developing/solana/transactions/)
-- [EVM](https://docs.substreams.dev/tutorials/intro-to-tutorials/evm)
-- [Starknet](https://docs.substreams.dev/tutorials/intro-to-tutorials/starknet)
-- [Injective](https://docs.substreams.dev/tutorials/intro-to-tutorials/on-cosmos/injective)
-- [MANTRA](https://docs.substreams.dev/tutorials/intro-to-tutorials/on-cosmos/mantra)
-- [Stellar](https://docs.substreams.dev/tutorials/intro-to-tutorials/stellar)
diff --git a/website/src/pages/hi/substreams/sps/triggers.mdx b/website/src/pages/hi/substreams/sps/triggers.mdx
deleted file mode 100644
index 196694448b05..000000000000
--- a/website/src/pages/hi/substreams/sps/triggers.mdx
+++ /dev/null
@@ -1,47 +0,0 @@
----
-title: सबस्ट्रीम्स ट्रिगर्स
----
-
-कस्टम ट्रिगर्स का उपयोग करें और पूर्ण रूप से GraphQL को सक्षम करें।
-
-## Overview
-
-कस्टम ट्रिगर्स आपको डेटा सीधे आपके सबग्राफ मैपिंग फ़ाइल और entities में भेजने की अनुमति देते हैं, जो तालिकाओं और फ़ील्ड्स के समान होते हैं। इससे आप पूरी तरह से GraphQL लेयर का उपयोग कर सकते हैं।
-
-आपके सबस्ट्रीम मॉड्यूल द्वारा उत्पन्न Protobuf परिभाषाओं को आयात करके, आप इस डेटा को अपने सबग्राफ के handler में प्राप्त और प्रोसेस कर सकते हैं। यह सबग्राफ ढांचे के भीतर कुशल और सुव्यवस्थित डेटा प्रबंधन सुनिश्चित करता है।
-
-### `handleTransactions` को परिभाषित करना
-
-यह कोड एक सबग्राफ handler में `handleTransactions` फ़ंक्शन को परिभाषित करने का तरीका दर्शाता है। यह फ़ंक्शन कच्चे सबस्ट्रीम बाइट्स को पैरामीटर के रूप में प्राप्त करता है और उन्हें `Transactions` ऑब्जेक्ट में डिकोड करता है। प्रत्येक लेन-देन के लिए, एक नया सबग्राफ entity बनाया जाता है।
-
-```tsx
-export function handleTransactions(bytes: Uint8Array): void {
-  let transactions = assembly.eth.transaction.v1.Transactions.decode(bytes.buffer).transactions // 1.
-  if (transactions.length == 0) {
-    log.info('No transactions found', [])
-    return
-  }
-
-  for (let i = 0; i < transactions.length; i++) {
-    // 2.
-    let transaction = transactions[i]
-
-    let entity = new Transaction(transaction.hash) // 3.
-    entity.from = transaction.from
-    entity.to = transaction.to
-    entity.save()
-  }
-}
-```
-
-यहाँ आप `mappings.ts` फ़ाइल में जो देख रहे हैं:
-
-1. Substreams डेटा को जनरेट किए गए Transactions ऑब्जेक्ट में डिकोड किया जाता है, यह ऑब्जेक्ट किसी अन्य AssemblyScript ऑब्जेक्ट की तरह उपयोग किया जाता है।
-2. लेनदेन पर लूप करना
-3. यहाँ आप `mappings.ts` फ़ाइल में जो देख रहे हैं:
-
-एक ट्रिगर-आधारित सबग्राफ का विस्तृत उदाहरण देखने के लिए, [इस ट्यूटोरियल को देखें](/sps/tutorial/)।
-
-### Additional Resources
-
-अपने पहले प्रोजेक्ट को डेवलपमेंट कंटेनर में स्कैफोल्ड करने के लिए, इनमें से किसी एक [How-To Guide](/substreams/developing/dev-container/) को देखें।
diff --git a/website/src/pages/hi/substreams/sps/tutorial.mdx b/website/src/pages/hi/substreams/sps/tutorial.mdx
deleted file mode 100644
index e7dab45640d3..000000000000
--- a/website/src/pages/hi/substreams/sps/tutorial.mdx
+++ /dev/null
@@ -1,155 +0,0 @@
----
-title: 'ट्यूटोरियल: Solana पर एक Substreams-शक्ति वाले Subgraph सेट करें'
-sidebarTitle: Tutorial
----
-
-Successfully set up a trigger-based Substreams-powered Subgraph for a Solana SPL token.
-
-## शुरू करिये
-
-For a video tutorial, check out [How to Index Solana with a Substreams-powered Subgraph](/sps/tutorial/#video-tutorial)
-
-### आवश्यक शर्तें
-
-'शुरू करने से पहले, सुनिश्चित करें कि:'
-
-- अपने विकास पर्यावरण को सेट अप करने के लिए Getting Started Guide(https://github.com/streamingfast/substreams-starter) को पूरा करें, एक Dev Container का उपयोग करके।
-- The Graph और मूल ब्लॉकचेन अवधारणाओं जैसे कि लेनदेन और Protobufs से परिचित रहें।
-
-### चरण 1: अपने प्रोजेक्ट को प्रारंभ करें
-
-1. अपने Dev Container को खोलें और अपने प्रोजेक्ट को शुरू करने के लिए निम्नलिखित कमांड चलाएं:
-
-   ```bash
-   substreams प्रारंभ करें
-   ```
-
-2. "Minimal" प्रोजेक्ट विकल्प चुनें।
-
-3. substreams.yaml फ़ाइल की सामग्री को निम्नलिखित कॉन्फ़िगरेशन से बदलें, जो SPL टोकन प्रोग्राम आईडी पर Orca अकाउंट के लेनदेन को फ़िल्टर करता है:
-
-```yaml
-specVersion: v0.1.0
-package:
-  name: my_project_sol
-  version: v0.1.0
-
-imports: # Pass your spkg of interest
-  solana: https://github.com/streamingfast/substreams-solana-spl-token/raw/master/tokens/solana-spl-token-v0.1.0.spkg
-
-modules:
-  - name: map_spl_transfers
-    use: solana:map_block # Select corresponding modules available within your spkg
-    initialBlock: 260000082
-
-  - name: map_transactions_by_programid
-    use: solana:solana:transactions_by_programid_without_votes
-
-network: solana-mainnet-beta
-
-params: # Modify the param fields to meet your needs
-  # For program_id: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
-  map_spl_transfers: token_contract:orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE
-```
-
-### चरण 2: Subgraph Manifest उत्पन्न करें
-
-Once the project is initialized, generate a Subgraph manifest by running the following command in the Dev Container:
-
-```bash
-'सबस्ट्रीम्स कोडजेन' subgraph
-```
-
-आप subgraph.yaml मैनिफेस्ट बनाएंगे जो डेटा स्रोत के रूप में Substreams पैकेज को इम्पोर्ट करता है:
-
-```yaml
----
-dataSources:
-  - kind: substreams
-    name: my_project_sol
-    network: solana-mainnet-beta
-    source:
-      package:
-        moduleName: map_spl_transfers # Module defined in the substreams.yaml
-        file: ./my-project-sol-v0.1.0.spkg
-    mapping:
-      apiVersion: 0.0.9
-      kind: substreams/graph-entities
-      file: ./src/mappings.ts
-      handler: handleTriggers
-```
-
-### चरण 3: schema.graphql में संस्थाएँ परिभाषित करें
-
-Define the fields you want to save in your Subgraph entities by updating the `schema.graphql` file.
-
-Here is an example:
-
-```graphql
-type MyTransfer @entity {
-  id: ID!
-  amount: String!
-  source: String!
-  designation: String!
-  signers: [String!]!
-}
-```
-
-यह स्कीमा एक MyTransfer एंटिटी को परिभाषित करता है जिसमें फ़ील्ड्स जैसे कि id, amount, source, designation, और signers शामिल हैं।
-
-### चरण 4: mappings.ts में Substreams डेटा को संभालें
-
-With the Protobuf objects generated, you can now handle the decoded Substreams data in your `mappings.ts` file found in the `./src` directory.
-
-The example below demonstrates how to extract to Subgraph entities the non-derived transfers associated to the Orca account id:
-
-```ts
-import { Protobuf } from 'as-proto/assembly'
-import { Events as protoEvents } from './pb/sf/solana/spl/token/v1/Events'
-import { MyTransfer } from '../generated/schema'
-
-export function handleTriggers(bytes: Uint8Array): void {
-  const input: protoEvents = Protobuf.decode<protoEvents>(bytes, protoEvents.decode)
-
-  for (let i = 0; i < input.data.length; i++) {
-    const event = input.data[i]
-
-    if (event.transfer != null) {
-      let entity_id: string = `${event.txnId}-${i}`
-      const entity = new MyTransfer(entity_id)
-      entity.amount = event.transfer!.instruction!.amount.toString()
-      entity.source = event.transfer!.accounts!.source
-      entity.designation = event.transfer!.accounts!.destination
-
-      if (event.transfer!.accounts!.signer!.single != null) {
-        entity.signers = [event.transfer!.accounts!.signer!.single!.signer]
-      } else if (event.transfer!.accounts!.signer!.multisig != null) {
-        entity.signers = event.transfer!.accounts!.signer!.multisig!.signers
-      }
-      entity.save()
-    }
-  }
-}
-```
-
-### चरण 5: Protobuf फ़ाइलें उत्पन्न करें
-
-AssemblyScript में Protobuf ऑब्जेक्ट बनाने के लिए, निम्नलिखित कमांड चलाएँ:
-
-```bash
-npm चलाएँ protogen
-```
-
-This command converts the Protobuf definitions into AssemblyScript, allowing you to use them in the Subgraph's handler.
-
-### निष्कर्ष
-
-Congratulations! You've successfully set up a trigger-based Substreams-powered Subgraph for a Solana SPL token. You can take the next step by customizing your schema, mappings, and modules to fit your specific use case.
-
-### Video Tutorial
-
-<VideoEmbed title="How to Index Solana with a Substreams-powered Subgraph" youtube="RmKi-Nq9E_A" />
-
-### Additional Resources
-
-अधिक उन्नत अनुकूलन और ऑप्टिमाइजेशन के लिए, आधिकारिक Substreams documentation(https://substreams.streamingfast.io/tutorials/solana) देखें।
diff --git a/website/src/pages/it/substreams/sps/_meta.js b/website/src/pages/it/substreams/sps/_meta.js
deleted file mode 100644
index 86fcd3df5ec0..000000000000
--- a/website/src/pages/it/substreams/sps/_meta.js
+++ /dev/null
@@ -1,6 +0,0 @@
-export default {
-  introduction: '',
-  triggers: '',
-  tutorial: '',
-  faq: '',
-}
diff --git a/website/src/pages/it/substreams/sps/faq.mdx b/website/src/pages/it/substreams/sps/faq.mdx
deleted file mode 100644
index 250c466d5929..000000000000
--- a/website/src/pages/it/substreams/sps/faq.mdx
+++ /dev/null
@@ -1,96 +0,0 @@
----
-title: Substreams-Powered Subgraphs FAQ
-sidebarTitle: FAQ
----
-
-## What are Substreams?
-
-Substreams is an exceptionally powerful processing engine capable of consuming rich streams of blockchain data. It allows you to refine and shape blockchain data for fast and seamless digestion by end-user applications.
-
-Specifically, it's a blockchain-agnostic, parallelized, and streaming-first engine that serves as a blockchain data transformation layer. It's powered by [Firehose](https://firehose.streamingfast.io/), and enables developers to write Rust modules, build upon community modules, provide extremely high-performance indexing, and [sink](/substreams/developing/sinks/) their data anywhere.
-
-Substreams is developed by [StreamingFast](https://www.streamingfast.io/). Visit the [Substreams Documentation](/substreams/introduction/) to learn more about Substreams.
-
-## What are Substreams-powered Subgraphs?
-
-[Substreams-powered Subgraphs](/sps/introduction/) combine the power of Substreams with the queryability of Subgraphs. When publishing a Substreams-powered Subgraph, the data produced by the Substreams transformations, can [output entity changes](https://github.com/streamingfast/substreams-sink-entity-changes/blob/develop/substreams-entity-change/src/tables.rs) that are compatible with Subgraph entities.
-
-If you are already familiar with Subgraph development, note that Substreams-powered Subgraphs can then be queried just as if it had been produced by the AssemblyScript transformation layer. This provides all the benefits of Subgraphs, including a dynamic and flexible GraphQL API.
-
-## How are Substreams-powered Subgraphs different from Subgraphs?
-
-Subgraphs are made up of datasources which specify onchain events, and how those events should be transformed via handlers written in Assemblyscript. These events are processed sequentially, based on the order in which events happen onchain.
-
-By contrast, substreams-powered Subgraphs have a single datasource which references a substreams package, which is processed by the Graph Node. Substreams have access to additional granular onchain data compared to conventional Subgraphs, and can also benefit from massively parallelised processing, which can mean much faster processing times.
-
-## What are the benefits of using Substreams-powered Subgraphs?
-
-Substreams-powered Subgraphs combine all the benefits of Substreams with the queryability of Subgraphs. They bring greater composability and high-performance indexing to The Graph. They also enable new data use cases; for example, once you've built your Substreams-powered Subgraph, you can reuse your [Substreams modules](https://docs.substreams.dev/reference-material/substreams-components/modules#modules) to output to different [sinks](https://substreams.streamingfast.io/reference-and-specs/manifests#sink) such as PostgreSQL, MongoDB, and Kafka.
-
-## What are the benefits of Substreams?
-
-There are many benefits to using Substreams, including:
-
-- Composable: You can stack Substreams modules like LEGO blocks, and build upon community modules, further refining public data.
-
-- High-performance indexing: Orders of magnitude faster indexing through large-scale clusters of parallel operations (think BigQuery).
-
-- Sink anywhere: Sink your data to anywhere you want: PostgreSQL, MongoDB, Kafka, Subgraphs, flat files, Google Sheets.
-
-- Programmable: Use code to customize extraction, do transformation-time aggregations, and model your output for multiple sinks.
-
-- Access to additional data which is not available as part of the JSON RPC
-
-- All the benefits of the Firehose.
-
-## What is the Firehose?
-
-Developed by [StreamingFast](https://www.streamingfast.io/), the Firehose is a blockchain data extraction layer designed from scratch to process the full history of blockchains at speeds that were previously unseen. Providing a files-based and streaming-first approach, it is a core component of StreamingFast's suite of open-source technologies and the foundation for Substreams.
-
-Go to the [documentation](https://firehose.streamingfast.io/) to learn more about the Firehose.
-
-## What are the benefits of the Firehose?
-
-There are many benefits to using Firehose, including:
-
-- Lowest latency & no polling: In a streaming-first fashion, the Firehose nodes are designed to race to push out the block data first.
-
-- Prevents downtimes: Designed from the ground up for High Availability.
-
-- Never miss a beat: The Firehose stream cursor is designed to handle forks and to continue where you left off in any condition.
-
-- Richest data model:  Best data model that includes the balance changes, the full call tree, internal transactions, logs, storage changes, gas costs, and more.
-
-- Leverages flat files: Blockchain data is extracted into flat files, the cheapest and most optimized computing resource available.
-
-## Where can developers access more information about Substreams-powered Subgraphs and Substreams?
-
-The [Substreams documentation](/substreams/introduction/) will teach you how to build Substreams modules.
-
-The [Substreams-powered Subgraphs documentation](/sps/introduction/) will show you how to package them for deployment on The Graph.
-
-The [latest Substreams Codegen tool](https://streamingfastio.medium.com/substreams-codegen-no-code-tool-to-bootstrap-your-project-a11efe0378c6) will allow you to bootstrap a Substreams project without any code.
-
-## What is the role of Rust modules in Substreams?
-
-Rust modules are the equivalent of the AssemblyScript mappers in Subgraphs. They are compiled to WASM in a similar way, but the programming model allows for parallel execution. They define the sort of transformations and aggregations you want to apply to the raw blockchain data.
-
-See [modules documentation](https://docs.substreams.dev/reference-material/substreams-components/modules#modules) for details.
-
-## What makes Substreams composable?
-
-When using Substreams, the composition happens at the transformation layer enabling cached modules to be re-used.
-
-As an example, Alice can build a DEX price module, Bob can use it to build a volume aggregator for some tokens of his interest, and Lisa can combine four individual DEX price modules to create a price oracle. A single Substreams request will package all of these individual's modules, link them together, to offer a much more refined stream of data. That stream can then be used to populate a Subgraph, and be queried by consumers.
-
-## How can you build and deploy a Substreams-powered Subgraph?
-
-After [defining](/sps/introduction/) a Substreams-powered Subgraph, you can use the Graph CLI to deploy it in [Subgraph Studio](https://thegraph.com/studio/).
-
-## Where can I find examples of Substreams and Substreams-powered Subgraphs?
-
-You can visit [this Github repo](https://github.com/pinax-network/awesome-substreams) to find examples of Substreams and Substreams-powered Subgraphs.
-
-## What do Substreams and Substreams-powered Subgraphs mean for The Graph Network?
-
-The integration promises many benefits, including extremely high-performance indexing and greater composability by leveraging community modules and building on them.
diff --git a/website/src/pages/it/substreams/sps/introduction.mdx b/website/src/pages/it/substreams/sps/introduction.mdx
deleted file mode 100644
index 0e5be69aa0c3..000000000000
--- a/website/src/pages/it/substreams/sps/introduction.mdx
+++ /dev/null
@@ -1,31 +0,0 @@
----
-title: Introduction to Substreams-Powered Subgraphs
-sidebarTitle: Introduzione
----
-
-Boost your Subgraph's efficiency and scalability by using [Substreams](/substreams/introduction/) to stream pre-indexed blockchain data.
-
-## Panoramica
-
-Use a Substreams package (`.spkg`) as a data source to give your Subgraph access to a stream of pre-indexed blockchain data. This enables more efficient and scalable data handling, especially with large or complex blockchain networks.
-
-### Specifics
-
-There are two methods of enabling this technology:
-
-1. **Using Substreams [triggers](/sps/triggers/)**: Consume from any Substreams module by importing the Protobuf model through a Subgraph handler and move all your logic into a Subgraph. This method creates the Subgraph entities directly in the Subgraph.
-
-2. **Using [Entity Changes](https://docs.substreams.dev/how-to-guides/sinks/subgraph/graph-out)**: By writing more of the logic into Substreams, you can consume the module's output directly into [graph-node](/indexing/tooling/graph-node/). In graph-node, you can use the Substreams data to create your Subgraph entities.
-
-You can choose where to place your logic, either in the Subgraph or Substreams. However, consider what aligns with your data needs, as Substreams has a parallelized model, and triggers are consumed linearly in the graph node.
-
-### Additional Resources
-
-Visit the following links for tutorials on using code-generation tooling to build your first end-to-end Substreams project quickly:
-
-- [Solana](/substreams/developing/solana/transactions/)
-- [EVM](https://docs.substreams.dev/tutorials/intro-to-tutorials/evm)
-- [Starknet](https://docs.substreams.dev/tutorials/intro-to-tutorials/starknet)
-- [Injective](https://docs.substreams.dev/tutorials/intro-to-tutorials/on-cosmos/injective)
-- [MANTRA](https://docs.substreams.dev/tutorials/intro-to-tutorials/on-cosmos/mantra)
-- [Stellar](https://docs.substreams.dev/tutorials/intro-to-tutorials/stellar)
diff --git a/website/src/pages/it/substreams/sps/triggers.mdx b/website/src/pages/it/substreams/sps/triggers.mdx
deleted file mode 100644
index 711dcaa6423a..000000000000
--- a/website/src/pages/it/substreams/sps/triggers.mdx
+++ /dev/null
@@ -1,47 +0,0 @@
----
-title: Substreams Triggers
----
-
-Use Custom Triggers and enable the full use GraphQL.
-
-## Panoramica
-
-Custom Triggers allow you to send data directly into your Subgraph mappings file and entities, which are similar to tables and fields. This enables you to fully use the GraphQL layer.
-
-By importing the Protobuf definitions emitted by your Substreams module, you can receive and process this data in your Subgraph's handler. This ensures efficient and streamlined data management within the Subgraph framework.
-
-### Defining `handleTransactions`
-
-The following code demonstrates how to define a `handleTransactions` function in a Subgraph handler. This function receives raw Substreams bytes as a parameter and decodes them into a `Transactions` object. For each transaction, a new Subgraph entity is created.
-
-```tsx
-export function handleTransactions(bytes: Uint8Array): void {
-  let transactions = assembly.eth.transaction.v1.Transactions.decode(bytes.buffer).transactions // 1.
-  if (transactions.length == 0) {
-    log.info('No transactions found', [])
-    return
-  }
-
-  for (let i = 0; i < transactions.length; i++) {
-    // 2.
-    let transaction = transactions[i]
-
-    let entity = new Transaction(transaction.hash) // 3.
-    entity.from = transaction.from
-    entity.to = transaction.to
-    entity.save()
-  }
-}
-```
-
-Here's what you're seeing in the `mappings.ts` file:
-
-1. The bytes containing Substreams data are decoded into the generated `Transactions` object, this object is used like any other AssemblyScript object
-2. Looping over the transactions
-3. Create a new Subgraph entity for every transaction
-
-To go through a detailed example of a trigger-based Subgraph, [check out the tutorial](/sps/tutorial/).
-
-### Additional Resources
-
-To scaffold your first project in the Development Container, check out one of the [How-To Guide](/substreams/developing/dev-container/).
diff --git a/website/src/pages/it/substreams/sps/tutorial.mdx b/website/src/pages/it/substreams/sps/tutorial.mdx
deleted file mode 100644
index 98708410813b..000000000000
--- a/website/src/pages/it/substreams/sps/tutorial.mdx
+++ /dev/null
@@ -1,155 +0,0 @@
----
-title: 'Tutorial: Set Up a Substreams-Powered Subgraph on Solana'
-sidebarTitle: Tutorial
----
-
-Successfully set up a trigger-based Substreams-powered Subgraph for a Solana SPL token.
-
-## Iniziare
-
-For a video tutorial, check out [How to Index Solana with a Substreams-powered Subgraph](/sps/tutorial/#video-tutorial)
-
-### Prerequisites
-
-Before starting, make sure to:
-
-- Complete the [Getting Started Guide](https://github.com/streamingfast/substreams-starter) to set up your development environment using a Dev Container.
-- Be familiar with The Graph and basic blockchain concepts such as transactions and Protobufs.
-
-### Step 1: Initialize Your Project
-
-1. Open your Dev Container and run the following command to initialize your project:
-
-   ```bash
-   substreams init
-   ```
-
-2. Select the "minimal" project option.
-
-3. Replace the contents of the generated `substreams.yaml` file with the following configuration, which filters transactions for the Orca account on the SPL token program ID:
-
-```yaml
-specVersion: v0.1.0
-package:
-  name: my_project_sol
-  version: v0.1.0
-
-imports: # Pass your spkg of interest
-  solana: https://github.com/streamingfast/substreams-solana-spl-token/raw/master/tokens/solana-spl-token-v0.1.0.spkg
-
-modules:
-  - name: map_spl_transfers
-    use: solana:map_block # Select corresponding modules available within your spkg
-    initialBlock: 260000082
-
-  - name: map_transactions_by_programid
-    use: solana:solana:transactions_by_programid_without_votes
-
-network: solana-mainnet-beta
-
-params: # Modify the param fields to meet your needs
-  # For program_id: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
-  map_spl_transfers: token_contract:orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE
-```
-
-### Step 2: Generate the Subgraph Manifest
-
-Once the project is initialized, generate a Subgraph manifest by running the following command in the Dev Container:
-
-```bash
-substreams codegen subgraph
-```
-
-You will generate a`subgraph.yaml` manifest which imports the Substreams package as a data source:
-
-```yaml
----
-dataSources:
-  - kind: substreams
-    name: my_project_sol
-    network: solana-mainnet-beta
-    source:
-      package:
-        moduleName: map_spl_transfers # Module defined in the substreams.yaml
-        file: ./my-project-sol-v0.1.0.spkg
-    mapping:
-      apiVersion: 0.0.9
-      kind: substreams/graph-entities
-      file: ./src/mappings.ts
-      handler: handleTriggers
-```
-
-### Step 3: Define Entities in `schema.graphql`
-
-Define the fields you want to save in your Subgraph entities by updating the `schema.graphql` file.
-
-Here is an example:
-
-```graphql
-type MyTransfer @entity {
-  id: ID!
-  amount: String!
-  source: String!
-  designation: String!
-  signers: [String!]!
-}
-```
-
-This schema defines a `MyTransfer` entity with fields such as `id`, `amount`, `source`, `designation`, and `signers`.
-
-### Step 4: Handle Substreams Data in `mappings.ts`
-
-With the Protobuf objects generated, you can now handle the decoded Substreams data in your `mappings.ts` file found in the `./src` directory.
-
-The example below demonstrates how to extract to Subgraph entities the non-derived transfers associated to the Orca account id:
-
-```ts
-import { Protobuf } from 'as-proto/assembly'
-import { Events as protoEvents } from './pb/sf/solana/spl/token/v1/Events'
-import { MyTransfer } from '../generated/schema'
-
-export function handleTriggers(bytes: Uint8Array): void {
-  const input: protoEvents = Protobuf.decode<protoEvents>(bytes, protoEvents.decode)
-
-  for (let i = 0; i < input.data.length; i++) {
-    const event = input.data[i]
-
-    if (event.transfer != null) {
-      let entity_id: string = `${event.txnId}-${i}`
-      const entity = new MyTransfer(entity_id)
-      entity.amount = event.transfer!.instruction!.amount.toString()
-      entity.source = event.transfer!.accounts!.source
-      entity.designation = event.transfer!.accounts!.destination
-
-      if (event.transfer!.accounts!.signer!.single != null) {
-        entity.signers = [event.transfer!.accounts!.signer!.single!.signer]
-      } else if (event.transfer!.accounts!.signer!.multisig != null) {
-        entity.signers = event.transfer!.accounts!.signer!.multisig!.signers
-      }
-      entity.save()
-    }
-  }
-}
-```
-
-### Step 5: Generate Protobuf Files
-
-To generate Protobuf objects in AssemblyScript, run the following command:
-
-```bash
-npm run protogen
-```
-
-This command converts the Protobuf definitions into AssemblyScript, allowing you to use them in the Subgraph's handler.
-
-### Conclusion
-
-Congratulations! You've successfully set up a trigger-based Substreams-powered Subgraph for a Solana SPL token. You can take the next step by customizing your schema, mappings, and modules to fit your specific use case.
-
-### Video Tutorial
-
-<VideoEmbed title="How to Index Solana with a Substreams-powered Subgraph" youtube="RmKi-Nq9E_A" />
-
-### Additional Resources
-
-For more advanced customization and optimizations, check out the official [Substreams documentation](https://substreams.streamingfast.io/tutorials/solana).
diff --git a/website/src/pages/ja/substreams/sps/_meta.js b/website/src/pages/ja/substreams/sps/_meta.js
deleted file mode 100644
index 86fcd3df5ec0..000000000000
--- a/website/src/pages/ja/substreams/sps/_meta.js
+++ /dev/null
@@ -1,6 +0,0 @@
-export default {
-  introduction: '',
-  triggers: '',
-  tutorial: '',
-  faq: '',
-}
diff --git a/website/src/pages/ja/substreams/sps/faq.mdx b/website/src/pages/ja/substreams/sps/faq.mdx
deleted file mode 100644
index c038b396b268..000000000000
--- a/website/src/pages/ja/substreams/sps/faq.mdx
+++ /dev/null
@@ -1,96 +0,0 @@
----
-title: Substreams-Powered Subgraphs FAQ
-sidebarTitle: FAQ
----
-
-## サブストリームとは何ですか?
-
-Substreams is an exceptionally powerful processing engine capable of consuming rich streams of blockchain data. It allows you to refine and shape blockchain data for fast and seamless digestion by end-user applications.
-
-Specifically, it's a blockchain-agnostic, parallelized, and streaming-first engine that serves as a blockchain data transformation layer. It's powered by [Firehose](https://firehose.streamingfast.io/), and enables developers to write Rust modules, build upon community modules, provide extremely high-performance indexing, and [sink](/substreams/developing/sinks/) their data anywhere.
-
-Substreams is developed by [StreamingFast](https://www.streamingfast.io/). Visit the [Substreams Documentation](/substreams/introduction/) to learn more about Substreams.
-
-## What are Substreams-powered Subgraphs?
-
-[Substreams-powered Subgraphs](/sps/introduction/) combine the power of Substreams with the queryability of Subgraphs. When publishing a Substreams-powered Subgraph, the data produced by the Substreams transformations, can [output entity changes](https://github.com/streamingfast/substreams-sink-entity-changes/blob/develop/substreams-entity-change/src/tables.rs) that are compatible with Subgraph entities.
-
-If you are already familiar with Subgraph development, note that Substreams-powered Subgraphs can then be queried just as if it had been produced by the AssemblyScript transformation layer. This provides all the benefits of Subgraphs, including a dynamic and flexible GraphQL API.
-
-## How are Substreams-powered Subgraphs different from Subgraphs?
-
-Subgraphs are made up of datasources which specify onchain events, and how those events should be transformed via handlers written in Assemblyscript. These events are processed sequentially, based on the order in which events happen onchain.
-
-By contrast, substreams-powered Subgraphs have a single datasource which references a substreams package, which is processed by the Graph Node. Substreams have access to additional granular onchain data compared to conventional Subgraphs, and can also benefit from massively parallelised processing, which can mean much faster processing times.
-
-## What are the benefits of using Substreams-powered Subgraphs?
-
-Substreams-powered Subgraphs combine all the benefits of Substreams with the queryability of Subgraphs. They bring greater composability and high-performance indexing to The Graph. They also enable new data use cases; for example, once you've built your Substreams-powered Subgraph, you can reuse your [Substreams modules](https://docs.substreams.dev/reference-material/substreams-components/modules#modules) to output to different [sinks](https://substreams.streamingfast.io/reference-and-specs/manifests#sink) such as PostgreSQL, MongoDB, and Kafka.
-
-## サブストリームの利点は何ですか?
-
-サブストリームを使用すると、次のような多くの利点があります。
-
-- コンポーザブル: レゴ ブロックのようなサブストリーム モジュールを積み重ね、コミュニティ モジュールを基にして公開データをさらに洗練させることができます。
-
-- 高パフォーマンスのインデックス作成: 並列操作の大規模なクラスター (BigQuery を考えてください) を通じて、桁違いに高速なインデックス作成を実現します。
-
-- Sink anywhere: Sink your data to anywhere you want: PostgreSQL, MongoDB, Kafka, Subgraphs, flat files, Google Sheets.
-
-- プログラム可能: コードを使用して抽出をカスタマイズし、変換時の集計を実行し、複数のシンクの出力をモデル化します。
-
-- JSON RPC の一部として利用できない追加データへのアクセス
-
-- Firehose のすべての利点。
-
-## 消防ホースとは何ですか?
-
-[StreamingFast](https://www.streamingfast.io/) によって開発された Firehose は、ブロックチェーンの全履歴をこれまで見たことのない速度で処理するためにゼロから設計されたブロックチェーン データ抽出レイヤーです。ファイルベースでストリーミングファーストのアプローチを提供するこれは、StreamingFast のオープンソース テクノロジ スイートの中核コンポーネントであり、サブストリームの基盤です。
-
-Firehose の詳細については、[documentation](https://firehose.streamingfast.io/) にアクセスしてください。
-
-## 消防ホースの利点は何ですか?
-
-Firehose を使用すると、次のような多くの利点があります。
-
-- 最低のレイテンシーとポーリングなし: ストリーミングファーストの方式で、Firehose ノードはブロック データを最初にプッシュするために競合するように設計されています。
-
-- ダウンタイムの防止: 高可用性を実現するためにゼロから設計されています。
-
-- ビートを見逃すことはありません: Firehose ストリーム カーソルは、フォークを処理し、どのような状況でも中断したところから続行するように設計されています。
-
-- 最も豊富なデータ モデル: 残高の変更、完全なコール ツリー、内部トランザクション、ログ、ストレージの変更、ガス料金などが含まれる最適なデータ モデル。
-
-- フラット ファイルの活用: ブロックチェーン データは、利用可能な最も安価で最適化されたコンピューティング リソースであるフラット ファイルに抽出されます。
-
-## Where can developers access more information about Substreams-powered Subgraphs and Substreams?
-
-The [Substreams documentation](/substreams/introduction/) will teach you how to build Substreams modules.
-
-The [Substreams-powered Subgraphs documentation](/sps/introduction/) will show you how to package them for deployment on The Graph.
-
-The [latest Substreams Codegen tool](https://streamingfastio.medium.com/substreams-codegen-no-code-tool-to-bootstrap-your-project-a11efe0378c6) will allow you to bootstrap a Substreams project without any code.
-
-## サブストリームにおけるRustモジュールの役割は何ですか?
-
-Rust modules are the equivalent of the AssemblyScript mappers in Subgraphs. They are compiled to WASM in a similar way, but the programming model allows for parallel execution. They define the sort of transformations and aggregations you want to apply to the raw blockchain data.
-
-See [modules documentation](https://docs.substreams.dev/reference-material/substreams-components/modules#modules) for details.
-
-## サブストリームを構成可能にするものは何ですか?
-
-サブストリームを使用すると、変換レイヤーで合成が行われ、キャッシュされたモジュールを再利用できるようになります。
-
-As an example, Alice can build a DEX price module, Bob can use it to build a volume aggregator for some tokens of his interest, and Lisa can combine four individual DEX price modules to create a price oracle. A single Substreams request will package all of these individual's modules, link them together, to offer a much more refined stream of data. That stream can then be used to populate a Subgraph, and be queried by consumers.
-
-## サブストリームを利用したサブグラフを構築してデプロイするにはどうすればよいでしょうか?
-
-After [defining](/sps/introduction/) a Substreams-powered Subgraph, you can use the Graph CLI to deploy it in [Subgraph Studio](https://thegraph.com/studio/).
-
-## Where can I find examples of Substreams and Substreams-powered Subgraphs?
-
-You can visit [this Github repo](https://github.com/pinax-network/awesome-substreams) to find examples of Substreams and Substreams-powered Subgraphs.
-
-## What do Substreams and Substreams-powered Subgraphs mean for The Graph Network?
-
-この統合は、非常に高いパフォーマンスのインデクシングと、コミュニティモジュールを活用し、それらを基に構築することによる大きな組み合わせ可能性を含む多くの利点を約束しています。
diff --git a/website/src/pages/ja/substreams/sps/introduction.mdx b/website/src/pages/ja/substreams/sps/introduction.mdx
deleted file mode 100644
index 71fabdd0416c..000000000000
--- a/website/src/pages/ja/substreams/sps/introduction.mdx
+++ /dev/null
@@ -1,31 +0,0 @@
----
-title: Introduction to Substreams-Powered Subgraphs
-sidebarTitle: イントロダクション
----
-
-Boost your Subgraph's efficiency and scalability by using [Substreams](/substreams/introduction/) to stream pre-indexed blockchain data.
-
-## 概要
-
-Use a Substreams package (`.spkg`) as a data source to give your Subgraph access to a stream of pre-indexed blockchain data. This enables more efficient and scalable data handling, especially with large or complex blockchain networks.
-
-### Specifics
-
-There are two methods of enabling this technology:
-
-1. **Using Substreams [triggers](/sps/triggers/)**: Consume from any Substreams module by importing the Protobuf model through a Subgraph handler and move all your logic into a Subgraph. This method creates the Subgraph entities directly in the Subgraph.
-
-2. **Using [Entity Changes](https://docs.substreams.dev/how-to-guides/sinks/subgraph/graph-out)**: By writing more of the logic into Substreams, you can consume the module's output directly into [graph-node](/indexing/tooling/graph-node/). In graph-node, you can use the Substreams data to create your Subgraph entities.
-
-You can choose where to place your logic, either in the Subgraph or Substreams. However, consider what aligns with your data needs, as Substreams has a parallelized model, and triggers are consumed linearly in the graph node.
-
-### その他のリソース
-
-Visit the following links for tutorials on using code-generation tooling to build your first end-to-end Substreams project quickly:
-
-- [Solana](/substreams/developing/solana/transactions/)
-- [EVM](https://docs.substreams.dev/tutorials/intro-to-tutorials/evm)
-- [Starknet](https://docs.substreams.dev/tutorials/intro-to-tutorials/starknet)
-- [Injective](https://docs.substreams.dev/tutorials/intro-to-tutorials/on-cosmos/injective)
-- [MANTRA](https://docs.substreams.dev/tutorials/intro-to-tutorials/on-cosmos/mantra)
-- [Stellar](https://docs.substreams.dev/tutorials/intro-to-tutorials/stellar)
diff --git a/website/src/pages/ja/substreams/sps/triggers.mdx b/website/src/pages/ja/substreams/sps/triggers.mdx
deleted file mode 100644
index 9ddb07c5477c..000000000000
--- a/website/src/pages/ja/substreams/sps/triggers.mdx
+++ /dev/null
@@ -1,47 +0,0 @@
----
-title: Substreams Triggers
----
-
-Use Custom Triggers and enable the full use GraphQL.
-
-## 概要
-
-Custom Triggers allow you to send data directly into your Subgraph mappings file and entities, which are similar to tables and fields. This enables you to fully use the GraphQL layer.
-
-By importing the Protobuf definitions emitted by your Substreams module, you can receive and process this data in your Subgraph's handler. This ensures efficient and streamlined data management within the Subgraph framework.
-
-### Defining `handleTransactions`
-
-The following code demonstrates how to define a `handleTransactions` function in a Subgraph handler. This function receives raw Substreams bytes as a parameter and decodes them into a `Transactions` object. For each transaction, a new Subgraph entity is created.
-
-```tsx
-export function handleTransactions(bytes: Uint8Array): void {
-  let transactions = assembly.eth.transaction.v1.Transactions.decode(bytes.buffer).transactions // 1.
-  if (transactions.length == 0) {
-    log.info('No transactions found', [])
-    return
-  }
-
-  for (let i = 0; i < transactions.length; i++) {
-    // 2.
-    let transaction = transactions[i]
-
-    let entity = new Transaction(transaction.hash) // 3.
-    entity.from = transaction.from
-    entity.to = transaction.to
-    entity.save()
-  }
-}
-```
-
-Here's what you're seeing in the `mappings.ts` file:
-
-1. The bytes containing Substreams data are decoded into the generated `Transactions` object, this object is used like any other AssemblyScript object
-2. Looping over the transactions
-3. Create a new Subgraph entity for every transaction
-
-To go through a detailed example of a trigger-based Subgraph, [check out the tutorial](/sps/tutorial/).
-
-### その他のリソース
-
-To scaffold your first project in the Development Container, check out one of the [How-To Guide](/substreams/developing/dev-container/).
diff --git a/website/src/pages/ja/substreams/sps/tutorial.mdx b/website/src/pages/ja/substreams/sps/tutorial.mdx
deleted file mode 100644
index 33a08342de34..000000000000
--- a/website/src/pages/ja/substreams/sps/tutorial.mdx
+++ /dev/null
@@ -1,155 +0,0 @@
----
-title: 'Tutorial: Set Up a Substreams-Powered Subgraph on Solana'
-sidebarTitle: Tutorial
----
-
-Successfully set up a trigger-based Substreams-powered Subgraph for a Solana SPL token.
-
-## 始めましょう
-
-For a video tutorial, check out [How to Index Solana with a Substreams-powered Subgraph](/sps/tutorial/#video-tutorial)
-
-### Prerequisites
-
-Before starting, make sure to:
-
-- Complete the [Getting Started Guide](https://github.com/streamingfast/substreams-starter) to set up your development environment using a Dev Container.
-- Be familiar with The Graph and basic blockchain concepts such as transactions and Protobufs.
-
-### Step 1: Initialize Your Project
-
-1. Open your Dev Container and run the following command to initialize your project:
-
-   ```bash
-   substreams init
-   ```
-
-2. Select the "minimal" project option.
-
-3. Replace the contents of the generated `substreams.yaml` file with the following configuration, which filters transactions for the Orca account on the SPL token program ID:
-
-```yaml
-specVersion: v0.1.0
-package:
-  name: my_project_sol
-  version: v0.1.0
-
-imports: # Pass your spkg of interest
-  solana: https://github.com/streamingfast/substreams-solana-spl-token/raw/master/tokens/solana-spl-token-v0.1.0.spkg
-
-modules:
-  - name: map_spl_transfers
-    use: solana:map_block # Select corresponding modules available within your spkg
-    initialBlock: 260000082
-
-  - name: map_transactions_by_programid
-    use: solana:solana:transactions_by_programid_without_votes
-
-network: solana-mainnet-beta
-
-params: # Modify the param fields to meet your needs
-  # For program_id: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
-  map_spl_transfers: token_contract:orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE
-```
-
-### Step 2: Generate the Subgraph Manifest
-
-Once the project is initialized, generate a Subgraph manifest by running the following command in the Dev Container:
-
-```bash
-substreams codegen subgraph
-```
-
-You will generate a`subgraph.yaml` manifest which imports the Substreams package as a data source:
-
-```yaml
----
-dataSources:
-  - kind: substreams
-    name: my_project_sol
-    network: solana-mainnet-beta
-    source:
-      package:
-        moduleName: map_spl_transfers # Module defined in the substreams.yaml
-        file: ./my-project-sol-v0.1.0.spkg
-    mapping:
-      apiVersion: 0.0.9
-      kind: substreams/graph-entities
-      file: ./src/mappings.ts
-      handler: handleTriggers
-```
-
-### Step 3: Define Entities in `schema.graphql`
-
-Define the fields you want to save in your Subgraph entities by updating the `schema.graphql` file.
-
-Here is an example:
-
-```graphql
-type MyTransfer @entity {
-  id: ID!
-  amount: String!
-  source: String!
-  designation: String!
-  signers: [String!]!
-}
-```
-
-This schema defines a `MyTransfer` entity with fields such as `id`, `amount`, `source`, `designation`, and `signers`.
-
-### Step 4: Handle Substreams Data in `mappings.ts`
-
-With the Protobuf objects generated, you can now handle the decoded Substreams data in your `mappings.ts` file found in the `./src` directory.
-
-The example below demonstrates how to extract to Subgraph entities the non-derived transfers associated to the Orca account id:
-
-```ts
-import { Protobuf } from 'as-proto/assembly'
-import { Events as protoEvents } from './pb/sf/solana/spl/token/v1/Events'
-import { MyTransfer } from '../generated/schema'
-
-export function handleTriggers(bytes: Uint8Array): void {
-  const input: protoEvents = Protobuf.decode<protoEvents>(bytes, protoEvents.decode)
-
-  for (let i = 0; i < input.data.length; i++) {
-    const event = input.data[i]
-
-    if (event.transfer != null) {
-      let entity_id: string = `${event.txnId}-${i}`
-      const entity = new MyTransfer(entity_id)
-      entity.amount = event.transfer!.instruction!.amount.toString()
-      entity.source = event.transfer!.accounts!.source
-      entity.designation = event.transfer!.accounts!.destination
-
-      if (event.transfer!.accounts!.signer!.single != null) {
-        entity.signers = [event.transfer!.accounts!.signer!.single!.signer]
-      } else if (event.transfer!.accounts!.signer!.multisig != null) {
-        entity.signers = event.transfer!.accounts!.signer!.multisig!.signers
-      }
-      entity.save()
-    }
-  }
-}
-```
-
-### Step 5: Generate Protobuf Files
-
-To generate Protobuf objects in AssemblyScript, run the following command:
-
-```bash
-npm run protogen
-```
-
-This command converts the Protobuf definitions into AssemblyScript, allowing you to use them in the Subgraph's handler.
-
-### Conclusion
-
-Congratulations! You've successfully set up a trigger-based Substreams-powered Subgraph for a Solana SPL token. You can take the next step by customizing your schema, mappings, and modules to fit your specific use case.
-
-### Video Tutorial
-
-<VideoEmbed title="How to Index Solana with a Substreams-powered Subgraph" youtube="RmKi-Nq9E_A" />
-
-### その他のリソース
-
-For more advanced customization and optimizations, check out the official [Substreams documentation](https://substreams.streamingfast.io/tutorials/solana).
diff --git a/website/src/pages/ko/substreams/sps/_meta.js b/website/src/pages/ko/substreams/sps/_meta.js
deleted file mode 100644
index 86fcd3df5ec0..000000000000
--- a/website/src/pages/ko/substreams/sps/_meta.js
+++ /dev/null
@@ -1,6 +0,0 @@
-export default {
-  introduction: '',
-  triggers: '',
-  tutorial: '',
-  faq: '',
-}
diff --git a/website/src/pages/ko/substreams/sps/faq.mdx b/website/src/pages/ko/substreams/sps/faq.mdx
deleted file mode 100644
index 250c466d5929..000000000000
--- a/website/src/pages/ko/substreams/sps/faq.mdx
+++ /dev/null
@@ -1,96 +0,0 @@
----
-title: Substreams-Powered Subgraphs FAQ
-sidebarTitle: FAQ
----
-
-## What are Substreams?
-
-Substreams is an exceptionally powerful processing engine capable of consuming rich streams of blockchain data. It allows you to refine and shape blockchain data for fast and seamless digestion by end-user applications.
-
-Specifically, it's a blockchain-agnostic, parallelized, and streaming-first engine that serves as a blockchain data transformation layer. It's powered by [Firehose](https://firehose.streamingfast.io/), and enables developers to write Rust modules, build upon community modules, provide extremely high-performance indexing, and [sink](/substreams/developing/sinks/) their data anywhere.
-
-Substreams is developed by [StreamingFast](https://www.streamingfast.io/). Visit the [Substreams Documentation](/substreams/introduction/) to learn more about Substreams.
-
-## What are Substreams-powered Subgraphs?
-
-[Substreams-powered Subgraphs](/sps/introduction/) combine the power of Substreams with the queryability of Subgraphs. When publishing a Substreams-powered Subgraph, the data produced by the Substreams transformations, can [output entity changes](https://github.com/streamingfast/substreams-sink-entity-changes/blob/develop/substreams-entity-change/src/tables.rs) that are compatible with Subgraph entities.
-
-If you are already familiar with Subgraph development, note that Substreams-powered Subgraphs can then be queried just as if it had been produced by the AssemblyScript transformation layer. This provides all the benefits of Subgraphs, including a dynamic and flexible GraphQL API.
-
-## How are Substreams-powered Subgraphs different from Subgraphs?
-
-Subgraphs are made up of datasources which specify onchain events, and how those events should be transformed via handlers written in Assemblyscript. These events are processed sequentially, based on the order in which events happen onchain.
-
-By contrast, substreams-powered Subgraphs have a single datasource which references a substreams package, which is processed by the Graph Node. Substreams have access to additional granular onchain data compared to conventional Subgraphs, and can also benefit from massively parallelised processing, which can mean much faster processing times.
-
-## What are the benefits of using Substreams-powered Subgraphs?
-
-Substreams-powered Subgraphs combine all the benefits of Substreams with the queryability of Subgraphs. They bring greater composability and high-performance indexing to The Graph. They also enable new data use cases; for example, once you've built your Substreams-powered Subgraph, you can reuse your [Substreams modules](https://docs.substreams.dev/reference-material/substreams-components/modules#modules) to output to different [sinks](https://substreams.streamingfast.io/reference-and-specs/manifests#sink) such as PostgreSQL, MongoDB, and Kafka.
-
-## What are the benefits of Substreams?
-
-There are many benefits to using Substreams, including:
-
-- Composable: You can stack Substreams modules like LEGO blocks, and build upon community modules, further refining public data.
-
-- High-performance indexing: Orders of magnitude faster indexing through large-scale clusters of parallel operations (think BigQuery).
-
-- Sink anywhere: Sink your data to anywhere you want: PostgreSQL, MongoDB, Kafka, Subgraphs, flat files, Google Sheets.
-
-- Programmable: Use code to customize extraction, do transformation-time aggregations, and model your output for multiple sinks.
-
-- Access to additional data which is not available as part of the JSON RPC
-
-- All the benefits of the Firehose.
-
-## What is the Firehose?
-
-Developed by [StreamingFast](https://www.streamingfast.io/), the Firehose is a blockchain data extraction layer designed from scratch to process the full history of blockchains at speeds that were previously unseen. Providing a files-based and streaming-first approach, it is a core component of StreamingFast's suite of open-source technologies and the foundation for Substreams.
-
-Go to the [documentation](https://firehose.streamingfast.io/) to learn more about the Firehose.
-
-## What are the benefits of the Firehose?
-
-There are many benefits to using Firehose, including:
-
-- Lowest latency & no polling: In a streaming-first fashion, the Firehose nodes are designed to race to push out the block data first.
-
-- Prevents downtimes: Designed from the ground up for High Availability.
-
-- Never miss a beat: The Firehose stream cursor is designed to handle forks and to continue where you left off in any condition.
-
-- Richest data model:  Best data model that includes the balance changes, the full call tree, internal transactions, logs, storage changes, gas costs, and more.
-
-- Leverages flat files: Blockchain data is extracted into flat files, the cheapest and most optimized computing resource available.
-
-## Where can developers access more information about Substreams-powered Subgraphs and Substreams?
-
-The [Substreams documentation](/substreams/introduction/) will teach you how to build Substreams modules.
-
-The [Substreams-powered Subgraphs documentation](/sps/introduction/) will show you how to package them for deployment on The Graph.
-
-The [latest Substreams Codegen tool](https://streamingfastio.medium.com/substreams-codegen-no-code-tool-to-bootstrap-your-project-a11efe0378c6) will allow you to bootstrap a Substreams project without any code.
-
-## What is the role of Rust modules in Substreams?
-
-Rust modules are the equivalent of the AssemblyScript mappers in Subgraphs. They are compiled to WASM in a similar way, but the programming model allows for parallel execution. They define the sort of transformations and aggregations you want to apply to the raw blockchain data.
-
-See [modules documentation](https://docs.substreams.dev/reference-material/substreams-components/modules#modules) for details.
-
-## What makes Substreams composable?
-
-When using Substreams, the composition happens at the transformation layer enabling cached modules to be re-used.
-
-As an example, Alice can build a DEX price module, Bob can use it to build a volume aggregator for some tokens of his interest, and Lisa can combine four individual DEX price modules to create a price oracle. A single Substreams request will package all of these individual's modules, link them together, to offer a much more refined stream of data. That stream can then be used to populate a Subgraph, and be queried by consumers.
-
-## How can you build and deploy a Substreams-powered Subgraph?
-
-After [defining](/sps/introduction/) a Substreams-powered Subgraph, you can use the Graph CLI to deploy it in [Subgraph Studio](https://thegraph.com/studio/).
-
-## Where can I find examples of Substreams and Substreams-powered Subgraphs?
-
-You can visit [this Github repo](https://github.com/pinax-network/awesome-substreams) to find examples of Substreams and Substreams-powered Subgraphs.
-
-## What do Substreams and Substreams-powered Subgraphs mean for The Graph Network?
-
-The integration promises many benefits, including extremely high-performance indexing and greater composability by leveraging community modules and building on them.
diff --git a/website/src/pages/ko/substreams/sps/introduction.mdx b/website/src/pages/ko/substreams/sps/introduction.mdx
deleted file mode 100644
index 92d8618165dd..000000000000
--- a/website/src/pages/ko/substreams/sps/introduction.mdx
+++ /dev/null
@@ -1,31 +0,0 @@
----
-title: Introduction to Substreams-Powered Subgraphs
-sidebarTitle: Introduction
----
-
-Boost your Subgraph's efficiency and scalability by using [Substreams](/substreams/introduction/) to stream pre-indexed blockchain data.
-
-## Overview
-
-Use a Substreams package (`.spkg`) as a data source to give your Subgraph access to a stream of pre-indexed blockchain data. This enables more efficient and scalable data handling, especially with large or complex blockchain networks.
-
-### Specifics
-
-There are two methods of enabling this technology:
-
-1. **Using Substreams [triggers](/sps/triggers/)**: Consume from any Substreams module by importing the Protobuf model through a Subgraph handler and move all your logic into a Subgraph. This method creates the Subgraph entities directly in the Subgraph.
-
-2. **Using [Entity Changes](https://docs.substreams.dev/how-to-guides/sinks/subgraph/graph-out)**: By writing more of the logic into Substreams, you can consume the module's output directly into [graph-node](/indexing/tooling/graph-node/). In graph-node, you can use the Substreams data to create your Subgraph entities.
-
-You can choose where to place your logic, either in the Subgraph or Substreams. However, consider what aligns with your data needs, as Substreams has a parallelized model, and triggers are consumed linearly in the graph node.
-
-### Additional Resources
-
-Visit the following links for tutorials on using code-generation tooling to build your first end-to-end Substreams project quickly:
-
-- [Solana](/substreams/developing/solana/transactions/)
-- [EVM](https://docs.substreams.dev/tutorials/intro-to-tutorials/evm)
-- [Starknet](https://docs.substreams.dev/tutorials/intro-to-tutorials/starknet)
-- [Injective](https://docs.substreams.dev/tutorials/intro-to-tutorials/on-cosmos/injective)
-- [MANTRA](https://docs.substreams.dev/tutorials/intro-to-tutorials/on-cosmos/mantra)
-- [Stellar](https://docs.substreams.dev/tutorials/intro-to-tutorials/stellar)
diff --git a/website/src/pages/ko/substreams/sps/triggers.mdx b/website/src/pages/ko/substreams/sps/triggers.mdx
deleted file mode 100644
index 66687aa21889..000000000000
--- a/website/src/pages/ko/substreams/sps/triggers.mdx
+++ /dev/null
@@ -1,47 +0,0 @@
----
-title: Substreams Triggers
----
-
-Use Custom Triggers and enable the full use GraphQL.
-
-## Overview
-
-Custom Triggers allow you to send data directly into your Subgraph mappings file and entities, which are similar to tables and fields. This enables you to fully use the GraphQL layer.
-
-By importing the Protobuf definitions emitted by your Substreams module, you can receive and process this data in your Subgraph's handler. This ensures efficient and streamlined data management within the Subgraph framework.
-
-### Defining `handleTransactions`
-
-The following code demonstrates how to define a `handleTransactions` function in a Subgraph handler. This function receives raw Substreams bytes as a parameter and decodes them into a `Transactions` object. For each transaction, a new Subgraph entity is created.
-
-```tsx
-export function handleTransactions(bytes: Uint8Array): void {
-  let transactions = assembly.eth.transaction.v1.Transactions.decode(bytes.buffer).transactions // 1.
-  if (transactions.length == 0) {
-    log.info('No transactions found', [])
-    return
-  }
-
-  for (let i = 0; i < transactions.length; i++) {
-    // 2.
-    let transaction = transactions[i]
-
-    let entity = new Transaction(transaction.hash) // 3.
-    entity.from = transaction.from
-    entity.to = transaction.to
-    entity.save()
-  }
-}
-```
-
-Here's what you're seeing in the `mappings.ts` file:
-
-1. The bytes containing Substreams data are decoded into the generated `Transactions` object, this object is used like any other AssemblyScript object
-2. Looping over the transactions
-3. Create a new Subgraph entity for every transaction
-
-To go through a detailed example of a trigger-based Subgraph, [check out the tutorial](/sps/tutorial/).
-
-### Additional Resources
-
-To scaffold your first project in the Development Container, check out one of the [How-To Guide](/substreams/developing/dev-container/).
diff --git a/website/src/pages/ko/substreams/sps/tutorial.mdx b/website/src/pages/ko/substreams/sps/tutorial.mdx
deleted file mode 100644
index 7358f8c02a20..000000000000
--- a/website/src/pages/ko/substreams/sps/tutorial.mdx
+++ /dev/null
@@ -1,155 +0,0 @@
----
-title: 'Tutorial: Set Up a Substreams-Powered Subgraph on Solana'
-sidebarTitle: Tutorial
----
-
-Successfully set up a trigger-based Substreams-powered Subgraph for a Solana SPL token.
-
-## Get Started
-
-For a video tutorial, check out [How to Index Solana with a Substreams-powered Subgraph](/sps/tutorial/#video-tutorial)
-
-### Prerequisites
-
-Before starting, make sure to:
-
-- Complete the [Getting Started Guide](https://github.com/streamingfast/substreams-starter) to set up your development environment using a Dev Container.
-- Be familiar with The Graph and basic blockchain concepts such as transactions and Protobufs.
-
-### Step 1: Initialize Your Project
-
-1. Open your Dev Container and run the following command to initialize your project:
-
-   ```bash
-   substreams init
-   ```
-
-2. Select the "minimal" project option.
-
-3. Replace the contents of the generated `substreams.yaml` file with the following configuration, which filters transactions for the Orca account on the SPL token program ID:
-
-```yaml
-specVersion: v0.1.0
-package:
-  name: my_project_sol
-  version: v0.1.0
-
-imports: # Pass your spkg of interest
-  solana: https://github.com/streamingfast/substreams-solana-spl-token/raw/master/tokens/solana-spl-token-v0.1.0.spkg
-
-modules:
-  - name: map_spl_transfers
-    use: solana:map_block # Select corresponding modules available within your spkg
-    initialBlock: 260000082
-
-  - name: map_transactions_by_programid
-    use: solana:solana:transactions_by_programid_without_votes
-
-network: solana-mainnet-beta
-
-params: # Modify the param fields to meet your needs
-  # For program_id: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
-  map_spl_transfers: token_contract:orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE
-```
-
-### Step 2: Generate the Subgraph Manifest
-
-Once the project is initialized, generate a Subgraph manifest by running the following command in the Dev Container:
-
-```bash
-substreams codegen subgraph
-```
-
-You will generate a`subgraph.yaml` manifest which imports the Substreams package as a data source:
-
-```yaml
----
-dataSources:
-  - kind: substreams
-    name: my_project_sol
-    network: solana-mainnet-beta
-    source:
-      package:
-        moduleName: map_spl_transfers # Module defined in the substreams.yaml
-        file: ./my-project-sol-v0.1.0.spkg
-    mapping:
-      apiVersion: 0.0.9
-      kind: substreams/graph-entities
-      file: ./src/mappings.ts
-      handler: handleTriggers
-```
-
-### Step 3: Define Entities in `schema.graphql`
-
-Define the fields you want to save in your Subgraph entities by updating the `schema.graphql` file.
-
-Here is an example:
-
-```graphql
-type MyTransfer @entity {
-  id: ID!
-  amount: String!
-  source: String!
-  designation: String!
-  signers: [String!]!
-}
-```
-
-This schema defines a `MyTransfer` entity with fields such as `id`, `amount`, `source`, `designation`, and `signers`.
-
-### Step 4: Handle Substreams Data in `mappings.ts`
-
-With the Protobuf objects generated, you can now handle the decoded Substreams data in your `mappings.ts` file found in the `./src` directory.
-
-The example below demonstrates how to extract to Subgraph entities the non-derived transfers associated to the Orca account id:
-
-```ts
-import { Protobuf } from 'as-proto/assembly'
-import { Events as protoEvents } from './pb/sf/solana/spl/token/v1/Events'
-import { MyTransfer } from '../generated/schema'
-
-export function handleTriggers(bytes: Uint8Array): void {
-  const input: protoEvents = Protobuf.decode<protoEvents>(bytes, protoEvents.decode)
-
-  for (let i = 0; i < input.data.length; i++) {
-    const event = input.data[i]
-
-    if (event.transfer != null) {
-      let entity_id: string = `${event.txnId}-${i}`
-      const entity = new MyTransfer(entity_id)
-      entity.amount = event.transfer!.instruction!.amount.toString()
-      entity.source = event.transfer!.accounts!.source
-      entity.designation = event.transfer!.accounts!.destination
-
-      if (event.transfer!.accounts!.signer!.single != null) {
-        entity.signers = [event.transfer!.accounts!.signer!.single!.signer]
-      } else if (event.transfer!.accounts!.signer!.multisig != null) {
-        entity.signers = event.transfer!.accounts!.signer!.multisig!.signers
-      }
-      entity.save()
-    }
-  }
-}
-```
-
-### Step 5: Generate Protobuf Files
-
-To generate Protobuf objects in AssemblyScript, run the following command:
-
-```bash
-npm run protogen
-```
-
-This command converts the Protobuf definitions into AssemblyScript, allowing you to use them in the Subgraph's handler.
-
-### Conclusion
-
-Congratulations! You've successfully set up a trigger-based Substreams-powered Subgraph for a Solana SPL token. You can take the next step by customizing your schema, mappings, and modules to fit your specific use case.
-
-### Video Tutorial
-
-<VideoEmbed title="How to Index Solana with a Substreams-powered Subgraph" youtube="RmKi-Nq9E_A" />
-
-### Additional Resources
-
-For more advanced customization and optimizations, check out the official [Substreams documentation](https://substreams.streamingfast.io/tutorials/solana).
diff --git a/website/src/pages/mr/substreams/sps/_meta.js b/website/src/pages/mr/substreams/sps/_meta.js
deleted file mode 100644
index 86fcd3df5ec0..000000000000
--- a/website/src/pages/mr/substreams/sps/_meta.js
+++ /dev/null
@@ -1,6 +0,0 @@
-export default {
-  introduction: '',
-  triggers: '',
-  tutorial: '',
-  faq: '',
-}
diff --git a/website/src/pages/mr/substreams/sps/faq.mdx b/website/src/pages/mr/substreams/sps/faq.mdx
deleted file mode 100644
index 250c466d5929..000000000000
--- a/website/src/pages/mr/substreams/sps/faq.mdx
+++ /dev/null
@@ -1,96 +0,0 @@
----
-title: Substreams-Powered Subgraphs FAQ
-sidebarTitle: FAQ
----
-
-## What are Substreams?
-
-Substreams is an exceptionally powerful processing engine capable of consuming rich streams of blockchain data. It allows you to refine and shape blockchain data for fast and seamless digestion by end-user applications.
-
-Specifically, it's a blockchain-agnostic, parallelized, and streaming-first engine that serves as a blockchain data transformation layer. It's powered by [Firehose](https://firehose.streamingfast.io/), and enables developers to write Rust modules, build upon community modules, provide extremely high-performance indexing, and [sink](/substreams/developing/sinks/) their data anywhere.
-
-Substreams is developed by [StreamingFast](https://www.streamingfast.io/). Visit the [Substreams Documentation](/substreams/introduction/) to learn more about Substreams.
-
-## What are Substreams-powered Subgraphs?
-
-[Substreams-powered Subgraphs](/sps/introduction/) combine the power of Substreams with the queryability of Subgraphs. When publishing a Substreams-powered Subgraph, the data produced by the Substreams transformations, can [output entity changes](https://github.com/streamingfast/substreams-sink-entity-changes/blob/develop/substreams-entity-change/src/tables.rs) that are compatible with Subgraph entities.
-
-If you are already familiar with Subgraph development, note that Substreams-powered Subgraphs can then be queried just as if it had been produced by the AssemblyScript transformation layer. This provides all the benefits of Subgraphs, including a dynamic and flexible GraphQL API.
-
-## How are Substreams-powered Subgraphs different from Subgraphs?
-
-Subgraphs are made up of datasources which specify onchain events, and how those events should be transformed via handlers written in Assemblyscript. These events are processed sequentially, based on the order in which events happen onchain.
-
-By contrast, substreams-powered Subgraphs have a single datasource which references a substreams package, which is processed by the Graph Node. Substreams have access to additional granular onchain data compared to conventional Subgraphs, and can also benefit from massively parallelised processing, which can mean much faster processing times.
-
-## What are the benefits of using Substreams-powered Subgraphs?
-
-Substreams-powered Subgraphs combine all the benefits of Substreams with the queryability of Subgraphs. They bring greater composability and high-performance indexing to The Graph. They also enable new data use cases; for example, once you've built your Substreams-powered Subgraph, you can reuse your [Substreams modules](https://docs.substreams.dev/reference-material/substreams-components/modules#modules) to output to different [sinks](https://substreams.streamingfast.io/reference-and-specs/manifests#sink) such as PostgreSQL, MongoDB, and Kafka.
-
-## What are the benefits of Substreams?
-
-There are many benefits to using Substreams, including:
-
-- Composable: You can stack Substreams modules like LEGO blocks, and build upon community modules, further refining public data.
-
-- High-performance indexing: Orders of magnitude faster indexing through large-scale clusters of parallel operations (think BigQuery).
-
-- Sink anywhere: Sink your data to anywhere you want: PostgreSQL, MongoDB, Kafka, Subgraphs, flat files, Google Sheets.
-
-- Programmable: Use code to customize extraction, do transformation-time aggregations, and model your output for multiple sinks.
-
-- Access to additional data which is not available as part of the JSON RPC
-
-- All the benefits of the Firehose.
-
-## What is the Firehose?
-
-Developed by [StreamingFast](https://www.streamingfast.io/), the Firehose is a blockchain data extraction layer designed from scratch to process the full history of blockchains at speeds that were previously unseen. Providing a files-based and streaming-first approach, it is a core component of StreamingFast's suite of open-source technologies and the foundation for Substreams.
-
-Go to the [documentation](https://firehose.streamingfast.io/) to learn more about the Firehose.
-
-## What are the benefits of the Firehose?
-
-There are many benefits to using Firehose, including:
-
-- Lowest latency & no polling: In a streaming-first fashion, the Firehose nodes are designed to race to push out the block data first.
-
-- Prevents downtimes: Designed from the ground up for High Availability.
-
-- Never miss a beat: The Firehose stream cursor is designed to handle forks and to continue where you left off in any condition.
-
-- Richest data model:  Best data model that includes the balance changes, the full call tree, internal transactions, logs, storage changes, gas costs, and more.
-
-- Leverages flat files: Blockchain data is extracted into flat files, the cheapest and most optimized computing resource available.
-
-## Where can developers access more information about Substreams-powered Subgraphs and Substreams?
-
-The [Substreams documentation](/substreams/introduction/) will teach you how to build Substreams modules.
-
-The [Substreams-powered Subgraphs documentation](/sps/introduction/) will show you how to package them for deployment on The Graph.
-
-The [latest Substreams Codegen tool](https://streamingfastio.medium.com/substreams-codegen-no-code-tool-to-bootstrap-your-project-a11efe0378c6) will allow you to bootstrap a Substreams project without any code.
-
-## What is the role of Rust modules in Substreams?
-
-Rust modules are the equivalent of the AssemblyScript mappers in Subgraphs. They are compiled to WASM in a similar way, but the programming model allows for parallel execution. They define the sort of transformations and aggregations you want to apply to the raw blockchain data.
-
-See [modules documentation](https://docs.substreams.dev/reference-material/substreams-components/modules#modules) for details.
-
-## What makes Substreams composable?
-
-When using Substreams, the composition happens at the transformation layer enabling cached modules to be re-used.
-
-As an example, Alice can build a DEX price module, Bob can use it to build a volume aggregator for some tokens of his interest, and Lisa can combine four individual DEX price modules to create a price oracle. A single Substreams request will package all of these individual's modules, link them together, to offer a much more refined stream of data. That stream can then be used to populate a Subgraph, and be queried by consumers.
-
-## How can you build and deploy a Substreams-powered Subgraph?
-
-After [defining](/sps/introduction/) a Substreams-powered Subgraph, you can use the Graph CLI to deploy it in [Subgraph Studio](https://thegraph.com/studio/).
-
-## Where can I find examples of Substreams and Substreams-powered Subgraphs?
-
-You can visit [this Github repo](https://github.com/pinax-network/awesome-substreams) to find examples of Substreams and Substreams-powered Subgraphs.
-
-## What do Substreams and Substreams-powered Subgraphs mean for The Graph Network?
-
-The integration promises many benefits, including extremely high-performance indexing and greater composability by leveraging community modules and building on them.
diff --git a/website/src/pages/mr/substreams/sps/introduction.mdx b/website/src/pages/mr/substreams/sps/introduction.mdx
deleted file mode 100644
index d22d998dee0d..000000000000
--- a/website/src/pages/mr/substreams/sps/introduction.mdx
+++ /dev/null
@@ -1,31 +0,0 @@
----
-title: Introduction to Substreams-Powered Subgraphs
-sidebarTitle: Introduction
----
-
-Boost your Subgraph's efficiency and scalability by using [Substreams](/substreams/introduction/) to stream pre-indexed blockchain data.
-
-## सविश्लेषण
-
-Use a Substreams package (`.spkg`) as a data source to give your Subgraph access to a stream of pre-indexed blockchain data. This enables more efficient and scalable data handling, especially with large or complex blockchain networks.
-
-### Specifics
-
-There are two methods of enabling this technology:
-
-1. **Using Substreams [triggers](/sps/triggers/)**: Consume from any Substreams module by importing the Protobuf model through a Subgraph handler and move all your logic into a Subgraph. This method creates the Subgraph entities directly in the Subgraph.
-
-2. **Using [Entity Changes](https://docs.substreams.dev/how-to-guides/sinks/subgraph/graph-out)**: By writing more of the logic into Substreams, you can consume the module's output directly into [graph-node](/indexing/tooling/graph-node/). In graph-node, you can use the Substreams data to create your Subgraph entities.
-
-You can choose where to place your logic, either in the Subgraph or Substreams. However, consider what aligns with your data needs, as Substreams has a parallelized model, and triggers are consumed linearly in the graph node.
-
-### अतिरिक्त संसाधने
-
-Visit the following links for tutorials on using code-generation tooling to build your first end-to-end Substreams project quickly:
-
-- [Solana](/substreams/developing/solana/transactions/)
-- [EVM](https://docs.substreams.dev/tutorials/intro-to-tutorials/evm)
-- [Starknet](https://docs.substreams.dev/tutorials/intro-to-tutorials/starknet)
-- [Injective](https://docs.substreams.dev/tutorials/intro-to-tutorials/on-cosmos/injective)
-- [MANTRA](https://docs.substreams.dev/tutorials/intro-to-tutorials/on-cosmos/mantra)
-- [Stellar](https://docs.substreams.dev/tutorials/intro-to-tutorials/stellar)
diff --git a/website/src/pages/mr/substreams/sps/triggers.mdx b/website/src/pages/mr/substreams/sps/triggers.mdx
deleted file mode 100644
index df877d792fad..000000000000
--- a/website/src/pages/mr/substreams/sps/triggers.mdx
+++ /dev/null
@@ -1,47 +0,0 @@
----
-title: Substreams Triggers
----
-
-Use Custom Triggers and enable the full use GraphQL.
-
-## सविश्लेषण
-
-Custom Triggers allow you to send data directly into your Subgraph mappings file and entities, which are similar to tables and fields. This enables you to fully use the GraphQL layer.
-
-By importing the Protobuf definitions emitted by your Substreams module, you can receive and process this data in your Subgraph's handler. This ensures efficient and streamlined data management within the Subgraph framework.
-
-### Defining `handleTransactions`
-
-The following code demonstrates how to define a `handleTransactions` function in a Subgraph handler. This function receives raw Substreams bytes as a parameter and decodes them into a `Transactions` object. For each transaction, a new Subgraph entity is created.
-
-```tsx
-export function handleTransactions(bytes: Uint8Array): void {
-  let transactions = assembly.eth.transaction.v1.Transactions.decode(bytes.buffer).transactions // 1.
-  if (transactions.length == 0) {
-    log.info('No transactions found', [])
-    return
-  }
-
-  for (let i = 0; i < transactions.length; i++) {
-    // 2.
-    let transaction = transactions[i]
-
-    let entity = new Transaction(transaction.hash) // 3.
-    entity.from = transaction.from
-    entity.to = transaction.to
-    entity.save()
-  }
-}
-```
-
-Here's what you're seeing in the `mappings.ts` file:
-
-1. The bytes containing Substreams data are decoded into the generated `Transactions` object, this object is used like any other AssemblyScript object
-2. Looping over the transactions
-3. Create a new Subgraph entity for every transaction
-
-To go through a detailed example of a trigger-based Subgraph, [check out the tutorial](/sps/tutorial/).
-
-### अतिरिक्त संसाधने
-
-To scaffold your first project in the Development Container, check out one of the [How-To Guide](/substreams/developing/dev-container/).
diff --git a/website/src/pages/mr/substreams/sps/tutorial.mdx b/website/src/pages/mr/substreams/sps/tutorial.mdx
deleted file mode 100644
index f72e82459cc5..000000000000
--- a/website/src/pages/mr/substreams/sps/tutorial.mdx
+++ /dev/null
@@ -1,155 +0,0 @@
----
-title: 'Tutorial: Set Up a Substreams-Powered Subgraph on Solana'
-sidebarTitle: Tutorial
----
-
-Successfully set up a trigger-based Substreams-powered Subgraph for a Solana SPL token.
-
-## सुरु करूया
-
-For a video tutorial, check out [How to Index Solana with a Substreams-powered Subgraph](/sps/tutorial/#video-tutorial)
-
-### Prerequisites
-
-Before starting, make sure to:
-
-- Complete the [Getting Started Guide](https://github.com/streamingfast/substreams-starter) to set up your development environment using a Dev Container.
-- Be familiar with The Graph and basic blockchain concepts such as transactions and Protobufs.
-
-### Step 1: Initialize Your Project
-
-1. Open your Dev Container and run the following command to initialize your project:
-
-   ```bash
-   substreams init
-   ```
-
-2. Select the "minimal" project option.
-
-3. Replace the contents of the generated `substreams.yaml` file with the following configuration, which filters transactions for the Orca account on the SPL token program ID:
-
-```yaml
-specVersion: v0.1.0
-package:
-  name: my_project_sol
-  version: v0.1.0
-
-imports: # Pass your spkg of interest
-  solana: https://github.com/streamingfast/substreams-solana-spl-token/raw/master/tokens/solana-spl-token-v0.1.0.spkg
-
-modules:
-  - name: map_spl_transfers
-    use: solana:map_block # Select corresponding modules available within your spkg
-    initialBlock: 260000082
-
-  - name: map_transactions_by_programid
-    use: solana:solana:transactions_by_programid_without_votes
-
-network: solana-mainnet-beta
-
-params: # Modify the param fields to meet your needs
-  # For program_id: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
-  map_spl_transfers: token_contract:orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE
-```
-
-### Step 2: Generate the Subgraph Manifest
-
-Once the project is initialized, generate a Subgraph manifest by running the following command in the Dev Container:
-
-```bash
-substreams codegen subgraph
-```
-
-You will generate a`subgraph.yaml` manifest which imports the Substreams package as a data source:
-
-```yaml
----
-dataSources:
-  - kind: substreams
-    name: my_project_sol
-    network: solana-mainnet-beta
-    source:
-      package:
-        moduleName: map_spl_transfers # Module defined in the substreams.yaml
-        file: ./my-project-sol-v0.1.0.spkg
-    mapping:
-      apiVersion: 0.0.9
-      kind: substreams/graph-entities
-      file: ./src/mappings.ts
-      handler: handleTriggers
-```
-
-### Step 3: Define Entities in `schema.graphql`
-
-Define the fields you want to save in your Subgraph entities by updating the `schema.graphql` file.
-
-Here is an example:
-
-```graphql
-type MyTransfer @entity {
-  id: ID!
-  amount: String!
-  source: String!
-  designation: String!
-  signers: [String!]!
-}
-```
-
-This schema defines a `MyTransfer` entity with fields such as `id`, `amount`, `source`, `designation`, and `signers`.
-
-### Step 4: Handle Substreams Data in `mappings.ts`
-
-With the Protobuf objects generated, you can now handle the decoded Substreams data in your `mappings.ts` file found in the `./src` directory.
-
-The example below demonstrates how to extract to Subgraph entities the non-derived transfers associated to the Orca account id:
-
-```ts
-import { Protobuf } from 'as-proto/assembly'
-import { Events as protoEvents } from './pb/sf/solana/spl/token/v1/Events'
-import { MyTransfer } from '../generated/schema'
-
-export function handleTriggers(bytes: Uint8Array): void {
-  const input: protoEvents = Protobuf.decode<protoEvents>(bytes, protoEvents.decode)
-
-  for (let i = 0; i < input.data.length; i++) {
-    const event = input.data[i]
-
-    if (event.transfer != null) {
-      let entity_id: string = `${event.txnId}-${i}`
-      const entity = new MyTransfer(entity_id)
-      entity.amount = event.transfer!.instruction!.amount.toString()
-      entity.source = event.transfer!.accounts!.source
-      entity.designation = event.transfer!.accounts!.destination
-
-      if (event.transfer!.accounts!.signer!.single != null) {
-        entity.signers = [event.transfer!.accounts!.signer!.single!.signer]
-      } else if (event.transfer!.accounts!.signer!.multisig != null) {
-        entity.signers = event.transfer!.accounts!.signer!.multisig!.signers
-      }
-      entity.save()
-    }
-  }
-}
-```
-
-### Step 5: Generate Protobuf Files
-
-To generate Protobuf objects in AssemblyScript, run the following command:
-
-```bash
-npm run protogen
-```
-
-This command converts the Protobuf definitions into AssemblyScript, allowing you to use them in the Subgraph's handler.
-
-### Conclusion
-
-Congratulations! You've successfully set up a trigger-based Substreams-powered Subgraph for a Solana SPL token. You can take the next step by customizing your schema, mappings, and modules to fit your specific use case.
-
-### Video Tutorial
-
-<VideoEmbed title="How to Index Solana with a Substreams-powered Subgraph" youtube="RmKi-Nq9E_A" />
-
-### अतिरिक्त संसाधने
-
-For more advanced customization and optimizations, check out the official [Substreams documentation](https://substreams.streamingfast.io/tutorials/solana).
diff --git a/website/src/pages/nl/substreams/sps/_meta.js b/website/src/pages/nl/substreams/sps/_meta.js
deleted file mode 100644
index 86fcd3df5ec0..000000000000
--- a/website/src/pages/nl/substreams/sps/_meta.js
+++ /dev/null
@@ -1,6 +0,0 @@
-export default {
-  introduction: '',
-  triggers: '',
-  tutorial: '',
-  faq: '',
-}
diff --git a/website/src/pages/nl/substreams/sps/faq.mdx b/website/src/pages/nl/substreams/sps/faq.mdx
deleted file mode 100644
index 250c466d5929..000000000000
--- a/website/src/pages/nl/substreams/sps/faq.mdx
+++ /dev/null
@@ -1,96 +0,0 @@
----
-title: Substreams-Powered Subgraphs FAQ
-sidebarTitle: FAQ
----
-
-## What are Substreams?
-
-Substreams is an exceptionally powerful processing engine capable of consuming rich streams of blockchain data. It allows you to refine and shape blockchain data for fast and seamless digestion by end-user applications.
-
-Specifically, it's a blockchain-agnostic, parallelized, and streaming-first engine that serves as a blockchain data transformation layer. It's powered by [Firehose](https://firehose.streamingfast.io/), and enables developers to write Rust modules, build upon community modules, provide extremely high-performance indexing, and [sink](/substreams/developing/sinks/) their data anywhere.
-
-Substreams is developed by [StreamingFast](https://www.streamingfast.io/). Visit the [Substreams Documentation](/substreams/introduction/) to learn more about Substreams.
-
-## What are Substreams-powered Subgraphs?
-
-[Substreams-powered Subgraphs](/sps/introduction/) combine the power of Substreams with the queryability of Subgraphs. When publishing a Substreams-powered Subgraph, the data produced by the Substreams transformations, can [output entity changes](https://github.com/streamingfast/substreams-sink-entity-changes/blob/develop/substreams-entity-change/src/tables.rs) that are compatible with Subgraph entities.
-
-If you are already familiar with Subgraph development, note that Substreams-powered Subgraphs can then be queried just as if it had been produced by the AssemblyScript transformation layer. This provides all the benefits of Subgraphs, including a dynamic and flexible GraphQL API.
-
-## How are Substreams-powered Subgraphs different from Subgraphs?
-
-Subgraphs are made up of datasources which specify onchain events, and how those events should be transformed via handlers written in Assemblyscript. These events are processed sequentially, based on the order in which events happen onchain.
-
-By contrast, substreams-powered Subgraphs have a single datasource which references a substreams package, which is processed by the Graph Node. Substreams have access to additional granular onchain data compared to conventional Subgraphs, and can also benefit from massively parallelised processing, which can mean much faster processing times.
-
-## What are the benefits of using Substreams-powered Subgraphs?
-
-Substreams-powered Subgraphs combine all the benefits of Substreams with the queryability of Subgraphs. They bring greater composability and high-performance indexing to The Graph. They also enable new data use cases; for example, once you've built your Substreams-powered Subgraph, you can reuse your [Substreams modules](https://docs.substreams.dev/reference-material/substreams-components/modules#modules) to output to different [sinks](https://substreams.streamingfast.io/reference-and-specs/manifests#sink) such as PostgreSQL, MongoDB, and Kafka.
-
-## What are the benefits of Substreams?
-
-There are many benefits to using Substreams, including:
-
-- Composable: You can stack Substreams modules like LEGO blocks, and build upon community modules, further refining public data.
-
-- High-performance indexing: Orders of magnitude faster indexing through large-scale clusters of parallel operations (think BigQuery).
-
-- Sink anywhere: Sink your data to anywhere you want: PostgreSQL, MongoDB, Kafka, Subgraphs, flat files, Google Sheets.
-
-- Programmable: Use code to customize extraction, do transformation-time aggregations, and model your output for multiple sinks.
-
-- Access to additional data which is not available as part of the JSON RPC
-
-- All the benefits of the Firehose.
-
-## What is the Firehose?
-
-Developed by [StreamingFast](https://www.streamingfast.io/), the Firehose is a blockchain data extraction layer designed from scratch to process the full history of blockchains at speeds that were previously unseen. Providing a files-based and streaming-first approach, it is a core component of StreamingFast's suite of open-source technologies and the foundation for Substreams.
-
-Go to the [documentation](https://firehose.streamingfast.io/) to learn more about the Firehose.
-
-## What are the benefits of the Firehose?
-
-There are many benefits to using Firehose, including:
-
-- Lowest latency & no polling: In a streaming-first fashion, the Firehose nodes are designed to race to push out the block data first.
-
-- Prevents downtimes: Designed from the ground up for High Availability.
-
-- Never miss a beat: The Firehose stream cursor is designed to handle forks and to continue where you left off in any condition.
-
-- Richest data model:  Best data model that includes the balance changes, the full call tree, internal transactions, logs, storage changes, gas costs, and more.
-
-- Leverages flat files: Blockchain data is extracted into flat files, the cheapest and most optimized computing resource available.
-
-## Where can developers access more information about Substreams-powered Subgraphs and Substreams?
-
-The [Substreams documentation](/substreams/introduction/) will teach you how to build Substreams modules.
-
-The [Substreams-powered Subgraphs documentation](/sps/introduction/) will show you how to package them for deployment on The Graph.
-
-The [latest Substreams Codegen tool](https://streamingfastio.medium.com/substreams-codegen-no-code-tool-to-bootstrap-your-project-a11efe0378c6) will allow you to bootstrap a Substreams project without any code.
-
-## What is the role of Rust modules in Substreams?
-
-Rust modules are the equivalent of the AssemblyScript mappers in Subgraphs. They are compiled to WASM in a similar way, but the programming model allows for parallel execution. They define the sort of transformations and aggregations you want to apply to the raw blockchain data.
-
-See [modules documentation](https://docs.substreams.dev/reference-material/substreams-components/modules#modules) for details.
-
-## What makes Substreams composable?
-
-When using Substreams, the composition happens at the transformation layer enabling cached modules to be re-used.
-
-As an example, Alice can build a DEX price module, Bob can use it to build a volume aggregator for some tokens of his interest, and Lisa can combine four individual DEX price modules to create a price oracle. A single Substreams request will package all of these individual's modules, link them together, to offer a much more refined stream of data. That stream can then be used to populate a Subgraph, and be queried by consumers.
-
-## How can you build and deploy a Substreams-powered Subgraph?
-
-After [defining](/sps/introduction/) a Substreams-powered Subgraph, you can use the Graph CLI to deploy it in [Subgraph Studio](https://thegraph.com/studio/).
-
-## Where can I find examples of Substreams and Substreams-powered Subgraphs?
-
-You can visit [this Github repo](https://github.com/pinax-network/awesome-substreams) to find examples of Substreams and Substreams-powered Subgraphs.
-
-## What do Substreams and Substreams-powered Subgraphs mean for The Graph Network?
-
-The integration promises many benefits, including extremely high-performance indexing and greater composability by leveraging community modules and building on them.
diff --git a/website/src/pages/nl/substreams/sps/introduction.mdx b/website/src/pages/nl/substreams/sps/introduction.mdx
deleted file mode 100644
index 92d8618165dd..000000000000
--- a/website/src/pages/nl/substreams/sps/introduction.mdx
+++ /dev/null
@@ -1,31 +0,0 @@
----
-title: Introduction to Substreams-Powered Subgraphs
-sidebarTitle: Introduction
----
-
-Boost your Subgraph's efficiency and scalability by using [Substreams](/substreams/introduction/) to stream pre-indexed blockchain data.
-
-## Overview
-
-Use a Substreams package (`.spkg`) as a data source to give your Subgraph access to a stream of pre-indexed blockchain data. This enables more efficient and scalable data handling, especially with large or complex blockchain networks.
-
-### Specifics
-
-There are two methods of enabling this technology:
-
-1. **Using Substreams [triggers](/sps/triggers/)**: Consume from any Substreams module by importing the Protobuf model through a Subgraph handler and move all your logic into a Subgraph. This method creates the Subgraph entities directly in the Subgraph.
-
-2. **Using [Entity Changes](https://docs.substreams.dev/how-to-guides/sinks/subgraph/graph-out)**: By writing more of the logic into Substreams, you can consume the module's output directly into [graph-node](/indexing/tooling/graph-node/). In graph-node, you can use the Substreams data to create your Subgraph entities.
-
-You can choose where to place your logic, either in the Subgraph or Substreams. However, consider what aligns with your data needs, as Substreams has a parallelized model, and triggers are consumed linearly in the graph node.
-
-### Additional Resources
-
-Visit the following links for tutorials on using code-generation tooling to build your first end-to-end Substreams project quickly:
-
-- [Solana](/substreams/developing/solana/transactions/)
-- [EVM](https://docs.substreams.dev/tutorials/intro-to-tutorials/evm)
-- [Starknet](https://docs.substreams.dev/tutorials/intro-to-tutorials/starknet)
-- [Injective](https://docs.substreams.dev/tutorials/intro-to-tutorials/on-cosmos/injective)
-- [MANTRA](https://docs.substreams.dev/tutorials/intro-to-tutorials/on-cosmos/mantra)
-- [Stellar](https://docs.substreams.dev/tutorials/intro-to-tutorials/stellar)
diff --git a/website/src/pages/nl/substreams/sps/triggers.mdx b/website/src/pages/nl/substreams/sps/triggers.mdx
deleted file mode 100644
index 66687aa21889..000000000000
--- a/website/src/pages/nl/substreams/sps/triggers.mdx
+++ /dev/null
@@ -1,47 +0,0 @@
----
-title: Substreams Triggers
----
-
-Use Custom Triggers and enable the full use GraphQL.
-
-## Overview
-
-Custom Triggers allow you to send data directly into your Subgraph mappings file and entities, which are similar to tables and fields. This enables you to fully use the GraphQL layer.
-
-By importing the Protobuf definitions emitted by your Substreams module, you can receive and process this data in your Subgraph's handler. This ensures efficient and streamlined data management within the Subgraph framework.
-
-### Defining `handleTransactions`
-
-The following code demonstrates how to define a `handleTransactions` function in a Subgraph handler. This function receives raw Substreams bytes as a parameter and decodes them into a `Transactions` object. For each transaction, a new Subgraph entity is created.
-
-```tsx
-export function handleTransactions(bytes: Uint8Array): void {
-  let transactions = assembly.eth.transaction.v1.Transactions.decode(bytes.buffer).transactions // 1.
-  if (transactions.length == 0) {
-    log.info('No transactions found', [])
-    return
-  }
-
-  for (let i = 0; i < transactions.length; i++) {
-    // 2.
-    let transaction = transactions[i]
-
-    let entity = new Transaction(transaction.hash) // 3.
-    entity.from = transaction.from
-    entity.to = transaction.to
-    entity.save()
-  }
-}
-```
-
-Here's what you're seeing in the `mappings.ts` file:
-
-1. The bytes containing Substreams data are decoded into the generated `Transactions` object, this object is used like any other AssemblyScript object
-2. Looping over the transactions
-3. Create a new Subgraph entity for every transaction
-
-To go through a detailed example of a trigger-based Subgraph, [check out the tutorial](/sps/tutorial/).
-
-### Additional Resources
-
-To scaffold your first project in the Development Container, check out one of the [How-To Guide](/substreams/developing/dev-container/).
diff --git a/website/src/pages/nl/substreams/sps/tutorial.mdx b/website/src/pages/nl/substreams/sps/tutorial.mdx
deleted file mode 100644
index fe78e2e9908f..000000000000
--- a/website/src/pages/nl/substreams/sps/tutorial.mdx
+++ /dev/null
@@ -1,155 +0,0 @@
----
-title: 'Tutorial: Set Up a Substreams-Powered Subgraph on Solana'
-sidebarTitle: Tutorial
----
-
-Successfully set up a trigger-based Substreams-powered Subgraph for a Solana SPL token.
-
-## Begin
-
-For a video tutorial, check out [How to Index Solana with a Substreams-powered Subgraph](/sps/tutorial/#video-tutorial)
-
-### Prerequisites
-
-Before starting, make sure to:
-
-- Complete the [Getting Started Guide](https://github.com/streamingfast/substreams-starter) to set up your development environment using a Dev Container.
-- Be familiar with The Graph and basic blockchain concepts such as transactions and Protobufs.
-
-### Step 1: Initialize Your Project
-
-1. Open your Dev Container and run the following command to initialize your project:
-
-   ```bash
-   substreams init
-   ```
-
-2. Select the "minimal" project option.
-
-3. Replace the contents of the generated `substreams.yaml` file with the following configuration, which filters transactions for the Orca account on the SPL token program ID:
-
-```yaml
-specVersion: v0.1.0
-package:
-  name: my_project_sol
-  version: v0.1.0
-
-imports: # Pass your spkg of interest
-  solana: https://github.com/streamingfast/substreams-solana-spl-token/raw/master/tokens/solana-spl-token-v0.1.0.spkg
-
-modules:
-  - name: map_spl_transfers
-    use: solana:map_block # Select corresponding modules available within your spkg
-    initialBlock: 260000082
-
-  - name: map_transactions_by_programid
-    use: solana:solana:transactions_by_programid_without_votes
-
-network: solana-mainnet-beta
-
-params: # Modify the param fields to meet your needs
-  # For program_id: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
-  map_spl_transfers: token_contract:orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE
-```
-
-### Step 2: Generate the Subgraph Manifest
-
-Once the project is initialized, generate a Subgraph manifest by running the following command in the Dev Container:
-
-```bash
-substreams codegen subgraph
-```
-
-You will generate a`subgraph.yaml` manifest which imports the Substreams package as a data source:
-
-```yaml
----
-dataSources:
-  - kind: substreams
-    name: my_project_sol
-    network: solana-mainnet-beta
-    source:
-      package:
-        moduleName: map_spl_transfers # Module defined in the substreams.yaml
-        file: ./my-project-sol-v0.1.0.spkg
-    mapping:
-      apiVersion: 0.0.9
-      kind: substreams/graph-entities
-      file: ./src/mappings.ts
-      handler: handleTriggers
-```
-
-### Step 3: Define Entities in `schema.graphql`
-
-Define the fields you want to save in your Subgraph entities by updating the `schema.graphql` file.
-
-Here is an example:
-
-```graphql
-type MyTransfer @entity {
-  id: ID!
-  amount: String!
-  source: String!
-  designation: String!
-  signers: [String!]!
-}
-```
-
-This schema defines a `MyTransfer` entity with fields such as `id`, `amount`, `source`, `designation`, and `signers`.
-
-### Step 4: Handle Substreams Data in `mappings.ts`
-
-With the Protobuf objects generated, you can now handle the decoded Substreams data in your `mappings.ts` file found in the `./src` directory.
-
-The example below demonstrates how to extract to Subgraph entities the non-derived transfers associated to the Orca account id:
-
-```ts
-import { Protobuf } from 'as-proto/assembly'
-import { Events as protoEvents } from './pb/sf/solana/spl/token/v1/Events'
-import { MyTransfer } from '../generated/schema'
-
-export function handleTriggers(bytes: Uint8Array): void {
-  const input: protoEvents = Protobuf.decode<protoEvents>(bytes, protoEvents.decode)
-
-  for (let i = 0; i < input.data.length; i++) {
-    const event = input.data[i]
-
-    if (event.transfer != null) {
-      let entity_id: string = `${event.txnId}-${i}`
-      const entity = new MyTransfer(entity_id)
-      entity.amount = event.transfer!.instruction!.amount.toString()
-      entity.source = event.transfer!.accounts!.source
-      entity.designation = event.transfer!.accounts!.destination
-
-      if (event.transfer!.accounts!.signer!.single != null) {
-        entity.signers = [event.transfer!.accounts!.signer!.single!.signer]
-      } else if (event.transfer!.accounts!.signer!.multisig != null) {
-        entity.signers = event.transfer!.accounts!.signer!.multisig!.signers
-      }
-      entity.save()
-    }
-  }
-}
-```
-
-### Step 5: Generate Protobuf Files
-
-To generate Protobuf objects in AssemblyScript, run the following command:
-
-```bash
-npm run protogen
-```
-
-This command converts the Protobuf definitions into AssemblyScript, allowing you to use them in the Subgraph's handler.
-
-### Conclusion
-
-Congratulations! You've successfully set up a trigger-based Substreams-powered Subgraph for a Solana SPL token. You can take the next step by customizing your schema, mappings, and modules to fit your specific use case.
-
-### Video Tutorial
-
-<VideoEmbed title="How to Index Solana with a Substreams-powered Subgraph" youtube="RmKi-Nq9E_A" />
-
-### Additional Resources
-
-For more advanced customization and optimizations, check out the official [Substreams documentation](https://substreams.streamingfast.io/tutorials/solana).
diff --git a/website/src/pages/pl/substreams/sps/_meta.js b/website/src/pages/pl/substreams/sps/_meta.js
deleted file mode 100644
index 86fcd3df5ec0..000000000000
--- a/website/src/pages/pl/substreams/sps/_meta.js
+++ /dev/null
@@ -1,6 +0,0 @@
-export default {
-  introduction: '',
-  triggers: '',
-  tutorial: '',
-  faq: '',
-}
diff --git a/website/src/pages/pl/substreams/sps/faq.mdx b/website/src/pages/pl/substreams/sps/faq.mdx
deleted file mode 100644
index 250c466d5929..000000000000
--- a/website/src/pages/pl/substreams/sps/faq.mdx
+++ /dev/null
@@ -1,96 +0,0 @@
----
-title: Substreams-Powered Subgraphs FAQ
-sidebarTitle: FAQ
----
-
-## What are Substreams?
-
-Substreams is an exceptionally powerful processing engine capable of consuming rich streams of blockchain data. It allows you to refine and shape blockchain data for fast and seamless digestion by end-user applications.
-
-Specifically, it's a blockchain-agnostic, parallelized, and streaming-first engine that serves as a blockchain data transformation layer. It's powered by [Firehose](https://firehose.streamingfast.io/), and enables developers to write Rust modules, build upon community modules, provide extremely high-performance indexing, and [sink](/substreams/developing/sinks/) their data anywhere.
-
-Substreams is developed by [StreamingFast](https://www.streamingfast.io/). Visit the [Substreams Documentation](/substreams/introduction/) to learn more about Substreams.
-
-## What are Substreams-powered Subgraphs?
-
-[Substreams-powered Subgraphs](/sps/introduction/) combine the power of Substreams with the queryability of Subgraphs. When publishing a Substreams-powered Subgraph, the data produced by the Substreams transformations, can [output entity changes](https://github.com/streamingfast/substreams-sink-entity-changes/blob/develop/substreams-entity-change/src/tables.rs) that are compatible with Subgraph entities.
-
-If you are already familiar with Subgraph development, note that Substreams-powered Subgraphs can then be queried just as if it had been produced by the AssemblyScript transformation layer. This provides all the benefits of Subgraphs, including a dynamic and flexible GraphQL API.
-
-## How are Substreams-powered Subgraphs different from Subgraphs?
-
-Subgraphs are made up of datasources which specify onchain events, and how those events should be transformed via handlers written in Assemblyscript. These events are processed sequentially, based on the order in which events happen onchain.
-
-By contrast, substreams-powered Subgraphs have a single datasource which references a substreams package, which is processed by the Graph Node. Substreams have access to additional granular onchain data compared to conventional Subgraphs, and can also benefit from massively parallelised processing, which can mean much faster processing times.
-
-## What are the benefits of using Substreams-powered Subgraphs?
-
-Substreams-powered Subgraphs combine all the benefits of Substreams with the queryability of Subgraphs. They bring greater composability and high-performance indexing to The Graph. They also enable new data use cases; for example, once you've built your Substreams-powered Subgraph, you can reuse your [Substreams modules](https://docs.substreams.dev/reference-material/substreams-components/modules#modules) to output to different [sinks](https://substreams.streamingfast.io/reference-and-specs/manifests#sink) such as PostgreSQL, MongoDB, and Kafka.
-
-## What are the benefits of Substreams?
-
-There are many benefits to using Substreams, including:
-
-- Composable: You can stack Substreams modules like LEGO blocks, and build upon community modules, further refining public data.
-
-- High-performance indexing: Orders of magnitude faster indexing through large-scale clusters of parallel operations (think BigQuery).
-
-- Sink anywhere: Sink your data to anywhere you want: PostgreSQL, MongoDB, Kafka, Subgraphs, flat files, Google Sheets.
-
-- Programmable: Use code to customize extraction, do transformation-time aggregations, and model your output for multiple sinks.
-
-- Access to additional data which is not available as part of the JSON RPC
-
-- All the benefits of the Firehose.
-
-## What is the Firehose?
-
-Developed by [StreamingFast](https://www.streamingfast.io/), the Firehose is a blockchain data extraction layer designed from scratch to process the full history of blockchains at speeds that were previously unseen. Providing a files-based and streaming-first approach, it is a core component of StreamingFast's suite of open-source technologies and the foundation for Substreams.
-
-Go to the [documentation](https://firehose.streamingfast.io/) to learn more about the Firehose.
-
-## What are the benefits of the Firehose?
-
-There are many benefits to using Firehose, including:
-
-- Lowest latency & no polling: In a streaming-first fashion, the Firehose nodes are designed to race to push out the block data first.
-
-- Prevents downtimes: Designed from the ground up for High Availability.
-
-- Never miss a beat: The Firehose stream cursor is designed to handle forks and to continue where you left off in any condition.
-
-- Richest data model:  Best data model that includes the balance changes, the full call tree, internal transactions, logs, storage changes, gas costs, and more.
-
-- Leverages flat files: Blockchain data is extracted into flat files, the cheapest and most optimized computing resource available.
-
-## Where can developers access more information about Substreams-powered Subgraphs and Substreams?
-
-The [Substreams documentation](/substreams/introduction/) will teach you how to build Substreams modules.
-
-The [Substreams-powered Subgraphs documentation](/sps/introduction/) will show you how to package them for deployment on The Graph.
-
-The [latest Substreams Codegen tool](https://streamingfastio.medium.com/substreams-codegen-no-code-tool-to-bootstrap-your-project-a11efe0378c6) will allow you to bootstrap a Substreams project without any code.
-
-## What is the role of Rust modules in Substreams?
-
-Rust modules are the equivalent of the AssemblyScript mappers in Subgraphs. They are compiled to WASM in a similar way, but the programming model allows for parallel execution. They define the sort of transformations and aggregations you want to apply to the raw blockchain data.
-
-See [modules documentation](https://docs.substreams.dev/reference-material/substreams-components/modules#modules) for details.
-
-## What makes Substreams composable?
-
-When using Substreams, the composition happens at the transformation layer enabling cached modules to be re-used.
-
-As an example, Alice can build a DEX price module, Bob can use it to build a volume aggregator for some tokens of his interest, and Lisa can combine four individual DEX price modules to create a price oracle. A single Substreams request will package all of these individual's modules, link them together, to offer a much more refined stream of data. That stream can then be used to populate a Subgraph, and be queried by consumers.
-
-## How can you build and deploy a Substreams-powered Subgraph?
-
-After [defining](/sps/introduction/) a Substreams-powered Subgraph, you can use the Graph CLI to deploy it in [Subgraph Studio](https://thegraph.com/studio/).
-
-## Where can I find examples of Substreams and Substreams-powered Subgraphs?
-
-You can visit [this Github repo](https://github.com/pinax-network/awesome-substreams) to find examples of Substreams and Substreams-powered Subgraphs.
-
-## What do Substreams and Substreams-powered Subgraphs mean for The Graph Network?
-
-The integration promises many benefits, including extremely high-performance indexing and greater composability by leveraging community modules and building on them.
diff --git a/website/src/pages/pl/substreams/sps/introduction.mdx b/website/src/pages/pl/substreams/sps/introduction.mdx
deleted file mode 100644
index 8c9483eb8feb..000000000000
--- a/website/src/pages/pl/substreams/sps/introduction.mdx
+++ /dev/null
@@ -1,31 +0,0 @@
----
-title: Introduction to Substreams-Powered Subgraphs
-sidebarTitle: Wstęp
----
-
-Boost your Subgraph's efficiency and scalability by using [Substreams](/substreams/introduction/) to stream pre-indexed blockchain data.
-
-## Overview
-
-Use a Substreams package (`.spkg`) as a data source to give your Subgraph access to a stream of pre-indexed blockchain data. This enables more efficient and scalable data handling, especially with large or complex blockchain networks.
-
-### Specifics
-
-There are two methods of enabling this technology:
-
-1. **Using Substreams [triggers](/sps/triggers/)**: Consume from any Substreams module by importing the Protobuf model through a Subgraph handler and move all your logic into a Subgraph. This method creates the Subgraph entities directly in the Subgraph.
-
-2. **Using [Entity Changes](https://docs.substreams.dev/how-to-guides/sinks/subgraph/graph-out)**: By writing more of the logic into Substreams, you can consume the module's output directly into [graph-node](/indexing/tooling/graph-node/). In graph-node, you can use the Substreams data to create your Subgraph entities.
-
-You can choose where to place your logic, either in the Subgraph or Substreams. However, consider what aligns with your data needs, as Substreams has a parallelized model, and triggers are consumed linearly in the graph node.
-
-### Additional Resources
-
-Visit the following links for tutorials on using code-generation tooling to build your first end-to-end Substreams project quickly:
-
-- [Solana](/substreams/developing/solana/transactions/)
-- [EVM](https://docs.substreams.dev/tutorials/intro-to-tutorials/evm)
-- [Starknet](https://docs.substreams.dev/tutorials/intro-to-tutorials/starknet)
-- [Injective](https://docs.substreams.dev/tutorials/intro-to-tutorials/on-cosmos/injective)
-- [MANTRA](https://docs.substreams.dev/tutorials/intro-to-tutorials/on-cosmos/mantra)
-- [Stellar](https://docs.substreams.dev/tutorials/intro-to-tutorials/stellar)
diff --git a/website/src/pages/pl/substreams/sps/triggers.mdx b/website/src/pages/pl/substreams/sps/triggers.mdx
deleted file mode 100644
index 66687aa21889..000000000000
--- a/website/src/pages/pl/substreams/sps/triggers.mdx
+++ /dev/null
@@ -1,47 +0,0 @@
----
-title: Substreams Triggers
----
-
-Use Custom Triggers and enable the full use GraphQL.
-
-## Overview
-
-Custom Triggers allow you to send data directly into your Subgraph mappings file and entities, which are similar to tables and fields. This enables you to fully use the GraphQL layer.
-
-By importing the Protobuf definitions emitted by your Substreams module, you can receive and process this data in your Subgraph's handler. This ensures efficient and streamlined data management within the Subgraph framework.
-
-### Defining `handleTransactions`
-
-The following code demonstrates how to define a `handleTransactions` function in a Subgraph handler. This function receives raw Substreams bytes as a parameter and decodes them into a `Transactions` object. For each transaction, a new Subgraph entity is created.
-
-```tsx
-export function handleTransactions(bytes: Uint8Array): void {
-  let transactions = assembly.eth.transaction.v1.Transactions.decode(bytes.buffer).transactions // 1.
-  if (transactions.length == 0) {
-    log.info('No transactions found', [])
-    return
-  }
-
-  for (let i = 0; i < transactions.length; i++) {
-    // 2.
-    let transaction = transactions[i]
-
-    let entity = new Transaction(transaction.hash) // 3.
-    entity.from = transaction.from
-    entity.to = transaction.to
-    entity.save()
-  }
-}
-```
-
-Here's what you're seeing in the `mappings.ts` file:
-
-1. The bytes containing Substreams data are decoded into the generated `Transactions` object, this object is used like any other AssemblyScript object
-2. Looping over the transactions
-3. Create a new Subgraph entity for every transaction
-
-To go through a detailed example of a trigger-based Subgraph, [check out the tutorial](/sps/tutorial/).
-
-### Additional Resources
-
-To scaffold your first project in the Development Container, check out one of the [How-To Guide](/substreams/developing/dev-container/).
diff --git a/website/src/pages/pl/substreams/sps/tutorial.mdx b/website/src/pages/pl/substreams/sps/tutorial.mdx
deleted file mode 100644
index a795de7bb32b..000000000000
--- a/website/src/pages/pl/substreams/sps/tutorial.mdx
+++ /dev/null
@@ -1,155 +0,0 @@
----
-title: 'Tutorial: Set Up a Substreams-Powered Subgraph on Solana'
-sidebarTitle: Tutorial
----
-
-Successfully set up a trigger-based Substreams-powered Subgraph for a Solana SPL token.
-
-## Jak zacząć?
-
-For a video tutorial, check out [How to Index Solana with a Substreams-powered Subgraph](/sps/tutorial/#video-tutorial)
-
-### Prerequisites
-
-Before starting, make sure to:
-
-- Complete the [Getting Started Guide](https://github.com/streamingfast/substreams-starter) to set up your development environment using a Dev Container.
-- Be familiar with The Graph and basic blockchain concepts such as transactions and Protobufs.
-
-### Step 1: Initialize Your Project
-
-1. Open your Dev Container and run the following command to initialize your project:
-
-   ```bash
-   substreams init
-   ```
-
-2. Select the "minimal" project option.
-
-3. Replace the contents of the generated `substreams.yaml` file with the following configuration, which filters transactions for the Orca account on the SPL token program ID:
-
-```yaml
-specVersion: v0.1.0
-package:
-  name: my_project_sol
-  version: v0.1.0
-
-imports: # Pass your spkg of interest
-  solana: https://github.com/streamingfast/substreams-solana-spl-token/raw/master/tokens/solana-spl-token-v0.1.0.spkg
-
-modules:
-  - name: map_spl_transfers
-    use: solana:map_block # Select corresponding modules available within your spkg
-    initialBlock: 260000082
-
-  - name: map_transactions_by_programid
-    use: solana:solana:transactions_by_programid_without_votes
-
-network: solana-mainnet-beta
-
-params: # Modify the param fields to meet your needs
-  # For program_id: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
-  map_spl_transfers: token_contract:orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE
-```
-
-### Step 2: Generate the Subgraph Manifest
-
-Once the project is initialized, generate a Subgraph manifest by running the following command in the Dev Container:
-
-```bash
-substreams codegen subgraph
-```
-
-You will generate a`subgraph.yaml` manifest which imports the Substreams package as a data source:
-
-```yaml
----
-dataSources:
-  - kind: substreams
-    name: my_project_sol
-    network: solana-mainnet-beta
-    source:
-      package:
-        moduleName: map_spl_transfers # Module defined in the substreams.yaml
-        file: ./my-project-sol-v0.1.0.spkg
-    mapping:
-      apiVersion: 0.0.9
-      kind: substreams/graph-entities
-      file: ./src/mappings.ts
-      handler: handleTriggers
-```
-
-### Step 3: Define Entities in `schema.graphql`
-
-Define the fields you want to save in your Subgraph entities by updating the `schema.graphql` file.
-
-Here is an example:
-
-```graphql
-type MyTransfer @entity {
-  id: ID!
-  amount: String!
-  source: String!
-  designation: String!
-  signers: [String!]!
-}
-```
-
-This schema defines a `MyTransfer` entity with fields such as `id`, `amount`, `source`, `designation`, and `signers`.
-
-### Step 4: Handle Substreams Data in `mappings.ts`
-
-With the Protobuf objects generated, you can now handle the decoded Substreams data in your `mappings.ts` file found in the `./src` directory.
-
-The example below demonstrates how to extract to Subgraph entities the non-derived transfers associated to the Orca account id:
-
-```ts
-import { Protobuf } from 'as-proto/assembly'
-import { Events as protoEvents } from './pb/sf/solana/spl/token/v1/Events'
-import { MyTransfer } from '../generated/schema'
-
-export function handleTriggers(bytes: Uint8Array): void {
-  const input: protoEvents = Protobuf.decode<protoEvents>(bytes, protoEvents.decode)
-
-  for (let i = 0; i < input.data.length; i++) {
-    const event = input.data[i]
-
-    if (event.transfer != null) {
-      let entity_id: string = `${event.txnId}-${i}`
-      const entity = new MyTransfer(entity_id)
-      entity.amount = event.transfer!.instruction!.amount.toString()
-      entity.source = event.transfer!.accounts!.source
-      entity.designation = event.transfer!.accounts!.destination
-
-      if (event.transfer!.accounts!.signer!.single != null) {
-        entity.signers = [event.transfer!.accounts!.signer!.single!.signer]
-      } else if (event.transfer!.accounts!.signer!.multisig != null) {
-        entity.signers = event.transfer!.accounts!.signer!.multisig!.signers
-      }
-      entity.save()
-    }
-  }
-}
-```
-
-### Step 5: Generate Protobuf Files
-
-To generate Protobuf objects in AssemblyScript, run the following command:
-
-```bash
-npm run protogen
-```
-
-This command converts the Protobuf definitions into AssemblyScript, allowing you to use them in the Subgraph's handler.
-
-### Conclusion
-
-Congratulations! You've successfully set up a trigger-based Substreams-powered Subgraph for a Solana SPL token. You can take the next step by customizing your schema, mappings, and modules to fit your specific use case.
-
-### Video Tutorial
-
-<VideoEmbed title="How to Index Solana with a Substreams-powered Subgraph" youtube="RmKi-Nq9E_A" />
-
-### Additional Resources
-
-For more advanced customization and optimizations, check out the official [Substreams documentation](https://substreams.streamingfast.io/tutorials/solana).
diff --git a/website/src/pages/pt/substreams/sps/_meta.js b/website/src/pages/pt/substreams/sps/_meta.js
deleted file mode 100644
index 86fcd3df5ec0..000000000000
--- a/website/src/pages/pt/substreams/sps/_meta.js
+++ /dev/null
@@ -1,6 +0,0 @@
-export default {
-  introduction: '',
-  triggers: '',
-  tutorial: '',
-  faq: '',
-}
diff --git a/website/src/pages/pt/substreams/sps/faq.mdx b/website/src/pages/pt/substreams/sps/faq.mdx
deleted file mode 100644
index 936b03bc0757..000000000000
--- a/website/src/pages/pt/substreams/sps/faq.mdx
+++ /dev/null
@@ -1,96 +0,0 @@
----
-title: 'Perguntas Frequentes: Subgraphs Movidos pelo Substreams'
-sidebarTitle: Perguntas Frequentes
----
-
-## O que são Substreams?
-
-O Substreams é um mecanismo de processamento excecionalmente poderoso, capaz de consumir ricos fluxos de dados de blockchain. Ele permite refinar e moldar dados de blockchain, para serem digeridos rápida e continuamente por aplicativos de utilizador final.
-
-Specifically, it's a blockchain-agnostic, parallelized, and streaming-first engine that serves as a blockchain data transformation layer. It's powered by [Firehose](https://firehose.streamingfast.io/), and enables developers to write Rust modules, build upon community modules, provide extremely high-performance indexing, and [sink](/substreams/developing/sinks/) their data anywhere.
-
-O Substreams é programado pela [StreamingFast](https://www.streamingfast.io/). Para mais informações, visite a [Documentação do Substreams](/substreams/introduction/).
-
-## O que são subgraphs movidos por Substreams?
-
-[Subgraphs movidos pelo Substreams](/sps/introduction/) combinam o poder do Substreams com as queries de subgraphs. Ao editar um subgraph movido pelo Substreams, os dados produzidos pelas transformações do Substreams podem [produzir mudanças de entidade](https://github.com/streamingfast/substreams-sink-entity-changes/blob/develop/substreams-entity-change/src/tables.rs) compatíveis com entidades de subgraph.
-
-Se já entende da programação de subgraphs, observe que subgraphs movidos a Substreams podem ser consultados do mesmo jeito que se tivessem sido produzidos pela camada de transformação em AssemblyScript; isso com todos os benefícios do Subgraph, o que inclui uma API GraphQL dinâmica e flexível.
-
-## Como subgraphs movidos a Substreams diferem de subgraphs?
-
-Os subgraphs são compostos de fontes de dados que especificam eventos on-chain, e como transformar estes eventos através de handlers escritos em AssemblyScript. Estes eventos são processados em sequência, com base na ordem em que acontecem na chain.
-
-Por outro lado, subgraphs movidos pelo Substreams têm uma única fonte de dados que referencia um pacote de substreams, processado pelo Graph Node. Substreams têm acesso a mais dados granulares on-chain em comparação a subgraphs convencionais, e também podem se beneficiar de um processamento paralelizado em massa, o que pode diminuir muito a espera do processamento.
-
-## Quais os benefícios do uso de subgraphs movidos a Substreams?
-
-Subgraphs movidos a Substreams combinam todos os benefícios do Substreams com o potencial de query de subgraphs. Eles também trazem mais composabilidade e indexações de alto desempenho ao The Graph. Eles também resultam em novos casos de uso de dados; por exemplo, após construir o seu Subgraph movido a Substreams, é possível reutilizar os seus [módulos de Substreams](https://substreams.streamingfast.io/documentation/develop/manifest-modules) para usar [coletores de dados](https://substreams.streamingfast.io/reference-and-specs/manifests#sink) diferentes, como PostgreSQL, MongoDB e Kafka.
-
-## Quais os benefícios do Substreams?
-
-Usar o Substreams incorre muitos benefícios, que incluem:
-
-- Compostável: Você pode empilhar módulos de Substreams como se fossem blocos de LEGO, e construir em cima de módulos da comunidade, para refinar dados públicos.
-
-- Indexação de alto desempenho: Indexação muito mais rápida através de clusters de larga escala de operações paralelas (como o BigQuery).
-
-- Colete dados em qualquer lugar: Mergulhe os seus dados onde quiser: PostgreSQL, MongoDB, Kafka, subgraphs, arquivos planos, Google Sheets.
-
-- Programável: Use códigos para personalizar a extração, realizar agregações de tempo de transformação, e modelar o seu resultado para vários sinks.
-
-- Acesso a dados tradicionais que não são disponíveis como parte do RPC em JSON
-
-- Todos os benefícios do Firehose.
-
-## O que é o Firehose?
-
-Desenvolvido pela [StreamingFast](https://www.streamingfast.io/), o Firehose é uma camada de extração de dados em blockchain desenhada do zero para processar o histórico completo de blockchains em velocidades nunca antes vistas. Com uma abordagem baseada em arquivos e que dá prioridade a transmissões, ele é um componente central do conjunto de tecnologias de código aberto da StreamingFast, e a fundação do Substreams.
-
-Confira a [documentação](https://firehose.streamingfast.io/) para aprender mais sobre o Firehose.
-
-## Quais os benefícios do Firehose?
-
-Há muitos benefícios do uso do Firehose, que incluem:
-
-- Latência menor: De forma que prioriza as transmissões, os nodes do Firehouse são desenhados para correrem para revelar os dados do bloco em primeiro lugar.
-
-- Evita downtimes: Desenhado do zero para Alta Disponibilidade.
-
-- Não perde nada: O cursor de transmissões do Firehose é desenhado para lidar com forks e continuar de onde você parou em qualquer condição.
-
-- Modelo rico de dados:  O melhor modelo de dados, que inclui as mudanças de saldo, a árvore de chamadas completa, transações internas, logs, mudanças de armazenamento, custos de gas, e mais.
-
-- Uso de arquivos planos: Dados de blockchain são extraídos em arquivos planos, o recurso de computação mais barato e otimizado disponível.
-
-## Onde programadores podem acessar mais informações sobre Substreams e subgraphs movidos a Substreams?
-
-Para aprender como construir módulos do Substreams, leia a [documentação do Substreams](/substreams/introduction/).
-
-Para aprender como empacotar subgraphs e implantá-los no The Graph, veja a [documentação sobre subgraphs movidos pelo Substreams](/sps/introduction/).
-
-A [ferramenta de Codegen no Substreams mais recente](https://streamingfastio.medium.com/substreams-codegen-no-code-tool-to-bootstrap-your-project-a11efe0378c6) permitirá ao programador inicializar um projeto no Substreams sem a necessidade de código.
-
-## Qual é o papel de módulos em Rust no Substreams?
-
-Módulos de Rust são o equivalente aos mapeadores em AssemblyScript em subgraphs. Eles são compilados em WASM de forma parecida, mas o modelo de programação permite execuções paralelas. Eles definem a categoria de transformações e agregações que você quer aplicar aos dados de blockchain crus.
-
-Veja a [documentação dos módulos](https://docs.substreams.dev/reference-material/substreams-components/modules#modules) para mais detalhes.
-
-## O que faz o Substreams compostável?
-
-Ao usar o Substreams, a composição é realizada na camada de transformação, permitindo o uso de módulos em cache.
-
-Como exemplo, Fulana pode construir um módulo de preço de DEX, Sicrano pode usá-lo para construir um agregador de volume para alguns tokens do seu interesse, e Beltrana pode combinar quatro módulos de preço de DEX individuais para criar um oráculo de preço. Um único pedido do Substreams empacotará todos estes módulos e os interligará para oferecer uma transmissão de dados muito mais refinada. Aquela transmissão pode então ser usada para popular um subgraph, e ser consultada pelos consumidores.
-
-## Como construir e publicar um Subgraph movido a Substreams?
-
-Após [definir](/sps/introduction/) um subgraph movido pelo Substreams, é possível usar a Graph CLI para implantá-lo no [Subgraph Studio](https://thegraph.com/studio/).
-
-## Onde posso encontrar exemplos de Substreams e subgraphs movidos a Substreams?
-
-Você pode visitar [este repositório do Github](https://github.com/pinax-network/awesome-substreams) para encontrar exemplos de Substreams e subgraphs movidos a Substreams.
-
-## O que Substreams e subgraphs movidos a Substreams significam para a Graph Network?
-
-A integração promete vários benefícios, incluindo indexações de altíssimo desempenho e mais composabilidade com o uso de módulos de comunidade e construção por cima deles.
diff --git a/website/src/pages/pt/substreams/sps/introduction.mdx b/website/src/pages/pt/substreams/sps/introduction.mdx
deleted file mode 100644
index c355e80d015a..000000000000
--- a/website/src/pages/pt/substreams/sps/introduction.mdx
+++ /dev/null
@@ -1,31 +0,0 @@
----
-title: Introudução a Subgraphs Movidos pelo Substreams
-sidebarTitle: Introdução
----
-
-Melhore a eficiência e a escalabilidade do seu subgraph com o [Substreams](/substreams/introduction/) para transmitir dados pré-indexados de blockchain.
-
-## Visão geral
-
-Use um pacote Substreams (`.spkg`) como fonte de dados para que o seu subgraph ganhe acesso a um fluxo de dados de blockchain pré-indexados. Isto resulta num tratamento de dados mais eficiente e escalável, especialmente com redes de blockchain grandes ou complexas.
-
-### Especificações
-
-Há dois metodos de ativar esta tecnologia:
-
-1. **Usar [gatilhos](/sps/triggers/)**: isto importa o modelo do Protobuf via um handler de subgraph, permitindo que o utilizador consuma de qualquer módulo do Substreams e mude toda a sua lógica para um subgraph. Este método cria as entidades diretamente no subgraph.
-
-2. **[Mudanças de Entidade](https://docs.substreams.dev/how-to-guides/sinks/subgraph/graph-out)**: Ao inserir mais da lógica no Substreams, pode-se alimentar o rendimento do módulo diretamente no [graph-node](/indexing/tooling/graph-node/). No graph-node, os dados do Substreams podem ser usados para criar as entidades do seu subgraph.
-
-É possível escolher onde colocar a sua lógica, seja no subgraph ou no Substreams. Porém, considere o que supre as suas necessidades de dados; o Substreams tem um modelo paralelizado, e os gatilhos são consumidos de forma linear no graph-node.
-
-### Outros Recursos
-
-Visite os seguintes links para ver guias passo-a-passo sobre ferramentas de geração de código, para construir o seu primeiro projeto de ponta a ponta rapidamente:
-
-- [Solana](/substreams/developing/solana/transactions/)
-- [EVM](https://docs.substreams.dev/tutorials/intro-to-tutorials/evm)
-- [Starknet](https://docs.substreams.dev/tutorials/intro-to-tutorials/starknet)
-- [Injective](https://docs.substreams.dev/tutorials/intro-to-tutorials/on-cosmos/injective)
-- [MANTRA](https://docs.substreams.dev/tutorials/intro-to-tutorials/on-cosmos/mantra)
-- [Stellar](https://docs.substreams.dev/tutorials/intro-to-tutorials/stellar)
diff --git a/website/src/pages/pt/substreams/sps/triggers.mdx b/website/src/pages/pt/substreams/sps/triggers.mdx
deleted file mode 100644
index eafeca1e373f..000000000000
--- a/website/src/pages/pt/substreams/sps/triggers.mdx
+++ /dev/null
@@ -1,47 +0,0 @@
----
-title: Gatilhos do Substreams
----
-
-Use Gatilhos Personalizados e ative o uso completo da GraphQL.
-
-## Visão geral
-
-Com Gatilhos Personalizados, é possível enviar dados diretamente ao arquivo de mapeamento do seu subgraph e às suas entidades; sendo esses aspetos parecidos com tabelas e campos. Assim, é possível usar a camada da GraphQL livremente.
-
-Estes dados podem ser recebidos e processados no handler do seu subgraph ao importar as definições do Protobuf emitidas pelo seu módulo do Substreams. Assim, o tratamento de dados na estrutura do subgraph fica mais simples e eficiente.
-
-### Como definir `handleTransactions`
-
-O código a seguir demonstra como definir uma função `handleTransactions` num handler de subgraph. Esta função recebe bytes brutos do Substreams como um parâmetro e os descodifica num objeto `Transactions`. Uma nova entidade de subgraph é criada para cada transação.
-
-```tsx
-export function handleTransactions(bytes: Uint8Array): void {
-  let transactions = assembly.eth.transaction.v1.Transactions.decode(bytes.buffer).transactions // 1.
-  if (transactions.length == 0) {
-    log.info('No transactions found', [])
-    return
-  }
-
-  for (let i = 0; i < transactions.length; i++) {
-    // 2.
-    let transaction = transactions[i]
-
-    let entity = new Transaction(transaction.hash) // 3.
-    entity.from = transaction.from
-    entity.to = transaction.to
-    entity.save()
-  }
-}
-```
-
-Você verá isto no arquivo `mappings.ts`:
-
-1. Os bytes contendo dados do Substreams são descodificados no objeto `Transactions` gerado; este é usado como qualquer outro objeto AssemblyScript
-2. Um loop sobre as transações
-3. Uma nova entidade de subgraph é criada para cada transação
-
-Para ver um exemplo detalhado de um subgraph baseado em gatilhos, [clique aqui](/sps/tutorial/).
-
-### Outros Recursos
-
-Para estruturar o seu primeiro projeto no Recipiente de Programação, confira [este guia](/substreams/developing/dev-container/).
diff --git a/website/src/pages/pt/substreams/sps/tutorial.mdx b/website/src/pages/pt/substreams/sps/tutorial.mdx
deleted file mode 100644
index 9c0719e36008..000000000000
--- a/website/src/pages/pt/substreams/sps/tutorial.mdx
+++ /dev/null
@@ -1,137 +0,0 @@
----
-title: 'Tutorial: Como Montar um Subgraph Movido a Substreams na Solana'
-sidebarTitle: Tutorial
----
-
-Configure um subgraph, movido pelo Substreams e baseado em gatilhos, para um token da SPL (Biblioteca de Protocolos da Solana) da Solana.
-
-## Como Começar
-
-Para ver um tutorial em vídeo sobre o assunto, [clique aqui](/sps/tutorial/#video-tutorial)
-
-### Pré-requisitos
-
-Antes de começar:
-
-- Complete o [Guia de Introdução](https://github.com/streamingfast/substreams-starter) para montar o seu ambiente de programação com um Recipiente de Programação.
-- Familiarize-se com o The Graph e conceitos básicos de blockchain, como transações e Protobufs.
-
-### Passo 1: Inicialize o Seu Projeto
-
-1. Para inicializar o seu projeto, abra o seu Recipiente e execute o seguinte comando:
-
-   ```bash
-   substreams init
-   ```
-
-2. Selecione a opção de projeto "minimal" (mínimo).
-
-3. Troque os conteúdos do arquivo `substreams.yaml` gerado com a seguinte configuração, que filtra transações para a conta do Orca no ID de programa do token da SPL:
-
-```yaml
-params: # Modifique os parâmetros a seu gosto
-  # For program_id: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
-  map_spl_transfers: token_contract:orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE
-```
-
-### Passo 2: Crie o Manifest do Subgraph
-
-Com o projeto inicializado, gere um manifest de subgraph com o seguinte comando no Recipiente de Programação:
-
-```bash
-substreams codegen subgraph
-```
-
-Será gerado um manifest `subgraph.yaml` que importa o pacote do Substreams como uma fonte de dados:
-
-```yaml
----
-dataSources:
-  - kind: substreams
-    name: my_project_sol
-    network: solana-mainnet-beta
-    source:
-      package:
-        moduleName: map_spl_transfers # Módulo definido no substreams.yaml
-        file: ./my-project-sol-v0.1.0.spkg
-    mapping:
-      apiVersion: 0.0.9
-      kind: substreams/graph-entities
-      file: ./src/mappings.ts
-      handler: handleTriggers
-```
-
-### Passo 3: Defina as Entidades em `schema.graphql`
-
-Para definir os campos a guardar nas suas entidades de subgraph, atualize o arquivo `schema.graphql`.
-
-Por exemplo:
-
-```graphql
-type MyTransfer @entity {
-  id: ID!
-  amount: String!
-  source: String!
-  designation: String!
-  signers: [String!]!
-}
-```
-
-Este schema define uma entidade `MyTransfer` com campos como `id`, `amount`, `source`, `designation`, e `signers`.
-
-### Passo 4: Controle Dados do Substreams no `mappings.ts`
-
-Com os objetos do Protobuf criados, agora você pode tratar os dados descodificados do Substreams no seu arquivo `mappings.ts` no diretório `./src`.
-
-O exemplo abaixo demonstra como extrair as transferências não derivadas associadas à id de conta do Orca para entidades de subgraph:
-
-```ts
-import { Protobuf } from 'as-proto/assembly'
-import { Events as protoEvents } from './pb/sf/solana/spl/token/v1/Events'
-import { MyTransfer } from '../generated/schema'
-
-export function handleTriggers(bytes: Uint8Array): void {
-  const input: protoEvents = Protobuf.decode<protoEvents>(bytes, protoEvents.decode)
-
-  for (let i = 0; i < input.data.length; i++) {
-    const event = input.data[i]
-
-    if (event.transfer != null) {
-      let entity_id: string = `${event.txnId}-${i}`
-      const entity = new MyTransfer(entity_id)
-      entity.amount = event.transfer!.instruction!.amount.toString()
-      entity.source = event.transfer!.accounts!.source
-      entity.designation = event.transfer!.accounts!.destination
-
-      if (event.transfer!.accounts!.signer!.single != null) {
-        entity.signers = [event.transfer!.accounts!.signer!.single!.signer]
-      } else if (event.transfer!.accounts!.signer!.multisig != null) {
-        entity.signers = event.transfer!.accounts!.signer!.multisig!.signers
-      }
-      entity.save()
-    }
-  }
-}
-```
-
-### Passo 5: Crie Arquivos de Protobuf
-
-Para gerar objetos do Protobuf no AssemblyScript, execute:
-
-```bash
-npm run protogen
-```
-
-Este comando converte as definições do Protobuf em AssemblyScript, permitindo o seu uso no handler do subgraph.
-
-### Conclusão
-
-Parabéns! Está montado um subgraph movido a Substreams, baseado em gatilhos, para um token da SPL da Solana. Agora dá para personalizar mais o seu schema, os seus mapeamentos, e os seus módulos de modo que combinem com o seu caso de uso específico.
-
-### Tutorial em vídeo
-
-<VideoEmbed title="Como indexar a Solana com um Subgraph movido a Substreams" youtube="RmKi-Nq9E_A" />
-
-### Outros Recursos
-
-Para otimizações e personalizações mais avançadas, veja a [documentação oficial do Substreams](https://substreams.streamingfast.io/tutorials/solana).
diff --git a/website/src/pages/ro/substreams/sps/_meta.js b/website/src/pages/ro/substreams/sps/_meta.js
deleted file mode 100644
index 86fcd3df5ec0..000000000000
--- a/website/src/pages/ro/substreams/sps/_meta.js
+++ /dev/null
@@ -1,6 +0,0 @@
-export default {
-  introduction: '',
-  triggers: '',
-  tutorial: '',
-  faq: '',
-}
diff --git a/website/src/pages/ro/substreams/sps/faq.mdx b/website/src/pages/ro/substreams/sps/faq.mdx
deleted file mode 100644
index 250c466d5929..000000000000
--- a/website/src/pages/ro/substreams/sps/faq.mdx
+++ /dev/null
@@ -1,96 +0,0 @@
----
-title: Substreams-Powered Subgraphs FAQ
-sidebarTitle: FAQ
----
-
-## What are Substreams?
-
-Substreams is an exceptionally powerful processing engine capable of consuming rich streams of blockchain data. It allows you to refine and shape blockchain data for fast and seamless digestion by end-user applications.
-
-Specifically, it's a blockchain-agnostic, parallelized, and streaming-first engine that serves as a blockchain data transformation layer. It's powered by [Firehose](https://firehose.streamingfast.io/), and enables developers to write Rust modules, build upon community modules, provide extremely high-performance indexing, and [sink](/substreams/developing/sinks/) their data anywhere.
-
-Substreams is developed by [StreamingFast](https://www.streamingfast.io/). Visit the [Substreams Documentation](/substreams/introduction/) to learn more about Substreams.
-
-## What are Substreams-powered Subgraphs?
-
-[Substreams-powered Subgraphs](/sps/introduction/) combine the power of Substreams with the queryability of Subgraphs. When publishing a Substreams-powered Subgraph, the data produced by the Substreams transformations, can [output entity changes](https://github.com/streamingfast/substreams-sink-entity-changes/blob/develop/substreams-entity-change/src/tables.rs) that are compatible with Subgraph entities.
-
-If you are already familiar with Subgraph development, note that Substreams-powered Subgraphs can then be queried just as if it had been produced by the AssemblyScript transformation layer. This provides all the benefits of Subgraphs, including a dynamic and flexible GraphQL API.
-
-## How are Substreams-powered Subgraphs different from Subgraphs?
-
-Subgraphs are made up of datasources which specify onchain events, and how those events should be transformed via handlers written in Assemblyscript. These events are processed sequentially, based on the order in which events happen onchain.
-
-By contrast, substreams-powered Subgraphs have a single datasource which references a substreams package, which is processed by the Graph Node. Substreams have access to additional granular onchain data compared to conventional Subgraphs, and can also benefit from massively parallelised processing, which can mean much faster processing times.
-
-## What are the benefits of using Substreams-powered Subgraphs?
-
-Substreams-powered Subgraphs combine all the benefits of Substreams with the queryability of Subgraphs. They bring greater composability and high-performance indexing to The Graph. They also enable new data use cases; for example, once you've built your Substreams-powered Subgraph, you can reuse your [Substreams modules](https://docs.substreams.dev/reference-material/substreams-components/modules#modules) to output to different [sinks](https://substreams.streamingfast.io/reference-and-specs/manifests#sink) such as PostgreSQL, MongoDB, and Kafka.
-
-## What are the benefits of Substreams?
-
-There are many benefits to using Substreams, including:
-
-- Composable: You can stack Substreams modules like LEGO blocks, and build upon community modules, further refining public data.
-
-- High-performance indexing: Orders of magnitude faster indexing through large-scale clusters of parallel operations (think BigQuery).
-
-- Sink anywhere: Sink your data to anywhere you want: PostgreSQL, MongoDB, Kafka, Subgraphs, flat files, Google Sheets.
-
-- Programmable: Use code to customize extraction, do transformation-time aggregations, and model your output for multiple sinks.
-
-- Access to additional data which is not available as part of the JSON RPC
-
-- All the benefits of the Firehose.
-
-## What is the Firehose?
-
-Developed by [StreamingFast](https://www.streamingfast.io/), the Firehose is a blockchain data extraction layer designed from scratch to process the full history of blockchains at speeds that were previously unseen. Providing a files-based and streaming-first approach, it is a core component of StreamingFast's suite of open-source technologies and the foundation for Substreams.
-
-Go to the [documentation](https://firehose.streamingfast.io/) to learn more about the Firehose.
-
-## What are the benefits of the Firehose?
-
-There are many benefits to using Firehose, including:
-
-- Lowest latency & no polling: In a streaming-first fashion, the Firehose nodes are designed to race to push out the block data first.
-
-- Prevents downtimes: Designed from the ground up for High Availability.
-
-- Never miss a beat: The Firehose stream cursor is designed to handle forks and to continue where you left off in any condition.
-
-- Richest data model:  Best data model that includes the balance changes, the full call tree, internal transactions, logs, storage changes, gas costs, and more.
-
-- Leverages flat files: Blockchain data is extracted into flat files, the cheapest and most optimized computing resource available.
-
-## Where can developers access more information about Substreams-powered Subgraphs and Substreams?
-
-The [Substreams documentation](/substreams/introduction/) will teach you how to build Substreams modules.
-
-The [Substreams-powered Subgraphs documentation](/sps/introduction/) will show you how to package them for deployment on The Graph.
-
-The [latest Substreams Codegen tool](https://streamingfastio.medium.com/substreams-codegen-no-code-tool-to-bootstrap-your-project-a11efe0378c6) will allow you to bootstrap a Substreams project without any code.
-
-## What is the role of Rust modules in Substreams?
-
-Rust modules are the equivalent of the AssemblyScript mappers in Subgraphs. They are compiled to WASM in a similar way, but the programming model allows for parallel execution. They define the sort of transformations and aggregations you want to apply to the raw blockchain data.
-
-See [modules documentation](https://docs.substreams.dev/reference-material/substreams-components/modules#modules) for details.
-
-## What makes Substreams composable?
-
-When using Substreams, the composition happens at the transformation layer enabling cached modules to be re-used.
-
-As an example, Alice can build a DEX price module, Bob can use it to build a volume aggregator for some tokens of his interest, and Lisa can combine four individual DEX price modules to create a price oracle. A single Substreams request will package all of these individual's modules, link them together, to offer a much more refined stream of data. That stream can then be used to populate a Subgraph, and be queried by consumers.
-
-## How can you build and deploy a Substreams-powered Subgraph?
-
-After [defining](/sps/introduction/) a Substreams-powered Subgraph, you can use the Graph CLI to deploy it in [Subgraph Studio](https://thegraph.com/studio/).
-
-## Where can I find examples of Substreams and Substreams-powered Subgraphs?
-
-You can visit [this Github repo](https://github.com/pinax-network/awesome-substreams) to find examples of Substreams and Substreams-powered Subgraphs.
-
-## What do Substreams and Substreams-powered Subgraphs mean for The Graph Network?
-
-The integration promises many benefits, including extremely high-performance indexing and greater composability by leveraging community modules and building on them.
diff --git a/website/src/pages/ro/substreams/sps/introduction.mdx b/website/src/pages/ro/substreams/sps/introduction.mdx
deleted file mode 100644
index 92d8618165dd..000000000000
--- a/website/src/pages/ro/substreams/sps/introduction.mdx
+++ /dev/null
@@ -1,31 +0,0 @@
----
-title: Introduction to Substreams-Powered Subgraphs
-sidebarTitle: Introduction
----
-
-Boost your Subgraph's efficiency and scalability by using [Substreams](/substreams/introduction/) to stream pre-indexed blockchain data.
-
-## Overview
-
-Use a Substreams package (`.spkg`) as a data source to give your Subgraph access to a stream of pre-indexed blockchain data. This enables more efficient and scalable data handling, especially with large or complex blockchain networks.
-
-### Specifics
-
-There are two methods of enabling this technology:
-
-1. **Using Substreams [triggers](/sps/triggers/)**: Consume from any Substreams module by importing the Protobuf model through a Subgraph handler and move all your logic into a Subgraph. This method creates the Subgraph entities directly in the Subgraph.
-
-2. **Using [Entity Changes](https://docs.substreams.dev/how-to-guides/sinks/subgraph/graph-out)**: By writing more of the logic into Substreams, you can consume the module's output directly into [graph-node](/indexing/tooling/graph-node/). In graph-node, you can use the Substreams data to create your Subgraph entities.
-
-You can choose where to place your logic, either in the Subgraph or Substreams. However, consider what aligns with your data needs, as Substreams has a parallelized model, and triggers are consumed linearly in the graph node.
-
-### Additional Resources
-
-Visit the following links for tutorials on using code-generation tooling to build your first end-to-end Substreams project quickly:
-
-- [Solana](/substreams/developing/solana/transactions/)
-- [EVM](https://docs.substreams.dev/tutorials/intro-to-tutorials/evm)
-- [Starknet](https://docs.substreams.dev/tutorials/intro-to-tutorials/starknet)
-- [Injective](https://docs.substreams.dev/tutorials/intro-to-tutorials/on-cosmos/injective)
-- [MANTRA](https://docs.substreams.dev/tutorials/intro-to-tutorials/on-cosmos/mantra)
-- [Stellar](https://docs.substreams.dev/tutorials/intro-to-tutorials/stellar)
diff --git a/website/src/pages/ro/substreams/sps/triggers.mdx b/website/src/pages/ro/substreams/sps/triggers.mdx
deleted file mode 100644
index 66687aa21889..000000000000
--- a/website/src/pages/ro/substreams/sps/triggers.mdx
+++ /dev/null
@@ -1,47 +0,0 @@
----
-title: Substreams Triggers
----
-
-Use Custom Triggers and enable the full use GraphQL.
-
-## Overview
-
-Custom Triggers allow you to send data directly into your Subgraph mappings file and entities, which are similar to tables and fields. This enables you to fully use the GraphQL layer.
-
-By importing the Protobuf definitions emitted by your Substreams module, you can receive and process this data in your Subgraph's handler. This ensures efficient and streamlined data management within the Subgraph framework.
-
-### Defining `handleTransactions`
-
-The following code demonstrates how to define a `handleTransactions` function in a Subgraph handler. This function receives raw Substreams bytes as a parameter and decodes them into a `Transactions` object. For each transaction, a new Subgraph entity is created.
-
-```tsx
-export function handleTransactions(bytes: Uint8Array): void {
-  let transactions = assembly.eth.transaction.v1.Transactions.decode(bytes.buffer).transactions // 1.
-  if (transactions.length == 0) {
-    log.info('No transactions found', [])
-    return
-  }
-
-  for (let i = 0; i < transactions.length; i++) {
-    // 2.
-    let transaction = transactions[i]
-
-    let entity = new Transaction(transaction.hash) // 3.
-    entity.from = transaction.from
-    entity.to = transaction.to
-    entity.save()
-  }
-}
-```
-
-Here's what you're seeing in the `mappings.ts` file:
-
-1. The bytes containing Substreams data are decoded into the generated `Transactions` object, this object is used like any other AssemblyScript object
-2. Looping over the transactions
-3. Create a new Subgraph entity for every transaction
-
-To go through a detailed example of a trigger-based Subgraph, [check out the tutorial](/sps/tutorial/).
-
-### Additional Resources
-
-To scaffold your first project in the Development Container, check out one of the [How-To Guide](/substreams/developing/dev-container/).
diff --git a/website/src/pages/ro/substreams/sps/tutorial.mdx b/website/src/pages/ro/substreams/sps/tutorial.mdx
deleted file mode 100644
index 7358f8c02a20..000000000000
--- a/website/src/pages/ro/substreams/sps/tutorial.mdx
+++ /dev/null
@@ -1,155 +0,0 @@
----
-title: 'Tutorial: Set Up a Substreams-Powered Subgraph on Solana'
-sidebarTitle: Tutorial
----
-
-Successfully set up a trigger-based Substreams-powered Subgraph for a Solana SPL token.
-
-## Get Started
-
-For a video tutorial, check out [How to Index Solana with a Substreams-powered Subgraph](/sps/tutorial/#video-tutorial)
-
-### Prerequisites
-
-Before starting, make sure to:
-
-- Complete the [Getting Started Guide](https://github.com/streamingfast/substreams-starter) to set up your development environment using a Dev Container.
-- Be familiar with The Graph and basic blockchain concepts such as transactions and Protobufs.
-
-### Step 1: Initialize Your Project
-
-1. Open your Dev Container and run the following command to initialize your project:
-
-   ```bash
-   substreams init
-   ```
-
-2. Select the "minimal" project option.
-
-3. Replace the contents of the generated `substreams.yaml` file with the following configuration, which filters transactions for the Orca account on the SPL token program ID:
-
-```yaml
-specVersion: v0.1.0
-package:
-  name: my_project_sol
-  version: v0.1.0
-
-imports: # Pass your spkg of interest
-  solana: https://github.com/streamingfast/substreams-solana-spl-token/raw/master/tokens/solana-spl-token-v0.1.0.spkg
-
-modules:
-  - name: map_spl_transfers
-    use: solana:map_block # Select corresponding modules available within your spkg
-    initialBlock: 260000082
-
-  - name: map_transactions_by_programid
-    use: solana:solana:transactions_by_programid_without_votes
-
-network: solana-mainnet-beta
-
-params: # Modify the param fields to meet your needs
-  # For program_id: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
-  map_spl_transfers: token_contract:orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE
-```
-
-### Step 2: Generate the Subgraph Manifest
-
-Once the project is initialized, generate a Subgraph manifest by running the following command in the Dev Container:
-
-```bash
-substreams codegen subgraph
-```
-
-You will generate a`subgraph.yaml` manifest which imports the Substreams package as a data source:
-
-```yaml
----
-dataSources:
-  - kind: substreams
-    name: my_project_sol
-    network: solana-mainnet-beta
-    source:
-      package:
-        moduleName: map_spl_transfers # Module defined in the substreams.yaml
-        file: ./my-project-sol-v0.1.0.spkg
-    mapping:
-      apiVersion: 0.0.9
-      kind: substreams/graph-entities
-      file: ./src/mappings.ts
-      handler: handleTriggers
-```
-
-### Step 3: Define Entities in `schema.graphql`
-
-Define the fields you want to save in your Subgraph entities by updating the `schema.graphql` file.
-
-Here is an example:
-
-```graphql
-type MyTransfer @entity {
-  id: ID!
-  amount: String!
-  source: String!
-  designation: String!
-  signers: [String!]!
-}
-```
-
-This schema defines a `MyTransfer` entity with fields such as `id`, `amount`, `source`, `designation`, and `signers`.
-
-### Step 4: Handle Substreams Data in `mappings.ts`
-
-With the Protobuf objects generated, you can now handle the decoded Substreams data in your `mappings.ts` file found in the `./src` directory.
-
-The example below demonstrates how to extract to Subgraph entities the non-derived transfers associated to the Orca account id:
-
-```ts
-import { Protobuf } from 'as-proto/assembly'
-import { Events as protoEvents } from './pb/sf/solana/spl/token/v1/Events'
-import { MyTransfer } from '../generated/schema'
-
-export function handleTriggers(bytes: Uint8Array): void {
-  const input: protoEvents = Protobuf.decode<protoEvents>(bytes, protoEvents.decode)
-
-  for (let i = 0; i < input.data.length; i++) {
-    const event = input.data[i]
-
-    if (event.transfer != null) {
-      let entity_id: string = `${event.txnId}-${i}`
-      const entity = new MyTransfer(entity_id)
-      entity.amount = event.transfer!.instruction!.amount.toString()
-      entity.source = event.transfer!.accounts!.source
-      entity.designation = event.transfer!.accounts!.destination
-
-      if (event.transfer!.accounts!.signer!.single != null) {
-        entity.signers = [event.transfer!.accounts!.signer!.single!.signer]
-      } else if (event.transfer!.accounts!.signer!.multisig != null) {
-        entity.signers = event.transfer!.accounts!.signer!.multisig!.signers
-      }
-      entity.save()
-    }
-  }
-}
-```
-
-### Step 5: Generate Protobuf Files
-
-To generate Protobuf objects in AssemblyScript, run the following command:
-
-```bash
-npm run protogen
-```
-
-This command converts the Protobuf definitions into AssemblyScript, allowing you to use them in the Subgraph's handler.
-
-### Conclusion
-
-Congratulations! You've successfully set up a trigger-based Substreams-powered Subgraph for a Solana SPL token. You can take the next step by customizing your schema, mappings, and modules to fit your specific use case.
-
-### Video Tutorial
-
-<VideoEmbed title="How to Index Solana with a Substreams-powered Subgraph" youtube="RmKi-Nq9E_A" />
-
-### Additional Resources
-
-For more advanced customization and optimizations, check out the official [Substreams documentation](https://substreams.streamingfast.io/tutorials/solana).
diff --git a/website/src/pages/ru/substreams/sps/_meta.js b/website/src/pages/ru/substreams/sps/_meta.js
deleted file mode 100644
index 86fcd3df5ec0..000000000000
--- a/website/src/pages/ru/substreams/sps/_meta.js
+++ /dev/null
@@ -1,6 +0,0 @@
-export default {
-  introduction: '',
-  triggers: '',
-  tutorial: '',
-  faq: '',
-}
diff --git a/website/src/pages/ru/substreams/sps/faq.mdx b/website/src/pages/ru/substreams/sps/faq.mdx
deleted file mode 100644
index 45edab5a3d00..000000000000
--- a/website/src/pages/ru/substreams/sps/faq.mdx
+++ /dev/null
@@ -1,96 +0,0 @@
----
-title: Часто задаваемые вопросы о Субграфах, работающих на основе Субпотоков
-sidebarTitle: Часто задаваемые вопросы
----
-
-## Что такое субпотоки?
-
-Substreams is an exceptionally powerful processing engine capable of consuming rich streams of blockchain data. It allows you to refine and shape blockchain data for fast and seamless digestion by end-user applications.
-
-Specifically, it's a blockchain-agnostic, parallelized, and streaming-first engine that serves as a blockchain data transformation layer. It's powered by [Firehose](https://firehose.streamingfast.io/), and enables developers to write Rust modules, build upon community modules, provide extremely high-performance indexing, and [sink](/substreams/developing/sinks/) their data anywhere.
-
-Substreams is developed by [StreamingFast](https://www.streamingfast.io/). Visit the [Substreams Documentation](/substreams/introduction/) to learn more about Substreams.
-
-## What are Substreams-powered Subgraphs?
-
-[Субграфы, работающие на основе Субпотоков](/sps/introduction/) объединяют мощь Субпотоков с возможностью запросов субграфов. При публикации субграфа, работающего на основе Субпотоков данные, полученные в результате преобразований Субпотоков, могут [генерировать изменения объектов](https://github.com/streamingfast/substreams-sink-entity-changes/blob/develop/substreams-entity-change/src/tables.rs), которые совместимы с объектами субграфа.
-
-If you are already familiar with Subgraph development, note that Substreams-powered Subgraphs can then be queried just as if it had been produced by the AssemblyScript transformation layer. This provides all the benefits of Subgraphs, including a dynamic and flexible GraphQL API.
-
-## How are Substreams-powered Subgraphs different from Subgraphs?
-
-Субграфы состоят из источников данных, которые указывают он-чейн события и то, как эти события должны быть преобразованы с помощью обработчиков, написанных на AssemblyScript. Эти события обрабатываются последовательно, в зависимости от того, в каком порядке они происходят он-чейн.
-
-В отличие от этого, субграфы, работающие на основе Субпотоков имеют один источник данных, который ссылается на пакет Субпотоков, обрабатываемый Graph Node. Субпотоки имеют доступ к дополнительным детализированным данным из он-чейна в отличии от традиционных субграфов, а также могут массово использовать параллельную обработку, что значительно ускоряет время обработки.
-
-## What are the benefits of using Substreams-powered Subgraphs?
-
-Substreams-powered Subgraphs combine all the benefits of Substreams with the queryability of Subgraphs. They bring greater composability and high-performance indexing to The Graph. They also enable new data use cases; for example, once you've built your Substreams-powered Subgraph, you can reuse your [Substreams modules](https://docs.substreams.dev/reference-material/substreams-components/modules#modules) to output to different [sinks](https://substreams.streamingfast.io/reference-and-specs/manifests#sink) such as PostgreSQL, MongoDB, and Kafka.
-
-## В чем преимущества Субпотоков?
-
-Использование Субпотоков имеет много преимуществ, в том числе:
-
-- Компонуемость: Вы можете объединять модули Субпотоков, как блоки LEGO, и опираться на модули сообщества, дополнительно уточняя общедоступные данные.
-
-- Высокопроизводительное индексирование: индексирование на порядки быстрее благодаря крупномасштабным кластерам параллельных операций (как пример, BigQuery).
-
-- Sink anywhere: Sink your data to anywhere you want: PostgreSQL, MongoDB, Kafka, Subgraphs, flat files, Google Sheets.
-
-- Программируемость: Используйте код для настройки извлечения, выполнения агрегирования во время преобразования и моделирования выходных данных для нескольких приемников.
-
-- Доступ к дополнительным данным, недоступным в составе JSON RPC
-
-- Все преимущества Firehose.
-
-## Что такое Firehose?
-
-Firehose, разработанный [StreamingFast](https://www.streamingfast.io/), представляет собой уровень извлечения данных блокчейна, разработанный с нуля для обработки полной истории блокчейнов на ранее невиданных скоростях. Обеспечивая подход, основанный на файлах и потоковой передаче, он является основным компонентом пакета технологий Streamingfast с открытым исходным кодом и основой для Субпотоков.
-
-Перейдите к [documentation](https://firehose.streamingfast.io/), чтобы узнать больше о Firehose.
-
-## В чем преимущества Firehose?
-
-Использование Firehose имеет много преимуществ, в том числе:
-
-- Наименьшая задержка и отсутствие опроса: В режиме потоковой передачи узлы Firehose спроектированы таким образом, чтобы первыми передавать данные блока.
-
-- Предотвращает простои: Разработан с нуля для обеспечения высокой доступности.
-
-- Никогда не пропустите ни одного момента: Курсор потока Firehose предназначен для обработки форков и продолжения работы с того места, где Вы остановились, в любых условиях.
-
-- Богатейшая модель данных:  Лучшая модель данных, которая включает изменения баланса, полное дерево вызовов, внутренние транзакции, логи, изменения в хранилище, затраты на газ и многое другое.
-
-- Использует плоские файлы: Данные блокчейна извлекаются в плоские файлы — самый дешевый и наиболее оптимизированный доступный вычислительный ресурс.
-
-## Where can developers access more information about Substreams-powered Subgraphs and Substreams?
-
-Из [документации по Субпотокам](/substreams/introduction/) Вы узнаете, как создавать модули Субпотоков.
-
-The [Substreams-powered Subgraphs documentation](/sps/introduction/) will show you how to package them for deployment on The Graph.
-
-[Новейший инструмент Substreams Codegen](https://streamingfastio.medium.com/substreams-codegen-no-code-tool-to-bootstrap-your-project-a11efe0378c6) позволит Вам загрузить проект Substreams без использования какого-либо кода.
-
-## Какова роль модулей Rust в Субпотоках?
-
-Rust modules are the equivalent of the AssemblyScript mappers in Subgraphs. They are compiled to WASM in a similar way, but the programming model allows for parallel execution. They define the sort of transformations and aggregations you want to apply to the raw blockchain data.
-
-Подробную информацию см. в [документации по модулям](https://docs.substreams.dev/reference-material/substreams-components/modules#modules).
-
-## Что делает Субпотоки компонуемыми?
-
-При использовании Субпотоков компоновка происходит на уровне преобразования, что позволяет повторно использовать кэшированные модули.
-
-As an example, Alice can build a DEX price module, Bob can use it to build a volume aggregator for some tokens of his interest, and Lisa can combine four individual DEX price modules to create a price oracle. A single Substreams request will package all of these individual's modules, link them together, to offer a much more refined stream of data. That stream can then be used to populate a Subgraph, and be queried by consumers.
-
-## Как Вы можете создать и развернуть субграф, работающий на основе Субпотоков?
-
-После [определения](/sps/introduction/) субграфа, работающего на основе Субпотоков, Вы можете использовать Graph CLI для его развертывания в [Subgraph Studio](https://thegraph.com/studio/).
-
-## Where can I find examples of Substreams and Substreams-powered Subgraphs?
-
-You can visit [this Github repo](https://github.com/pinax-network/awesome-substreams) to find examples of Substreams and Substreams-powered Subgraphs.
-
-## What do Substreams and Substreams-powered Subgraphs mean for The Graph Network?
-
-Интеграция обещает множество преимуществ, включая чрезвычайно высокопроизводительную индексацию и большую компонуемость за счет использования модулей сообщества и развития на их основе.
diff --git a/website/src/pages/ru/substreams/sps/introduction.mdx b/website/src/pages/ru/substreams/sps/introduction.mdx
deleted file mode 100644
index d4c5118ad8f6..000000000000
--- a/website/src/pages/ru/substreams/sps/introduction.mdx
+++ /dev/null
@@ -1,31 +0,0 @@
----
-title: Введение в субграфы, работающие на основе Субпотоков
-sidebarTitle: Введение
----
-
-Boost your Subgraph's efficiency and scalability by using [Substreams](/substreams/introduction/) to stream pre-indexed blockchain data.
-
-## Обзор
-
-Используя пакет Субпотоков (`.spkg`) в качестве источника данных, Ваш субграф получает доступ к потоку предварительно индексированных данных блокчейна. Это позволяет более эффективно и масштабируемо обрабатывать данные, особенно в крупных или сложных блокчейн-сетях.
-
-### Специфические особенности
-
-Существует два способа активации этой технологии:
-
-1. **Использование [триггеров](/sps/triggers/) Субпотоков**: Получайте данные из любого модуля Субпотоков, импортируя Protobuf-модель через обработчик субграфа, и переносите всю логику в субграф. Этот метод создает объекты субграфа непосредственно внутри субграфа.
-
-2. Использование [Изменений Объектов](https://docs.substreams.dev/how-to-guides/sinks/subgraph/graph-out)\*\*: Записывая большую часть логики в Субпотоки, Вы можете напрямую передавать вывод модуля в [graph-node](/indexing/tooling/graph-node/). В graph-node можно использовать данные Субпотоков для создания объектов субграфа.
-
-You can choose where to place your logic, either in the Subgraph or Substreams. However, consider what aligns with your data needs, as Substreams has a parallelized model, and triggers are consumed linearly in the graph node.
-
-### Дополнительные ресурсы
-
-Перейдите по следующим ссылкам, чтобы ознакомиться с руководствами по использованию инструментов для генерации кода и быстро создать свой первый проект от начала до конца:
-
-- [Solana](/substreams/developing/solana/transactions/)
-- [EVM](https://docs.substreams.dev/tutorials/intro-to-tutorials/evm)
-- [Starknet](https://docs.substreams.dev/tutorials/intro-to-tutorials/starknet)
-- [Injective](https://docs.substreams.dev/tutorials/intro-to-tutorials/on-cosmos/injective)
-- [MANTRA](https://docs.substreams.dev/tutorials/intro-to-tutorials/on-cosmos/mantra)
-- [Stellar](https://docs.substreams.dev/tutorials/intro-to-tutorials/stellar)
diff --git a/website/src/pages/ru/substreams/sps/triggers.mdx b/website/src/pages/ru/substreams/sps/triggers.mdx
deleted file mode 100644
index 3e047577c67a..000000000000
--- a/website/src/pages/ru/substreams/sps/triggers.mdx
+++ /dev/null
@@ -1,47 +0,0 @@
----
-title: Триггеры Субпотоков
----
-
-Use Custom Triggers and enable the full use GraphQL.
-
-## Обзор
-
-Custom Triggers allow you to send data directly into your Subgraph mappings file and entities, which are similar to tables and fields. This enables you to fully use the GraphQL layer.
-
-By importing the Protobuf definitions emitted by your Substreams module, you can receive and process this data in your Subgraph's handler. This ensures efficient and streamlined data management within the Subgraph framework.
-
-### Defining `handleTransactions`
-
-Следующий код демонстрирует, как определить функцию `handleTransactions` в обработчике субграфа. Эта функция принимает сырые байты Субпотоков в качестве параметра и декодирует их в объект `Transactions`. Для каждой транзакции создается новый объект субграфа.
-
-```tsx
-export function handleTransactions(bytes: Uint8Array): void {
-  let transactions = assembly.eth.transaction.v1.Transactions.decode(bytes.buffer).transactions // 1.
-  if (transactions.length == 0) {
-    log.info('No transactions found', [])
-    return
-  }
-
-  for (let i = 0; i < transactions.length; i++) {
-    // 2.
-    let transaction = transactions[i]
-
-    let entity = new Transaction(transaction.hash) // 3.
-    entity.from = transaction.from
-    entity.to = transaction.to
-    entity.save()
-  }
-}
-```
-
-Вот что Вы видите в файле `mappings.ts`:
-
-1. Байты, содержащие данные Субпотоков, декодируются в сгенерированный объект `Transactions`. Этот объект используется как любой другой объект на AssemblyScript
-2. Итерация по транзакциям (процесс поочерёдного прохода по всем транзакциям для их анализа или обработки)
-3. Создание нового объекта субграфа для каждой транзакции
-
-Чтобы ознакомиться с подробным примером субграфа на основе триггера, [ознакомьтесь с руководством](/sps/tutorial/).
-
-### Дополнительные ресурсы
-
-To scaffold your first project in the Development Container, check out one of the [How-To Guide](/substreams/developing/dev-container/).
diff --git a/website/src/pages/ru/substreams/sps/tutorial.mdx b/website/src/pages/ru/substreams/sps/tutorial.mdx
deleted file mode 100644
index 977f1803f352..000000000000
--- a/website/src/pages/ru/substreams/sps/tutorial.mdx
+++ /dev/null
@@ -1,154 +0,0 @@
----
-title: 'Руководство: Настройка Субграфа, работающего на основе Субпотоков в сети Solana'
-sidebarTitle: Tutorial
----
-
-Successfully set up a trigger-based Substreams-powered Subgraph for a Solana SPL token.
-
-## Начнем
-
-For a video tutorial, check out [How to Index Solana with a Substreams-powered Subgraph](/sps/tutorial/#video-tutorial)
-
-### Предварительные требования
-
-Прежде чем начать, убедитесь, что:
-
-- Завершили изучение [руководства по началу работы](https://github.com/streamingfast/substreams-starter), чтобы настроить свою среду разработки с использованием контейнера для разработки.
-- Ознакомлены с The Graph и основными концепциями блокчейна, такими как транзакции и Protobuf.
-
-### Шаг 1: Инициализация Вашего проекта
-
-1. Откройте свой контейнер для разработки и выполните следующую команду для инициализации проекта:
-
-   ```bash
-   substreams init
-   ```
-
-2. Выберите вариант проекта "minimal".
-
-3. Замените содержимое сгенерированного файла `substreams.yaml` следующей конфигурацией, которая фильтрует транзакции для аккаунта Orca в идентификаторе программы токенов SPL:
-
-```yaml
-specVersion: v0.1.0
-package:
-  name: my_project_sol
-  version: v0.1.0
-
-imports: # Укажите нужный Вам spkg
-  solana: https://github.com/streamingfast/substreams-solana-spl-token/raw/master/tokens/solana-spl-token-v0.1.0.spkg
-
-modules:
-  - name: map_spl_transfers
-    use: solana:map_block # Выберите соответствующие модули, доступные в Вашем spkg
-    initialBlock: 260000082
-
-  - name: map_transactions_by_programid
-    use: solana:solana:transactions_by_programid_without_votes
-
-network: solana-mainnet-beta
-
-params: # Измените параметры в соответствии со своими требованиями
-  # Для program_id: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA:   map_spl_transfers: token_contract:orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE
-```
-
-### Шаг 2: Создание манифеста субграфа
-
-После инициализации проекта создайте манифест субграфа, выполнив следующую команду в Dev Container:
-
-```bash
-substreams codegen subgraph
-```
-
-Вы создадите манифест `subgraph.yaml`, который импортирует пакет Субпотоков в качестве источника данных:
-
-```yaml
----
-dataSources:
-  - kind: substreams
-    name: my_project_sol
-    network: solana-mainnet-beta
-    source:
-      package:
-        moduleName: map_spl_transfers # Модуль, определенный в substreams.yaml
-        file: ./my-project-sol-v0.1.0.spkg
-    mapping:
-      apiVersion: 0.0.9
-      kind: substreams/graph-entities
-      file: ./src/mappings.ts
-      handler: handleTriggers
-```
-
-### Шаг 3: Определите объекты в `schema.graphql`
-
-Определите поля, которые хотите сохранить в объектах субграфа, обновив файл `schema.graphql`.
-
-Пример:
-
-```graphql
-type MyTransfer @entity {
-  id: ID!
-  amount: String!
-  source: String!
-  designation: String!
-  signers: [String!]!
-}
-```
-
-Эта схема определяет объект `MyTransfer` с такими полями, как `id`, `amount`, `source`, `designation` и `signers`.
-
-### Шаг 4: Обработка данных Субпотоков в `mappings.ts`
-
-With the Protobuf objects generated, you can now handle the decoded Substreams data in your `mappings.ts` file found in the `./src` directory.
-
-The example below demonstrates how to extract to Subgraph entities the non-derived transfers associated to the Orca account id:
-
-```ts
-import { Protobuf } from 'as-proto/assembly'
-import { Events as protoEvents } from './pb/sf/solana/spl/token/v1/Events'
-import { MyTransfer } from '../generated/schema'
-
-export function handleTriggers(bytes: Uint8Array): void {
-  const input: protoEvents = Protobuf.decode<protoEvents>(bytes, protoEvents.decode)
-
-  for (let i = 0; i < input.data.length; i++) {
-    const event = input.data[i]
-
-    if (event.transfer != null) {
-      let entity_id: string = `${event.txnId}-${i}`
-      const entity = new MyTransfer(entity_id)
-      entity.amount = event.transfer!.instruction!.amount.toString()
-      entity.source = event.transfer!.accounts!.source
-      entity.designation = event.transfer!.accounts!.destination
-
-      if (event.transfer!.accounts!.signer!.single != null) {
-        entity.signers = [event.transfer!.accounts!.signer!.single!.signer]
-      } else if (event.transfer!.accounts!.signer!.multisig != null) {
-        entity.signers = event.transfer!.accounts!.signer!.multisig!.signers
-      }
-      entity.save()
-    }
-  }
-}
-```
-
-### Шаг 5: Сгенерируйте файлы Protobuf
-
-Чтобы сгенерировать объекты Protobuf в AssemblyScript, выполните следующую команду:
-
-```bash
-npm run protogen
-```
-
-Эта команда преобразует определения Protobuf в AssemblyScript, позволяя использовать их в обработчике субграфа.
-
-### Заключение
-
-Поздравляем! Вы успешно настроили субграф на основе триггеров с поддержкой Субпотоков для токена Solana SPL. Следующий шаг Вы можете сделать, настроив схему, мэппинги и модули в соответствии со своим конкретным вариантом использования.
-
-### Video Tutorial
-
-<VideoEmbed title="How to Index Solana with a Substreams-powered Subgraph" youtube="RmKi-Nq9E_A" />
-
-### Дополнительные ресурсы
-
-Для более продвинутой настройки и оптимизации ознакомьтесь с официальной [документацией по Субпотокам](https://substreams.streamingfast.io/tutorials/solana).
diff --git a/website/src/pages/sv/substreams/sps/_meta.js b/website/src/pages/sv/substreams/sps/_meta.js
deleted file mode 100644
index 86fcd3df5ec0..000000000000
--- a/website/src/pages/sv/substreams/sps/_meta.js
+++ /dev/null
@@ -1,6 +0,0 @@
-export default {
-  introduction: '',
-  triggers: '',
-  tutorial: '',
-  faq: '',
-}
diff --git a/website/src/pages/sv/substreams/sps/faq.mdx b/website/src/pages/sv/substreams/sps/faq.mdx
deleted file mode 100644
index e5313465d87c..000000000000
--- a/website/src/pages/sv/substreams/sps/faq.mdx
+++ /dev/null
@@ -1,96 +0,0 @@
----
-title: Substreams-Powered Subgraphs FAQ
-sidebarTitle: FAQ
----
-
-## Vad är Substreams?
-
-Substreams is an exceptionally powerful processing engine capable of consuming rich streams of blockchain data. It allows you to refine and shape blockchain data for fast and seamless digestion by end-user applications.
-
-Specifically, it's a blockchain-agnostic, parallelized, and streaming-first engine that serves as a blockchain data transformation layer. It's powered by [Firehose](https://firehose.streamingfast.io/), and enables developers to write Rust modules, build upon community modules, provide extremely high-performance indexing, and [sink](/substreams/developing/sinks/) their data anywhere.
-
-Substreams is developed by [StreamingFast](https://www.streamingfast.io/). Visit the [Substreams Documentation](/substreams/introduction/) to learn more about Substreams.
-
-## What are Substreams-powered Subgraphs?
-
-[Substreams-powered Subgraphs](/sps/introduction/) combine the power of Substreams with the queryability of Subgraphs. When publishing a Substreams-powered Subgraph, the data produced by the Substreams transformations, can [output entity changes](https://github.com/streamingfast/substreams-sink-entity-changes/blob/develop/substreams-entity-change/src/tables.rs) that are compatible with Subgraph entities.
-
-If you are already familiar with Subgraph development, note that Substreams-powered Subgraphs can then be queried just as if it had been produced by the AssemblyScript transformation layer. This provides all the benefits of Subgraphs, including a dynamic and flexible GraphQL API.
-
-## How are Substreams-powered Subgraphs different from Subgraphs?
-
-Subgraphs are made up of datasources which specify onchain events, and how those events should be transformed via handlers written in Assemblyscript. These events are processed sequentially, based on the order in which events happen onchain.
-
-By contrast, substreams-powered Subgraphs have a single datasource which references a substreams package, which is processed by the Graph Node. Substreams have access to additional granular onchain data compared to conventional Subgraphs, and can also benefit from massively parallelised processing, which can mean much faster processing times.
-
-## What are the benefits of using Substreams-powered Subgraphs?
-
-Substreams-powered Subgraphs combine all the benefits of Substreams with the queryability of Subgraphs. They bring greater composability and high-performance indexing to The Graph. They also enable new data use cases; for example, once you've built your Substreams-powered Subgraph, you can reuse your [Substreams modules](https://docs.substreams.dev/reference-material/substreams-components/modules#modules) to output to different [sinks](https://substreams.streamingfast.io/reference-and-specs/manifests#sink) such as PostgreSQL, MongoDB, and Kafka.
-
-## Vilka fördelar har Substreams?
-
-Det finns många fördelar med att använda Substreams, inklusive:
-
-- Sammansättbarhet: Du kan stapla Substreams-moduler som LEGO-block och bygga på gemenskapsmoduler för att ytterligare förädla offentliga data.
-
-- Högpresterande indexering: Ordervärden snabbare indexering genom storskaliga kluster av parallella operationer (tänk BigQuery).
-
-- Sink anywhere: Sink your data to anywhere you want: PostgreSQL, MongoDB, Kafka, Subgraphs, flat files, Google Sheets.
-
-- Programmerbarhet: Använd kod för att anpassa extrahering, utföra transformationsbaserade aggregeringar och modellera din utdata för flera sänkar.
-
-- Tillgång till ytterligare data som inte är tillgänglig som en del av JSON RPC
-
-- Alla fördelar med Firehose.
-
-## Vad är Firehose?
-
-Utvecklat av [StreamingFast](https://www.streamingfast.io/), är Firehose ett blockkedjedata-extraktionslager som är utformat från grunden för att bearbeta blockkedjans fullständiga historik med hastigheter som tidigare inte var skådade. Genom att erbjuda en filbaserad och strömningsorienterad metod är det en kärnkomponent i StreamingFasts svit med öppen källkodstekniker och grunden för Substreams.
-
-Gå till [documentation](https://firehose.streamingfast.io/) för att lära dig mer om Firehose.
-
-## Vilka fördelar har Firehose?
-
-Det finns många fördelar med att använda Firehose, inklusive:
-
-- Lägsta latens och ingen avfrågning: I en strömningsorienterad stil är Firehose-noderna utformade för att snabbt skicka ut blockdata.
-
-- Förebygger driftstopp: Designat från grunden för hög tillgänglighet.
-
-- Missa aldrig en händelse: Firehose-strömmens markör är utformad för att hantera gafflar och att fortsätta där du avslutade under alla förhållanden.
-
-- Rikaste datamodell:  Bästa datamodell som inkluderar balansändringar, hela anropsträdet, interna transaktioner, loggar, lagringsändringar, gasavgifter och mer.
-
-- Använder platta filer: Blockkedjedata extraheras till platta filer, den billigaste och mest optimerade datorkällan som finns tillgänglig.
-
-## Where can developers access more information about Substreams-powered Subgraphs and Substreams?
-
-The [Substreams documentation](/substreams/introduction/) will teach you how to build Substreams modules.
-
-The [Substreams-powered Subgraphs documentation](/sps/introduction/) will show you how to package them for deployment on The Graph.
-
-The [latest Substreams Codegen tool](https://streamingfastio.medium.com/substreams-codegen-no-code-tool-to-bootstrap-your-project-a11efe0378c6) will allow you to bootstrap a Substreams project without any code.
-
-## Vad är rollen för Rust-moduler i Substreams?
-
-Rust modules are the equivalent of the AssemblyScript mappers in Subgraphs. They are compiled to WASM in a similar way, but the programming model allows for parallel execution. They define the sort of transformations and aggregations you want to apply to the raw blockchain data.
-
-See [modules documentation](https://docs.substreams.dev/reference-material/substreams-components/modules#modules) for details.
-
-## Vad gör Substreams sammansättbart?
-
-Vid användning av Substreams sker sammansättningen på omvandlingsnivån, vilket gör att cachade moduler kan återanvändas.
-
-As an example, Alice can build a DEX price module, Bob can use it to build a volume aggregator for some tokens of his interest, and Lisa can combine four individual DEX price modules to create a price oracle. A single Substreams request will package all of these individual's modules, link them together, to offer a much more refined stream of data. That stream can then be used to populate a Subgraph, and be queried by consumers.
-
-## Hur kan man bygga och distribuera en Substreams-drivna subgraf?
-
-After [defining](/sps/introduction/) a Substreams-powered Subgraph, you can use the Graph CLI to deploy it in [Subgraph Studio](https://thegraph.com/studio/).
-
-## Where can I find examples of Substreams and Substreams-powered Subgraphs?
-
-You can visit [this Github repo](https://github.com/pinax-network/awesome-substreams) to find examples of Substreams and Substreams-powered Subgraphs.
-
-## What do Substreams and Substreams-powered Subgraphs mean for The Graph Network?
-
-Integrationen lovar många fördelar, inklusive extremt högpresterande indexering och ökad sammansättbarhet genom att dra nytta av gemenskapsmoduler och bygga vidare på dem.
diff --git a/website/src/pages/sv/substreams/sps/introduction.mdx b/website/src/pages/sv/substreams/sps/introduction.mdx
deleted file mode 100644
index 30e643fff68a..000000000000
--- a/website/src/pages/sv/substreams/sps/introduction.mdx
+++ /dev/null
@@ -1,31 +0,0 @@
----
-title: Introduction to Substreams-Powered Subgraphs
-sidebarTitle: Introduktion
----
-
-Boost your Subgraph's efficiency and scalability by using [Substreams](/substreams/introduction/) to stream pre-indexed blockchain data.
-
-## Översikt
-
-Use a Substreams package (`.spkg`) as a data source to give your Subgraph access to a stream of pre-indexed blockchain data. This enables more efficient and scalable data handling, especially with large or complex blockchain networks.
-
-### Specifics
-
-There are two methods of enabling this technology:
-
-1. **Using Substreams [triggers](/sps/triggers/)**: Consume from any Substreams module by importing the Protobuf model through a Subgraph handler and move all your logic into a Subgraph. This method creates the Subgraph entities directly in the Subgraph.
-
-2. **Using [Entity Changes](https://docs.substreams.dev/how-to-guides/sinks/subgraph/graph-out)**: By writing more of the logic into Substreams, you can consume the module's output directly into [graph-node](/indexing/tooling/graph-node/). In graph-node, you can use the Substreams data to create your Subgraph entities.
-
-You can choose where to place your logic, either in the Subgraph or Substreams. However, consider what aligns with your data needs, as Substreams has a parallelized model, and triggers are consumed linearly in the graph node.
-
-### Ytterligare resurser
-
-Visit the following links for tutorials on using code-generation tooling to build your first end-to-end Substreams project quickly:
-
-- [Solana](/substreams/developing/solana/transactions/)
-- [EVM](https://docs.substreams.dev/tutorials/intro-to-tutorials/evm)
-- [Starknet](https://docs.substreams.dev/tutorials/intro-to-tutorials/starknet)
-- [Injective](https://docs.substreams.dev/tutorials/intro-to-tutorials/on-cosmos/injective)
-- [MANTRA](https://docs.substreams.dev/tutorials/intro-to-tutorials/on-cosmos/mantra)
-- [Stellar](https://docs.substreams.dev/tutorials/intro-to-tutorials/stellar)
diff --git a/website/src/pages/sv/substreams/sps/triggers.mdx b/website/src/pages/sv/substreams/sps/triggers.mdx
deleted file mode 100644
index 77b382a28280..000000000000
--- a/website/src/pages/sv/substreams/sps/triggers.mdx
+++ /dev/null
@@ -1,47 +0,0 @@
----
-title: Substreams Triggers
----
-
-Use Custom Triggers and enable the full use GraphQL.
-
-## Översikt
-
-Custom Triggers allow you to send data directly into your Subgraph mappings file and entities, which are similar to tables and fields. This enables you to fully use the GraphQL layer.
-
-By importing the Protobuf definitions emitted by your Substreams module, you can receive and process this data in your Subgraph's handler. This ensures efficient and streamlined data management within the Subgraph framework.
-
-### Defining `handleTransactions`
-
-The following code demonstrates how to define a `handleTransactions` function in a Subgraph handler. This function receives raw Substreams bytes as a parameter and decodes them into a `Transactions` object. For each transaction, a new Subgraph entity is created.
-
-```tsx
-export function handleTransactions(bytes: Uint8Array): void {
-  let transactions = assembly.eth.transaction.v1.Transactions.decode(bytes.buffer).transactions // 1.
-  if (transactions.length == 0) {
-    log.info('No transactions found', [])
-    return
-  }
-
-  for (let i = 0; i < transactions.length; i++) {
-    // 2.
-    let transaction = transactions[i]
-
-    let entity = new Transaction(transaction.hash) // 3.
-    entity.from = transaction.from
-    entity.to = transaction.to
-    entity.save()
-  }
-}
-```
-
-Here's what you're seeing in the `mappings.ts` file:
-
-1. The bytes containing Substreams data are decoded into the generated `Transactions` object, this object is used like any other AssemblyScript object
-2. Looping over the transactions
-3. Create a new Subgraph entity for every transaction
-
-To go through a detailed example of a trigger-based Subgraph, [check out the tutorial](/sps/tutorial/).
-
-### Ytterligare resurser
-
-To scaffold your first project in the Development Container, check out one of the [How-To Guide](/substreams/developing/dev-container/).
diff --git a/website/src/pages/sv/substreams/sps/tutorial.mdx b/website/src/pages/sv/substreams/sps/tutorial.mdx
deleted file mode 100644
index 0aabe284b6d0..000000000000
--- a/website/src/pages/sv/substreams/sps/tutorial.mdx
+++ /dev/null
@@ -1,155 +0,0 @@
----
-title: 'Tutorial: Set Up a Substreams-Powered Subgraph on Solana'
-sidebarTitle: Tutorial
----
-
-Successfully set up a trigger-based Substreams-powered Subgraph for a Solana SPL token.
-
-## Komma igång
-
-For a video tutorial, check out [How to Index Solana with a Substreams-powered Subgraph](/sps/tutorial/#video-tutorial)
-
-### Prerequisites
-
-Before starting, make sure to:
-
-- Complete the [Getting Started Guide](https://github.com/streamingfast/substreams-starter) to set up your development environment using a Dev Container.
-- Be familiar with The Graph and basic blockchain concepts such as transactions and Protobufs.
-
-### Step 1: Initialize Your Project
-
-1. Open your Dev Container and run the following command to initialize your project:
-
-   ```bash
-   substreams init
-   ```
-
-2. Select the "minimal" project option.
-
-3. Replace the contents of the generated `substreams.yaml` file with the following configuration, which filters transactions for the Orca account on the SPL token program ID:
-
-```yaml
-specVersion: v0.1.0
-package:
-  name: my_project_sol
-  version: v0.1.0
-
-imports: # Pass your spkg of interest
-  solana: https://github.com/streamingfast/substreams-solana-spl-token/raw/master/tokens/solana-spl-token-v0.1.0.spkg
-
-modules:
-  - name: map_spl_transfers
-    use: solana:map_block # Select corresponding modules available within your spkg
-    initialBlock: 260000082
-
-  - name: map_transactions_by_programid
-    use: solana:solana:transactions_by_programid_without_votes
-
-network: solana-mainnet-beta
-
-params: # Modify the param fields to meet your needs
-  # For program_id: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
-  map_spl_transfers: token_contract:orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE
-```
-
-### Step 2: Generate the Subgraph Manifest
-
-Once the project is initialized, generate a Subgraph manifest by running the following command in the Dev Container:
-
-```bash
-substreams codegen subgraph
-```
-
-You will generate a`subgraph.yaml` manifest which imports the Substreams package as a data source:
-
-```yaml
----
-dataSources:
-  - kind: substreams
-    name: my_project_sol
-    network: solana-mainnet-beta
-    source:
-      package:
-        moduleName: map_spl_transfers # Module defined in the substreams.yaml
-        file: ./my-project-sol-v0.1.0.spkg
-    mapping:
-      apiVersion: 0.0.9
-      kind: substreams/graph-entities
-      file: ./src/mappings.ts
-      handler: handleTriggers
-```
-
-### Step 3: Define Entities in `schema.graphql`
-
-Define the fields you want to save in your Subgraph entities by updating the `schema.graphql` file.
-
-Here is an example:
-
-```graphql
-type MyTransfer @entity {
-  id: ID!
-  amount: String!
-  source: String!
-  designation: String!
-  signers: [String!]!
-}
-```
-
-This schema defines a `MyTransfer` entity with fields such as `id`, `amount`, `source`, `designation`, and `signers`.
-
-### Step 4: Handle Substreams Data in `mappings.ts`
-
-With the Protobuf objects generated, you can now handle the decoded Substreams data in your `mappings.ts` file found in the `./src` directory.
-
-The example below demonstrates how to extract to Subgraph entities the non-derived transfers associated to the Orca account id:
-
-```ts
-import { Protobuf } from 'as-proto/assembly'
-import { Events as protoEvents } from './pb/sf/solana/spl/token/v1/Events'
-import { MyTransfer } from '../generated/schema'
-
-export function handleTriggers(bytes: Uint8Array): void {
-  const input: protoEvents = Protobuf.decode<protoEvents>(bytes, protoEvents.decode)
-
-  for (let i = 0; i < input.data.length; i++) {
-    const event = input.data[i]
-
-    if (event.transfer != null) {
-      let entity_id: string = `${event.txnId}-${i}`
-      const entity = new MyTransfer(entity_id)
-      entity.amount = event.transfer!.instruction!.amount.toString()
-      entity.source = event.transfer!.accounts!.source
-      entity.designation = event.transfer!.accounts!.destination
-
-      if (event.transfer!.accounts!.signer!.single != null) {
-        entity.signers = [event.transfer!.accounts!.signer!.single!.signer]
-      } else if (event.transfer!.accounts!.signer!.multisig != null) {
-        entity.signers = event.transfer!.accounts!.signer!.multisig!.signers
-      }
-      entity.save()
-    }
-  }
-}
-```
-
-### Step 5: Generate Protobuf Files
-
-To generate Protobuf objects in AssemblyScript, run the following command:
-
-```bash
-npm run protogen
-```
-
-This command converts the Protobuf definitions into AssemblyScript, allowing you to use them in the Subgraph's handler.
-
-### Conclusion
-
-Congratulations! You've successfully set up a trigger-based Substreams-powered Subgraph for a Solana SPL token. You can take the next step by customizing your schema, mappings, and modules to fit your specific use case.
-
-### Video Tutorial
-
-<VideoEmbed title="How to Index Solana with a Substreams-powered Subgraph" youtube="RmKi-Nq9E_A" />
-
-### Ytterligare resurser
-
-For more advanced customization and optimizations, check out the official [Substreams documentation](https://substreams.streamingfast.io/tutorials/solana).
diff --git a/website/src/pages/tr/substreams/sps/_meta.js b/website/src/pages/tr/substreams/sps/_meta.js
deleted file mode 100644
index 86fcd3df5ec0..000000000000
--- a/website/src/pages/tr/substreams/sps/_meta.js
+++ /dev/null
@@ -1,6 +0,0 @@
-export default {
-  introduction: '',
-  triggers: '',
-  tutorial: '',
-  faq: '',
-}
diff --git a/website/src/pages/tr/substreams/sps/faq.mdx b/website/src/pages/tr/substreams/sps/faq.mdx
deleted file mode 100644
index 30401c2c76bd..000000000000
--- a/website/src/pages/tr/substreams/sps/faq.mdx
+++ /dev/null
@@ -1,96 +0,0 @@
----
-title: Substreams-Powered Subgraphs FAQ
-sidebarTitle: FAQ
----
-
-## Substreams nedir?
-
-Substreams is an exceptionally powerful processing engine capable of consuming rich streams of blockchain data. It allows you to refine and shape blockchain data for fast and seamless digestion by end-user applications.
-
-Specifically, it's a blockchain-agnostic, parallelized, and streaming-first engine that serves as a blockchain data transformation layer. It's powered by [Firehose](https://firehose.streamingfast.io/), and enables developers to write Rust modules, build upon community modules, provide extremely high-performance indexing, and [sink](/substreams/developing/sinks/) their data anywhere.
-
-Substreams is developed by [StreamingFast](https://www.streamingfast.io/). Visit the [Substreams Documentation](/substreams/introduction/) to learn more about Substreams.
-
-## What are Substreams-powered Subgraphs?
-
-[Substreams-powered Subgraphs](/sps/introduction/) combine the power of Substreams with the queryability of Subgraphs. When publishing a Substreams-powered Subgraph, the data produced by the Substreams transformations, can [output entity changes](https://github.com/streamingfast/substreams-sink-entity-changes/blob/develop/substreams-entity-change/src/tables.rs) that are compatible with Subgraph entities.
-
-If you are already familiar with Subgraph development, note that Substreams-powered Subgraphs can then be queried just as if it had been produced by the AssemblyScript transformation layer. This provides all the benefits of Subgraphs, including a dynamic and flexible GraphQL API.
-
-## How are Substreams-powered Subgraphs different from Subgraphs?
-
-Subgraphs are made up of datasources which specify onchain events, and how those events should be transformed via handlers written in Assemblyscript. These events are processed sequentially, based on the order in which events happen onchain.
-
-By contrast, substreams-powered Subgraphs have a single datasource which references a substreams package, which is processed by the Graph Node. Substreams have access to additional granular onchain data compared to conventional Subgraphs, and can also benefit from massively parallelised processing, which can mean much faster processing times.
-
-## What are the benefits of using Substreams-powered Subgraphs?
-
-Substreams-powered Subgraphs combine all the benefits of Substreams with the queryability of Subgraphs. They bring greater composability and high-performance indexing to The Graph. They also enable new data use cases; for example, once you've built your Substreams-powered Subgraph, you can reuse your [Substreams modules](https://docs.substreams.dev/reference-material/substreams-components/modules#modules) to output to different [sinks](https://substreams.streamingfast.io/reference-and-specs/manifests#sink) such as PostgreSQL, MongoDB, and Kafka.
-
-## Substreams'in faydaları nelerdir?
-
-Substreams kullanmanın birçok faydası vardır, bunlar şunlardır:
-
-- Birleştirilebilir: Substreams modüllerini LEGO blokları gibi birleştirebilir ve topluluk modüllerine dayanarak açık verileri daha da ayrıntılayabilirsiniz.
-
-- Yüksek performanslı indeksleme: Büyük ölçekli paralel işlemler sayesinde sıradan işlemlere göre onlarca kat daha hızlı indeksleme sağlar (BigQuery gibi).
-
-- Sink anywhere: Sink your data to anywhere you want: PostgreSQL, MongoDB, Kafka, Subgraphs, flat files, Google Sheets.
-
-- Programlanabilir: Kod kullanarak çıkarma işlemlerini özelleştirmek, dönüşüm zamanında toplamalar yapmak ve çıktınızı birden çok hedef için modelleyebilirsiniz.
-
-- JSON RPC'nin parçası olmayan ek verilere erişim sağlar
-
-- Firehose'un tüm faydalarından yararlanır.
-
-## Firehose nedir?
-
-[StreamingFast](https://www.streamingfast.io/) tarafından geliştirilen Firehose, daha önce görülmemiş hızlarda blok zincirinin baştan sona, tam geçmişini işlemek için tasarlanmış bir blok zinciri veri çıkarma katmanıdır. Dosya tabanlı ve akışa odaklı bir yaklaşım sunarak, StreamingFast'in açık kaynaklı teknolojilerinin temel bileşenlerinden biridir ve Substreamler'in temelini oluşturur.
-
-Firehose hakkında daha fazla bilgi için [documentation](https://firehose.streamingfast.io/) gidin.
-
-## Firehose'un faydaları nelerdir?
-
-Firehose kullanmanın birçok faydası vardır, bunlar şunlardır:
-
-- En düşük gecikme ve sorgulama yok: Akışa odaklı bir şekilde, Firehose düğümleri blok verilerini ilk olarak dışarıya göndermek üzere tasarlanmıştır.
-
-- Kesintisiz çalışma: Yüksek Erişilebilirlik için baştan sona tasarlanmıştır.
-
-- Hiçbir şeyi kaçırmaz: Firehose akış imleci, fork durumlarını ele almak ve herhangi bir durumda kaldığınız yerden devam etmek için tasarlanmıştır.
-
-- En zengin veri modeli: Bakiye değişikliklerini, tam çağrı ağacını, dahili işlemleri, kayıtları, depolama değişikliklerini, gaz maliyetlerini ve daha fazlasını içeren en iyi veri modeli.
-
-- Düz dosyalardan yararlanma: Blok zinciri verileri düz dosyalara çıkarılır, en ucuz ve en optimize hesaplama kaynağı kullanılır.
-
-## Where can developers access more information about Substreams-powered Subgraphs and Substreams?
-
-The [Substreams documentation](/substreams/introduction/) will teach you how to build Substreams modules.
-
-The [Substreams-powered Subgraphs documentation](/sps/introduction/) will show you how to package them for deployment on The Graph.
-
-[En son sürüm Substreams Codegen aracı](https://streamingfastio.medium.com/substreams-codegen-no-code-tool-to-bootstrap-your-project-a11efe0378c6), hiç kod yazmadan bir Substreams projesi başlatmanıza olanak tanır.
-
-## Rust modüllerinin Substreams içindeki rolü nedir?
-
-Rust modules are the equivalent of the AssemblyScript mappers in Subgraphs. They are compiled to WASM in a similar way, but the programming model allows for parallel execution. They define the sort of transformations and aggregations you want to apply to the raw blockchain data.
-
-See [modules documentation](https://docs.substreams.dev/reference-material/substreams-components/modules#modules) for details.
-
-## Substreams'i birleştirilebilir yapan nedir?
-
-Substream kullanırken, kompozisyon dönüşüm katmanında gerçekleşir ve önbelleğe alınmış modüllerin tekrar kullanılmasına olanak sağlar.
-
-As an example, Alice can build a DEX price module, Bob can use it to build a volume aggregator for some tokens of his interest, and Lisa can combine four individual DEX price modules to create a price oracle. A single Substreams request will package all of these individual's modules, link them together, to offer a much more refined stream of data. That stream can then be used to populate a Subgraph, and be queried by consumers.
-
-## Bir Substreams destekli Subgraph nasıl oluşturulur ve dağıtılır?
-
-After [defining](/sps/introduction/) a Substreams-powered Subgraph, you can use the Graph CLI to deploy it in [Subgraph Studio](https://thegraph.com/studio/).
-
-## Where can I find examples of Substreams and Substreams-powered Subgraphs?
-
-You can visit [this Github repo](https://github.com/pinax-network/awesome-substreams) to find examples of Substreams and Substreams-powered Subgraphs.
-
-## What do Substreams and Substreams-powered Subgraphs mean for The Graph Network?
-
-Bu entegrasyon, topluluk modüllerinden yararlanarak son derece yüksek performanslı indeksleme ve daha fazla birleştirme yapma avantajları sunar.
diff --git a/website/src/pages/tr/substreams/sps/introduction.mdx b/website/src/pages/tr/substreams/sps/introduction.mdx
deleted file mode 100644
index 4df56659c9f8..000000000000
--- a/website/src/pages/tr/substreams/sps/introduction.mdx
+++ /dev/null
@@ -1,31 +0,0 @@
----
-title: Introduction to Substreams-Powered Subgraphs
-sidebarTitle: Giriş
----
-
-Boost your Subgraph's efficiency and scalability by using [Substreams](/substreams/introduction/) to stream pre-indexed blockchain data.
-
-## Genel Bakış
-
-Use a Substreams package (`.spkg`) as a data source to give your Subgraph access to a stream of pre-indexed blockchain data. This enables more efficient and scalable data handling, especially with large or complex blockchain networks.
-
-### Ayrıntılar
-
-There are two methods of enabling this technology:
-
-1. **Using Substreams [triggers](/sps/triggers/)**: Consume from any Substreams module by importing the Protobuf model through a Subgraph handler and move all your logic into a Subgraph. This method creates the Subgraph entities directly in the Subgraph.
-
-2. **Using [Entity Changes](https://docs.substreams.dev/how-to-guides/sinks/subgraph/graph-out)**: By writing more of the logic into Substreams, you can consume the module's output directly into [graph-node](/indexing/tooling/graph-node/). In graph-node, you can use the Substreams data to create your Subgraph entities.
-
-You can choose where to place your logic, either in the Subgraph or Substreams. However, consider what aligns with your data needs, as Substreams has a parallelized model, and triggers are consumed linearly in the graph node.
-
-### Ek Kaynaklar
-
-Visit the following links for tutorials on using code-generation tooling to build your first end-to-end Substreams project quickly:
-
-- [Solana](/substreams/developing/solana/transactions/)
-- [EVM](https://docs.substreams.dev/tutorials/intro-to-tutorials/evm)
-- [Starknet](https://docs.substreams.dev/tutorials/intro-to-tutorials/starknet)
-- [Injective](https://docs.substreams.dev/tutorials/intro-to-tutorials/on-cosmos/injective)
-- [MANTRA](https://docs.substreams.dev/tutorials/intro-to-tutorials/on-cosmos/mantra)
-- [Stellar](https://docs.substreams.dev/tutorials/intro-to-tutorials/stellar)
diff --git a/website/src/pages/tr/substreams/sps/triggers.mdx b/website/src/pages/tr/substreams/sps/triggers.mdx
deleted file mode 100644
index 648b624258e3..000000000000
--- a/website/src/pages/tr/substreams/sps/triggers.mdx
+++ /dev/null
@@ -1,47 +0,0 @@
----
-title: Substreams Triggers
----
-
-Use Custom Triggers and enable the full use GraphQL.
-
-## Genel Bakış
-
-Custom Triggers allow you to send data directly into your Subgraph mappings file and entities, which are similar to tables and fields. This enables you to fully use the GraphQL layer.
-
-By importing the Protobuf definitions emitted by your Substreams module, you can receive and process this data in your Subgraph's handler. This ensures efficient and streamlined data management within the Subgraph framework.
-
-### Defining `handleTransactions`
-
-The following code demonstrates how to define a `handleTransactions` function in a Subgraph handler. This function receives raw Substreams bytes as a parameter and decodes them into a `Transactions` object. For each transaction, a new Subgraph entity is created.
-
-```tsx
-export function handleTransactions(bytes: Uint8Array): void {
-  let transactions = assembly.eth.transaction.v1.Transactions.decode(bytes.buffer).transactions // 1.
-  if (transactions.length == 0) {
-    log.info('No transactions found', [])
-    return
-  }
-
-  for (let i = 0; i < transactions.length; i++) {
-    // 2.
-    let transaction = transactions[i]
-
-    let entity = new Transaction(transaction.hash) // 3.
-    entity.from = transaction.from
-    entity.to = transaction.to
-    entity.save()
-  }
-}
-```
-
-Here's what you're seeing in the `mappings.ts` file:
-
-1. The bytes containing Substreams data are decoded into the generated `Transactions` object, this object is used like any other AssemblyScript object
-2. Looping over the transactions
-3. Create a new Subgraph entity for every transaction
-
-To go through a detailed example of a trigger-based Subgraph, [check out the tutorial](/sps/tutorial/).
-
-### Ek Kaynaklar
-
-To scaffold your first project in the Development Container, check out one of the [How-To Guide](/substreams/developing/dev-container/).
diff --git a/website/src/pages/tr/substreams/sps/tutorial.mdx b/website/src/pages/tr/substreams/sps/tutorial.mdx
deleted file mode 100644
index 1d5d17bc712f..000000000000
--- a/website/src/pages/tr/substreams/sps/tutorial.mdx
+++ /dev/null
@@ -1,155 +0,0 @@
----
-title: 'Tutorial: Set Up a Substreams-Powered Subgraph on Solana'
-sidebarTitle: Tutorial
----
-
-Successfully set up a trigger-based Substreams-powered Subgraph for a Solana SPL token.
-
-## Başlayalım
-
-For a video tutorial, check out [How to Index Solana with a Substreams-powered Subgraph](/sps/tutorial/#video-tutorial)
-
-### Prerequisites
-
-Before starting, make sure to:
-
-- Complete the [Getting Started Guide](https://github.com/streamingfast/substreams-starter) to set up your development environment using a Dev Container.
-- Be familiar with The Graph and basic blockchain concepts such as transactions and Protobufs.
-
-### Step 1: Initialize Your Project
-
-1. Open your Dev Container and run the following command to initialize your project:
-
-   ```bash
-   substreams init
-   ```
-
-2. Select the "minimal" project option.
-
-3. Replace the contents of the generated `substreams.yaml` file with the following configuration, which filters transactions for the Orca account on the SPL token program ID:
-
-```yaml
-specVersion: v0.1.0
-package:
-  name: my_project_sol
-  version: v0.1.0
-
-imports: # Pass your spkg of interest
-  solana: https://github.com/streamingfast/substreams-solana-spl-token/raw/master/tokens/solana-spl-token-v0.1.0.spkg
-
-modules:
-  - name: map_spl_transfers
-    use: solana:map_block # Select corresponding modules available within your spkg
-    initialBlock: 260000082
-
-  - name: map_transactions_by_programid
-    use: solana:solana:transactions_by_programid_without_votes
-
-network: solana-mainnet-beta
-
-params: # Modify the param fields to meet your needs
-  # For program_id: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
-  map_spl_transfers: token_contract:orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE
-```
-
-### Step 2: Generate the Subgraph Manifest
-
-Once the project is initialized, generate a Subgraph manifest by running the following command in the Dev Container:
-
-```bash
-substreams codegen subgraph
-```
-
-You will generate a`subgraph.yaml` manifest which imports the Substreams package as a data source:
-
-```yaml
----
-dataSources:
-  - kind: substreams
-    name: my_project_sol
-    network: solana-mainnet-beta
-    source:
-      package:
-        moduleName: map_spl_transfers # Module defined in the substreams.yaml
-        file: ./my-project-sol-v0.1.0.spkg
-    mapping:
-      apiVersion: 0.0.9
-      kind: substreams/graph-entities
-      file: ./src/mappings.ts
-      handler: handleTriggers
-```
-
-### Step 3: Define Entities in `schema.graphql`
-
-Define the fields you want to save in your Subgraph entities by updating the `schema.graphql` file.
-
-Here is an example:
-
-```graphql
-type MyTransfer @entity {
-  id: ID!
-  amount: String!
-  source: String!
-  designation: String!
-  signers: [String!]!
-}
-```
-
-This schema defines a `MyTransfer` entity with fields such as `id`, `amount`, `source`, `designation`, and `signers`.
-
-### Step 4: Handle Substreams Data in `mappings.ts`
-
-With the Protobuf objects generated, you can now handle the decoded Substreams data in your `mappings.ts` file found in the `./src` directory.
-
-The example below demonstrates how to extract to Subgraph entities the non-derived transfers associated to the Orca account id:
-
-```ts
-import { Protobuf } from 'as-proto/assembly'
-import { Events as protoEvents } from './pb/sf/solana/spl/token/v1/Events'
-import { MyTransfer } from '../generated/schema'
-
-export function handleTriggers(bytes: Uint8Array): void {
-  const input: protoEvents = Protobuf.decode<protoEvents>(bytes, protoEvents.decode)
-
-  for (let i = 0; i < input.data.length; i++) {
-    const event = input.data[i]
-
-    if (event.transfer != null) {
-      let entity_id: string = `${event.txnId}-${i}`
-      const entity = new MyTransfer(entity_id)
-      entity.amount = event.transfer!.instruction!.amount.toString()
-      entity.source = event.transfer!.accounts!.source
-      entity.designation = event.transfer!.accounts!.destination
-
-      if (event.transfer!.accounts!.signer!.single != null) {
-        entity.signers = [event.transfer!.accounts!.signer!.single!.signer]
-      } else if (event.transfer!.accounts!.signer!.multisig != null) {
-        entity.signers = event.transfer!.accounts!.signer!.multisig!.signers
-      }
-      entity.save()
-    }
-  }
-}
-```
-
-### Step 5: Generate Protobuf Files
-
-To generate Protobuf objects in AssemblyScript, run the following command:
-
-```bash
-npm run protogen
-```
-
-This command converts the Protobuf definitions into AssemblyScript, allowing you to use them in the Subgraph's handler.
-
-### Sonuç
-
-Congratulations! You've successfully set up a trigger-based Substreams-powered Subgraph for a Solana SPL token. You can take the next step by customizing your schema, mappings, and modules to fit your specific use case.
-
-### Video Tutorial
-
-<VideoEmbed title="How to Index Solana with a Substreams-powered Subgraph" youtube="RmKi-Nq9E_A" />
-
-### Ek Kaynaklar
-
-For more advanced customization and optimizations, check out the official [Substreams documentation](https://substreams.streamingfast.io/tutorials/solana).
diff --git a/website/src/pages/uk/substreams/sps/_meta.js b/website/src/pages/uk/substreams/sps/_meta.js
deleted file mode 100644
index 86fcd3df5ec0..000000000000
--- a/website/src/pages/uk/substreams/sps/_meta.js
+++ /dev/null
@@ -1,6 +0,0 @@
-export default {
-  introduction: '',
-  triggers: '',
-  tutorial: '',
-  faq: '',
-}
diff --git a/website/src/pages/uk/substreams/sps/faq.mdx b/website/src/pages/uk/substreams/sps/faq.mdx
deleted file mode 100644
index 250c466d5929..000000000000
--- a/website/src/pages/uk/substreams/sps/faq.mdx
+++ /dev/null
@@ -1,96 +0,0 @@
----
-title: Substreams-Powered Subgraphs FAQ
-sidebarTitle: FAQ
----
-
-## What are Substreams?
-
-Substreams is an exceptionally powerful processing engine capable of consuming rich streams of blockchain data. It allows you to refine and shape blockchain data for fast and seamless digestion by end-user applications.
-
-Specifically, it's a blockchain-agnostic, parallelized, and streaming-first engine that serves as a blockchain data transformation layer. It's powered by [Firehose](https://firehose.streamingfast.io/), and enables developers to write Rust modules, build upon community modules, provide extremely high-performance indexing, and [sink](/substreams/developing/sinks/) their data anywhere.
-
-Substreams is developed by [StreamingFast](https://www.streamingfast.io/). Visit the [Substreams Documentation](/substreams/introduction/) to learn more about Substreams.
-
-## What are Substreams-powered Subgraphs?
-
-[Substreams-powered Subgraphs](/sps/introduction/) combine the power of Substreams with the queryability of Subgraphs. When publishing a Substreams-powered Subgraph, the data produced by the Substreams transformations, can [output entity changes](https://github.com/streamingfast/substreams-sink-entity-changes/blob/develop/substreams-entity-change/src/tables.rs) that are compatible with Subgraph entities.
-
-If you are already familiar with Subgraph development, note that Substreams-powered Subgraphs can then be queried just as if it had been produced by the AssemblyScript transformation layer. This provides all the benefits of Subgraphs, including a dynamic and flexible GraphQL API.
-
-## How are Substreams-powered Subgraphs different from Subgraphs?
-
-Subgraphs are made up of datasources which specify onchain events, and how those events should be transformed via handlers written in Assemblyscript. These events are processed sequentially, based on the order in which events happen onchain.
-
-By contrast, substreams-powered Subgraphs have a single datasource which references a substreams package, which is processed by the Graph Node. Substreams have access to additional granular onchain data compared to conventional Subgraphs, and can also benefit from massively parallelised processing, which can mean much faster processing times.
-
-## What are the benefits of using Substreams-powered Subgraphs?
-
-Substreams-powered Subgraphs combine all the benefits of Substreams with the queryability of Subgraphs. They bring greater composability and high-performance indexing to The Graph. They also enable new data use cases; for example, once you've built your Substreams-powered Subgraph, you can reuse your [Substreams modules](https://docs.substreams.dev/reference-material/substreams-components/modules#modules) to output to different [sinks](https://substreams.streamingfast.io/reference-and-specs/manifests#sink) such as PostgreSQL, MongoDB, and Kafka.
-
-## What are the benefits of Substreams?
-
-There are many benefits to using Substreams, including:
-
-- Composable: You can stack Substreams modules like LEGO blocks, and build upon community modules, further refining public data.
-
-- High-performance indexing: Orders of magnitude faster indexing through large-scale clusters of parallel operations (think BigQuery).
-
-- Sink anywhere: Sink your data to anywhere you want: PostgreSQL, MongoDB, Kafka, Subgraphs, flat files, Google Sheets.
-
-- Programmable: Use code to customize extraction, do transformation-time aggregations, and model your output for multiple sinks.
-
-- Access to additional data which is not available as part of the JSON RPC
-
-- All the benefits of the Firehose.
-
-## What is the Firehose?
-
-Developed by [StreamingFast](https://www.streamingfast.io/), the Firehose is a blockchain data extraction layer designed from scratch to process the full history of blockchains at speeds that were previously unseen. Providing a files-based and streaming-first approach, it is a core component of StreamingFast's suite of open-source technologies and the foundation for Substreams.
-
-Go to the [documentation](https://firehose.streamingfast.io/) to learn more about the Firehose.
-
-## What are the benefits of the Firehose?
-
-There are many benefits to using Firehose, including:
-
-- Lowest latency & no polling: In a streaming-first fashion, the Firehose nodes are designed to race to push out the block data first.
-
-- Prevents downtimes: Designed from the ground up for High Availability.
-
-- Never miss a beat: The Firehose stream cursor is designed to handle forks and to continue where you left off in any condition.
-
-- Richest data model:  Best data model that includes the balance changes, the full call tree, internal transactions, logs, storage changes, gas costs, and more.
-
-- Leverages flat files: Blockchain data is extracted into flat files, the cheapest and most optimized computing resource available.
-
-## Where can developers access more information about Substreams-powered Subgraphs and Substreams?
-
-The [Substreams documentation](/substreams/introduction/) will teach you how to build Substreams modules.
-
-The [Substreams-powered Subgraphs documentation](/sps/introduction/) will show you how to package them for deployment on The Graph.
-
-The [latest Substreams Codegen tool](https://streamingfastio.medium.com/substreams-codegen-no-code-tool-to-bootstrap-your-project-a11efe0378c6) will allow you to bootstrap a Substreams project without any code.
-
-## What is the role of Rust modules in Substreams?
-
-Rust modules are the equivalent of the AssemblyScript mappers in Subgraphs. They are compiled to WASM in a similar way, but the programming model allows for parallel execution. They define the sort of transformations and aggregations you want to apply to the raw blockchain data.
-
-See [modules documentation](https://docs.substreams.dev/reference-material/substreams-components/modules#modules) for details.
-
-## What makes Substreams composable?
-
-When using Substreams, the composition happens at the transformation layer enabling cached modules to be re-used.
-
-As an example, Alice can build a DEX price module, Bob can use it to build a volume aggregator for some tokens of his interest, and Lisa can combine four individual DEX price modules to create a price oracle. A single Substreams request will package all of these individual's modules, link them together, to offer a much more refined stream of data. That stream can then be used to populate a Subgraph, and be queried by consumers.
-
-## How can you build and deploy a Substreams-powered Subgraph?
-
-After [defining](/sps/introduction/) a Substreams-powered Subgraph, you can use the Graph CLI to deploy it in [Subgraph Studio](https://thegraph.com/studio/).
-
-## Where can I find examples of Substreams and Substreams-powered Subgraphs?
-
-You can visit [this Github repo](https://github.com/pinax-network/awesome-substreams) to find examples of Substreams and Substreams-powered Subgraphs.
-
-## What do Substreams and Substreams-powered Subgraphs mean for The Graph Network?
-
-The integration promises many benefits, including extremely high-performance indexing and greater composability by leveraging community modules and building on them.
diff --git a/website/src/pages/uk/substreams/sps/introduction.mdx b/website/src/pages/uk/substreams/sps/introduction.mdx
deleted file mode 100644
index 8a801f1a048a..000000000000
--- a/website/src/pages/uk/substreams/sps/introduction.mdx
+++ /dev/null
@@ -1,31 +0,0 @@
----
-title: Introduction to Substreams-Powered Subgraphs
-sidebarTitle: Introduction
----
-
-Boost your Subgraph's efficiency and scalability by using [Substreams](/substreams/introduction/) to stream pre-indexed blockchain data.
-
-## Overview
-
-Use a Substreams package (`.spkg`) as a data source to give your Subgraph access to a stream of pre-indexed blockchain data. This enables more efficient and scalable data handling, especially with large or complex blockchain networks.
-
-### Specifics
-
-There are two methods of enabling this technology:
-
-1. **Using Substreams [triggers](/sps/triggers/)**: Consume from any Substreams module by importing the Protobuf model through a Subgraph handler and move all your logic into a Subgraph. This method creates the Subgraph entities directly in the Subgraph.
-
-2. **Using [Entity Changes](https://docs.substreams.dev/how-to-guides/sinks/subgraph/graph-out)**: By writing more of the logic into Substreams, you can consume the module's output directly into [graph-node](/indexing/tooling/graph-node/). In graph-node, you can use the Substreams data to create your Subgraph entities.
-
-You can choose where to place your logic, either in the Subgraph or Substreams. However, consider what aligns with your data needs, as Substreams has a parallelized model, and triggers are consumed linearly in the graph node.
-
-### Додаткові матеріали
-
-Visit the following links for tutorials on using code-generation tooling to build your first end-to-end Substreams project quickly:
-
-- [Solana](/substreams/developing/solana/transactions/)
-- [EVM](https://docs.substreams.dev/tutorials/intro-to-tutorials/evm)
-- [Starknet](https://docs.substreams.dev/tutorials/intro-to-tutorials/starknet)
-- [Injective](https://docs.substreams.dev/tutorials/intro-to-tutorials/on-cosmos/injective)
-- [MANTRA](https://docs.substreams.dev/tutorials/intro-to-tutorials/on-cosmos/mantra)
-- [Stellar](https://docs.substreams.dev/tutorials/intro-to-tutorials/stellar)
diff --git a/website/src/pages/uk/substreams/sps/triggers.mdx b/website/src/pages/uk/substreams/sps/triggers.mdx
deleted file mode 100644
index 87181f9bd72d..000000000000
--- a/website/src/pages/uk/substreams/sps/triggers.mdx
+++ /dev/null
@@ -1,47 +0,0 @@
----
-title: Substreams Triggers
----
-
-Use Custom Triggers and enable the full use GraphQL.
-
-## Overview
-
-Custom Triggers allow you to send data directly into your Subgraph mappings file and entities, which are similar to tables and fields. This enables you to fully use the GraphQL layer.
-
-By importing the Protobuf definitions emitted by your Substreams module, you can receive and process this data in your Subgraph's handler. This ensures efficient and streamlined data management within the Subgraph framework.
-
-### Defining `handleTransactions`
-
-The following code demonstrates how to define a `handleTransactions` function in a Subgraph handler. This function receives raw Substreams bytes as a parameter and decodes them into a `Transactions` object. For each transaction, a new Subgraph entity is created.
-
-```tsx
-export function handleTransactions(bytes: Uint8Array): void {
-  let transactions = assembly.eth.transaction.v1.Transactions.decode(bytes.buffer).transactions // 1.
-  if (transactions.length == 0) {
-    log.info('No transactions found', [])
-    return
-  }
-
-  for (let i = 0; i < transactions.length; i++) {
-    // 2.
-    let transaction = transactions[i]
-
-    let entity = new Transaction(transaction.hash) // 3.
-    entity.from = transaction.from
-    entity.to = transaction.to
-    entity.save()
-  }
-}
-```
-
-Here's what you're seeing in the `mappings.ts` file:
-
-1. The bytes containing Substreams data are decoded into the generated `Transactions` object, this object is used like any other AssemblyScript object
-2. Looping over the transactions
-3. Create a new Subgraph entity for every transaction
-
-To go through a detailed example of a trigger-based Subgraph, [check out the tutorial](/sps/tutorial/).
-
-### Додаткові матеріали
-
-To scaffold your first project in the Development Container, check out one of the [How-To Guide](/substreams/developing/dev-container/).
diff --git a/website/src/pages/uk/substreams/sps/tutorial.mdx b/website/src/pages/uk/substreams/sps/tutorial.mdx
deleted file mode 100644
index 6b611ef2c923..000000000000
--- a/website/src/pages/uk/substreams/sps/tutorial.mdx
+++ /dev/null
@@ -1,155 +0,0 @@
----
-title: 'Tutorial: Set Up a Substreams-Powered Subgraph on Solana'
-sidebarTitle: Tutorial
----
-
-Successfully set up a trigger-based Substreams-powered Subgraph for a Solana SPL token.
-
-## Розпочати роботу
-
-For a video tutorial, check out [How to Index Solana with a Substreams-powered Subgraph](/sps/tutorial/#video-tutorial)
-
-### Prerequisites
-
-Before starting, make sure to:
-
-- Complete the [Getting Started Guide](https://github.com/streamingfast/substreams-starter) to set up your development environment using a Dev Container.
-- Be familiar with The Graph and basic blockchain concepts such as transactions and Protobufs.
-
-### Step 1: Initialize Your Project
-
-1. Open your Dev Container and run the following command to initialize your project:
-
-   ```bash
-   substreams init
-   ```
-
-2. Select the "minimal" project option.
-
-3. Replace the contents of the generated `substreams.yaml` file with the following configuration, which filters transactions for the Orca account on the SPL token program ID:
-
-```yaml
-specVersion: v0.1.0
-package:
-  name: my_project_sol
-  version: v0.1.0
-
-imports: # Pass your spkg of interest
-  solana: https://github.com/streamingfast/substreams-solana-spl-token/raw/master/tokens/solana-spl-token-v0.1.0.spkg
-
-modules:
-  - name: map_spl_transfers
-    use: solana:map_block # Select corresponding modules available within your spkg
-    initialBlock: 260000082
-
-  - name: map_transactions_by_programid
-    use: solana:solana:transactions_by_programid_without_votes
-
-network: solana-mainnet-beta
-
-params: # Modify the param fields to meet your needs
-  # For program_id: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
-  map_spl_transfers: token_contract:orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE
-```
-
-### Step 2: Generate the Subgraph Manifest
-
-Once the project is initialized, generate a Subgraph manifest by running the following command in the Dev Container:
-
-```bash
-substreams codegen subgraph
-```
-
-You will generate a`subgraph.yaml` manifest which imports the Substreams package as a data source:
-
-```yaml
----
-dataSources:
-  - kind: substreams
-    name: my_project_sol
-    network: solana-mainnet-beta
-    source:
-      package:
-        moduleName: map_spl_transfers # Module defined in the substreams.yaml
-        file: ./my-project-sol-v0.1.0.spkg
-    mapping:
-      apiVersion: 0.0.9
-      kind: substreams/graph-entities
-      file: ./src/mappings.ts
-      handler: handleTriggers
-```
-
-### Step 3: Define Entities in `schema.graphql`
-
-Define the fields you want to save in your Subgraph entities by updating the `schema.graphql` file.
-
-Here is an example:
-
-```graphql
-type MyTransfer @entity {
-  id: ID!
-  amount: String!
-  source: String!
-  designation: String!
-  signers: [String!]!
-}
-```
-
-This schema defines a `MyTransfer` entity with fields such as `id`, `amount`, `source`, `designation`, and `signers`.
-
-### Step 4: Handle Substreams Data in `mappings.ts`
-
-With the Protobuf objects generated, you can now handle the decoded Substreams data in your `mappings.ts` file found in the `./src` directory.
-
-The example below demonstrates how to extract to Subgraph entities the non-derived transfers associated to the Orca account id:
-
-```ts
-import { Protobuf } from 'as-proto/assembly'
-import { Events as protoEvents } from './pb/sf/solana/spl/token/v1/Events'
-import { MyTransfer } from '../generated/schema'
-
-export function handleTriggers(bytes: Uint8Array): void {
-  const input: protoEvents = Protobuf.decode<protoEvents>(bytes, protoEvents.decode)
-
-  for (let i = 0; i < input.data.length; i++) {
-    const event = input.data[i]
-
-    if (event.transfer != null) {
-      let entity_id: string = `${event.txnId}-${i}`
-      const entity = new MyTransfer(entity_id)
-      entity.amount = event.transfer!.instruction!.amount.toString()
-      entity.source = event.transfer!.accounts!.source
-      entity.designation = event.transfer!.accounts!.destination
-
-      if (event.transfer!.accounts!.signer!.single != null) {
-        entity.signers = [event.transfer!.accounts!.signer!.single!.signer]
-      } else if (event.transfer!.accounts!.signer!.multisig != null) {
-        entity.signers = event.transfer!.accounts!.signer!.multisig!.signers
-      }
-      entity.save()
-    }
-  }
-}
-```
-
-### Step 5: Generate Protobuf Files
-
-To generate Protobuf objects in AssemblyScript, run the following command:
-
-```bash
-npm run protogen
-```
-
-This command converts the Protobuf definitions into AssemblyScript, allowing you to use them in the Subgraph's handler.
-
-### Conclusion
-
-Congratulations! You've successfully set up a trigger-based Substreams-powered Subgraph for a Solana SPL token. You can take the next step by customizing your schema, mappings, and modules to fit your specific use case.
-
-### Video Tutorial
-
-<VideoEmbed title="How to Index Solana with a Substreams-powered Subgraph" youtube="RmKi-Nq9E_A" />
-
-### Додаткові матеріали
-
-For more advanced customization and optimizations, check out the official [Substreams documentation](https://substreams.streamingfast.io/tutorials/solana).
diff --git a/website/src/pages/ur/substreams/sps/_meta.js b/website/src/pages/ur/substreams/sps/_meta.js
deleted file mode 100644
index 86fcd3df5ec0..000000000000
--- a/website/src/pages/ur/substreams/sps/_meta.js
+++ /dev/null
@@ -1,6 +0,0 @@
-export default {
-  introduction: '',
-  triggers: '',
-  tutorial: '',
-  faq: '',
-}
diff --git a/website/src/pages/ur/substreams/sps/faq.mdx b/website/src/pages/ur/substreams/sps/faq.mdx
deleted file mode 100644
index 292390a34142..000000000000
--- a/website/src/pages/ur/substreams/sps/faq.mdx
+++ /dev/null
@@ -1,96 +0,0 @@
----
-title: Substreams-Powered Subgraphs FAQ
-sidebarTitle: FAQ
----
-
-## سب اسٹریمز کیا ہیں؟
-
-Substreams is an exceptionally powerful processing engine capable of consuming rich streams of blockchain data. It allows you to refine and shape blockchain data for fast and seamless digestion by end-user applications.
-
-Specifically, it's a blockchain-agnostic, parallelized, and streaming-first engine that serves as a blockchain data transformation layer. It's powered by [Firehose](https://firehose.streamingfast.io/), and enables developers to write Rust modules, build upon community modules, provide extremely high-performance indexing, and [sink](/substreams/developing/sinks/) their data anywhere.
-
-Substreams is developed by [StreamingFast](https://www.streamingfast.io/). Visit the [Substreams Documentation](/substreams/introduction/) to learn more about Substreams.
-
-## What are Substreams-powered Subgraphs?
-
-[Substreams-powered Subgraphs](/sps/introduction/) combine the power of Substreams with the queryability of Subgraphs. When publishing a Substreams-powered Subgraph, the data produced by the Substreams transformations, can [output entity changes](https://github.com/streamingfast/substreams-sink-entity-changes/blob/develop/substreams-entity-change/src/tables.rs) that are compatible with Subgraph entities.
-
-If you are already familiar with Subgraph development, note that Substreams-powered Subgraphs can then be queried just as if it had been produced by the AssemblyScript transformation layer. This provides all the benefits of Subgraphs, including a dynamic and flexible GraphQL API.
-
-## How are Substreams-powered Subgraphs different from Subgraphs?
-
-Subgraphs are made up of datasources which specify onchain events, and how those events should be transformed via handlers written in Assemblyscript. These events are processed sequentially, based on the order in which events happen onchain.
-
-By contrast, substreams-powered Subgraphs have a single datasource which references a substreams package, which is processed by the Graph Node. Substreams have access to additional granular onchain data compared to conventional Subgraphs, and can also benefit from massively parallelised processing, which can mean much faster processing times.
-
-## What are the benefits of using Substreams-powered Subgraphs?
-
-Substreams-powered Subgraphs combine all the benefits of Substreams with the queryability of Subgraphs. They bring greater composability and high-performance indexing to The Graph. They also enable new data use cases; for example, once you've built your Substreams-powered Subgraph, you can reuse your [Substreams modules](https://docs.substreams.dev/reference-material/substreams-components/modules#modules) to output to different [sinks](https://substreams.streamingfast.io/reference-and-specs/manifests#sink) such as PostgreSQL, MongoDB, and Kafka.
-
-## سب سٹریمز کے فوائد کہاں ہیں؟
-
-سب سٹریمز کو استعمال کرنے کے بہت سے فوائد ہیں، بشمول:
-
-- کمپوز ایبل: آپ سب سٹریمز ماڈیولز جیسے LEGO بلاکس کو اسٹیک کر سکتے ہیں، اور عوامی ڈیٹا کو مزید بہتر کرتے ہوئے کمیونٹی ماڈیول بنا سکتے ہیں.
-
-- اعلی کارکردگی کی انڈیکسنگ: متوازی کارروائیوں کے بڑے پیمانے پر کلسٹرز کے ذریعے تیز تر انڈیکسنگ کے آرڈرز (سوچیں BigQuery).
-
-- Sink anywhere: Sink your data to anywhere you want: PostgreSQL, MongoDB, Kafka, Subgraphs, flat files, Google Sheets.
-
-- قابل پروگرام: اسے اپنی مرضی کے مطابق بنانے کے لیے کوڈ کریں، دو ٹرانسفارم ٹائم ایگریگیشنز، اور متعدد حواس کے لیے اپنے آؤٹ پٹ کو ماڈل کریں.
-
-- اضافی ڈیٹا تک رسائی جو JSON RPC کے حصے کے طور پر دستیاب نہیں ہے
-
-- Firehose کے تمام فوائد.
-
-## Firehose کیا ہے؟
-
-[StreamingFast](https://www.streamingfast.io/) کے ذریعے تیار کردہ، Firehose ایک بلاکچین ڈیٹا نکالنے کی پرت ہے جسے شروع سے بلاکچینز کی مکمل تاریخ کو اس رفتار سے پروسیس کرنے کے لیے ڈیزائن کیا گیا ہے جو پہلے نظر نہیں آتی تھیں۔ فائلوں پر مبنی اور سٹریمنگ فرسٹ اپروچ فراہم کرنا، یہ سٹریمنگ فاسٹ کے اوپن سورس ٹیکنالوجیز کے سوٹ کا بنیادی جزو اور سب اسٹریمز کی بنیاد ہے.
-
-Firehose کے بارے میں مزید جاننے کے لیے[documentation] (https://firehose.streamingfast.io/) پر جائیں.
-
-## Firehose کے کیا فوائد ہیں؟
-
-Firehose استعمال کرنے کے بہت سے فوائد ہیں، بشمول:
-
-- سب سے کم تاخیر اور کوئی پولنگ نہیں: اسٹریمنگ کے پہلے انداز میں، Firehose نوڈس کو پہلے بلاک ڈیٹا کو آگے بڑھانے کی دوڑ کے لیے ڈیزائن کیا گیا ہے.
-
-- ڈاؤن ٹائمز کو روکتا ہے: اعلی دستیابی کے لیے زمین سے ڈیزائن کیا گیا ہے.
-
-- کبھی بھی بیٹ مت چھوڑیں: Firehose سٹریم کرسر کو فورکس ہینڈل کرنے اور کسی بھی حالت میں وہیں سے جاری رکھنے کے لیے بنایا گیا ہے جہاں آپ نے چھوڑا تھا.
-
-- امیرترین ڈیٹا ماڈل: بہترین ڈیٹا ماڈل جس میں بیلنس کی تبدیلیاں، مکمل کال ٹری، اندرونی ٹرانزیکشن، لاگز، اسٹوریج کی تبدیلیاں، گیس کی قیمتیں اور بہت کچھ شامل ہے.
-
-- فلیٹ فائلوں کا فائدہ اٹھاتا ہے: بلاکچین ڈیٹا کو فلیٹ فائلوں میں نکالا جاتا ہے، جو دستیاب سب سے سستا اور بہترین کمپیوٹنگ وسیلہ ہے.
-
-## Where can developers access more information about Substreams-powered Subgraphs and Substreams?
-
-The [Substreams documentation](/substreams/introduction/) will teach you how to build Substreams modules.
-
-The [Substreams-powered Subgraphs documentation](/sps/introduction/) will show you how to package them for deployment on The Graph.
-
-The [latest Substreams Codegen tool](https://streamingfastio.medium.com/substreams-codegen-no-code-tool-to-bootstrap-your-project-a11efe0378c6) will allow you to bootstrap a Substreams project without any code.
-
-## سب سٹریمز میں Rust ماڈیولز کا کیا کردار ہے؟
-
-Rust modules are the equivalent of the AssemblyScript mappers in Subgraphs. They are compiled to WASM in a similar way, but the programming model allows for parallel execution. They define the sort of transformations and aggregations you want to apply to the raw blockchain data.
-
-See [modules documentation](https://docs.substreams.dev/reference-material/substreams-components/modules#modules) for details.
-
-## سب سٹریمز کو کمپوز ایبل کیا بناتا ہے؟
-
-سب سٹریمز کا استعمال کرتے وقت، کمپوزیشن ٹرانسفارمیشن لیئر پر ہوتی ہے جو کیشڈ ماڈیولز کو دوبارہ استعمال کرنے کے قابل بناتی ہے.
-
-As an example, Alice can build a DEX price module, Bob can use it to build a volume aggregator for some tokens of his interest, and Lisa can combine four individual DEX price modules to create a price oracle. A single Substreams request will package all of these individual's modules, link them together, to offer a much more refined stream of data. That stream can then be used to populate a Subgraph, and be queried by consumers.
-
-## آپ سب سٹریمز سے چلنے والے سب گراف کو کیسے بنا اور تعینات کر سکتے ہیں؟
-
-After [defining](/sps/introduction/) a Substreams-powered Subgraph, you can use the Graph CLI to deploy it in [Subgraph Studio](https://thegraph.com/studio/).
-
-## Where can I find examples of Substreams and Substreams-powered Subgraphs?
-
-You can visit [this Github repo](https://github.com/pinax-network/awesome-substreams) to find examples of Substreams and Substreams-powered Subgraphs.
-
-## What do Substreams and Substreams-powered Subgraphs mean for The Graph Network?
-
-انضمام بہت سے فوائد کا وعدہ کرتا ہے، بشمول انتہائی اعلی کارکردگی کی انڈیکسنگ اور کمیونٹی ماڈیولز کا فائدہ اٹھا کر اور ان پر تعمیر کرنے کے ذریعے زیادہ کمپوز ایبلٹی.
diff --git a/website/src/pages/ur/substreams/sps/introduction.mdx b/website/src/pages/ur/substreams/sps/introduction.mdx
deleted file mode 100644
index b98518e49e1d..000000000000
--- a/website/src/pages/ur/substreams/sps/introduction.mdx
+++ /dev/null
@@ -1,31 +0,0 @@
----
-title: Introduction to Substreams-Powered Subgraphs
-sidebarTitle: تعارف
----
-
-Boost your Subgraph's efficiency and scalability by using [Substreams](/substreams/introduction/) to stream pre-indexed blockchain data.
-
-## جائزہ
-
-Use a Substreams package (`.spkg`) as a data source to give your Subgraph access to a stream of pre-indexed blockchain data. This enables more efficient and scalable data handling, especially with large or complex blockchain networks.
-
-### Specifics
-
-There are two methods of enabling this technology:
-
-1. **Using Substreams [triggers](/sps/triggers/)**: Consume from any Substreams module by importing the Protobuf model through a Subgraph handler and move all your logic into a Subgraph. This method creates the Subgraph entities directly in the Subgraph.
-
-2. **Using [Entity Changes](https://docs.substreams.dev/how-to-guides/sinks/subgraph/graph-out)**: By writing more of the logic into Substreams, you can consume the module's output directly into [graph-node](/indexing/tooling/graph-node/). In graph-node, you can use the Substreams data to create your Subgraph entities.
-
-You can choose where to place your logic, either in the Subgraph or Substreams. However, consider what aligns with your data needs, as Substreams has a parallelized model, and triggers are consumed linearly in the graph node.
-
-### اضافی وسائل
-
-Visit the following links for tutorials on using code-generation tooling to build your first end-to-end Substreams project quickly:
-
-- [Solana](/substreams/developing/solana/transactions/)
-- [EVM](https://docs.substreams.dev/tutorials/intro-to-tutorials/evm)
-- [Starknet](https://docs.substreams.dev/tutorials/intro-to-tutorials/starknet)
-- [Injective](https://docs.substreams.dev/tutorials/intro-to-tutorials/on-cosmos/injective)
-- [MANTRA](https://docs.substreams.dev/tutorials/intro-to-tutorials/on-cosmos/mantra)
-- [Stellar](https://docs.substreams.dev/tutorials/intro-to-tutorials/stellar)
diff --git a/website/src/pages/ur/substreams/sps/triggers.mdx b/website/src/pages/ur/substreams/sps/triggers.mdx
deleted file mode 100644
index e1149c68812f..000000000000
--- a/website/src/pages/ur/substreams/sps/triggers.mdx
+++ /dev/null
@@ -1,47 +0,0 @@
----
-title: Substreams Triggers
----
-
-Use Custom Triggers and enable the full use GraphQL.
-
-## جائزہ
-
-Custom Triggers allow you to send data directly into your Subgraph mappings file and entities, which are similar to tables and fields. This enables you to fully use the GraphQL layer.
-
-By importing the Protobuf definitions emitted by your Substreams module, you can receive and process this data in your Subgraph's handler. This ensures efficient and streamlined data management within the Subgraph framework.
-
-### Defining `handleTransactions`
-
-The following code demonstrates how to define a `handleTransactions` function in a Subgraph handler. This function receives raw Substreams bytes as a parameter and decodes them into a `Transactions` object. For each transaction, a new Subgraph entity is created.
-
-```tsx
-export function handleTransactions(bytes: Uint8Array): void {
-  let transactions = assembly.eth.transaction.v1.Transactions.decode(bytes.buffer).transactions // 1.
-  if (transactions.length == 0) {
-    log.info('No transactions found', [])
-    return
-  }
-
-  for (let i = 0; i < transactions.length; i++) {
-    // 2.
-    let transaction = transactions[i]
-
-    let entity = new Transaction(transaction.hash) // 3.
-    entity.from = transaction.from
-    entity.to = transaction.to
-    entity.save()
-  }
-}
-```
-
-Here's what you're seeing in the `mappings.ts` file:
-
-1. The bytes containing Substreams data are decoded into the generated `Transactions` object, this object is used like any other AssemblyScript object
-2. Looping over the transactions
-3. Create a new Subgraph entity for every transaction
-
-To go through a detailed example of a trigger-based Subgraph, [check out the tutorial](/sps/tutorial/).
-
-### اضافی وسائل
-
-To scaffold your first project in the Development Container, check out one of the [How-To Guide](/substreams/developing/dev-container/).
diff --git a/website/src/pages/ur/substreams/sps/tutorial.mdx b/website/src/pages/ur/substreams/sps/tutorial.mdx
deleted file mode 100644
index 841654e04782..000000000000
--- a/website/src/pages/ur/substreams/sps/tutorial.mdx
+++ /dev/null
@@ -1,155 +0,0 @@
----
-title: 'Tutorial: Set Up a Substreams-Powered Subgraph on Solana'
-sidebarTitle: Tutorial
----
-
-Successfully set up a trigger-based Substreams-powered Subgraph for a Solana SPL token.
-
-## شروع کریں
-
-For a video tutorial, check out [How to Index Solana with a Substreams-powered Subgraph](/sps/tutorial/#video-tutorial)
-
-### Prerequisites
-
-Before starting, make sure to:
-
-- Complete the [Getting Started Guide](https://github.com/streamingfast/substreams-starter) to set up your development environment using a Dev Container.
-- Be familiar with The Graph and basic blockchain concepts such as transactions and Protobufs.
-
-### Step 1: Initialize Your Project
-
-1. Open your Dev Container and run the following command to initialize your project:
-
-   ```bash
-   substreams init
-   ```
-
-2. Select the "minimal" project option.
-
-3. Replace the contents of the generated `substreams.yaml` file with the following configuration, which filters transactions for the Orca account on the SPL token program ID:
-
-```yaml
-specVersion: v0.1.0
-package:
-  name: my_project_sol
-  version: v0.1.0
-
-imports: # Pass your spkg of interest
-  solana: https://github.com/streamingfast/substreams-solana-spl-token/raw/master/tokens/solana-spl-token-v0.1.0.spkg
-
-modules:
-  - name: map_spl_transfers
-    use: solana:map_block # Select corresponding modules available within your spkg
-    initialBlock: 260000082
-
-  - name: map_transactions_by_programid
-    use: solana:solana:transactions_by_programid_without_votes
-
-network: solana-mainnet-beta
-
-params: # Modify the param fields to meet your needs
-  # For program_id: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
-  map_spl_transfers: token_contract:orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE
-```
-
-### Step 2: Generate the Subgraph Manifest
-
-Once the project is initialized, generate a Subgraph manifest by running the following command in the Dev Container:
-
-```bash
-substreams codegen subgraph
-```
-
-You will generate a`subgraph.yaml` manifest which imports the Substreams package as a data source:
-
-```yaml
----
-dataSources:
-  - kind: substreams
-    name: my_project_sol
-    network: solana-mainnet-beta
-    source:
-      package:
-        moduleName: map_spl_transfers # Module defined in the substreams.yaml
-        file: ./my-project-sol-v0.1.0.spkg
-    mapping:
-      apiVersion: 0.0.9
-      kind: substreams/graph-entities
-      file: ./src/mappings.ts
-      handler: handleTriggers
-```
-
-### Step 3: Define Entities in `schema.graphql`
-
-Define the fields you want to save in your Subgraph entities by updating the `schema.graphql` file.
-
-Here is an example:
-
-```graphql
-type MyTransfer @entity {
-  id: ID!
-  amount: String!
-  source: String!
-  designation: String!
-  signers: [String!]!
-}
-```
-
-This schema defines a `MyTransfer` entity with fields such as `id`, `amount`, `source`, `designation`, and `signers`.
-
-### Step 4: Handle Substreams Data in `mappings.ts`
-
-With the Protobuf objects generated, you can now handle the decoded Substreams data in your `mappings.ts` file found in the `./src` directory.
-
-The example below demonstrates how to extract to Subgraph entities the non-derived transfers associated to the Orca account id:
-
-```ts
-import { Protobuf } from 'as-proto/assembly'
-import { Events as protoEvents } from './pb/sf/solana/spl/token/v1/Events'
-import { MyTransfer } from '../generated/schema'
-
-export function handleTriggers(bytes: Uint8Array): void {
-  const input: protoEvents = Protobuf.decode<protoEvents>(bytes, protoEvents.decode)
-
-  for (let i = 0; i < input.data.length; i++) {
-    const event = input.data[i]
-
-    if (event.transfer != null) {
-      let entity_id: string = `${event.txnId}-${i}`
-      const entity = new MyTransfer(entity_id)
-      entity.amount = event.transfer!.instruction!.amount.toString()
-      entity.source = event.transfer!.accounts!.source
-      entity.designation = event.transfer!.accounts!.destination
-
-      if (event.transfer!.accounts!.signer!.single != null) {
-        entity.signers = [event.transfer!.accounts!.signer!.single!.signer]
-      } else if (event.transfer!.accounts!.signer!.multisig != null) {
-        entity.signers = event.transfer!.accounts!.signer!.multisig!.signers
-      }
-      entity.save()
-    }
-  }
-}
-```
-
-### Step 5: Generate Protobuf Files
-
-To generate Protobuf objects in AssemblyScript, run the following command:
-
-```bash
-npm run protogen
-```
-
-This command converts the Protobuf definitions into AssemblyScript, allowing you to use them in the Subgraph's handler.
-
-### Conclusion
-
-Congratulations! You've successfully set up a trigger-based Substreams-powered Subgraph for a Solana SPL token. You can take the next step by customizing your schema, mappings, and modules to fit your specific use case.
-
-### Video Tutorial
-
-<VideoEmbed title="How to Index Solana with a Substreams-powered Subgraph" youtube="RmKi-Nq9E_A" />
-
-### اضافی وسائل
-
-For more advanced customization and optimizations, check out the official [Substreams documentation](https://substreams.streamingfast.io/tutorials/solana).
diff --git a/website/src/pages/vi/substreams/sps/_meta.js b/website/src/pages/vi/substreams/sps/_meta.js
deleted file mode 100644
index 86fcd3df5ec0..000000000000
--- a/website/src/pages/vi/substreams/sps/_meta.js
+++ /dev/null
@@ -1,6 +0,0 @@
-export default {
-  introduction: '',
-  triggers: '',
-  tutorial: '',
-  faq: '',
-}
diff --git a/website/src/pages/vi/substreams/sps/faq.mdx b/website/src/pages/vi/substreams/sps/faq.mdx
deleted file mode 100644
index 250c466d5929..000000000000
--- a/website/src/pages/vi/substreams/sps/faq.mdx
+++ /dev/null
@@ -1,96 +0,0 @@
----
-title: Substreams-Powered Subgraphs FAQ
-sidebarTitle: FAQ
----
-
-## What are Substreams?
-
-Substreams is an exceptionally powerful processing engine capable of consuming rich streams of blockchain data. It allows you to refine and shape blockchain data for fast and seamless digestion by end-user applications.
-
-Specifically, it's a blockchain-agnostic, parallelized, and streaming-first engine that serves as a blockchain data transformation layer. It's powered by [Firehose](https://firehose.streamingfast.io/), and enables developers to write Rust modules, build upon community modules, provide extremely high-performance indexing, and [sink](/substreams/developing/sinks/) their data anywhere.
-
-Substreams is developed by [StreamingFast](https://www.streamingfast.io/). Visit the [Substreams Documentation](/substreams/introduction/) to learn more about Substreams.
-
-## What are Substreams-powered Subgraphs?
-
-[Substreams-powered Subgraphs](/sps/introduction/) combine the power of Substreams with the queryability of Subgraphs. When publishing a Substreams-powered Subgraph, the data produced by the Substreams transformations, can [output entity changes](https://github.com/streamingfast/substreams-sink-entity-changes/blob/develop/substreams-entity-change/src/tables.rs) that are compatible with Subgraph entities.
-
-If you are already familiar with Subgraph development, note that Substreams-powered Subgraphs can then be queried just as if it had been produced by the AssemblyScript transformation layer. This provides all the benefits of Subgraphs, including a dynamic and flexible GraphQL API.
-
-## How are Substreams-powered Subgraphs different from Subgraphs?
-
-Subgraphs are made up of datasources which specify onchain events, and how those events should be transformed via handlers written in Assemblyscript. These events are processed sequentially, based on the order in which events happen onchain.
-
-By contrast, substreams-powered Subgraphs have a single datasource which references a substreams package, which is processed by the Graph Node. Substreams have access to additional granular onchain data compared to conventional Subgraphs, and can also benefit from massively parallelised processing, which can mean much faster processing times.
-
-## What are the benefits of using Substreams-powered Subgraphs?
-
-Substreams-powered Subgraphs combine all the benefits of Substreams with the queryability of Subgraphs. They bring greater composability and high-performance indexing to The Graph. They also enable new data use cases; for example, once you've built your Substreams-powered Subgraph, you can reuse your [Substreams modules](https://docs.substreams.dev/reference-material/substreams-components/modules#modules) to output to different [sinks](https://substreams.streamingfast.io/reference-and-specs/manifests#sink) such as PostgreSQL, MongoDB, and Kafka.
-
-## What are the benefits of Substreams?
-
-There are many benefits to using Substreams, including:
-
-- Composable: You can stack Substreams modules like LEGO blocks, and build upon community modules, further refining public data.
-
-- High-performance indexing: Orders of magnitude faster indexing through large-scale clusters of parallel operations (think BigQuery).
-
-- Sink anywhere: Sink your data to anywhere you want: PostgreSQL, MongoDB, Kafka, Subgraphs, flat files, Google Sheets.
-
-- Programmable: Use code to customize extraction, do transformation-time aggregations, and model your output for multiple sinks.
-
-- Access to additional data which is not available as part of the JSON RPC
-
-- All the benefits of the Firehose.
-
-## What is the Firehose?
-
-Developed by [StreamingFast](https://www.streamingfast.io/), the Firehose is a blockchain data extraction layer designed from scratch to process the full history of blockchains at speeds that were previously unseen. Providing a files-based and streaming-first approach, it is a core component of StreamingFast's suite of open-source technologies and the foundation for Substreams.
-
-Go to the [documentation](https://firehose.streamingfast.io/) to learn more about the Firehose.
-
-## What are the benefits of the Firehose?
-
-There are many benefits to using Firehose, including:
-
-- Lowest latency & no polling: In a streaming-first fashion, the Firehose nodes are designed to race to push out the block data first.
-
-- Prevents downtimes: Designed from the ground up for High Availability.
-
-- Never miss a beat: The Firehose stream cursor is designed to handle forks and to continue where you left off in any condition.
-
-- Richest data model:  Best data model that includes the balance changes, the full call tree, internal transactions, logs, storage changes, gas costs, and more.
-
-- Leverages flat files: Blockchain data is extracted into flat files, the cheapest and most optimized computing resource available.
-
-## Where can developers access more information about Substreams-powered Subgraphs and Substreams?
-
-The [Substreams documentation](/substreams/introduction/) will teach you how to build Substreams modules.
-
-The [Substreams-powered Subgraphs documentation](/sps/introduction/) will show you how to package them for deployment on The Graph.
-
-The [latest Substreams Codegen tool](https://streamingfastio.medium.com/substreams-codegen-no-code-tool-to-bootstrap-your-project-a11efe0378c6) will allow you to bootstrap a Substreams project without any code.
-
-## What is the role of Rust modules in Substreams?
-
-Rust modules are the equivalent of the AssemblyScript mappers in Subgraphs. They are compiled to WASM in a similar way, but the programming model allows for parallel execution. They define the sort of transformations and aggregations you want to apply to the raw blockchain data.
-
-See [modules documentation](https://docs.substreams.dev/reference-material/substreams-components/modules#modules) for details.
-
-## What makes Substreams composable?
-
-When using Substreams, the composition happens at the transformation layer enabling cached modules to be re-used.
-
-As an example, Alice can build a DEX price module, Bob can use it to build a volume aggregator for some tokens of his interest, and Lisa can combine four individual DEX price modules to create a price oracle. A single Substreams request will package all of these individual's modules, link them together, to offer a much more refined stream of data. That stream can then be used to populate a Subgraph, and be queried by consumers.
-
-## How can you build and deploy a Substreams-powered Subgraph?
-
-After [defining](/sps/introduction/) a Substreams-powered Subgraph, you can use the Graph CLI to deploy it in [Subgraph Studio](https://thegraph.com/studio/).
-
-## Where can I find examples of Substreams and Substreams-powered Subgraphs?
-
-You can visit [this Github repo](https://github.com/pinax-network/awesome-substreams) to find examples of Substreams and Substreams-powered Subgraphs.
-
-## What do Substreams and Substreams-powered Subgraphs mean for The Graph Network?
-
-The integration promises many benefits, including extremely high-performance indexing and greater composability by leveraging community modules and building on them.
diff --git a/website/src/pages/vi/substreams/sps/introduction.mdx b/website/src/pages/vi/substreams/sps/introduction.mdx
deleted file mode 100644
index bd0bb34b8342..000000000000
--- a/website/src/pages/vi/substreams/sps/introduction.mdx
+++ /dev/null
@@ -1,31 +0,0 @@
----
-title: Introduction to Substreams-Powered Subgraphs
-sidebarTitle: Giới thiệu
----
-
-Boost your Subgraph's efficiency and scalability by using [Substreams](/substreams/introduction/) to stream pre-indexed blockchain data.
-
-## Tổng quan
-
-Use a Substreams package (`.spkg`) as a data source to give your Subgraph access to a stream of pre-indexed blockchain data. This enables more efficient and scalable data handling, especially with large or complex blockchain networks.
-
-### Specifics
-
-There are two methods of enabling this technology:
-
-1. **Using Substreams [triggers](/sps/triggers/)**: Consume from any Substreams module by importing the Protobuf model through a Subgraph handler and move all your logic into a Subgraph. This method creates the Subgraph entities directly in the Subgraph.
-
-2. **Using [Entity Changes](https://docs.substreams.dev/how-to-guides/sinks/subgraph/graph-out)**: By writing more of the logic into Substreams, you can consume the module's output directly into [graph-node](/indexing/tooling/graph-node/). In graph-node, you can use the Substreams data to create your Subgraph entities.
-
-You can choose where to place your logic, either in the Subgraph or Substreams. However, consider what aligns with your data needs, as Substreams has a parallelized model, and triggers are consumed linearly in the graph node.
-
-### Additional Resources
-
-Visit the following links for tutorials on using code-generation tooling to build your first end-to-end Substreams project quickly:
-
-- [Solana](/substreams/developing/solana/transactions/)
-- [EVM](https://docs.substreams.dev/tutorials/intro-to-tutorials/evm)
-- [Starknet](https://docs.substreams.dev/tutorials/intro-to-tutorials/starknet)
-- [Injective](https://docs.substreams.dev/tutorials/intro-to-tutorials/on-cosmos/injective)
-- [MANTRA](https://docs.substreams.dev/tutorials/intro-to-tutorials/on-cosmos/mantra)
-- [Stellar](https://docs.substreams.dev/tutorials/intro-to-tutorials/stellar)
diff --git a/website/src/pages/vi/substreams/sps/triggers.mdx b/website/src/pages/vi/substreams/sps/triggers.mdx
deleted file mode 100644
index 41b53829a5e7..000000000000
--- a/website/src/pages/vi/substreams/sps/triggers.mdx
+++ /dev/null
@@ -1,47 +0,0 @@
----
-title: Substreams Triggers
----
-
-Use Custom Triggers and enable the full use GraphQL.
-
-## Tổng quan
-
-Custom Triggers allow you to send data directly into your Subgraph mappings file and entities, which are similar to tables and fields. This enables you to fully use the GraphQL layer.
-
-By importing the Protobuf definitions emitted by your Substreams module, you can receive and process this data in your Subgraph's handler. This ensures efficient and streamlined data management within the Subgraph framework.
-
-### Defining `handleTransactions`
-
-The following code demonstrates how to define a `handleTransactions` function in a Subgraph handler. This function receives raw Substreams bytes as a parameter and decodes them into a `Transactions` object. For each transaction, a new Subgraph entity is created.
-
-```tsx
-export function handleTransactions(bytes: Uint8Array): void {
-  let transactions = assembly.eth.transaction.v1.Transactions.decode(bytes.buffer).transactions // 1.
-  if (transactions.length == 0) {
-    log.info('No transactions found', [])
-    return
-  }
-
-  for (let i = 0; i < transactions.length; i++) {
-    // 2.
-    let transaction = transactions[i]
-
-    let entity = new Transaction(transaction.hash) // 3.
-    entity.from = transaction.from
-    entity.to = transaction.to
-    entity.save()
-  }
-}
-```
-
-Here's what you're seeing in the `mappings.ts` file:
-
-1. The bytes containing Substreams data are decoded into the generated `Transactions` object, this object is used like any other AssemblyScript object
-2. Looping over the transactions
-3. Create a new Subgraph entity for every transaction
-
-To go through a detailed example of a trigger-based Subgraph, [check out the tutorial](/sps/tutorial/).
-
-### Additional Resources
-
-To scaffold your first project in the Development Container, check out one of the [How-To Guide](/substreams/developing/dev-container/).
diff --git a/website/src/pages/vi/substreams/sps/tutorial.mdx b/website/src/pages/vi/substreams/sps/tutorial.mdx
deleted file mode 100644
index 05036a1b24ae..000000000000
--- a/website/src/pages/vi/substreams/sps/tutorial.mdx
+++ /dev/null
@@ -1,155 +0,0 @@
----
-title: 'Tutorial: Set Up a Substreams-Powered Subgraph on Solana'
-sidebarTitle: Tutorial
----
-
-Successfully set up a trigger-based Substreams-powered Subgraph for a Solana SPL token.
-
-## Bắt đầu
-
-For a video tutorial, check out [How to Index Solana with a Substreams-powered Subgraph](/sps/tutorial/#video-tutorial)
-
-### Prerequisites
-
-Before starting, make sure to:
-
-- Complete the [Getting Started Guide](https://github.com/streamingfast/substreams-starter) to set up your development environment using a Dev Container.
-- Be familiar with The Graph and basic blockchain concepts such as transactions and Protobufs.
-
-### Step 1: Initialize Your Project
-
-1. Open your Dev Container and run the following command to initialize your project:
-
-   ```bash
-   substreams init
-   ```
-
-2. Select the "minimal" project option.
-
-3. Replace the contents of the generated `substreams.yaml` file with the following configuration, which filters transactions for the Orca account on the SPL token program ID:
-
-```yaml
-specVersion: v0.1.0
-package:
-  name: my_project_sol
-  version: v0.1.0
-
-imports: # Pass your spkg of interest
-  solana: https://github.com/streamingfast/substreams-solana-spl-token/raw/master/tokens/solana-spl-token-v0.1.0.spkg
-
-modules:
-  - name: map_spl_transfers
-    use: solana:map_block # Select corresponding modules available within your spkg
-    initialBlock: 260000082
-
-  - name: map_transactions_by_programid
-    use: solana:solana:transactions_by_programid_without_votes
-
-network: solana-mainnet-beta
-
-params: # Modify the param fields to meet your needs
-  # For program_id: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
-  map_spl_transfers: token_contract:orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE
-```
-
-### Step 2: Generate the Subgraph Manifest
-
-Once the project is initialized, generate a Subgraph manifest by running the following command in the Dev Container:
-
-```bash
-substreams codegen subgraph
-```
-
-You will generate a`subgraph.yaml` manifest which imports the Substreams package as a data source:
-
-```yaml
----
-dataSources:
-  - kind: substreams
-    name: my_project_sol
-    network: solana-mainnet-beta
-    source:
-      package:
-        moduleName: map_spl_transfers # Module defined in the substreams.yaml
-        file: ./my-project-sol-v0.1.0.spkg
-    mapping:
-      apiVersion: 0.0.9
-      kind: substreams/graph-entities
-      file: ./src/mappings.ts
-      handler: handleTriggers
-```
-
-### Step 3: Define Entities in `schema.graphql`
-
-Define the fields you want to save in your Subgraph entities by updating the `schema.graphql` file.
-
-Here is an example:
-
-```graphql
-type MyTransfer @entity {
-  id: ID!
-  amount: String!
-  source: String!
-  designation: String!
-  signers: [String!]!
-}
-```
-
-This schema defines a `MyTransfer` entity with fields such as `id`, `amount`, `source`, `designation`, and `signers`.
-
-### Step 4: Handle Substreams Data in `mappings.ts`
-
-With the Protobuf objects generated, you can now handle the decoded Substreams data in your `mappings.ts` file found in the `./src` directory.
-
-The example below demonstrates how to extract to Subgraph entities the non-derived transfers associated to the Orca account id:
-
-```ts
-import { Protobuf } from 'as-proto/assembly'
-import { Events as protoEvents } from './pb/sf/solana/spl/token/v1/Events'
-import { MyTransfer } from '../generated/schema'
-
-export function handleTriggers(bytes: Uint8Array): void {
-  const input: protoEvents = Protobuf.decode<protoEvents>(bytes, protoEvents.decode)
-
-  for (let i = 0; i < input.data.length; i++) {
-    const event = input.data[i]
-
-    if (event.transfer != null) {
-      let entity_id: string = `${event.txnId}-${i}`
-      const entity = new MyTransfer(entity_id)
-      entity.amount = event.transfer!.instruction!.amount.toString()
-      entity.source = event.transfer!.accounts!.source
-      entity.designation = event.transfer!.accounts!.destination
-
-      if (event.transfer!.accounts!.signer!.single != null) {
-        entity.signers = [event.transfer!.accounts!.signer!.single!.signer]
-      } else if (event.transfer!.accounts!.signer!.multisig != null) {
-        entity.signers = event.transfer!.accounts!.signer!.multisig!.signers
-      }
-      entity.save()
-    }
-  }
-}
-```
-
-### Step 5: Generate Protobuf Files
-
-To generate Protobuf objects in AssemblyScript, run the following command:
-
-```bash
-npm run protogen
-```
-
-This command converts the Protobuf definitions into AssemblyScript, allowing you to use them in the Subgraph's handler.
-
-### Conclusion
-
-Congratulations! You've successfully set up a trigger-based Substreams-powered Subgraph for a Solana SPL token. You can take the next step by customizing your schema, mappings, and modules to fit your specific use case.
-
-### Video Tutorial
-
-<VideoEmbed title="How to Index Solana with a Substreams-powered Subgraph" youtube="RmKi-Nq9E_A" />
-
-### Additional Resources
-
-For more advanced customization and optimizations, check out the official [Substreams documentation](https://substreams.streamingfast.io/tutorials/solana).
diff --git a/website/src/pages/zh/substreams/sps/_meta.js b/website/src/pages/zh/substreams/sps/_meta.js
deleted file mode 100644
index 86fcd3df5ec0..000000000000
--- a/website/src/pages/zh/substreams/sps/_meta.js
+++ /dev/null
@@ -1,6 +0,0 @@
-export default {
-  introduction: '',
-  triggers: '',
-  tutorial: '',
-  faq: '',
-}
diff --git a/website/src/pages/zh/substreams/sps/faq.mdx b/website/src/pages/zh/substreams/sps/faq.mdx
deleted file mode 100644
index 6fe73c72b8da..000000000000
--- a/website/src/pages/zh/substreams/sps/faq.mdx
+++ /dev/null
@@ -1,96 +0,0 @@
----
-title: Substreams驱动的子图的常见问题
-sidebarTitle: 常见问题
----
-
-## 什么是Substreams?
-
-Substreams是一个非常强大的处理引擎，能够消耗丰富的区块链数据流。它允许您优化和塑造区块链数据，以便最终用户应用程序快速无缝地消化。
-
-具体来说，它是一个与区块链无关的、并行化的、流媒体优先的引擎，充当区块链数据转换层。它由[Firehose](https://firehose.streamingfast.io/)提供支持，使开发人员能够编写Rust模块，构建社区模块，提供极高性能的索引，并将数据[存储](/substreams/developing/sinks/) 在任何地方。
-
-Substreams由[StreamingFast](https://www.streamingfast.io/)开发。访问[Substreams文档](/substreams/introduction/)以了解有关Substreams的更多信息。
-
-## 什么是Substreams驱动的子图？
-
-[Substreams驱动的子图](/sps/introduction/)结合了Substreams的强大功能和子图的可查询性。发布基于Substreams的子图时，Substreams转换生成的数据可以输出与子图实体兼容的[实体更改](https://github.com/streamingfast/substreams-sink-entity-changes/blob/develop/substreams-entity-change/src/tables.rs)。
-
-如果您已经熟悉子图Subgraph开发，那么请注意，Substreams驱动的子图可以被查询，就像它是由AssemblyScript转换层生成的一样。它具有所有子图的优势，比如提供动态和灵活的GraphQL API。
-
-## Substreams驱动的子图和普通子图有什么区别？
-
-子图由数据源组成，这些数据源指定了在链上发生的事件以及通过用Assemblyscript编写的处理程序应如何转换这些事件。这些事件按照链上发生事件的顺序依次进行处理。
-
-相比之下，由Substreams驱动的子图具有单一数据源，该数据源引用一个由Graph节点进行处理的Substreams包。与传统的子图相比，Substreams可以访问更多精细的链上数据，并且还可以从大规模并行处理中获益，这可能意味着处理时间更快。
-
-## 使用Substeams驱动的子图的优势是什么？
-
-Substreams驱动的子图结合了Substreams的所有优点和子图的可查询性。它们为The Graph带来了更大的兼容性和高性能索引。它们还支持新的数据用例：例如，一旦构建了基于Substreams的子图，就可以重用[Subreams模块](https://substreams.streamingfast.io/documentation/develop/manifest-modules)输出到不同的[sinks](https://substreams.streamingfast.io/reference-and-specs/manifests#sink)，例如PostgreSQL、MongoDB和Kafka。
-
-## Substreams的优势是什么？
-
-使用Substreams有许多好处，包括：
-
-- 可组合的: Substreams模块具有可组合性，就像乐高积木一样，您可以将它们堆叠起来，并在社区模块的基础上构建，进一步细化公共数据。
-
-- 高性能索引：大规模并行操作（类似于BigQuery）能够使索引速度提升数个数量级。
-
-- 任意传输：将您的数据传输到您想要的任何地方：PostgreSQL、MongoDB、Kafka、子图、平面文件、Google Sheets等。
-
-- 可编程：使用代码自定义提取、进行转换时聚合，并为多个传输目标建模输出。
-
-- 访问不作为JSON RPC的一部分的附加数据。
-
-- Firehose的全部好处。
-
-## 什么是Firehose?
-
-Firehose是由[StreamingFast](https://www.streamingfast.io/)开发的区块链数据提取层，从零开始设计，以前所未有的速度处理区块链的完整历史。它提供基于文件和流式优先的方法，是StreamingFast开源技术套件的核心组件，也是Substreams的基础。
-
-请访问[documentation](https://firehose.streamingfast.io/)，了解更多关于Firehose的信息。
-
-## Firehose的优势是什么？
-
-使用Firehose有许多好处，包括：
-
-- 最低延迟和无需轮询：Firehose节点以流优先的方式设计，竞相将块数据推送出去。
-
-- 防止宕机：从头开始为高可用性而设计。
-
-- 不会错过任何数据：Firehose流游标设计用于处理分叉，并在任何情况下都可以继续从上次离开的地方开始。
-
-- 最丰富的数据模型：包含余额变化、完整的调用树、内部交易、日志、存储变更、燃气费用等最佳数据模型。
-
-- 利用平面文件：将区块链数据提取到平面文件中，这是目前最便宜、最优化的计算资源。
-
-## 开发人员在哪里可以获得关于Substreams驱动的子图和Substreams的更多信息？
-
-[Substreams文档](/substreams/introduction/)将教您如何构建Substreams模块。
-
-[Substreams驱动的子图文档](/sps/introduction/)将向您展示如何将它们打包部署在The Graph上。
-
-[最新的Substreams Codegen工具](https://streamingfastio.medium.com/substreams-codegen-no-code-tool-to-bootstrap-your-project-a11efe0378c6)将允许您无需任何代码即可引导Substreams项目。
-
-## Rust模块在Substreams中扮演什么角色？
-
-Rust模块相当于子图中的AssemblyScript映射。它们以类似的方式编译为WASM，但编程模型允许并行执行。它们定义了您想要对原始区块链数据应用的转换和聚合类型。
-
-请参阅[模块文档](https://docs.substreams.dev/reference-material/substreams-components/modules#modules)了解详情。
-
-## 什么使Substreams具有组合性？
-
-在使用Substreams时，组合发生在转换层，从而使得缓存模块可以被重复使用。
-
-举例来说，Alice可以构建一个DEX价格模块，Bob可以使用它来构建一种感兴趣的代币的交易量集成器，Lisa可以将四个单独的DEX价格模块组合起来创建一个价格预言机。一个单独的Substreams请求将打包所有这些个人模块，并将它们链接在一起，提供一个更加精细的数据流。然后可以使用该数据流填充子图，并由消费者查询。
-
-## 如何构建和部署Substreams驱动的子图？
-
-在[定义](/sps/introduction/) 一个Substreams驱动的子图后，您可以使用Graph CLI在[Subgraph Studio](https://thegraph.com/studio/)中部署它。
-
-## 在哪里可以找到Substreams和Substreams驱动的子图的示例？
-
-您可以访问[此Github repo](https://github.com/pinax-network/awesome-substreams) 以找到Substreams和Substreams-powered子图的示例。
-
-## Substreams和Substreams驱动的子图对于The Graph网络意味着什么？
-
-这种集成带来许多好处，包括通过利用社区模块和在其上构建的组合性来实现极高性能的索引。
diff --git a/website/src/pages/zh/substreams/sps/introduction.mdx b/website/src/pages/zh/substreams/sps/introduction.mdx
deleted file mode 100644
index bb5579cb7b65..000000000000
--- a/website/src/pages/zh/substreams/sps/introduction.mdx
+++ /dev/null
@@ -1,31 +0,0 @@
----
-title: Substreams驱动子图介绍
-sidebarTitle: 介绍
----
-
-使用 [Substreams](/substreams/introduction/) 流式传输预索引的区块链数据，提高子图的效率和伸缩能力。
-
-## 概述
-
-通过使用Substreams包（`.spkg`）作为数据源，您的子图可以访问预先索引的区块链数据流。这使得数据处理更加高效和可扩展，特别是在大型或复杂的区块链网络中。
-
-### 详情
-
-启用此技术有两种方法：
-
-1. **使用Substreams[触发器](/sps/triggers/)**：通过子图处理程序导入Protobuf模型，从任何Substreams模块中消费，并将所有逻辑移动到子图中。此方法直接在子图中创建子图实体。
-
-2. **使用[实体更改](https://docs.substreams.dev/how-to-guides/sinks/subgraph/graph-out)**：通过将更多的逻辑写入Substreams，您可以将模块的输出直接消耗到[graph节点](/indexing/tooling/graph-node/)中。在graph节点中，可以使用Substreams数据创建子图实体。
-
-您可以选择在子图或子流中放置逻辑的位置。但是，考虑一下什么符合您的数据需求，因为Substreams有一个并行化的模型，触发器在graph节点中是线性消耗的。
-
-### 其他资源
-
-请访问以下教程链接，了解如何使用代码生成工具快速构建您的第一个端到端Substreams项目：
-
-- [Solana](/substreams/developing/solana/transactions/)
-- [EVM](https://docs.substreams.dev/tutorials/intro-to-tutorials/evm)
-- [Starknet](https://docs.substreams.dev/tutorials/intro-to-tutorials/starknet)
-- [Injective](https://docs.substreams.dev/tutorials/intro-to-tutorials/on-cosmos/injective)
-- [MANTRA](https://docs.substreams.dev/tutorials/intro-to-tutorials/on-cosmos/mantra)
-- [Stellar](https://docs.substreams.dev/tutorials/intro-to-tutorials/stellar)
diff --git a/website/src/pages/zh/substreams/sps/triggers.mdx b/website/src/pages/zh/substreams/sps/triggers.mdx
deleted file mode 100644
index a92760b3a388..000000000000
--- a/website/src/pages/zh/substreams/sps/triggers.mdx
+++ /dev/null
@@ -1,47 +0,0 @@
----
-title: Substreams触发器
----
-
-使用自定义触发器并启用完全使用GraphQL。
-
-## 概述
-
-自定义触发器允许您将数据直接发送到子图映射文件和实体中，这些文件和实体类似于表和字段。这使您能够充分使用GraphQL层。
-
-通过导入Substreams模块发出的Protobuf定义，您可以在子图的处理程序中接收和处理这些数据。这确保了子图框架内高效和简化的数据管理。
-
-### 定义`处理交易`
-
-以下代码演示了如何在子图处理程序中定义`handleTransactions`函数。此函数接收原始Substreams字节作为参数，并将其解码为`Transactions`对象。对于每个交易，都会创建一个新的子图实体。
-
-```tsx
-export function handleTransactions(bytes: Uint8Array): void {
-  let transactions = assembly.eth.transaction.v1.Transactions.decode(bytes.buffer).transactions // 1.
-  if (transactions.length == 0) {
-    log.info('No transactions found', [])
-    return
-  }
-
-  for (let i = 0; i < transactions.length; i++) {
-    // 2.
-    let transaction = transactions[i]
-
-    let entity = new Transaction(transaction.hash) // 3.
-    entity.from = transaction.from
-    entity.to = transaction.to
-    entity.save()
-  }
-}
-```
-
-以下是您在`mappings.ts`文件中看到的内容：
-
-1. 包含Substreams数据的字节被解码为生成的`交易`对象，该对象与任何其他AssemblyScript对象一样使用
-2. 循环交易
-3. 为每笔交易创建一个新的子图实体
-
-要查看基于触发器的子图的详细示例，[单击此处](/sps/tutorial/)。
-
-### 知识拓展
-
-要在开发容器中构建你的第一个项目，请查看[操作指南](/substreams/developing/dev-container/)。
diff --git a/website/src/pages/zh/substreams/sps/tutorial.mdx b/website/src/pages/zh/substreams/sps/tutorial.mdx
deleted file mode 100644
index c8ca5c967a22..000000000000
--- a/website/src/pages/zh/substreams/sps/tutorial.mdx
+++ /dev/null
@@ -1,155 +0,0 @@
----
-title: 教程：在Solana上设置基于Substreams的子图
-sidebarTitle: 教程
----
-
-已成功为Solana SPL代币设置基于触发器的Substreams驱动子图。
-
-## 开始
-
-有关视频教程，请查看[如何使用Substreams驱动的子图对Solana进行索引](/sps/tutorial/#video-tutorial)
-
-### 先决条件
-
-开始之前，请确保：
-
-- 完成[入门指南](https://github.com/streamingfast/substreams-starter)使用Dev容器设置开发环境。
-- 熟悉The Graph和基本的区块链概念，如交易和Protobuf。
-
-### 步骤1：初始化您的项目
-
-1. 打开Dev容器并运行以下命令以初始化项目：
-
-   ```bash
-   substreams init
-   ```
-
-2. 选择“最小”项目选项。
-
-3. 将生成的`substreams.yaml`文件的内容替换为以下配置，该配置过滤SPL代币程序ID上Orca帐户的交易：
-
-```yaml
-specVersion: v0.1.0
-package:
-  name: my_project_sol
-  version: v0.1.0
-
-imports: # Pass your spkg of interest
-  solana: https://github.com/streamingfast/substreams-solana-spl-token/raw/master/tokens/solana-spl-token-v0.1.0.spkg
-
-modules:
-  - name: map_spl_transfers
-    use: solana:map_block # Select corresponding modules available within your spkg
-    initialBlock: 260000082
-
-  - name: map_transactions_by_programid
-    use: solana:solana:transactions_by_programid_without_votes
-
-network: solana-mainnet-beta
-
-params: # Modify the param fields to meet your needs
-  # For program_id: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
-  map_spl_transfers: token_contract:orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE
-```
-
-### 步骤2：生成子图清单
-
-项目初始化后，通过在Dev容器中运行以下命令生成子图清单：
-
-```bash
-substreams codegen subgraph
-```
-
-您将生成`asubgraph.yaml`清单，该清单将Substreams包作为数据源导入：
-
-```yaml
----
-dataSources:
-  - kind: substreams
-    name: my_project_sol
-    network: solana-mainnet-beta
-    source:
-      package:
-        moduleName: map_spl_transfers # Module defined in the substreams.yaml
-        file: ./my-project-sol-v0.1.0.spkg
-    mapping:
-      apiVersion: 0.0.9
-      kind: substreams/graph-entities
-      file: ./src/mappings.ts
-      handler: handleTriggers
-```
-
-### 步骤3：在`schema.graphql`中定义实体
-
-通过更新`schema.graphql`文件来定义要保存在子图实体中的字段。
-
-以下是一个示例：
-
-```graphql
-type MyTransfer @entity {
-  id: ID!
-  amount: String!
-  source: String!
-  designation: String!
-  signers: [String!]!
-}
-```
-
-此模式定义了一个名为`MyTransfer`的实体，其字段包括 `id`, `amount`, `source`, `designation`, 和`signers`。
-
-### 步骤4：在`mappings.ts`中处理Substreams数据
-
-生成Protobuf对象后，您现在可以在`./src`目录里找到的`mappings.ts`文件中处理解码的Substreams数据。
-
-下面的示例演示了如何将与Orca帐户id关联的非派生传输提取到子图实体中：
-
-```ts
-import { Protobuf } from 'as-proto/assembly'
-import { Events as protoEvents } from './pb/sf/solana/spl/token/v1/Events'
-import { MyTransfer } from '../generated/schema'
-
-export function handleTriggers(bytes: Uint8Array): void {
-  const input: protoEvents = Protobuf.decode<protoEvents>(bytes, protoEvents.decode)
-
-  for (let i = 0; i < input.data.length; i++) {
-    const event = input.data[i]
-
-    if (event.transfer != null) {
-      let entity_id: string = `${event.txnId}-${i}`
-      const entity = new MyTransfer(entity_id)
-      entity.amount = event.transfer!.instruction!.amount.toString()
-      entity.source = event.transfer!.accounts!.source
-      entity.designation = event.transfer!.accounts!.destination
-
-      if (event.transfer!.accounts!.signer!.single != null) {
-        entity.signers = [event.transfer!.accounts!.signer!.single!.signer]
-      } else if (event.transfer!.accounts!.signer!.multisig != null) {
-        entity.signers = event.transfer!.accounts!.signer!.multisig!.signers
-      }
-      entity.save()
-    }
-  }
-}
-```
-
-### 步骤5：生成Protobuf文件
-
-要在AssemblyScript中生成Protobuf对象，请运行以下命令：
-
-```bash
-npm run protogen
-```
-
-此命令将Protobuf定义转换为AssemblyScript，允许您在子图的处理程序中使用它们。
-
-### 结论
-
-恭喜！您已成功为Solana SPL代币设置了基于触发器的Substreams驱动子图。现在，您可以进一步定制您的模式、映射和模块，以适应您的特定用例。
-
-### 视频教程
-
-<VideoEmbed title="How to Index Solana with a Substreams-powered Subgraph" youtube="RmKi-Nq9E_A" />
-
-### 其他资源
-
-如需更高级的定制和优化，请查看官方[Substreams文档](https://substreams.streamingfast.io/tutorials/solana)。

From dae44e5943096878623e722f35756487a0dd7cfc Mon Sep 17 00:00:00 2001
From: Idalith <126833353+idalithb@users.noreply.github.com>
Date: Fri, 27 Jun 2025 18:32:53 -0700
Subject: [PATCH 10/36] Updating Questions (#994)

Quick Removal
---
 website/src/pages/en/ai-suite/ai-introduction.mdx | 2 --
 1 file changed, 2 deletions(-)

diff --git a/website/src/pages/en/ai-suite/ai-introduction.mdx b/website/src/pages/en/ai-suite/ai-introduction.mdx
index 9b661875bb18..d25cc9f77358 100644
--- a/website/src/pages/en/ai-suite/ai-introduction.mdx
+++ b/website/src/pages/en/ai-suite/ai-introduction.mdx
@@ -32,8 +32,6 @@ Using onchain data with AI unlocks powerful new ways to interact with and unders
 - "List the top-5 swaps by USD value in the last 24 hours."
 - "Give me the daily volume on Uniswap."
 - "List the 20 most recently registered .eth names."
-- "What's the best liqudity pool to put my ETH into?"
-- "What is the total delegated stake in The Graph network?"
 
 [Graph Assistant](/ai-suite/graph-assistant/introduction/) will eventually be a one-stop shop for interacting with The Graph. Right now, it's an agentic AI app that uses state-of-the-art AI techniques, LLMs, and MCPs to understand and answer your questions about [Subgraphs](/subgraphs/developing/subgraphs/) and [Token API](/token-api/quick-start/) data.
 

From 32a5ca4d85d19aca513381c0f449bd50a79cd184 Mon Sep 17 00:00:00 2001
From: Hayder <hayder@hey.com>
Date: Wed, 2 Jul 2025 14:24:39 +0200
Subject: [PATCH 11/36] Redirect Graph Assistant page (#995)

* Redirect Graph Assistant page

* Move redirect to `nginx.conf` so it works in static build

---------

Co-authored-by: benface <benoit.rouleau@icloud.com>
---
 nginx.conf | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/nginx.conf b/nginx.conf
index 32b0fdd48183..2baae5e82999 100644
--- a/nginx.conf
+++ b/nginx.conf
@@ -108,6 +108,7 @@ http {
         rewrite ^/docs/([a-zA-Z][a-zA-Z])/explorer/$                                    $scheme://$http_host/docs/$1/subgraphs/explorer/                                    permanent;
         rewrite ^/docs/([a-zA-Z][a-zA-Z])/firehose/$                                    $scheme://$http_host/docs/$1/indexing/tooling/firehose/                             permanent;
         rewrite ^/docs/([a-zA-Z][a-zA-Z])/glossary/$                                    $scheme://$http_host/docs/$1/resources/glossary/                                    permanent;
+        rewrite ^/docs/([a-zA-Z][a-zA-Z])/graph-assistant/quick-start/$                 $scheme://$http_host/docs/$1/ai-suite/graph-assistant/quick-start/                  permanent;
         rewrite ^/docs/([a-zA-Z][a-zA-Z])/graphcast/$                                   $scheme://$http_host/docs/$1/indexing/tooling/graphcast/                            permanent;
         rewrite ^/docs/([a-zA-Z][a-zA-Z])/indexing/$                                    $scheme://$http_host/docs/$1/indexing/overview/                                     permanent;
         rewrite ^/docs/([a-zA-Z][a-zA-Z])/managing/delete-a-subgraph/$                  $scheme://$http_host/docs/$1/subgraphs/developing/managing/deleting-a-subgraph/     permanent;
@@ -150,6 +151,10 @@ http {
         rewrite ^/docs/([a-zA-Z][a-zA-Z])/studio/subgraph-studio/$                      $scheme://$http_host/docs/$1/subgraphs/developing/deploying/using-subgraph-studio/  permanent;
         rewrite ^/docs/([a-zA-Z][a-zA-Z])/studio/transferring-subgraph-ownership/$      $scheme://$http_host/docs/$1/subgraphs/developing/managing/transferring-a-subgraph/ permanent;
         rewrite ^/docs/([a-zA-Z][a-zA-Z])/subgraphs/$                                   $scheme://$http_host/docs/$1/subgraphs/quick-start/                                 permanent;
+        rewrite ^/docs/([a-zA-Z][a-zA-Z])/subgraphs/mcp/claude/$                        $scheme://$http_host/docs/$1/ai-suite/subgraph-mcp/                                 permanent;
+        rewrite ^/docs/([a-zA-Z][a-zA-Z])/subgraphs/mcp/cline/$                         $scheme://$http_host/docs/$1/ai-suite/subgraph-mcp/                                 permanent;
+        rewrite ^/docs/([a-zA-Z][a-zA-Z])/subgraphs/mcp/cursor/$                        $scheme://$http_host/docs/$1/ai-suite/subgraph-mcp/                                 permanent;
+        rewrite ^/docs/([a-zA-Z][a-zA-Z])/subgraphs/mcp/cline/$                         $scheme://$http_host/docs/$1/ai-suite/subgraph-mcp/                                 permanent;
         rewrite ^/docs/([a-zA-Z][a-zA-Z])/substreams/$                                  $scheme://$http_host/docs/$1/substreams/quick-start/                                permanent;
         rewrite ^/docs/([a-zA-Z][a-zA-Z])/substreams/developing/sinks/sinks/$           $scheme://$http_host/docs/$1/substreams/developing/sinks/                           permanent;
         rewrite ^/docs/([a-zA-Z][a-zA-Z])/substreams/sps/$                              $scheme://$http_host/docs/$1/substreams/sps/introduction/                           permanent;
@@ -161,10 +166,6 @@ http {
         rewrite ^/docs/([a-zA-Z][a-zA-Z])/tokenomics/$                                  $scheme://$http_host/docs/$1/resources/tokenomics/                                  permanent;
         rewrite ^/docs/([a-zA-Z][a-zA-Z])/token-api/$                                   $scheme://$http_host/docs/$1/token-api/quick-start/                                 permanent;
         rewrite ^/docs/([a-zA-Z][a-zA-Z])/token-api/evm/get-transfers-evm-by-address/$  $scheme://$http_host/docs/$1/token-api/evm/get-transfers-evm/                       permanent;
-        rewrite ^/docs/([a-zA-Z][a-zA-Z])/subgraphs/mcp/claude/$                        $scheme://$http_host/docs/$1/ai-suite/subgraph-mcp/                                 permanent;
-        rewrite ^/docs/([a-zA-Z][a-zA-Z])/subgraphs/mcp/cline/$                         $scheme://$http_host/docs/$1/ai-suite/subgraph-mcp/                                 permanent;
-        rewrite ^/docs/([a-zA-Z][a-zA-Z])/subgraphs/mcp/cursor/$                         $scheme://$http_host/docs/$1/ai-suite/subgraph-mcp/                                permanent;
-        rewrite ^/docs/([a-zA-Z][a-zA-Z])/subgraphs/mcp/cline/$                         $scheme://$http_host/docs/$1/ai-suite/subgraph-mcp/                                 permanent;
         rewrite ^/docs/([a-zA-Z][a-zA-Z])/token-api/mcp/cline/$                         $scheme://$http_host/docs/$1/ai-suite/token-api-mcp/                                permanent;
         rewrite ^/docs/([a-zA-Z][a-zA-Z])/token-api/mcp/cline/$                         $scheme://$http_host/docs/$1/ai-suite/token-api-mcp/                                permanent;
         rewrite ^/docs/([a-zA-Z][a-zA-Z])/token-api/mcp/cline/$                         $scheme://$http_host/docs/$1/ai-suite/token-api-mcp/                                permanent;

From b83b32ca8d5c971f074d9b8a3f7bb926c2a1b5a4 Mon Sep 17 00:00:00 2001
From: Hayder <hayder@hey.com>
Date: Thu, 3 Jul 2025 00:07:36 +0200
Subject: [PATCH 12/36] Redirect /developer to /subgraphs (#996)

* Redirect /developer to /subgraphs

* Sort alphabetically

---------

Co-authored-by: benface <benoit.rouleau@icloud.com>
---
 nginx.conf | 1 +
 1 file changed, 1 insertion(+)

diff --git a/nginx.conf b/nginx.conf
index 2baae5e82999..4dbb4f3515e9 100644
--- a/nginx.conf
+++ b/nginx.conf
@@ -89,6 +89,7 @@ http {
         rewrite ^/docs/([a-zA-Z][a-zA-Z])/deploying/subgraph-studio-faqs/$              $scheme://$http_host/docs/$1/resources/subgraph-studio-faq/                         permanent;
         rewrite ^/docs/([a-zA-Z][a-zA-Z])/subgraphs/developing/deploying/subgraph-studio-faq/$ $scheme://$http_host/docs/$1/resources/subgraph-studio-faq/                  permanent;
         rewrite ^/docs/([a-zA-Z][a-zA-Z])/deploying/subgraph-studio/$                   $scheme://$http_host/docs/$1/subgraphs/developing/deploying/using-subgraph-studio/  permanent;
+        rewrite ^/docs/([a-zA-Z][a-zA-Z])/developer/quick-start/$                       $scheme://$http_host/docs/$1/subgraphs/quick-start/                                 permanent;
         rewrite ^/docs/([a-zA-Z][a-zA-Z])/developing/assemblyscript-api/$               $scheme://$http_host/docs/$1/subgraphs/developing/creating/graph-ts/api/            permanent;
         rewrite ^/docs/([a-zA-Z][a-zA-Z])/developing/creating-a-subgraph/$              $scheme://$http_host/docs/$1/subgraphs/developing/creating/starting-your-subgraph/  permanent;
         rewrite ^/docs/([a-zA-Z][a-zA-Z])/developing/creating-a-subgraph/starting-your-subgraph/$ $scheme://$http_host/docs/$1/subgraphs/developing/creating/starting-your-subgraph/ permanent;

From 9b0724f0a13fbaa8a5756f925b1dc5cc25182315 Mon Sep 17 00:00:00 2001
From: Nathan <58645278+nathan-websculpt@users.noreply.github.com>
Date: Wed, 9 Jul 2025 12:01:50 -0500
Subject: [PATCH 13/36] extra word removed from quick-start.mdx (#997)

'It makes your Subgraph available to be to indexed...'
changed to
'It makes your Subgraph available to be indexed'
---
 website/src/pages/en/subgraphs/quick-start.mdx | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/website/src/pages/en/subgraphs/quick-start.mdx b/website/src/pages/en/subgraphs/quick-start.mdx
index bc56d0fddaa1..3a79eb078acf 100644
--- a/website/src/pages/en/subgraphs/quick-start.mdx
+++ b/website/src/pages/en/subgraphs/quick-start.mdx
@@ -119,7 +119,7 @@ If you’d like to test your Subgraph before publishing it, you can use [Subgrap
 
 When your Subgraph is ready for a production environment, you can publish it to the decentralized network. Publishing is an onchain action that does the following:
 
-- It makes your Subgraph available to be to indexed by the decentralized [Indexers](/indexing/overview/) on The Graph Network.
+- It makes your Subgraph available to be indexed by the decentralized [Indexers](/indexing/overview/) on The Graph Network.
 - It removes rate limits and makes your Subgraph publicly searchable and queryable in [Graph Explorer](https://thegraph.com/explorer/).
 - It makes your Subgraph available for [Curators](/resources/roles/curating/) to add curation signal.
 

From 36cddf47c8a21ef8a7b11b1ae74274e62e36f173 Mon Sep 17 00:00:00 2001
From: Andrew <36178664+UrsaPolarisRecords@users.noreply.github.com>
Date: Wed, 9 Jul 2025 10:16:36 -0700
Subject: [PATCH 14/36] Update quick-start.mdx (#998)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* Update quick-start.mdx

Added Solana, reformatted table slightly (evm-tokens doesn't make sense for Solana)

* Fix “The Graph Docs” link (we’re already in the docs :P)

---------

Co-authored-by: benface <benoit.rouleau@icloud.com>
---
 .../src/pages/en/token-api/quick-start.mdx    | 25 ++++++++++---------
 1 file changed, 13 insertions(+), 12 deletions(-)

diff --git a/website/src/pages/en/token-api/quick-start.mdx b/website/src/pages/en/token-api/quick-start.mdx
index 3906d1776a41..2651dfabb32d 100644
--- a/website/src/pages/en/token-api/quick-start.mdx
+++ b/website/src/pages/en/token-api/quick-start.mdx
@@ -68,18 +68,19 @@ Make sure to replace `<token>` with the JWT Token generated from your API key.
 
 ## Chain and Feature Support
 
-| Network          |         evm-tokens          |        evm-uniswaps         |       evm-nft-tokens        |
-| ---------------- | :-------------------------: | :-------------------------: | :-------------------------: |
-| Ethereum Mainnet |  <Check alt="Supported" />  |  <Check alt="Supported" />  |  <Check alt="Supported" />  |
-| BSC              |  <Check alt="Supported" />  |  <Check alt="Supported" />  |  <Check alt="Supported" />  |
-| Base             |  <Check alt="Supported" />  |  <Check alt="Supported" />  |  <Check alt="Supported" />  |
-| Unichain         |  <Check alt="Supported" />  |  <Check alt="Supported" />  |  <Check alt="Supported" />  |
-| Arbitrum-One     | <Check alt="Supported" />\* | <Check alt="Supported" />\* | <Check alt="Supported" />\* |
-| Optimism         |  <Check alt="Supported" />  |  <Check alt="Supported" />  |  <Check alt="Supported" />  |
-| Polygon          |  <Check alt="Supported" />  |  <Check alt="Supported" />  |  <Check alt="Supported" />  |
-| Avalanche        |  <Check alt="Supported" />  |  <Check alt="Supported" />  |  <Check alt="Supported" />  |
-
-\*Some chains are still in the process of syncing. You may encounter `bad_database_response` errors or incorrect response values until data is fully synced.
+| Network          |          Tokens           |           Swaps           |           NFTs            |
+| ---------------- | :-----------------------: | :-----------------------: | :-----------------------: |
+| Ethereum Mainnet | <Check alt="Supported" /> | <Check alt="Supported" /> | <Check alt="Supported" /> |
+| BSC              | <Check alt="Supported" /> | <Check alt="Supported" /> | <Check alt="Supported" /> |
+| Base             | <Check alt="Supported" /> | <Check alt="Supported" /> | <Check alt="Supported" /> |
+| Unichain         | <Check alt="Supported" /> | <Check alt="Supported" /> | <Check alt="Supported" /> |
+| Arbitrum-One     | <Check alt="Supported" /> | <Check alt="Supported" /> | <Check alt="Supported" /> |
+| Optimism         | <Check alt="Supported" /> | <Check alt="Supported" /> | <Check alt="Supported" /> |
+| Polygon          | <Check alt="Supported" /> | <Check alt="Supported" /> | <Check alt="Supported" /> |
+| Avalanche        | <Check alt="Supported" /> | <Check alt="Supported" /> | <Check alt="Supported" /> |
+| Solana           | <Check alt="Supported" /> | <Check alt="Supported" /> |      ❌ Unsupported       |
+
+A full list of chain support for The Graph services can be found [here](/supported-networks/).
 
 ## Troubleshooting
 

From 0959c639c5b35bcded269dbcf6aa0ea5d23727ae Mon Sep 17 00:00:00 2001
From: Andrew <36178664+UrsaPolarisRecords@users.noreply.github.com>
Date: Wed, 9 Jul 2025 10:19:40 -0700
Subject: [PATCH 15/36] Update faq.mdx (#999)

* Update faq.mdx

Added Solana and supported networks link, Added Solana DEX support, Added 0xeeee... explanation, changed networks endpoint link

* Fix links

---------

Co-authored-by: benface <benoit.rouleau@icloud.com>
---
 website/src/pages/en/subgraphs/explorer.mdx            |  2 +-
 .../en/subgraphs/querying/from-an-application.mdx      |  2 +-
 website/src/pages/en/token-api/faq.mdx                 | 10 +++++++---
 3 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/website/src/pages/en/subgraphs/explorer.mdx b/website/src/pages/en/subgraphs/explorer.mdx
index ddb6ad1b39b6..8562562cf357 100644
--- a/website/src/pages/en/subgraphs/explorer.mdx
+++ b/website/src/pages/en/subgraphs/explorer.mdx
@@ -15,7 +15,7 @@ This guide explains how to use [Graph Explorer](https://thegraph.com/explorer) t
 - To perform actions, you need a wallet (e.g., MetaMask) connected to [Graph Explorer](https://thegraph.com/explorer).
   > Make sure your wallet is connected to the correct network (e.g., Arbitrum). Features and data shown are network specific.
 - GRT tokens if you plan to delegate or curate.
-- Basic knowledge of [Subgraphs](https://thegraph.com/docs/en/subgraphs/developing/subgraphs/)
+- Basic knowledge of [Subgraphs](/subgraphs/developing/subgraphs/)
 
 ## Navigating Graph Explorer
 
diff --git a/website/src/pages/en/subgraphs/querying/from-an-application.mdx b/website/src/pages/en/subgraphs/querying/from-an-application.mdx
index 44677d78dcdf..392ddab4f318 100644
--- a/website/src/pages/en/subgraphs/querying/from-an-application.mdx
+++ b/website/src/pages/en/subgraphs/querying/from-an-application.mdx
@@ -11,7 +11,7 @@ During the development process, you will receive a GraphQL API endpoint at two d
 
 ### Subgraph Studio Endpoint
 
-After deploying your Subgraph to [Subgraph Studio](https://thegraph.com/docs/en/subgraphs/developing/deploying/using-subgraph-studio/), you will receive an endpoint that looks like this:
+After deploying your Subgraph to [Subgraph Studio](/subgraphs/developing/deploying/using-subgraph-studio/), you will receive an endpoint that looks like this:
 
 ```
 https://api.studio.thegraph.com/query/<ID>/<SUBGRAPH_NAME>/<VERSION>
diff --git a/website/src/pages/en/token-api/faq.mdx b/website/src/pages/en/token-api/faq.mdx
index 1fc4525c0ea8..88be1ad49b13 100644
--- a/website/src/pages/en/token-api/faq.mdx
+++ b/website/src/pages/en/token-api/faq.mdx
@@ -8,7 +8,7 @@ Get fast answers to easily integrate and scale with The Graph's high-performance
 
 ### Which blockchains are supported by the Token API?
 
-Currently, the Token API supports Ethereum, BNB Smart Chain (BSC), Polygon, Optimism, Base, Unichain, Avalanche, and Arbitrum One.
+Currently, the Token API supports Ethereum, BNB Smart Chain (BSC), Polygon, Optimism, Base, Unichain, Avalanche, Solana, and Arbitrum One. A full list of supported networks can be found under the Token API column [here](/supported-networks/).
 
 ### Does the Token API support NFTs?
 
@@ -36,7 +36,7 @@ The Token API supports historical token balances with the `/historical/balances/
 
 ### What exchanges does the Token API use for token prices?
 
-The Token API currently tracks prices on Uniswap v2 and Uniswap v3, with plans to support additional exchanges in the future.
+The Token API currently tracks prices on Uniswap v2, v3, and v4, along with Jupiter, Raydium, and Pump.fun on Solana, with plans to support additional exchanges in the future.
 
 ### Does the Token API provide a client SDK?
 
@@ -72,6 +72,10 @@ You can find the code for the MCP client in [The Graph's repo](https://github.co
 
 ## Advanced Topics
 
+### I keep seeing a smart contract with the address `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee`. What is this address?
+
+The address 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee is a sentinel (placeholder) address used to represent native tokens in EVM smart contracts. Since native tokens (ETH, BNB, AVAX, etc.) exist at the protocol level rather than as smart contracts, DeFi protocols need a placeholder address when their code expects contract addresses for all tokens. This address represents the native token of whatever chain you're on: ETH on Ethereum and its L2s (Base, Arbitrum, Optimism), BNB on BSC, AVAX on Avalanche, FTM on Fantom, and so forth. The repetitive pattern makes it obvious that the address is artificial; it's not a real account anyone controls, just an arbitrarily chosen low-entropy address that developers agreed to use.
+
 ### I'm getting 403/401 errors. What's wrong?
 
 Check that you included the `Authorization: Bearer <jwt>` header with the correct, non-expired token. Common issues include using the API key instead of generating a new JWT, forgetting the "Bearer" prefix, using an incorrect token, or omitting the header entirely. Ensure you copied the JWT exactly as provided by The Graph Market.
@@ -90,7 +94,7 @@ If you notice data inconsistencies, please report the issue on our [Discord](htt
 
 ### How do I specify a network?
 
-You can query available networks with [this link](https://token-api.thegraph.com/#tag/monitoring/GET/networks). A full list of the exact network IDs accepted by The Graph can be found on [The Graph's Networks](https://thegraph.com/docs/en/supported-networks/). Use the optional `network_id` parameter (e.g., `mainnet`, `bsc`, `base`, `arbitrum-one`, `optimism`, `matic`, `unichain`) to target a specific chain. Without this parameter, the API defaults to Ethereum mainnet.
+You can query available networks with [this link](https://token-api.thegraph.com/networks). A full list of the exact network IDs accepted by The Graph can be found [here](/supported-networks/). Use the optional `network_id` parameter (e.g., `mainnet`, `bsc`, `base`, `arbitrum-one`, `optimism`, `matic`, `unichain`) to target a specific chain. Without this parameter, the API defaults to Ethereum mainnet.
 
 ### Why do I only see 10 results? How can I get more data?
 

From e0c4ccc34213b2708ef9599d4cd411e2ebe1d1c9 Mon Sep 17 00:00:00 2001
From: Joseph Livesey <joseph@semiotic.ai>
Date: Wed, 9 Jul 2025 17:06:53 -0400
Subject: [PATCH 16/36] docs: update GraphTally docs (#1002)

Signed-off-by: Joseph Livesey <joseph@semiotic.ai>
---
 website/src/pages/en/indexing/tap.mdx | 321 ++++++++++++++++++--------
 1 file changed, 222 insertions(+), 99 deletions(-)

diff --git a/website/src/pages/en/indexing/tap.mdx b/website/src/pages/en/indexing/tap.mdx
index e9667d498e0f..176ef02b8a48 100644
--- a/website/src/pages/en/indexing/tap.mdx
+++ b/website/src/pages/en/indexing/tap.mdx
@@ -2,7 +2,7 @@
 title: GraphTally Guide
 ---
 
-Learn about The Graph’s new payment system, **GraphTally** [(previously Timeline Aggregation Protocol)](https://docs.rs/tap_core/latest/tap_core/index.html). This system provides fast, efficient microtransactions with minimized trust.
+Learn about The Graph's new payment system, **GraphTally** [(previously Timeline Aggregation Protocol)](https://docs.rs/tap_core/latest/tap_core/index.html). This system provides fast, efficient microtransactions with minimized trust.
 
 ## Overview
 
@@ -11,34 +11,30 @@ GraphTally is a drop-in replacement to the Scalar payment system currently in pl
 - Efficiently handles micropayments.
 - Adds a layer of consolidations to onchain transactions and costs.
 - Allows Indexers control of receipts and payments, guaranteeing payment for queries.
-- It enables decentralized, trustless gateways and improves `indexer-service` performance for multiple senders.
+- Enables decentralized, trustless gateways and improves indexer service performance for multiple senders.
 
-### Specifics
+### How It Works
 
-GraphTally allows a sender to make multiple payments to a receiver, **Receipts**, which aggregates these payments into a single payment, a **Receipt Aggregate Voucher**, also known as a **RAV**. This aggregated payment can then be verified on the blockchain, reducing the number of transactions and simplifying the payment process.
+GraphTally allows a sender to make multiple payments to a receiver through **Receipts**, which are then aggregated into a single payment called a **Receipt Aggregate Voucher (RAV)**. This aggregated payment can be verified on the blockchain, reducing the number of transactions and simplifying the payment process.
 
-For each query, the gateway will send you a `signed receipt` that is stored on your database. Then, these queries will be aggregated by a `tap-agent` through a request. Afterwards, you’ll receive a RAV. You can update a RAV by sending it with newer receipts and this will generate a new RAV with an increased value.
+For each query, the gateway sends a signed receipt that is stored in your database. The `indexer-tap-agent` aggregates these receipts into RAVs through periodic requests. You can update a RAV by sending it with newer receipts, which generates a new RAV with an increased value.
 
 ### RAV Details
 
-- It’s money that is waiting to be sent to the blockchain.
-
-- It will continue to send requests to aggregate and ensure that the total value of non-aggregated receipts does not exceed the `amount willing to lose`.
-
+- RAVs represent money waiting to be sent to the blockchain.
+- The system continuously aggregates receipts to ensure that the total value of non-aggregated receipts does not exceed the configured `max_amount_willing_to_lose_grt`.
 - Each RAV can be redeemed once in the contracts, which is why they are sent after the allocation is closed.
 
-### Redeeming RAV
-
-As long as you run `tap-agent` and `indexer-agent`, everything will be executed automatically. The following provides a detailed breakdown of the process:
+### Redeeming RAVs
 
-1. An Indexer closes allocation.
+The redemption process is fully automated when running both `indexer-tap-agent` and `indexer-agent`:
 
-2. `<recently-closed-allocation-buffer> period, tap-agent` takes all pending receipts for that specific allocation and requests an aggregation into a RAV, marking it as `last`.
-
-3. `indexer-agent` takes all the last RAVS and sends redeem requests to the blockchain, which will update the value of `redeem_at`.
-
-4. During the `<finality-time>` period, `indexer-agent` monitors if the blockchain has any reorganizations that revert the transaction.
-   - If it was reverted, the RAV is resent to the blockchain. If it was not reverted, it gets marked as `final`.
+1. An Indexer closes an allocation.
+2. After the `recently-closed-allocation-buffer` period, `indexer-tap-agent` takes all pending receipts for that allocation and requests aggregation into a final RAV, marking it as `last`.
+3. `indexer-agent` takes all the last RAVs and sends redeem requests to the blockchain, updating the `redeem_at` value.
+4. During the `finality-time` period, `indexer-agent` monitors for blockchain reorganizations:
+   - If the transaction was reverted, the RAV is resent to the blockchain.
+   - If not reverted, it gets marked as `final`.
 
 ## Blockchain Addresses
 
@@ -58,132 +54,259 @@ As long as you run `tap-agent` and `indexer-agent`, everything will be executed
 | Signers    | `0xfF4B7A5EfD00Ff2EC3518D4F250A27e4c29A2211`  | `0xFb142dE83E261e43a81e9ACEADd1c66A0DB121FE`  |
 | Aggregator | `https://tap-aggregator.network.thegraph.com` | `https://tap-aggregator.testnet.thegraph.com` |
 
-### Prerequisites
+## Prerequisites
 
-In addition to the typical requirements to run an indexer, you’ll need a `tap-escrow-subgraph` endpoint to query updates. You can use The Graph Network to query or host yourself on your `graph-node`.
+In addition to typical indexer requirements, you'll need a `tap-escrow-subgraph` endpoint to query escrow information. You can use The Graph Network to query or self-host on your `graph-node`:
 
 - [Graph TAP Arbitrum Sepolia Subgraph (for The Graph testnet)](https://thegraph.com/explorer/subgraphs/7ubx365MiqBH5iUz6XWXWT8PTof5BVAyEzdb8m17RvbD)
 - [Graph TAP Arbitrum One Subgraph (for The Graph mainnet)](https://thegraph.com/explorer/subgraphs/4sukbNVTzGELnhdnpyPqsf1QqtzNHEYKKmJkgaT8z6M1)
 
-> Note: `indexer-agent` does not currently handle the indexing of this Subgraph like it does for the network Subgraph deployment. As a result, you have to index it manually.
+> Note: `indexer-agent` does not currently handle the indexing of this Subgraph like it does for the Network Subgraph deployment. You must index it manually.
 
 ## Migration Guide
 
-### Software versions
+### Software Requirements
 
-The required software version can be found [here](https://github.com/graphprotocol/indexer/blob/main/docs/networks/arbitrum-one.md#latest-releases).
+#### Required Versions
 
-### Steps
+- **indexer-agent**: [Latest version supporting TAP](https://github.com/graphprotocol/indexer/releases)
+- **indexer-service-rs**: [Latest release](https://github.com/graphprotocol/indexer-rs/releases?q=indexer-service-rs)
+- **indexer-tap-agent**: [Latest release](https://github.com/graphprotocol/indexer-rs/releases?q=indexer-tap-agent)
 
-1. **Indexer Agent**
-   - Follow the [same process](https://github.com/graphprotocol/indexer/pkgs/container/indexer-agent#graph-protocol-indexer-components).
-   - Give the new argument `--tap-subgraph-endpoint` to activate the new GraphTally codepaths and enable redeeming of RAVs.
+#### Docker Images
 
-2. **Indexer Service**
-   - Fully replace your current configuration with the [new Indexer Service rs](https://github.com/graphprotocol/indexer-rs). It's recommend that you use the [container image](https://github.com/orgs/graphprotocol/packages?repo_name=indexer-rs).
-   - Like the older version, you can scale Indexer Service horizontally easily. It is still stateless.
+```bash
+# Indexer Service
+docker pull ghcr.io/graphprotocol/indexer-service-rs:latest
 
-3. **TAP Agent**
-   - Run _one_ single instance of [TAP Agent](https://github.com/graphprotocol/indexer-rs) at all times. It's recommend that you use the [container image](https://github.com/orgs/graphprotocol/packages?repo_name=indexer-rs).
+# TAP Agent
+docker pull ghcr.io/graphprotocol/indexer-tap-agent:latest
+```
 
-4. **Configure Indexer Service and TAP Agent**
+### Migration Steps
 
-   Configuration is a TOML file shared between `indexer-service` and `tap-agent`, supplied with the argument `--config /path/to/config.toml`.
+#### 1. Update Indexer Agent
 
-   Check out the full [configuration](https://github.com/graphprotocol/indexer-rs/blob/main/config/maximal-config-example.toml) and the [default values](https://github.com/graphprotocol/indexer-rs/blob/main/config/default_values.toml)
+- Continue using your existing `indexer-agent`
+- Add the `--tap-subgraph-endpoint` argument to enable TAP functionality and RAV redemption
+- Example: `--tap-subgraph-endpoint https://api.thegraph.com/subgraphs/name/graphprotocol/tap-mainnet`
 
-For minimal configuration, use the following template:
+#### 2. Replace Indexer Service
 
-```bash
-# You will have to change *all* the values below to match your setup.
-#
-# Some of the config below are global graph network values, which you can find here:
-# <https://github.com/graphprotocol/indexer/tree/main/docs/networks>
-#
-# Pro tip: if you need to load some values from the environment into this config, you
-# can overwrite with environment variables. For example, the following can be replaced
-# by [PREFIX]_DATABASE_POSTGRESURL, where PREFIX can be `INDEXER_SERVICE` or `TAP_AGENT`:
-#
-# [database]
-# postgres_url = "postgresql://indexer:${POSTGRES_PASSWORD}@postgres:5432/indexer_components_0"
+- Fully replace your TypeScript indexer-service with `indexer-service-rs`
+- The new service is stateless and can be scaled horizontally
+- Use the same database as your existing setup
+
+#### 3. Deploy TAP Agent
+
+- Run exactly **one instance** of `indexer-tap-agent`
+- This component manages receipt aggregation and RAV creation
+- It must have access to the same database as other indexer components
+
+#### 4. Configuration
+
+Both `indexer-service-rs` and `indexer-tap-agent` share a TOML configuration file. Create a configuration file and pass it with `--config /path/to/config.toml`.
+
+##### Minimal Configuration Example
+
+```toml
+# Essential configuration for indexer-rs components
+# All values below must be updated to match your setup
 
 [indexer]
 indexer_address = "0x1111111111111111111111111111111111111111"
-operator_mnemonic = "celery smart tip orange scare van steel radio dragon joy alarm crane"
+operator_mnemonic = "your twelve word mnemonic phrase here ..."
 
 [database]
-# The URL of the Postgres database used for the indexer components. The same database
-# that is used by the `indexer-agent`. It is expected that `indexer-agent` will create
-# the necessary tables.
-postgres_url = "postgres://postgres@postgres:5432/postgres"
+# Use the same database as your indexer-agent
+postgres_url = "postgresql://user:password@localhost:5432/indexer_db"
 
 [graph_node]
-# URL to your graph-node's query endpoint
-query_url = "<http://graph-node:8000>"
-# URL to your graph-node's status endpoint
-status_url = "<http://graph-node:8000/graphql>"
+# Your graph-node endpoints
+query_url = "http://graph-node:8000"
+status_url = "http://graph-node:8000/graphql"
 
 [subgraphs.network]
-# Query URL for the Graph Network Subgraph.
-query_url = "<http://example.com/network-subgraph>"
-# Optional, deployment to look for in the local `graph-node`, if locally indexed.
-# Locally indexing the Subgraph is recommended.
-# NOTE: Use `query_url` or `deployment_id` only
-deployment_id = "Qmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+# The Graph Network Subgraph (use query_url OR deployment_id, not both)
+query_url = "https://api.thegraph.com/subgraphs/name/graphprotocol/graph-network-arbitrum"
+# deployment_id = "QmUVskWrz1ZiQZ76AtyhcfFDEH1ELnRpoyEhVL8p6NFTbR"
 
 [subgraphs.escrow]
-# Query URL for the Escrow Subgraph.
-query_url = "<http://example.com/network-subgraph>"
-# Optional, deployment to look for in the local `graph-node`, if locally indexed.
-# Locally indexing the Subgraph is recommended.
-# NOTE: Use `query_url` or `deployment_id` only
-deployment_id = "Qmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+# TAP Escrow Subgraph (use query_url OR deployment_id, not both)
+query_url = "https://api.thegraph.com/subgraphs/name/graphprotocol/tap-arbitrum-one"
+# deployment_id = "QmPcbDomKwfsmVBNbvncU8gdWTvUiH9zVFYxDMc5ohpjvU"
 
 [blockchain]
-# The chain ID of the network that the graph network is running on
-chain_id = 1337
-# Contract address of TAP's receipt aggregate voucher (RAV) verifier.
-receipts_verifier_address = "0x2222222222222222222222222222222222222222"
-
-########################################
-# Specific configurations to tap-agent #
-########################################
+# For Arbitrum mainnet
+chain_id = 42161
+receipts_verifier_address = "0x33f9E93266ce0E108fc85DdE2f71dab555A0F05a"
+
+# For Arbitrum Sepolia testnet, use:
+# chain_id = 421614
+# receipts_verifier_address = "0xfC24cE7a4428A6B89B52645243662A02BA734ECF"
+
 [tap]
-# This is the amount of fees you are willing to risk at any given time. For ex.
-# if the sender stops supplying RAVs for long enough and the fees exceed this
-# amount, the indexer-service will stop accepting queries from the sender
-# until the fees are aggregated.
-# NOTE: Use strings for decimal values to prevent rounding errors
-# e.g:
-# max_amount_willing_to_lose_grt = "0.1"
-max_amount_willing_to_lose_grt = 20
+# Maximum GRT amount to risk before requiring aggregation
+# Use string format to prevent rounding errors
+max_amount_willing_to_lose_grt = "0.1"
 
 [tap.sender_aggregator_endpoints]
-# Key-Value of all senders and their aggregator endpoints
-# This one below is for the E&N testnet gateway for example.
-0xDDE4cfFd3D9052A9cb618fC05a1Cd02be1f2F467 = "https://tap-aggregator.network.thegraph.com"
+# Gateway endpoints for RAV aggregation
+# Mainnet
+"0xDDE4cfFd3D9052A9cb618fC05a1Cd02be1f2F467" = "https://tap-aggregator.network.thegraph.com"
+
+# For testnet, use:
+# "0xC3dDf37906724732FfD748057FEBe23379b0710D" = "https://tap-aggregator.testnet.thegraph.com"
 ```
 
-Notes:
+##### Environment Variable Overrides
+
+You can override any configuration value using environment variables:
 
-- Values for `tap.sender_aggregator_endpoints` can be found in the [gateway section](/indexing/tap/#gateway).
-- Values for `blockchain.receipts_verifier_address` must be used accordingly to the [Blockchain addresses section](/indexing/tap/#contracts) using the appropriate chain id.
+```bash
+# Pattern: [PREFIX]__[SECTION]__[KEY]
+# PREFIX can be INDEXER_SERVICE or TAP_AGENT
+
+# Examples:
+export INDEXER_SERVICE__DATABASE__POSTGRES_URL="postgresql://..."
+export TAP_AGENT__TAP__MAX_AMOUNT_WILLING_TO_LOSE_GRT="0.5"
+export INDEXER_SERVICE__BLOCKCHAIN__RECEIPTS_VERIFIER_ADDRESS="0x..."
+```
 
-**Log Level**
+##### Advanced Configuration
 
-- You can set the log level by using the `RUST_LOG` environment variable.
-- It’s recommended that you set it to `RUST_LOG=indexer_tap_agent=debug,info`.
+For all configuration options, see:
+
+- [Full configuration example](https://github.com/graphprotocol/indexer-rs/blob/main/crates/config/maximal-config-example.toml)
+- [Default values](https://github.com/graphprotocol/indexer-rs/blob/main/crates/config/default_values.toml)
+
+### Logging
+
+Set the log level using the `RUST_LOG` environment variable:
+
+```bash
+# Recommended for production
+export RUST_LOG=indexer_service=info,indexer_tap_agent=info
+
+# For debugging
+export RUST_LOG=indexer_service=debug,indexer_tap_agent=debug
+
+# TAP-specific debugging
+export RUST_LOG=indexer_tap_agent=debug,info
+```
 
 ## Monitoring
 
 ### Metrics
 
-All components expose the port 7300 to be queried by prometheus.
+All components expose Prometheus metrics on port 7300:
+
+- `http://indexer-service:7300/metrics`
+- `http://tap-agent:7300/metrics`
+
+Key metrics to monitor:
+
+- **Receipt Processing**: Track receipt validation, aggregation rates, and failures
+- **RAV Creation**: Monitor RAV request success/failure rates
+- **Unaggregated Fees**: Ensure fees stay below `max_amount_willing_to_lose_grt`
+- **Sender Balances**: Track escrow account balances and obligations
 
 ### Grafana Dashboard
 
-You can download [Grafana Dashboard](https://github.com/graphprotocol/indexer-rs/blob/main/docs/dashboard.json) and import.
+Import the [official Grafana dashboard](https://github.com/graphprotocol/indexer-rs/blob/main/docs/dashboard.json) for comprehensive monitoring of:
+
+- TAP receipt flow and aggregation status
+- RAV creation and redemption lifecycle
+- System performance and error rates
+- Database query performance
+
+### Troubleshooting
+
+Common issues and solutions:
+
+1. **RAV requests failing**:
+   - Check aggregator endpoint connectivity
+   - Verify sender configuration in `tap.sender_aggregator_endpoints`
+   - Review debug logs for specific error messages
+
+2. **Receipts not aggregating**:
+   - Ensure `tap-agent` is running (only one instance)
+   - Check database connectivity
+   - Verify `max_amount_willing_to_lose_grt` is not too high
+
+3. **High unaggregated fees**:
+   - Lower `max_amount_willing_to_lose_grt` to trigger more frequent aggregation
+   - Check if specific senders are having aggregation issues
+   - Monitor the Grafana dashboard for aggregation patterns
+
+## Deployment Options
+
+### Docker Compose
+
+Example compose configuration for both services:
+
+```yaml
+version: '3.8'
+
+services:
+  indexer-service:
+    image: ghcr.io/graphprotocol/indexer-service-rs:latest
+    ports:
+      - '7600:7600' # Service port
+      - '7300:7300' # Metrics port
+    volumes:
+      - ./config.toml:/config.toml
+    command: ['--config', '/config.toml']
+    environment:
+      - RUST_LOG=indexer_service=info
+    restart: unless-stopped
+
+  tap-agent:
+    image: ghcr.io/graphprotocol/indexer-tap-agent:latest
+    ports:
+      - '7301:7300' # Metrics port (different host port)
+    volumes:
+      - ./config.toml:/config.toml
+    command: ['--config', '/config.toml']
+    environment:
+      - RUST_LOG=indexer_tap_agent=info
+    restart: unless-stopped
+```
+
+### Kubernetes
+
+For Kubernetes deployments, see the [Graph Launchpad charts](https://github.com/graphops/launchpad-charts/tree/main/charts/graph-network-indexer) which include:
+
+- Helm charts for both services
+- ConfigMap templates for configuration
+- Service and ingress definitions
+- Prometheus ServiceMonitor resources
+
+## Best Practices
+
+1. **Database Performance**:
+   - Ensure your PostgreSQL instance has adequate resources
+   - Monitor query performance through metrics
+   - Regular maintenance of receipt tables
+
+2. **High Availability**:
+   - Run multiple `indexer-service-rs` instances behind a load balancer
+   - Keep `tap-agent` as a single instance with proper monitoring
+   - Use database connection pooling
+
+3. **Security**:
+   - Store operator mnemonic securely (use environment variables)
+   - Restrict database access to indexer components only
+   - Monitor for unusual receipt patterns
+
+4. **Capacity Planning**:
+   - Monitor receipt growth rate
+   - Plan database storage accordingly
+   - Set appropriate `max_amount_willing_to_lose_grt` based on query volume
 
-### Launchpad
+## Additional Resources
 
-Currently, there is a WIP version of `indexer-rs` and `tap-agent` that can be found [here](https://github.com/graphops/launchpad-charts/tree/main/charts/graph-network-indexer)
+- [indexer-rs Repository](https://github.com/graphprotocol/indexer-rs)
+- [TAP Core Documentation](https://docs.rs/tap_core/latest/tap_core/)
+- [The Graph Discord](https://thegraph.com/discord) - Get help in the #indexers channel
+- [Support](https://github.com/graphprotocol/indexer-rs/issues) - Report issues or get help

From df128c617b2c50dadbcd2084b40d3988333b7432 Mon Sep 17 00:00:00 2001
From: Andrew <36178664+UrsaPolarisRecords@users.noreply.github.com>
Date: Wed, 9 Jul 2025 14:10:15 -0700
Subject: [PATCH 17/36] Update utils.ts (#1000)

* Update utils.ts

REVIEW REQUIRED.
Removed hard-coded Token API networks, added what is hopefully an automatic fetch for Token API networks.

PLEASE REVIEW THIS PR. It was implemented with advice from Claude. Not sure where these parameters are used, so I am unable to check if it works. Happy to let docs team make this update instead, but on the off chance this is correct feel free to merge.

* Update `@pinax/graph-networks-registry`

* Remove useless function

---------

Co-authored-by: benface <benoit.rouleau@icloud.com>
---
 pnpm-lock.yaml                         |  9 +++++++--
 website/package.json                   |  2 +-
 website/src/supportedNetworks/utils.ts | 14 +-------------
 3 files changed, 9 insertions(+), 16 deletions(-)

diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index ad41d31ff629..ef4e59e9d41e 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -118,8 +118,8 @@ importers:
         specifier: ^7.3.0
         version: 7.3.0
       '@pinax/graph-networks-registry':
-        specifier: ^0.6.7
-        version: 0.6.7
+        specifier: ^0.7.1
+        version: 0.7.1
       '@react-hookz/web':
         specifier: ^25.1.1
         version: 25.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -1748,6 +1748,9 @@ packages:
   '@pinax/graph-networks-registry@0.6.7':
     resolution: {integrity: sha512-xogeCEZ50XRMxpBwE3TZjJ8RCO8Guv39gDRrrKtlpDEDEMLm0MzD3A0SQObgj7aF7qTZNRTWzsuvQdxgzw25wQ==}
 
+  '@pinax/graph-networks-registry@0.7.1':
+    resolution: {integrity: sha512-Gn2kXRiEd5COAaMY/aDCRO0V+zfb1uQKCu5HFPoWka+EsZW27AlTINA7JctYYYEMuCbjMia5FBOzskjgEvj6LA==}
+
   '@pkgjs/parseargs@0.11.0':
     resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
     engines: {node: '>=14'}
@@ -9717,6 +9720,8 @@ snapshots:
 
   '@pinax/graph-networks-registry@0.6.7': {}
 
+  '@pinax/graph-networks-registry@0.7.1': {}
+
   '@pkgjs/parseargs@0.11.0':
     optional: true
 
diff --git a/website/package.json b/website/package.json
index 5662d8921c83..de1b54cabe11 100644
--- a/website/package.json
+++ b/website/package.json
@@ -23,7 +23,7 @@
     "@edgeandnode/go": "^10.2.3",
     "@emotion/react": "^11.14.0",
     "@graphprotocol/contracts": "^7.3.0",
-    "@pinax/graph-networks-registry": "^0.6.7",
+    "@pinax/graph-networks-registry": "^0.7.1",
     "@react-hookz/web": "^25.1.1",
     "@readme/httpsnippet": "^11.0.0",
     "@readme/openapi-parser": "^4.1.0",
diff --git a/website/src/supportedNetworks/utils.ts b/website/src/supportedNetworks/utils.ts
index 5b64b3b18354..3f40a5d30b2d 100644
--- a/website/src/supportedNetworks/utils.ts
+++ b/website/src/supportedNetworks/utils.ts
@@ -25,18 +25,6 @@ export const MONO_ICON_NETWORKS = [
   'zksync-era-sepolia',
 ]
 
-// Networks with Token API support (TODO: remove once the registry has this information)
-export const TOKEN_API_NETWORKS = [
-  'mainnet',
-  'base',
-  'bsc',
-  'arbitrum-one',
-  'matic',
-  'optimism',
-  'unichain',
-  'avalanche',
-]
-
 export const getIconVariant = (networkId: string): 'mono' | 'branded' => {
   return MONO_ICON_NETWORKS.includes(networkId) ? 'mono' : 'branded'
 }
@@ -69,7 +57,7 @@ export async function getSupportedNetworks() {
       const subgraphs = Boolean(network.services.subgraphs?.length)
       const substreams = Boolean(network.services.substreams?.length)
       const firehose = Boolean(network.services.firehose?.length)
-      const tokenApi = TOKEN_API_NETWORKS.includes(network.id)
+      const tokenApi = Boolean(network.services.tokenApi?.length)
       if (!subgraphs && !substreams && !firehose && !tokenApi) {
         return []
       }

From 0d0a7ee8a80d98f44e4466e9bb11f183b0a4540d Mon Sep 17 00:00:00 2001
From: Idalith <126833353+idalithb@users.noreply.github.com>
Date: Wed, 9 Jul 2025 16:19:57 -0700
Subject: [PATCH 18/36] Updating Quick-Start  (#1004)

Adding two paths
---
 .../src/pages/en/subgraphs/quick-start.mdx    | 100 ++++++++++++------
 1 file changed, 70 insertions(+), 30 deletions(-)

diff --git a/website/src/pages/en/subgraphs/quick-start.mdx b/website/src/pages/en/subgraphs/quick-start.mdx
index 3a79eb078acf..6d1edc9e0927 100644
--- a/website/src/pages/en/subgraphs/quick-start.mdx
+++ b/website/src/pages/en/subgraphs/quick-start.mdx
@@ -8,7 +8,7 @@ By the end, you'll have:
 
 - Initialized a Subgraph from a smart contract
 - Deployed it to Subgraph Studio for testing
-- Published to The Graph Network for decentralized indexing
+- Published to The Graph Network for decentralized indexing using Studio or CLI
 
 ## Prerequisites
 
@@ -51,7 +51,7 @@ graph --version
 
 > You can find commands for your specific Subgraph in [Subgraph Studio](https://thegraph.com/studio/).
 
-The following command initializes your Subgraph from an existing contract and indexes events:
+Initialize your Subgraph from an existing contract:
 
 ```sh
 graph init
@@ -63,7 +63,7 @@ When you initialize your Subgraph, the CLI will ask you for the following inform
 - **Subgraph slug**: Create a name for your Subgraph. Your Subgraph slug is an identifier for your Subgraph.
 - **Directory**: Choose a directory to create your Subgraph in.
 - **Ethereum network** (optional): You may need to specify which EVM-compatible network your Subgraph will be indexing data from.
-- **Contract address**: Locate the smart contract address you’d like to query data from.
+- **Contract address**: Locate the smart contract address you'd like to query data from.
 - **ABI**: If the ABI is not auto-populated, you will need to input it manually as a JSON file.
 - **Start Block**: You should input the start block where the contract was deployed to optimize Subgraph indexing of blockchain data.
 - **Contract Name**: Input the name of your contract.
@@ -76,38 +76,50 @@ See the following screenshot for an example of what to expect when initializing
 
 ### 4. Edit your Subgraph
 
-When making changes to the Subgraph, you will mainly work with three files:
+When making changes to the Subgraph, you will primarily work with three files:
 
-- Manifest (`subgraph.yaml`) - defines what data sources your Subgraph will index.
-- Schema (`schema.graphql`) - defines what data you wish to retrieve from the Subgraph.
-- AssemblyScript Mappings (`mapping.ts`) - translates data from your data sources to the entities defined in the schema.
+- Manifest (`subgraph.yaml`): Defines what data sources your Subgraph will index.
+- Schema (`schema.graphql`): Defines what data you wish to retrieve from the Subgraph.
+- AssemblyScript Mappings (`mapping.ts`): Translates data from your data sources to the entities defined in the schema.
 
-For a detailed breakdown on how to write your Subgraph, check out [Creating a Subgraph](/developing/creating-a-subgraph/).
+For a detailed breakdown on how to write your Subgraph, refer to [Creating a Subgraph](/subgraphs/developing/creating/starting-your-subgraph/).
 
-### 5. Deploy your Subgraph
+## Path 1: Studio Approach
 
-When you **deploy** a Subgraph, you push it to [Subgraph Studio](https://thegraph.com/studio/), where you can test, stage and review it. A deployed Subgraph's indexing is performed by the [Upgrade Indexer](https://thegraph.com/blog/upgrade-indexer/), which is a single Indexer owned and operated by Edge & Node. A **deployed** Subgraph is free to use, rate-limited, not visible to the public, and meant to be used for development, staging, and testing purposes.
+### 5. Build your Subgraph
+
+Run the following:
+
+```sh
+graph codegen && graph build
+```
 
-Once your Subgraph is written, run the following commands:
+### 6. Deploy your Subgraph to Subgraph Studio
 
-    ```sh
-    graph codegen && graph build
-    ```
+When you **deploy** a Subgraph, you push it to [Subgraph Studio](https://thegraph.com/studio/), where you can test, stage and review it. A deployed Subgraph's indexing is performed by the [Upgrade Indexer](https://thegraph.com/blog/upgrade-indexer/), which is a single Indexer owned and operated by Edge & Node. A **deployed** Subgraph is free to use, rate-limited, not visible to the public, and meant to be used for development, staging, and testing purposes.
 
-Authenticate and deploy your Subgraph. The deploy key can be found on the Subgraph's page in Subgraph Studio.
+> [!IMPORTANT] You do not need to use Subgraph Studio to publish your Subgraph to The Graph Network. Studio is only required for testing and staging your Subgraph prior to publishing.
+
+1. Get your deploy key from the Subgraph page in Studio
 
 ![Deploy key](/img/subgraph-studio-deploy-key.jpg)
 
-    ```sh
+2. Authenticate:
 
-    graph auth <DEPLOY_KEY>
+```sh
 
-    graph deploy <SUBGRAPH_SLUG>
-    ```
+graph auth <DEPLOY_KEY>
+```
 
-### 6. Review your Subgraph
+3. Deploy:
 
-If you’d like to test your Subgraph before publishing it, you can use [Subgraph Studio](https://thegraph.com/studio/) to do the following:
+```sh
+graph deploy <SUBGRAPH_SLUG>
+```
+
+### 7. Review in Studio
+
+Use the Studio to:
 
 - Run a sample query.
 - Analyze your Subgraph in the dashboard to check information.
@@ -115,7 +127,7 @@ If you’d like to test your Subgraph before publishing it, you can use [Subgrap
 
   ![Subgraph logs](/img/subgraph-logs-image.png)
 
-### 7. Publish your Subgraph to The Graph Network
+### 8. Publish to The Graph Network
 
 When your Subgraph is ready for a production environment, you can publish it to the decentralized network. Publishing is an onchain action that does the following:
 
@@ -123,20 +135,48 @@ When your Subgraph is ready for a production environment, you can publish it to
 - It removes rate limits and makes your Subgraph publicly searchable and queryable in [Graph Explorer](https://thegraph.com/explorer/).
 - It makes your Subgraph available for [Curators](/resources/roles/curating/) to add curation signal.
 
-To publish your Subgraph, click the Publish button in the dashboard and select your network.
+1. Click **Publish** in Studio
+2. Select network
+3. (Recommended) Add curation during the same transaction to save on gas costs: ![Subgraph publish](/img/studio-publish-modal.png)
 
 ![Publish a Subgraph on Subgraph Studio](/img/publish-sub-transfer.png)
 
-> It is recommended that you curate your own Subgraph with at least 3,000 GRT to incentivize indexing.
+> Curation with 3,000+ GRT is recommended to incentivize indexing.
+
+## Path 2: CLI Approach
+
+1. Open the `graph-cli`.
+2. Run the following commands to build and publish your Subgraph: `graph codegen && graph build` then `graph publish`.
+3. A browser window will prompt you to connect your wallet, add metadata, and publish your Subgraph to the network of your choice.
+
+![cli-ui](/img/cli-ui.png)
 
-To save on gas costs, you can curate your Subgraph in the same transaction you publish it by selecting this option:
+### Custom Options
+
+You can customize the deployment by uploading to a specific IPFS node and using additional flags:
+
+```
+USAGE
+  $ graph publish [SUBGRAPH-MANIFEST] [-h] [--protocol-network arbitrum-one|arbitrum-sepolia --subgraph-id <value>] [-i <value>] [--ipfs-hash <value>] [--webapp-url
+    <value>]
+
+FLAGS
+  -h, --help                   Show CLI help.
+  -i, --ipfs=<value>           [default: https://ipfs.thegraph.com/api/v0] Upload build results to an IPFS node.
+  --ipfs-hash=<value>          IPFS hash of the subgraph manifest to deploy.
+  --protocol-network=<option>  [default: arbitrum-one] The network to use for the subgraph deployment.
+                               <options: arbitrum-one|arbitrum-sepolia>
+  --subgraph-id=<value>        Subgraph ID to publish to.
+  --webapp-url=<value>         [default: https://cli.thegraph.com/publish] URL of the web UI you want to use to deploy.
+
+```
 
-![Subgraph publish](/img/studio-publish-modal.png)
+> [!NOTE] Add GRT signal to your Subgraph to incentivize Indexers to query your Subgraph. Refer to [Adding Signal](developing/publishing/publishing-a-subgraph/#adding-signal-to-your-subgraph) for specifics.
 
-### 8. Query your Subgraph
+### Final Step: Query your Subgraph
 
-You now have access to 100,000 free queries per month with your Subgraph on The Graph Network!
+After publishing, access your Subgraph's Query URL from [Graph Explorer](https://thegraph.com/explorer/). You can query your Subgraph by sending GraphQL queries to its Query URL, which you can find by clicking the Query button.
 
-You can query your Subgraph by sending GraphQL queries to its Query URL, which you can find by clicking the Query button.
+You get access to 100,000 free queries/month with your Subgraph on The Graph Network.
 
-For more information about querying data from your Subgraph, read [Querying The Graph](/subgraphs/querying/introduction/).
+Refer to [Querying The Graph](/subgraphs/querying/introduction/) to structure GraphQL queries.

From 3842ab70324a8ec830c34f594a2df4f5016f1bc6 Mon Sep 17 00:00:00 2001
From: Andrew <36178664+UrsaPolarisRecords@users.noreply.github.com>
Date: Wed, 9 Jul 2025 18:08:02 -0700
Subject: [PATCH 19/36] Update introduction.mdx (#1005)

Added section about the server allowing LLMs to make SQL queries on the DB, which is a significant differentiator.
---
 website/src/pages/en/ai-suite/token-api-mcp/introduction.mdx | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/website/src/pages/en/ai-suite/token-api-mcp/introduction.mdx b/website/src/pages/en/ai-suite/token-api-mcp/introduction.mdx
index d35905196d22..b61ad0a1c485 100644
--- a/website/src/pages/en/ai-suite/token-api-mcp/introduction.mdx
+++ b/website/src/pages/en/ai-suite/token-api-mcp/introduction.mdx
@@ -5,7 +5,7 @@ sidebarTitle: 'Introduction'
 
 Token API MCP server is an open-source implementation of [Anthropic's Model Context Protocol](https://modelcontextprotocol.io/introduction).
 
-It makes on-chain token data, including metadata, balances, transfers, and holder statistics, accessible through a set of MCP tools. Any compatible client can use these tools to fetch and analyze token information through a standardized interface.
+This MCP server makes on-chain token data, including metadata, balances, transfers, and holder statistics, accessible through a set of MCP tools. Any compatible client can use these tools to fetch and analyze token information through a standardized interface. It connects to The Graph's hosted Token API database, enabling AI assistants to query real-time blockchain data using natural language requests that get translated into optimized SQL queries.
 
 The server itself does not host any language model. It simply converts MCP calls into data look-ups and returns structured results, letting the client's own LLM incorporate the results.
 

From 5e15fd4df7db960a7dd0c8c74d9698a24814a6ef Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Beno=C3=AEt=20Rouleau?= <benoit.rouleau@icloud.com>
Date: Thu, 10 Jul 2025 12:28:42 -0400
Subject: [PATCH 20/36] Update Token API (#989)

* Update dependencies + run `pnpm check:fix`

* Update Token API from staging + add `svm` section

* Update Token API (still from staging)

* Implementing PR Notes

* Revert Token API JSON URL to use staging + run `fetch-api-reference`

* Run `prebuild:ci`

* Update dependencies

* Run build

* Pull latest Token API JSON + use production going forward

* Finalize

---------

Co-authored-by: Idalith Bustos <idalith.bustos@gmail.com>
---
 package.json                                  |   10 +-
 packages/og-image/package.json                |    4 +-
 pnpm-lock.yaml                                | 1540 +++++++++--------
 website/package.json                          |   14 +-
 website/route-lockfile.txt                    |  706 ++++----
 website/src/openApi/index.ts                  |    1 +
 website/src/openApi/tokenApi.json             | 1371 ++++++++++++---
 .../src/pages/ar/ai-suite/_meta-titles.json   |    6 +
 website/src/pages/ar/ai-suite/_meta.js        |    8 +
 .../src/pages/ar/ai-suite/ai-introduction.mdx |   58 +
 .../ar/ai-suite/graph-assistant/_meta.js      |    6 +
 .../pages/ar/ai-suite/graph-assistant/faq.mdx |   26 +
 .../ai-suite/graph-assistant/how-to-guide.mdx |   56 +
 .../ai-suite/graph-assistant/introduction.mdx |   31 +
 .../ai-suite/graph-assistant/quick-start.mdx  |   44 +
 .../mcp => ai-suite/subgraph-mcp}/_meta.js    |    1 +
 .../ai-suite/subgraph-mcp}/claude.mdx         |   12 +-
 .../ai-suite/subgraph-mcp}/cline.mdx          |    2 +-
 .../ai-suite/subgraph-mcp}/cursor.mdx         |    2 +-
 .../ar/ai-suite/subgraph-mcp/introduction.mdx |   22 +
 .../mcp => ai-suite/token-api-mcp}/_meta.js   |    1 +
 .../mcp => ai-suite/token-api-mcp}/claude.mdx |    0
 .../mcp => ai-suite/token-api-mcp}/cline.mdx  |    0
 .../mcp => ai-suite/token-api-mcp}/cursor.mdx |    0
 .../ai-suite/token-api-mcp/introduction.mdx   |   23 +
 website/src/pages/ar/resources/_meta.js       |    1 -
 website/src/pages/ar/resources/claude-mcp.mdx |  122 --
 website/src/pages/ar/subgraphs/_meta.js       |    1 -
 website/src/pages/ar/substreams/_meta.js      |    1 -
 .../src/pages/ar/token-api/_meta-titles.json  |    1 +
 website/src/pages/ar/token-api/_meta.js       |    2 +-
 website/src/pages/ar/token-api/svm/_meta.js   |    5 +
 .../ar/token-api/svm/get-balances-svm.mdx     |    9 +
 .../pages/ar/token-api/svm/get-swaps-svm.mdx  |    9 +
 .../ar/token-api/svm/get-transfers-svm.mdx    |    9 +
 .../src/pages/cs/ai-suite/_meta-titles.json   |    6 +
 website/src/pages/cs/ai-suite/_meta.js        |    8 +
 .../src/pages/cs/ai-suite/ai-introduction.mdx |   58 +
 .../cs/ai-suite/graph-assistant/_meta.js      |    6 +
 .../pages/cs/ai-suite/graph-assistant/faq.mdx |   26 +
 .../ai-suite/graph-assistant/how-to-guide.mdx |   56 +
 .../ai-suite/graph-assistant/introduction.mdx |   31 +
 .../ai-suite/graph-assistant/quick-start.mdx  |   44 +
 .../mcp => ai-suite/subgraph-mcp}/_meta.js    |    1 +
 .../ai-suite/subgraph-mcp}/claude.mdx         |   12 +-
 .../ai-suite/subgraph-mcp}/cline.mdx          |    2 +-
 .../ai-suite/subgraph-mcp}/cursor.mdx         |    2 +-
 .../cs/ai-suite/subgraph-mcp/introduction.mdx |   22 +
 .../mcp => ai-suite/token-api-mcp}/_meta.js   |    1 +
 .../ai-suite/token-api-mcp}/claude.mdx        |    0
 .../ai-suite/token-api-mcp}/cline.mdx         |    0
 .../ai-suite/token-api-mcp}/cursor.mdx        |    0
 .../ai-suite/token-api-mcp/introduction.mdx   |   23 +
 website/src/pages/cs/resources/_meta.js       |    1 -
 website/src/pages/cs/resources/claude-mcp.mdx |  122 --
 website/src/pages/cs/subgraphs/_meta.js       |    1 -
 website/src/pages/cs/substreams/_meta.js      |    1 -
 .../src/pages/cs/token-api/_meta-titles.json  |    1 +
 website/src/pages/cs/token-api/_meta.js       |    2 +-
 website/src/pages/cs/token-api/svm/_meta.js   |    5 +
 .../cs/token-api/svm/get-balances-svm.mdx     |    9 +
 .../pages/cs/token-api/svm/get-swaps-svm.mdx  |    9 +
 .../cs/token-api/svm/get-transfers-svm.mdx    |    9 +
 .../src/pages/de/ai-suite/_meta-titles.json   |    6 +
 website/src/pages/de/ai-suite/_meta.js        |    8 +
 .../src/pages/de/ai-suite/ai-introduction.mdx |   58 +
 .../de/ai-suite/graph-assistant/_meta.js      |    6 +
 .../pages/de/ai-suite/graph-assistant/faq.mdx |   26 +
 .../ai-suite/graph-assistant/how-to-guide.mdx |   56 +
 .../ai-suite/graph-assistant/introduction.mdx |   31 +
 .../ai-suite/graph-assistant/quick-start.mdx  |   44 +
 .../pages/de/ai-suite/subgraph-mcp/_meta.js   |    6 +
 .../ai-suite/subgraph-mcp}/claude.mdx         |   12 +-
 .../ai-suite/subgraph-mcp}/cline.mdx          |    2 +-
 .../ai-suite/subgraph-mcp}/cursor.mdx         |    2 +-
 .../de/ai-suite/subgraph-mcp/introduction.mdx |   22 +
 .../pages/de/ai-suite/token-api-mcp/_meta.js  |    6 +
 .../ai-suite/token-api-mcp}/claude.mdx        |    0
 .../ai-suite/token-api-mcp}/cline.mdx         |    0
 .../ai-suite/token-api-mcp}/cursor.mdx        |    0
 .../ai-suite/token-api-mcp/introduction.mdx   |   23 +
 website/src/pages/de/resources/_meta.js       |    1 -
 website/src/pages/de/resources/claude-mcp.mdx |  122 --
 website/src/pages/de/subgraphs/_meta.js       |    1 -
 website/src/pages/de/subgraphs/mcp/_meta.js   |    5 -
 website/src/pages/de/substreams/_meta.js      |    1 -
 .../src/pages/de/token-api/_meta-titles.json  |    1 +
 website/src/pages/de/token-api/_meta.js       |    2 +-
 website/src/pages/de/token-api/mcp/_meta.js   |    5 -
 website/src/pages/de/token-api/mcp/claude.mdx |   58 -
 website/src/pages/de/token-api/mcp/cline.mdx  |   52 -
 website/src/pages/de/token-api/mcp/cursor.mdx |   50 -
 website/src/pages/de/token-api/svm/_meta.js   |    5 +
 .../de/token-api/svm/get-balances-svm.mdx     |    9 +
 .../pages/de/token-api/svm/get-swaps-svm.mdx  |    9 +
 .../de/token-api/svm/get-transfers-svm.mdx    |    9 +
 .../src/pages/en/token-api/_meta-titles.json  |    1 +
 website/src/pages/en/token-api/_meta.js       |    1 +
 website/src/pages/en/token-api/svm/_meta.js   |    5 +
 .../en/token-api/svm/get-balances-svm.mdx     |    9 +
 .../pages/en/token-api/svm/get-swaps-svm.mdx  |    9 +
 .../en/token-api/svm/get-transfers-svm.mdx    |    9 +
 .../src/pages/es/ai-suite/_meta-titles.json   |    6 +
 website/src/pages/es/ai-suite/_meta.js        |    8 +
 .../src/pages/es/ai-suite/ai-introduction.mdx |   58 +
 .../es/ai-suite/graph-assistant/_meta.js      |    6 +
 .../pages/es/ai-suite/graph-assistant/faq.mdx |   26 +
 .../ai-suite/graph-assistant/how-to-guide.mdx |   56 +
 .../ai-suite/graph-assistant/introduction.mdx |   31 +
 .../ai-suite/graph-assistant/quick-start.mdx  |   44 +
 .../pages/es/ai-suite/subgraph-mcp/_meta.js   |    6 +
 .../mcp => ai-suite/subgraph-mcp}/claude.mdx  |   12 +-
 .../ai-suite/subgraph-mcp}/cline.mdx          |    2 +-
 .../mcp => ai-suite/subgraph-mcp}/cursor.mdx  |    2 +-
 .../es/ai-suite/subgraph-mcp/introduction.mdx |   22 +
 .../pages/es/ai-suite/token-api-mcp/_meta.js  |    6 +
 .../ai-suite/token-api-mcp}/claude.mdx        |    0
 .../ai-suite/token-api-mcp}/cline.mdx         |    0
 .../ai-suite/token-api-mcp}/cursor.mdx        |    0
 .../ai-suite/token-api-mcp/introduction.mdx   |   23 +
 website/src/pages/es/resources/_meta.js       |    1 -
 website/src/pages/es/resources/claude-mcp.mdx |  122 --
 website/src/pages/es/subgraphs/_meta.js       |    1 -
 website/src/pages/es/subgraphs/mcp/_meta.js   |    5 -
 website/src/pages/es/substreams/_meta.js      |    1 -
 .../src/pages/es/token-api/_meta-titles.json  |    1 +
 website/src/pages/es/token-api/_meta.js       |    2 +-
 website/src/pages/es/token-api/mcp/_meta.js   |    5 -
 website/src/pages/es/token-api/svm/_meta.js   |    5 +
 .../es/token-api/svm/get-balances-svm.mdx     |    9 +
 .../pages/es/token-api/svm/get-swaps-svm.mdx  |    9 +
 .../es/token-api/svm/get-transfers-svm.mdx    |    9 +
 .../src/pages/fr/ai-suite/_meta-titles.json   |    6 +
 website/src/pages/fr/ai-suite/_meta.js        |    8 +
 .../src/pages/fr/ai-suite/ai-introduction.mdx |   58 +
 .../fr/ai-suite/graph-assistant/_meta.js      |    6 +
 .../pages/fr/ai-suite/graph-assistant/faq.mdx |   26 +
 .../ai-suite/graph-assistant/how-to-guide.mdx |   56 +
 .../ai-suite/graph-assistant/introduction.mdx |   31 +
 .../ai-suite/graph-assistant/quick-start.mdx  |   44 +
 .../pages/fr/ai-suite/subgraph-mcp/_meta.js   |    6 +
 .../pages/fr/ai-suite/subgraph-mcp/claude.mdx |  169 ++
 .../pages/fr/ai-suite/subgraph-mcp/cline.mdx  |   99 ++
 .../pages/fr/ai-suite/subgraph-mcp/cursor.mdx |   94 +
 .../fr/ai-suite/subgraph-mcp/introduction.mdx |   22 +
 .../pages/fr/ai-suite/token-api-mcp/_meta.js  |    6 +
 .../ai-suite/token-api-mcp}/claude.mdx        |    0
 .../ai-suite/token-api-mcp}/cline.mdx         |    0
 .../ai-suite/token-api-mcp}/cursor.mdx        |    0
 .../ai-suite/token-api-mcp/introduction.mdx   |   23 +
 website/src/pages/fr/resources/_meta.js       |    1 -
 website/src/pages/fr/resources/claude-mcp.mdx |  122 --
 website/src/pages/fr/subgraphs/_meta.js       |    1 -
 website/src/pages/fr/subgraphs/mcp/_meta.js   |    5 -
 website/src/pages/fr/subgraphs/mcp/claude.mdx |  179 --
 website/src/pages/fr/subgraphs/mcp/cline.mdx  |   99 --
 website/src/pages/fr/subgraphs/mcp/cursor.mdx |   94 -
 website/src/pages/fr/substreams/_meta.js      |    1 -
 .../src/pages/fr/token-api/_meta-titles.json  |    1 +
 website/src/pages/fr/token-api/_meta.js       |    2 +-
 website/src/pages/fr/token-api/mcp/_meta.js   |    5 -
 website/src/pages/fr/token-api/mcp/claude.mdx |   58 -
 website/src/pages/fr/token-api/mcp/cline.mdx  |   52 -
 website/src/pages/fr/token-api/mcp/cursor.mdx |   50 -
 website/src/pages/fr/token-api/svm/_meta.js   |    5 +
 .../fr/token-api/svm/get-balances-svm.mdx     |    9 +
 .../pages/fr/token-api/svm/get-swaps-svm.mdx  |    9 +
 .../fr/token-api/svm/get-transfers-svm.mdx    |    9 +
 .../src/pages/hi/ai-suite/_meta-titles.json   |    6 +
 website/src/pages/hi/ai-suite/_meta.js        |    8 +
 .../src/pages/hi/ai-suite/ai-introduction.mdx |   58 +
 .../hi/ai-suite/graph-assistant/_meta.js      |    6 +
 .../pages/hi/ai-suite/graph-assistant/faq.mdx |   26 +
 .../ai-suite/graph-assistant/how-to-guide.mdx |   56 +
 .../ai-suite/graph-assistant/introduction.mdx |   31 +
 .../ai-suite/graph-assistant/quick-start.mdx  |   44 +
 .../pages/hi/ai-suite/subgraph-mcp/_meta.js   |    6 +
 .../pages/hi/ai-suite/subgraph-mcp/claude.mdx |  169 ++
 .../pages/hi/ai-suite/subgraph-mcp/cline.mdx  |   99 ++
 .../pages/hi/ai-suite/subgraph-mcp/cursor.mdx |   94 +
 .../hi/ai-suite/subgraph-mcp/introduction.mdx |   22 +
 .../pages/hi/ai-suite/token-api-mcp/_meta.js  |    6 +
 .../ai-suite/token-api-mcp}/claude.mdx        |    0
 .../ai-suite/token-api-mcp}/cline.mdx         |    0
 .../ai-suite/token-api-mcp}/cursor.mdx        |    0
 .../ai-suite/token-api-mcp/introduction.mdx   |   23 +
 website/src/pages/hi/resources/_meta.js       |    1 -
 website/src/pages/hi/resources/claude-mcp.mdx |  122 --
 website/src/pages/hi/subgraphs/_meta.js       |    1 -
 website/src/pages/hi/subgraphs/mcp/_meta.js   |    5 -
 website/src/pages/hi/subgraphs/mcp/claude.mdx |  179 --
 website/src/pages/hi/subgraphs/mcp/cline.mdx  |   99 --
 website/src/pages/hi/subgraphs/mcp/cursor.mdx |   94 -
 website/src/pages/hi/substreams/_meta.js      |    1 -
 .../src/pages/hi/token-api/_meta-titles.json  |    1 +
 website/src/pages/hi/token-api/_meta.js       |    2 +-
 website/src/pages/hi/token-api/mcp/_meta.js   |    5 -
 website/src/pages/hi/token-api/mcp/claude.mdx |   58 -
 website/src/pages/hi/token-api/mcp/cline.mdx  |   52 -
 website/src/pages/hi/token-api/mcp/cursor.mdx |   50 -
 website/src/pages/hi/token-api/svm/_meta.js   |    5 +
 .../hi/token-api/svm/get-balances-svm.mdx     |    9 +
 .../pages/hi/token-api/svm/get-swaps-svm.mdx  |    9 +
 .../hi/token-api/svm/get-transfers-svm.mdx    |    9 +
 .../src/pages/it/ai-suite/_meta-titles.json   |    6 +
 website/src/pages/it/ai-suite/_meta.js        |    8 +
 .../src/pages/it/ai-suite/ai-introduction.mdx |   58 +
 .../it/ai-suite/graph-assistant/_meta.js      |    6 +
 .../pages/it/ai-suite/graph-assistant/faq.mdx |   26 +
 .../ai-suite/graph-assistant/how-to-guide.mdx |   56 +
 .../ai-suite/graph-assistant/introduction.mdx |   31 +
 .../ai-suite/graph-assistant/quick-start.mdx  |   44 +
 .../pages/it/ai-suite/subgraph-mcp/_meta.js   |    6 +
 .../pages/it/ai-suite/subgraph-mcp/claude.mdx |  169 ++
 .../pages/it/ai-suite/subgraph-mcp/cline.mdx  |   99 ++
 .../pages/it/ai-suite/subgraph-mcp/cursor.mdx |   94 +
 .../it/ai-suite/subgraph-mcp/introduction.mdx |   22 +
 .../pages/it/ai-suite/token-api-mcp/_meta.js  |    6 +
 .../ai-suite/token-api-mcp}/claude.mdx        |    0
 .../ai-suite/token-api-mcp}/cline.mdx         |    0
 .../ai-suite/token-api-mcp}/cursor.mdx        |    0
 .../ai-suite/token-api-mcp/introduction.mdx   |   23 +
 website/src/pages/it/resources/_meta.js       |    1 -
 website/src/pages/it/resources/claude-mcp.mdx |  122 --
 website/src/pages/it/subgraphs/_meta.js       |    1 -
 website/src/pages/it/subgraphs/mcp/_meta.js   |    5 -
 website/src/pages/it/subgraphs/mcp/claude.mdx |  179 --
 website/src/pages/it/subgraphs/mcp/cline.mdx  |   99 --
 website/src/pages/it/subgraphs/mcp/cursor.mdx |   94 -
 website/src/pages/it/substreams/_meta.js      |    1 -
 .../src/pages/it/token-api/_meta-titles.json  |    1 +
 website/src/pages/it/token-api/_meta.js       |    2 +-
 website/src/pages/it/token-api/mcp/_meta.js   |    5 -
 website/src/pages/it/token-api/svm/_meta.js   |    5 +
 .../it/token-api/svm/get-balances-svm.mdx     |    9 +
 .../pages/it/token-api/svm/get-swaps-svm.mdx  |    9 +
 .../it/token-api/svm/get-transfers-svm.mdx    |    9 +
 .../src/pages/ja/ai-suite/_meta-titles.json   |    6 +
 website/src/pages/ja/ai-suite/_meta.js        |    8 +
 .../src/pages/ja/ai-suite/ai-introduction.mdx |   58 +
 .../ja/ai-suite/graph-assistant/_meta.js      |    6 +
 .../pages/ja/ai-suite/graph-assistant/faq.mdx |   26 +
 .../ai-suite/graph-assistant/how-to-guide.mdx |   56 +
 .../ai-suite/graph-assistant/introduction.mdx |   31 +
 .../ai-suite/graph-assistant/quick-start.mdx  |   44 +
 .../pages/ja/ai-suite/subgraph-mcp/_meta.js   |    6 +
 .../pages/ja/ai-suite/subgraph-mcp/claude.mdx |  169 ++
 .../pages/ja/ai-suite/subgraph-mcp/cline.mdx  |   99 ++
 .../pages/ja/ai-suite/subgraph-mcp/cursor.mdx |   94 +
 .../ja/ai-suite/subgraph-mcp/introduction.mdx |   22 +
 .../pages/ja/ai-suite/token-api-mcp/_meta.js  |    6 +
 .../ai-suite/token-api-mcp}/claude.mdx        |    0
 .../ai-suite/token-api-mcp}/cline.mdx         |    0
 .../ai-suite/token-api-mcp}/cursor.mdx        |    0
 .../ai-suite/token-api-mcp/introduction.mdx   |   23 +
 website/src/pages/ja/resources/_meta.js       |    1 -
 website/src/pages/ja/resources/claude-mcp.mdx |  122 --
 website/src/pages/ja/subgraphs/_meta.js       |    1 -
 website/src/pages/ja/subgraphs/mcp/_meta.js   |    5 -
 website/src/pages/ja/subgraphs/mcp/claude.mdx |  179 --
 website/src/pages/ja/subgraphs/mcp/cline.mdx  |   99 --
 website/src/pages/ja/subgraphs/mcp/cursor.mdx |   94 -
 website/src/pages/ja/substreams/_meta.js      |    1 -
 .../src/pages/ja/token-api/_meta-titles.json  |    1 +
 website/src/pages/ja/token-api/_meta.js       |    2 +-
 website/src/pages/ja/token-api/mcp/_meta.js   |    5 -
 website/src/pages/ja/token-api/mcp/claude.mdx |   58 -
 website/src/pages/ja/token-api/mcp/cline.mdx  |   52 -
 website/src/pages/ja/token-api/mcp/cursor.mdx |   50 -
 website/src/pages/ja/token-api/svm/_meta.js   |    5 +
 .../ja/token-api/svm/get-balances-svm.mdx     |    9 +
 .../pages/ja/token-api/svm/get-swaps-svm.mdx  |    9 +
 .../ja/token-api/svm/get-transfers-svm.mdx    |    9 +
 .../src/pages/ko/ai-suite/_meta-titles.json   |    6 +
 website/src/pages/ko/ai-suite/_meta.js        |    8 +
 .../src/pages/ko/ai-suite/ai-introduction.mdx |   58 +
 .../ko/ai-suite/graph-assistant/_meta.js      |    6 +
 .../pages/ko/ai-suite/graph-assistant/faq.mdx |   26 +
 .../ai-suite/graph-assistant/how-to-guide.mdx |   56 +
 .../ai-suite/graph-assistant/introduction.mdx |   31 +
 .../ai-suite/graph-assistant/quick-start.mdx  |   44 +
 .../pages/ko/ai-suite/subgraph-mcp/_meta.js   |    6 +
 .../pages/ko/ai-suite/subgraph-mcp/claude.mdx |  169 ++
 .../pages/ko/ai-suite/subgraph-mcp/cline.mdx  |   99 ++
 .../pages/ko/ai-suite/subgraph-mcp/cursor.mdx |   94 +
 .../ko/ai-suite/subgraph-mcp/introduction.mdx |   22 +
 .../pages/ko/ai-suite/token-api-mcp/_meta.js  |    6 +
 .../ai-suite/token-api-mcp}/claude.mdx        |    2 +-
 .../ai-suite/token-api-mcp}/cline.mdx         |    2 +-
 .../ai-suite/token-api-mcp}/cursor.mdx        |    2 +-
 .../ai-suite/token-api-mcp/introduction.mdx   |   23 +
 website/src/pages/ko/resources/_meta.js       |    1 -
 website/src/pages/ko/resources/claude-mcp.mdx |  122 --
 website/src/pages/ko/subgraphs/_meta.js       |    1 -
 website/src/pages/ko/subgraphs/mcp/_meta.js   |    5 -
 website/src/pages/ko/subgraphs/mcp/claude.mdx |  179 --
 website/src/pages/ko/subgraphs/mcp/cline.mdx  |   99 --
 website/src/pages/ko/subgraphs/mcp/cursor.mdx |   94 -
 website/src/pages/ko/substreams/_meta.js      |    1 -
 .../src/pages/ko/token-api/_meta-titles.json  |    1 +
 website/src/pages/ko/token-api/_meta.js       |    2 +-
 website/src/pages/ko/token-api/mcp/_meta.js   |    5 -
 website/src/pages/ko/token-api/svm/_meta.js   |    5 +
 .../ko/token-api/svm/get-balances-svm.mdx     |    9 +
 .../pages/ko/token-api/svm/get-swaps-svm.mdx  |    9 +
 .../ko/token-api/svm/get-transfers-svm.mdx    |    9 +
 .../src/pages/mr/ai-suite/_meta-titles.json   |    6 +
 website/src/pages/mr/ai-suite/_meta.js        |    8 +
 .../src/pages/mr/ai-suite/ai-introduction.mdx |   58 +
 .../mr/ai-suite/graph-assistant/_meta.js      |    6 +
 .../pages/mr/ai-suite/graph-assistant/faq.mdx |   26 +
 .../ai-suite/graph-assistant/how-to-guide.mdx |   56 +
 .../ai-suite/graph-assistant/introduction.mdx |   31 +
 .../ai-suite/graph-assistant/quick-start.mdx  |   44 +
 .../pages/mr/ai-suite/subgraph-mcp/_meta.js   |    6 +
 .../pages/mr/ai-suite/subgraph-mcp/claude.mdx |  169 ++
 .../pages/mr/ai-suite/subgraph-mcp/cline.mdx  |   99 ++
 .../pages/mr/ai-suite/subgraph-mcp/cursor.mdx |   94 +
 .../mr/ai-suite/subgraph-mcp/introduction.mdx |   22 +
 .../pages/mr/ai-suite/token-api-mcp/_meta.js  |    6 +
 .../ai-suite/token-api-mcp}/claude.mdx        |    2 +-
 .../ai-suite/token-api-mcp}/cline.mdx         |    2 +-
 .../ai-suite/token-api-mcp}/cursor.mdx        |    2 +-
 .../ai-suite/token-api-mcp/introduction.mdx   |   23 +
 website/src/pages/mr/resources/_meta.js       |    1 -
 website/src/pages/mr/resources/claude-mcp.mdx |  122 --
 website/src/pages/mr/subgraphs/_meta.js       |    1 -
 website/src/pages/mr/subgraphs/mcp/_meta.js   |    5 -
 website/src/pages/mr/subgraphs/mcp/claude.mdx |  179 --
 website/src/pages/mr/subgraphs/mcp/cline.mdx  |   99 --
 website/src/pages/mr/subgraphs/mcp/cursor.mdx |   94 -
 website/src/pages/mr/substreams/_meta.js      |    1 -
 .../src/pages/mr/token-api/_meta-titles.json  |    1 +
 website/src/pages/mr/token-api/_meta.js       |    2 +-
 website/src/pages/mr/token-api/mcp/_meta.js   |    5 -
 website/src/pages/mr/token-api/mcp/claude.mdx |   58 -
 website/src/pages/mr/token-api/mcp/cline.mdx  |   52 -
 website/src/pages/mr/token-api/mcp/cursor.mdx |   50 -
 website/src/pages/mr/token-api/svm/_meta.js   |    5 +
 .../mr/token-api/svm/get-balances-svm.mdx     |    9 +
 .../pages/mr/token-api/svm/get-swaps-svm.mdx  |    9 +
 .../mr/token-api/svm/get-transfers-svm.mdx    |    9 +
 .../src/pages/nl/ai-suite/_meta-titles.json   |    6 +
 website/src/pages/nl/ai-suite/_meta.js        |    8 +
 .../src/pages/nl/ai-suite/ai-introduction.mdx |   58 +
 .../nl/ai-suite/graph-assistant/_meta.js      |    6 +
 .../pages/nl/ai-suite/graph-assistant/faq.mdx |   26 +
 .../ai-suite/graph-assistant/how-to-guide.mdx |   56 +
 .../ai-suite/graph-assistant/introduction.mdx |   31 +
 .../ai-suite/graph-assistant/quick-start.mdx  |   44 +
 .../pages/nl/ai-suite/subgraph-mcp/_meta.js   |    6 +
 .../pages/nl/ai-suite/subgraph-mcp/claude.mdx |  169 ++
 .../pages/nl/ai-suite/subgraph-mcp/cline.mdx  |   99 ++
 .../pages/nl/ai-suite/subgraph-mcp/cursor.mdx |   94 +
 .../nl/ai-suite/subgraph-mcp/introduction.mdx |   22 +
 .../pages/nl/ai-suite/token-api-mcp/_meta.js  |    6 +
 .../ai-suite/token-api-mcp}/claude.mdx        |    2 +-
 .../ai-suite/token-api-mcp}/cline.mdx         |    2 +-
 .../ai-suite/token-api-mcp}/cursor.mdx        |    2 +-
 .../ai-suite/token-api-mcp/introduction.mdx   |   23 +
 website/src/pages/nl/resources/_meta.js       |    1 -
 website/src/pages/nl/resources/claude-mcp.mdx |  122 --
 website/src/pages/nl/subgraphs/_meta.js       |    1 -
 website/src/pages/nl/subgraphs/mcp/_meta.js   |    5 -
 website/src/pages/nl/subgraphs/mcp/claude.mdx |  179 --
 website/src/pages/nl/subgraphs/mcp/cline.mdx  |   99 --
 website/src/pages/nl/subgraphs/mcp/cursor.mdx |   94 -
 website/src/pages/nl/substreams/_meta.js      |    1 -
 .../src/pages/nl/token-api/_meta-titles.json  |    1 +
 website/src/pages/nl/token-api/_meta.js       |    2 +-
 website/src/pages/nl/token-api/mcp/_meta.js   |    5 -
 website/src/pages/nl/token-api/svm/_meta.js   |    5 +
 .../nl/token-api/svm/get-balances-svm.mdx     |    9 +
 .../pages/nl/token-api/svm/get-swaps-svm.mdx  |    9 +
 .../nl/token-api/svm/get-transfers-svm.mdx    |    9 +
 .../src/pages/pl/ai-suite/_meta-titles.json   |    6 +
 website/src/pages/pl/ai-suite/_meta.js        |    8 +
 .../src/pages/pl/ai-suite/ai-introduction.mdx |   58 +
 .../pl/ai-suite/graph-assistant/_meta.js      |    6 +
 .../pages/pl/ai-suite/graph-assistant/faq.mdx |   26 +
 .../ai-suite/graph-assistant/how-to-guide.mdx |   56 +
 .../ai-suite/graph-assistant/introduction.mdx |   31 +
 .../ai-suite/graph-assistant/quick-start.mdx  |   44 +
 .../pages/pl/ai-suite/subgraph-mcp/_meta.js   |    6 +
 .../pages/pl/ai-suite/subgraph-mcp/claude.mdx |  169 ++
 .../pages/pl/ai-suite/subgraph-mcp/cline.mdx  |   99 ++
 .../pages/pl/ai-suite/subgraph-mcp/cursor.mdx |   94 +
 .../pl/ai-suite/subgraph-mcp/introduction.mdx |   22 +
 .../pages/pl/ai-suite/token-api-mcp/_meta.js  |    6 +
 .../ai-suite/token-api-mcp}/claude.mdx        |    2 +-
 .../ai-suite/token-api-mcp}/cline.mdx         |    2 +-
 .../ai-suite/token-api-mcp}/cursor.mdx        |    2 +-
 .../ai-suite/token-api-mcp/introduction.mdx   |   23 +
 website/src/pages/pl/resources/_meta.js       |    1 -
 website/src/pages/pl/resources/claude-mcp.mdx |  122 --
 website/src/pages/pl/subgraphs/_meta.js       |    1 -
 website/src/pages/pl/subgraphs/mcp/_meta.js   |    5 -
 website/src/pages/pl/subgraphs/mcp/claude.mdx |  179 --
 website/src/pages/pl/subgraphs/mcp/cline.mdx  |   99 --
 website/src/pages/pl/subgraphs/mcp/cursor.mdx |   94 -
 website/src/pages/pl/substreams/_meta.js      |    1 -
 .../src/pages/pl/token-api/_meta-titles.json  |    1 +
 website/src/pages/pl/token-api/_meta.js       |    2 +-
 website/src/pages/pl/token-api/mcp/_meta.js   |    5 -
 website/src/pages/pl/token-api/svm/_meta.js   |    5 +
 .../pl/token-api/svm/get-balances-svm.mdx     |    9 +
 .../pages/pl/token-api/svm/get-swaps-svm.mdx  |    9 +
 .../pl/token-api/svm/get-transfers-svm.mdx    |    9 +
 .../src/pages/pt/ai-suite/_meta-titles.json   |    6 +
 website/src/pages/pt/ai-suite/_meta.js        |    8 +
 .../src/pages/pt/ai-suite/ai-introduction.mdx |   58 +
 .../pt/ai-suite/graph-assistant/_meta.js      |    6 +
 .../pages/pt/ai-suite/graph-assistant/faq.mdx |   26 +
 .../ai-suite/graph-assistant/how-to-guide.mdx |   56 +
 .../ai-suite/graph-assistant/introduction.mdx |   31 +
 .../ai-suite/graph-assistant/quick-start.mdx  |   44 +
 .../pages/pt/ai-suite/subgraph-mcp/_meta.js   |    6 +
 .../pages/pt/ai-suite/subgraph-mcp/claude.mdx |  169 ++
 .../pages/pt/ai-suite/subgraph-mcp/cline.mdx  |   99 ++
 .../pages/pt/ai-suite/subgraph-mcp/cursor.mdx |   94 +
 .../pt/ai-suite/subgraph-mcp/introduction.mdx |   22 +
 .../pages/pt/ai-suite/token-api-mcp/_meta.js  |    6 +
 .../pt/ai-suite/token-api-mcp/claude.mdx      |   58 +
 .../pages/pt/ai-suite/token-api-mcp/cline.mdx |   52 +
 .../pt/ai-suite/token-api-mcp/cursor.mdx      |   50 +
 .../ai-suite/token-api-mcp/introduction.mdx   |   23 +
 website/src/pages/pt/resources/_meta.js       |    1 -
 website/src/pages/pt/resources/claude-mcp.mdx |  122 --
 website/src/pages/pt/subgraphs/_meta.js       |    1 -
 website/src/pages/pt/subgraphs/mcp/_meta.js   |    5 -
 website/src/pages/pt/subgraphs/mcp/claude.mdx |  179 --
 website/src/pages/pt/subgraphs/mcp/cline.mdx  |   99 --
 website/src/pages/pt/subgraphs/mcp/cursor.mdx |   94 -
 website/src/pages/pt/substreams/_meta.js      |    1 -
 .../src/pages/pt/token-api/_meta-titles.json  |    1 +
 website/src/pages/pt/token-api/_meta.js       |    2 +-
 website/src/pages/pt/token-api/mcp/_meta.js   |    5 -
 website/src/pages/pt/token-api/mcp/claude.mdx |   58 -
 website/src/pages/pt/token-api/mcp/cline.mdx  |   52 -
 website/src/pages/pt/token-api/mcp/cursor.mdx |   50 -
 website/src/pages/pt/token-api/svm/_meta.js   |    5 +
 .../pt/token-api/svm/get-balances-svm.mdx     |    9 +
 .../pages/pt/token-api/svm/get-swaps-svm.mdx  |    9 +
 .../pt/token-api/svm/get-transfers-svm.mdx    |    9 +
 .../src/pages/ro/ai-suite/_meta-titles.json   |    6 +
 website/src/pages/ro/ai-suite/_meta.js        |    8 +
 .../src/pages/ro/ai-suite/ai-introduction.mdx |   58 +
 .../ro/ai-suite/graph-assistant/_meta.js      |    6 +
 .../pages/ro/ai-suite/graph-assistant/faq.mdx |   26 +
 .../ai-suite/graph-assistant/how-to-guide.mdx |   56 +
 .../ai-suite/graph-assistant/introduction.mdx |   31 +
 .../ai-suite/graph-assistant/quick-start.mdx  |   44 +
 .../pages/ro/ai-suite/subgraph-mcp/_meta.js   |    6 +
 .../pages/ro/ai-suite/subgraph-mcp/claude.mdx |  169 ++
 .../pages/ro/ai-suite/subgraph-mcp/cline.mdx  |   99 ++
 .../pages/ro/ai-suite/subgraph-mcp/cursor.mdx |   94 +
 .../ro/ai-suite/subgraph-mcp/introduction.mdx |   22 +
 .../pages/ro/ai-suite/token-api-mcp/_meta.js  |    6 +
 .../ro/ai-suite/token-api-mcp/claude.mdx      |   58 +
 .../pages/ro/ai-suite/token-api-mcp/cline.mdx |   52 +
 .../ro/ai-suite/token-api-mcp/cursor.mdx      |   50 +
 .../ai-suite/token-api-mcp/introduction.mdx   |   23 +
 website/src/pages/ro/resources/_meta.js       |    1 -
 website/src/pages/ro/resources/claude-mcp.mdx |  122 --
 website/src/pages/ro/subgraphs/_meta.js       |    1 -
 website/src/pages/ro/subgraphs/mcp/_meta.js   |    5 -
 website/src/pages/ro/subgraphs/mcp/claude.mdx |  179 --
 website/src/pages/ro/subgraphs/mcp/cline.mdx  |   99 --
 website/src/pages/ro/subgraphs/mcp/cursor.mdx |   94 -
 website/src/pages/ro/substreams/_meta.js      |    1 -
 .../src/pages/ro/token-api/_meta-titles.json  |    1 +
 website/src/pages/ro/token-api/_meta.js       |    2 +-
 website/src/pages/ro/token-api/mcp/_meta.js   |    5 -
 website/src/pages/ro/token-api/svm/_meta.js   |    5 +
 .../ro/token-api/svm/get-balances-svm.mdx     |    9 +
 .../pages/ro/token-api/svm/get-swaps-svm.mdx  |    9 +
 .../ro/token-api/svm/get-transfers-svm.mdx    |    9 +
 .../src/pages/ru/ai-suite/_meta-titles.json   |    6 +
 website/src/pages/ru/ai-suite/_meta.js        |    8 +
 .../src/pages/ru/ai-suite/ai-introduction.mdx |   58 +
 .../ru/ai-suite/graph-assistant/_meta.js      |    6 +
 .../pages/ru/ai-suite/graph-assistant/faq.mdx |   26 +
 .../ai-suite/graph-assistant/how-to-guide.mdx |   56 +
 .../ai-suite/graph-assistant/introduction.mdx |   31 +
 .../ai-suite/graph-assistant/quick-start.mdx  |   44 +
 .../pages/ru/ai-suite/subgraph-mcp/_meta.js   |    6 +
 .../pages/ru/ai-suite/subgraph-mcp/claude.mdx |  169 ++
 .../pages/ru/ai-suite/subgraph-mcp/cline.mdx  |   99 ++
 .../pages/ru/ai-suite/subgraph-mcp/cursor.mdx |   94 +
 .../ru/ai-suite/subgraph-mcp/introduction.mdx |   22 +
 .../pages/ru/ai-suite/token-api-mcp/_meta.js  |    6 +
 .../ru/ai-suite/token-api-mcp/claude.mdx      |   58 +
 .../pages/ru/ai-suite/token-api-mcp/cline.mdx |   52 +
 .../ru/ai-suite/token-api-mcp/cursor.mdx      |   50 +
 .../ai-suite/token-api-mcp/introduction.mdx   |   23 +
 website/src/pages/ru/resources/_meta.js       |    1 -
 website/src/pages/ru/resources/claude-mcp.mdx |  122 --
 website/src/pages/ru/subgraphs/_meta.js       |    1 -
 website/src/pages/ru/subgraphs/mcp/_meta.js   |    5 -
 website/src/pages/ru/subgraphs/mcp/claude.mdx |  179 --
 website/src/pages/ru/subgraphs/mcp/cline.mdx  |   99 --
 website/src/pages/ru/subgraphs/mcp/cursor.mdx |   94 -
 website/src/pages/ru/substreams/_meta.js      |    1 -
 .../src/pages/ru/token-api/_meta-titles.json  |    1 +
 website/src/pages/ru/token-api/_meta.js       |    2 +-
 website/src/pages/ru/token-api/mcp/_meta.js   |    5 -
 website/src/pages/ru/token-api/mcp/claude.mdx |   58 -
 website/src/pages/ru/token-api/mcp/cline.mdx  |   52 -
 website/src/pages/ru/token-api/mcp/cursor.mdx |   50 -
 website/src/pages/ru/token-api/svm/_meta.js   |    5 +
 .../ru/token-api/svm/get-balances-svm.mdx     |    9 +
 .../pages/ru/token-api/svm/get-swaps-svm.mdx  |    9 +
 .../ru/token-api/svm/get-transfers-svm.mdx    |    9 +
 .../src/pages/sv/ai-suite/_meta-titles.json   |    6 +
 website/src/pages/sv/ai-suite/_meta.js        |    8 +
 .../src/pages/sv/ai-suite/ai-introduction.mdx |   58 +
 .../sv/ai-suite/graph-assistant/_meta.js      |    6 +
 .../pages/sv/ai-suite/graph-assistant/faq.mdx |   26 +
 .../ai-suite/graph-assistant/how-to-guide.mdx |   56 +
 .../ai-suite/graph-assistant/introduction.mdx |   31 +
 .../ai-suite/graph-assistant/quick-start.mdx  |   44 +
 .../pages/sv/ai-suite/subgraph-mcp/_meta.js   |    6 +
 .../pages/sv/ai-suite/subgraph-mcp/claude.mdx |  169 ++
 .../pages/sv/ai-suite/subgraph-mcp/cline.mdx  |   99 ++
 .../pages/sv/ai-suite/subgraph-mcp/cursor.mdx |   94 +
 .../sv/ai-suite/subgraph-mcp/introduction.mdx |   22 +
 .../pages/sv/ai-suite/token-api-mcp/_meta.js  |    6 +
 .../sv/ai-suite/token-api-mcp/claude.mdx      |   58 +
 .../pages/sv/ai-suite/token-api-mcp/cline.mdx |   52 +
 .../sv/ai-suite/token-api-mcp/cursor.mdx      |   50 +
 .../ai-suite/token-api-mcp/introduction.mdx   |   23 +
 website/src/pages/sv/resources/_meta.js       |    1 -
 website/src/pages/sv/resources/claude-mcp.mdx |  122 --
 website/src/pages/sv/subgraphs/_meta.js       |    1 -
 website/src/pages/sv/subgraphs/mcp/_meta.js   |    5 -
 website/src/pages/sv/subgraphs/mcp/claude.mdx |  179 --
 website/src/pages/sv/subgraphs/mcp/cline.mdx  |   99 --
 website/src/pages/sv/subgraphs/mcp/cursor.mdx |   94 -
 website/src/pages/sv/substreams/_meta.js      |    1 -
 .../src/pages/sv/token-api/_meta-titles.json  |    1 +
 website/src/pages/sv/token-api/_meta.js       |    2 +-
 website/src/pages/sv/token-api/mcp/_meta.js   |    5 -
 website/src/pages/sv/token-api/svm/_meta.js   |    5 +
 .../sv/token-api/svm/get-balances-svm.mdx     |    9 +
 .../pages/sv/token-api/svm/get-swaps-svm.mdx  |    9 +
 .../sv/token-api/svm/get-transfers-svm.mdx    |    9 +
 .../src/pages/tr/ai-suite/_meta-titles.json   |    6 +
 website/src/pages/tr/ai-suite/_meta.js        |    8 +
 .../src/pages/tr/ai-suite/ai-introduction.mdx |   58 +
 .../tr/ai-suite/graph-assistant/_meta.js      |    6 +
 .../pages/tr/ai-suite/graph-assistant/faq.mdx |   26 +
 .../ai-suite/graph-assistant/how-to-guide.mdx |   56 +
 .../ai-suite/graph-assistant/introduction.mdx |   31 +
 .../ai-suite/graph-assistant/quick-start.mdx  |   44 +
 .../pages/tr/ai-suite/subgraph-mcp/_meta.js   |    6 +
 .../pages/tr/ai-suite/subgraph-mcp/claude.mdx |  169 ++
 .../pages/tr/ai-suite/subgraph-mcp/cline.mdx  |   99 ++
 .../pages/tr/ai-suite/subgraph-mcp/cursor.mdx |   94 +
 .../tr/ai-suite/subgraph-mcp/introduction.mdx |   22 +
 .../pages/tr/ai-suite/token-api-mcp/_meta.js  |    6 +
 .../tr/ai-suite/token-api-mcp/claude.mdx      |   58 +
 .../pages/tr/ai-suite/token-api-mcp/cline.mdx |   52 +
 .../tr/ai-suite/token-api-mcp/cursor.mdx      |   50 +
 .../ai-suite/token-api-mcp/introduction.mdx   |   23 +
 website/src/pages/tr/resources/_meta.js       |    1 -
 website/src/pages/tr/resources/claude-mcp.mdx |  122 --
 website/src/pages/tr/subgraphs/_meta.js       |    1 -
 website/src/pages/tr/subgraphs/mcp/_meta.js   |    5 -
 website/src/pages/tr/subgraphs/mcp/claude.mdx |  179 --
 website/src/pages/tr/subgraphs/mcp/cline.mdx  |   99 --
 website/src/pages/tr/subgraphs/mcp/cursor.mdx |   94 -
 website/src/pages/tr/substreams/_meta.js      |    1 -
 .../src/pages/tr/token-api/_meta-titles.json  |    1 +
 website/src/pages/tr/token-api/_meta.js       |    2 +-
 website/src/pages/tr/token-api/mcp/_meta.js   |    5 -
 website/src/pages/tr/token-api/svm/_meta.js   |    5 +
 .../tr/token-api/svm/get-balances-svm.mdx     |    9 +
 .../pages/tr/token-api/svm/get-swaps-svm.mdx  |    9 +
 .../tr/token-api/svm/get-transfers-svm.mdx    |    9 +
 .../src/pages/uk/ai-suite/_meta-titles.json   |    6 +
 website/src/pages/uk/ai-suite/_meta.js        |    8 +
 .../src/pages/uk/ai-suite/ai-introduction.mdx |   58 +
 .../uk/ai-suite/graph-assistant/_meta.js      |    6 +
 .../pages/uk/ai-suite/graph-assistant/faq.mdx |   26 +
 .../ai-suite/graph-assistant/how-to-guide.mdx |   56 +
 .../ai-suite/graph-assistant/introduction.mdx |   31 +
 .../ai-suite/graph-assistant/quick-start.mdx  |   44 +
 .../pages/uk/ai-suite/subgraph-mcp/_meta.js   |    6 +
 .../pages/uk/ai-suite/subgraph-mcp/claude.mdx |  169 ++
 .../pages/uk/ai-suite/subgraph-mcp/cline.mdx  |   99 ++
 .../pages/uk/ai-suite/subgraph-mcp/cursor.mdx |   94 +
 .../uk/ai-suite/subgraph-mcp/introduction.mdx |   22 +
 .../pages/uk/ai-suite/token-api-mcp/_meta.js  |    6 +
 .../uk/ai-suite/token-api-mcp/claude.mdx      |   58 +
 .../pages/uk/ai-suite/token-api-mcp/cline.mdx |   52 +
 .../uk/ai-suite/token-api-mcp/cursor.mdx      |   50 +
 .../ai-suite/token-api-mcp/introduction.mdx   |   23 +
 website/src/pages/uk/resources/_meta.js       |    1 -
 website/src/pages/uk/resources/claude-mcp.mdx |  122 --
 website/src/pages/uk/subgraphs/_meta.js       |    1 -
 website/src/pages/uk/subgraphs/mcp/_meta.js   |    5 -
 website/src/pages/uk/subgraphs/mcp/claude.mdx |  179 --
 website/src/pages/uk/subgraphs/mcp/cline.mdx  |   99 --
 website/src/pages/uk/subgraphs/mcp/cursor.mdx |   94 -
 website/src/pages/uk/substreams/_meta.js      |    1 -
 .../src/pages/uk/token-api/_meta-titles.json  |    1 +
 website/src/pages/uk/token-api/_meta.js       |    2 +-
 website/src/pages/uk/token-api/mcp/_meta.js   |    5 -
 website/src/pages/uk/token-api/svm/_meta.js   |    5 +
 .../uk/token-api/svm/get-balances-svm.mdx     |    9 +
 .../pages/uk/token-api/svm/get-swaps-svm.mdx  |    9 +
 .../uk/token-api/svm/get-transfers-svm.mdx    |    9 +
 .../src/pages/ur/ai-suite/_meta-titles.json   |    6 +
 website/src/pages/ur/ai-suite/_meta.js        |    8 +
 .../src/pages/ur/ai-suite/ai-introduction.mdx |   58 +
 .../ur/ai-suite/graph-assistant/_meta.js      |    6 +
 .../pages/ur/ai-suite/graph-assistant/faq.mdx |   26 +
 .../ai-suite/graph-assistant/how-to-guide.mdx |   56 +
 .../ai-suite/graph-assistant/introduction.mdx |   31 +
 .../ai-suite/graph-assistant/quick-start.mdx  |   44 +
 .../pages/ur/ai-suite/subgraph-mcp/_meta.js   |    6 +
 .../pages/ur/ai-suite/subgraph-mcp/claude.mdx |  169 ++
 .../pages/ur/ai-suite/subgraph-mcp/cline.mdx  |   99 ++
 .../pages/ur/ai-suite/subgraph-mcp/cursor.mdx |   94 +
 .../ur/ai-suite/subgraph-mcp/introduction.mdx |   22 +
 .../pages/ur/ai-suite/token-api-mcp/_meta.js  |    6 +
 .../ur/ai-suite/token-api-mcp/claude.mdx      |   58 +
 .../pages/ur/ai-suite/token-api-mcp/cline.mdx |   52 +
 .../ur/ai-suite/token-api-mcp/cursor.mdx      |   50 +
 .../ai-suite/token-api-mcp/introduction.mdx   |   23 +
 website/src/pages/ur/resources/_meta.js       |    1 -
 website/src/pages/ur/resources/claude-mcp.mdx |  122 --
 website/src/pages/ur/subgraphs/_meta.js       |    1 -
 website/src/pages/ur/subgraphs/mcp/_meta.js   |    5 -
 website/src/pages/ur/subgraphs/mcp/claude.mdx |  179 --
 website/src/pages/ur/subgraphs/mcp/cline.mdx  |   99 --
 website/src/pages/ur/subgraphs/mcp/cursor.mdx |   94 -
 website/src/pages/ur/substreams/_meta.js      |    1 -
 .../src/pages/ur/token-api/_meta-titles.json  |    1 +
 website/src/pages/ur/token-api/_meta.js       |    2 +-
 website/src/pages/ur/token-api/mcp/_meta.js   |    5 -
 website/src/pages/ur/token-api/mcp/claude.mdx |   58 -
 website/src/pages/ur/token-api/mcp/cline.mdx  |   52 -
 website/src/pages/ur/token-api/mcp/cursor.mdx |   50 -
 website/src/pages/ur/token-api/svm/_meta.js   |    5 +
 .../ur/token-api/svm/get-balances-svm.mdx     |    9 +
 .../pages/ur/token-api/svm/get-swaps-svm.mdx  |    9 +
 .../ur/token-api/svm/get-transfers-svm.mdx    |    9 +
 .../src/pages/vi/ai-suite/_meta-titles.json   |    6 +
 website/src/pages/vi/ai-suite/_meta.js        |    8 +
 .../src/pages/vi/ai-suite/ai-introduction.mdx |   58 +
 .../vi/ai-suite/graph-assistant/_meta.js      |    6 +
 .../pages/vi/ai-suite/graph-assistant/faq.mdx |   26 +
 .../ai-suite/graph-assistant/how-to-guide.mdx |   56 +
 .../ai-suite/graph-assistant/introduction.mdx |   31 +
 .../ai-suite/graph-assistant/quick-start.mdx  |   44 +
 .../pages/vi/ai-suite/subgraph-mcp/_meta.js   |    6 +
 .../pages/vi/ai-suite/subgraph-mcp/claude.mdx |  169 ++
 .../pages/vi/ai-suite/subgraph-mcp/cline.mdx  |   99 ++
 .../pages/vi/ai-suite/subgraph-mcp/cursor.mdx |   94 +
 .../vi/ai-suite/subgraph-mcp/introduction.mdx |   22 +
 .../pages/vi/ai-suite/token-api-mcp/_meta.js  |    6 +
 .../vi/ai-suite/token-api-mcp/claude.mdx      |   58 +
 .../pages/vi/ai-suite/token-api-mcp/cline.mdx |   52 +
 .../vi/ai-suite/token-api-mcp/cursor.mdx      |   50 +
 .../ai-suite/token-api-mcp/introduction.mdx   |   23 +
 website/src/pages/vi/resources/_meta.js       |    1 -
 website/src/pages/vi/resources/claude-mcp.mdx |  122 --
 website/src/pages/vi/subgraphs/_meta.js       |    1 -
 website/src/pages/vi/subgraphs/mcp/_meta.js   |    5 -
 website/src/pages/vi/subgraphs/mcp/claude.mdx |  179 --
 website/src/pages/vi/subgraphs/mcp/cline.mdx  |   99 --
 website/src/pages/vi/subgraphs/mcp/cursor.mdx |   94 -
 website/src/pages/vi/substreams/_meta.js      |    1 -
 .../src/pages/vi/token-api/_meta-titles.json  |    1 +
 website/src/pages/vi/token-api/_meta.js       |    2 +-
 website/src/pages/vi/token-api/mcp/_meta.js   |    5 -
 website/src/pages/vi/token-api/svm/_meta.js   |    5 +
 .../vi/token-api/svm/get-balances-svm.mdx     |    9 +
 .../pages/vi/token-api/svm/get-swaps-svm.mdx  |    9 +
 .../vi/token-api/svm/get-transfers-svm.mdx    |    9 +
 .../src/pages/zh/ai-suite/_meta-titles.json   |    6 +
 website/src/pages/zh/ai-suite/_meta.js        |    8 +
 .../src/pages/zh/ai-suite/ai-introduction.mdx |   58 +
 .../zh/ai-suite/graph-assistant/_meta.js      |    6 +
 .../pages/zh/ai-suite/graph-assistant/faq.mdx |   26 +
 .../ai-suite/graph-assistant/how-to-guide.mdx |   56 +
 .../ai-suite/graph-assistant/introduction.mdx |   31 +
 .../ai-suite/graph-assistant/quick-start.mdx  |   44 +
 .../pages/zh/ai-suite/subgraph-mcp/_meta.js   |    6 +
 .../pages/zh/ai-suite/subgraph-mcp/claude.mdx |  169 ++
 .../pages/zh/ai-suite/subgraph-mcp/cline.mdx  |   99 ++
 .../pages/zh/ai-suite/subgraph-mcp/cursor.mdx |   94 +
 .../zh/ai-suite/subgraph-mcp/introduction.mdx |   22 +
 .../pages/zh/ai-suite/token-api-mcp/_meta.js  |    6 +
 .../zh/ai-suite/token-api-mcp/claude.mdx      |   58 +
 .../pages/zh/ai-suite/token-api-mcp/cline.mdx |   52 +
 .../zh/ai-suite/token-api-mcp/cursor.mdx      |   50 +
 .../ai-suite/token-api-mcp/introduction.mdx   |   23 +
 website/src/pages/zh/resources/_meta.js       |    1 -
 website/src/pages/zh/resources/claude-mcp.mdx |  122 --
 website/src/pages/zh/subgraphs/_meta.js       |    1 -
 website/src/pages/zh/subgraphs/mcp/_meta.js   |    5 -
 website/src/pages/zh/subgraphs/mcp/claude.mdx |  179 --
 website/src/pages/zh/subgraphs/mcp/cline.mdx  |   99 --
 website/src/pages/zh/subgraphs/mcp/cursor.mdx |   94 -
 website/src/pages/zh/substreams/_meta.js      |    1 -
 .../src/pages/zh/token-api/_meta-titles.json  |    1 +
 website/src/pages/zh/token-api/_meta.js       |    2 +-
 website/src/pages/zh/token-api/mcp/_meta.js   |    5 -
 website/src/pages/zh/token-api/mcp/claude.mdx |   58 -
 website/src/pages/zh/token-api/mcp/cline.mdx  |   52 -
 website/src/pages/zh/token-api/mcp/cursor.mdx |   50 -
 website/src/pages/zh/token-api/svm/_meta.js   |    5 +
 .../zh/token-api/svm/get-balances-svm.mdx     |    9 +
 .../pages/zh/token-api/svm/get-swaps-svm.mdx  |    9 +
 .../zh/token-api/svm/get-transfers-svm.mdx    |    9 +
 717 files changed, 16735 insertions(+), 12053 deletions(-)
 create mode 100644 website/src/pages/ar/ai-suite/_meta-titles.json
 create mode 100644 website/src/pages/ar/ai-suite/_meta.js
 create mode 100644 website/src/pages/ar/ai-suite/ai-introduction.mdx
 create mode 100644 website/src/pages/ar/ai-suite/graph-assistant/_meta.js
 create mode 100644 website/src/pages/ar/ai-suite/graph-assistant/faq.mdx
 create mode 100644 website/src/pages/ar/ai-suite/graph-assistant/how-to-guide.mdx
 create mode 100644 website/src/pages/ar/ai-suite/graph-assistant/introduction.mdx
 create mode 100644 website/src/pages/ar/ai-suite/graph-assistant/quick-start.mdx
 rename website/src/pages/ar/{token-api/mcp => ai-suite/subgraph-mcp}/_meta.js (75%)
 rename website/src/pages/{cs/subgraphs/mcp => ar/ai-suite/subgraph-mcp}/claude.mdx (87%)
 rename website/src/pages/{cs/subgraphs/mcp => ar/ai-suite/subgraph-mcp}/cline.mdx (89%)
 rename website/src/pages/{de/subgraphs/mcp => ar/ai-suite/subgraph-mcp}/cursor.mdx (88%)
 create mode 100644 website/src/pages/ar/ai-suite/subgraph-mcp/introduction.mdx
 rename website/src/pages/ar/{subgraphs/mcp => ai-suite/token-api-mcp}/_meta.js (75%)
 rename website/src/pages/ar/{token-api/mcp => ai-suite/token-api-mcp}/claude.mdx (100%)
 rename website/src/pages/ar/{token-api/mcp => ai-suite/token-api-mcp}/cline.mdx (100%)
 rename website/src/pages/ar/{token-api/mcp => ai-suite/token-api-mcp}/cursor.mdx (100%)
 create mode 100644 website/src/pages/ar/ai-suite/token-api-mcp/introduction.mdx
 delete mode 100644 website/src/pages/ar/resources/claude-mcp.mdx
 create mode 100644 website/src/pages/ar/token-api/svm/_meta.js
 create mode 100644 website/src/pages/ar/token-api/svm/get-balances-svm.mdx
 create mode 100644 website/src/pages/ar/token-api/svm/get-swaps-svm.mdx
 create mode 100644 website/src/pages/ar/token-api/svm/get-transfers-svm.mdx
 create mode 100644 website/src/pages/cs/ai-suite/_meta-titles.json
 create mode 100644 website/src/pages/cs/ai-suite/_meta.js
 create mode 100644 website/src/pages/cs/ai-suite/ai-introduction.mdx
 create mode 100644 website/src/pages/cs/ai-suite/graph-assistant/_meta.js
 create mode 100644 website/src/pages/cs/ai-suite/graph-assistant/faq.mdx
 create mode 100644 website/src/pages/cs/ai-suite/graph-assistant/how-to-guide.mdx
 create mode 100644 website/src/pages/cs/ai-suite/graph-assistant/introduction.mdx
 create mode 100644 website/src/pages/cs/ai-suite/graph-assistant/quick-start.mdx
 rename website/src/pages/cs/{subgraphs/mcp => ai-suite/subgraph-mcp}/_meta.js (75%)
 rename website/src/pages/{de/subgraphs/mcp => cs/ai-suite/subgraph-mcp}/claude.mdx (87%)
 rename website/src/pages/{de/subgraphs/mcp => cs/ai-suite/subgraph-mcp}/cline.mdx (89%)
 rename website/src/pages/{ar/subgraphs/mcp => cs/ai-suite/subgraph-mcp}/cursor.mdx (88%)
 create mode 100644 website/src/pages/cs/ai-suite/subgraph-mcp/introduction.mdx
 rename website/src/pages/cs/{token-api/mcp => ai-suite/token-api-mcp}/_meta.js (75%)
 rename website/src/pages/{it/token-api/mcp => cs/ai-suite/token-api-mcp}/claude.mdx (100%)
 rename website/src/pages/{it/token-api/mcp => cs/ai-suite/token-api-mcp}/cline.mdx (100%)
 rename website/src/pages/{it/token-api/mcp => cs/ai-suite/token-api-mcp}/cursor.mdx (100%)
 create mode 100644 website/src/pages/cs/ai-suite/token-api-mcp/introduction.mdx
 delete mode 100644 website/src/pages/cs/resources/claude-mcp.mdx
 create mode 100644 website/src/pages/cs/token-api/svm/_meta.js
 create mode 100644 website/src/pages/cs/token-api/svm/get-balances-svm.mdx
 create mode 100644 website/src/pages/cs/token-api/svm/get-swaps-svm.mdx
 create mode 100644 website/src/pages/cs/token-api/svm/get-transfers-svm.mdx
 create mode 100644 website/src/pages/de/ai-suite/_meta-titles.json
 create mode 100644 website/src/pages/de/ai-suite/_meta.js
 create mode 100644 website/src/pages/de/ai-suite/ai-introduction.mdx
 create mode 100644 website/src/pages/de/ai-suite/graph-assistant/_meta.js
 create mode 100644 website/src/pages/de/ai-suite/graph-assistant/faq.mdx
 create mode 100644 website/src/pages/de/ai-suite/graph-assistant/how-to-guide.mdx
 create mode 100644 website/src/pages/de/ai-suite/graph-assistant/introduction.mdx
 create mode 100644 website/src/pages/de/ai-suite/graph-assistant/quick-start.mdx
 create mode 100644 website/src/pages/de/ai-suite/subgraph-mcp/_meta.js
 rename website/src/pages/{ar/subgraphs/mcp => de/ai-suite/subgraph-mcp}/claude.mdx (87%)
 rename website/src/pages/{es/subgraphs/mcp => de/ai-suite/subgraph-mcp}/cline.mdx (89%)
 rename website/src/pages/{cs/subgraphs/mcp => de/ai-suite/subgraph-mcp}/cursor.mdx (88%)
 create mode 100644 website/src/pages/de/ai-suite/subgraph-mcp/introduction.mdx
 create mode 100644 website/src/pages/de/ai-suite/token-api-mcp/_meta.js
 rename website/src/pages/{ko/token-api/mcp => de/ai-suite/token-api-mcp}/claude.mdx (100%)
 rename website/src/pages/{ko/token-api/mcp => de/ai-suite/token-api-mcp}/cline.mdx (100%)
 rename website/src/pages/{ko/token-api/mcp => de/ai-suite/token-api-mcp}/cursor.mdx (100%)
 create mode 100644 website/src/pages/de/ai-suite/token-api-mcp/introduction.mdx
 delete mode 100644 website/src/pages/de/resources/claude-mcp.mdx
 delete mode 100644 website/src/pages/de/subgraphs/mcp/_meta.js
 delete mode 100644 website/src/pages/de/token-api/mcp/_meta.js
 delete mode 100644 website/src/pages/de/token-api/mcp/claude.mdx
 delete mode 100644 website/src/pages/de/token-api/mcp/cline.mdx
 delete mode 100644 website/src/pages/de/token-api/mcp/cursor.mdx
 create mode 100644 website/src/pages/de/token-api/svm/_meta.js
 create mode 100644 website/src/pages/de/token-api/svm/get-balances-svm.mdx
 create mode 100644 website/src/pages/de/token-api/svm/get-swaps-svm.mdx
 create mode 100644 website/src/pages/de/token-api/svm/get-transfers-svm.mdx
 create mode 100644 website/src/pages/en/token-api/svm/_meta.js
 create mode 100644 website/src/pages/en/token-api/svm/get-balances-svm.mdx
 create mode 100644 website/src/pages/en/token-api/svm/get-swaps-svm.mdx
 create mode 100644 website/src/pages/en/token-api/svm/get-transfers-svm.mdx
 create mode 100644 website/src/pages/es/ai-suite/_meta-titles.json
 create mode 100644 website/src/pages/es/ai-suite/_meta.js
 create mode 100644 website/src/pages/es/ai-suite/ai-introduction.mdx
 create mode 100644 website/src/pages/es/ai-suite/graph-assistant/_meta.js
 create mode 100644 website/src/pages/es/ai-suite/graph-assistant/faq.mdx
 create mode 100644 website/src/pages/es/ai-suite/graph-assistant/how-to-guide.mdx
 create mode 100644 website/src/pages/es/ai-suite/graph-assistant/introduction.mdx
 create mode 100644 website/src/pages/es/ai-suite/graph-assistant/quick-start.mdx
 create mode 100644 website/src/pages/es/ai-suite/subgraph-mcp/_meta.js
 rename website/src/pages/es/{subgraphs/mcp => ai-suite/subgraph-mcp}/claude.mdx (87%)
 rename website/src/pages/{ar/subgraphs/mcp => es/ai-suite/subgraph-mcp}/cline.mdx (89%)
 rename website/src/pages/es/{subgraphs/mcp => ai-suite/subgraph-mcp}/cursor.mdx (88%)
 create mode 100644 website/src/pages/es/ai-suite/subgraph-mcp/introduction.mdx
 create mode 100644 website/src/pages/es/ai-suite/token-api-mcp/_meta.js
 rename website/src/pages/{nl/token-api/mcp => es/ai-suite/token-api-mcp}/claude.mdx (100%)
 rename website/src/pages/{nl/token-api/mcp => es/ai-suite/token-api-mcp}/cline.mdx (100%)
 rename website/src/pages/{nl/token-api/mcp => es/ai-suite/token-api-mcp}/cursor.mdx (100%)
 create mode 100644 website/src/pages/es/ai-suite/token-api-mcp/introduction.mdx
 delete mode 100644 website/src/pages/es/resources/claude-mcp.mdx
 delete mode 100644 website/src/pages/es/subgraphs/mcp/_meta.js
 delete mode 100644 website/src/pages/es/token-api/mcp/_meta.js
 create mode 100644 website/src/pages/es/token-api/svm/_meta.js
 create mode 100644 website/src/pages/es/token-api/svm/get-balances-svm.mdx
 create mode 100644 website/src/pages/es/token-api/svm/get-swaps-svm.mdx
 create mode 100644 website/src/pages/es/token-api/svm/get-transfers-svm.mdx
 create mode 100644 website/src/pages/fr/ai-suite/_meta-titles.json
 create mode 100644 website/src/pages/fr/ai-suite/_meta.js
 create mode 100644 website/src/pages/fr/ai-suite/ai-introduction.mdx
 create mode 100644 website/src/pages/fr/ai-suite/graph-assistant/_meta.js
 create mode 100644 website/src/pages/fr/ai-suite/graph-assistant/faq.mdx
 create mode 100644 website/src/pages/fr/ai-suite/graph-assistant/how-to-guide.mdx
 create mode 100644 website/src/pages/fr/ai-suite/graph-assistant/introduction.mdx
 create mode 100644 website/src/pages/fr/ai-suite/graph-assistant/quick-start.mdx
 create mode 100644 website/src/pages/fr/ai-suite/subgraph-mcp/_meta.js
 create mode 100644 website/src/pages/fr/ai-suite/subgraph-mcp/claude.mdx
 create mode 100644 website/src/pages/fr/ai-suite/subgraph-mcp/cline.mdx
 create mode 100644 website/src/pages/fr/ai-suite/subgraph-mcp/cursor.mdx
 create mode 100644 website/src/pages/fr/ai-suite/subgraph-mcp/introduction.mdx
 create mode 100644 website/src/pages/fr/ai-suite/token-api-mcp/_meta.js
 rename website/src/pages/{pl/token-api/mcp => fr/ai-suite/token-api-mcp}/claude.mdx (100%)
 rename website/src/pages/{pl/token-api/mcp => fr/ai-suite/token-api-mcp}/cline.mdx (100%)
 rename website/src/pages/{pl/token-api/mcp => fr/ai-suite/token-api-mcp}/cursor.mdx (100%)
 create mode 100644 website/src/pages/fr/ai-suite/token-api-mcp/introduction.mdx
 delete mode 100644 website/src/pages/fr/resources/claude-mcp.mdx
 delete mode 100644 website/src/pages/fr/subgraphs/mcp/_meta.js
 delete mode 100644 website/src/pages/fr/subgraphs/mcp/claude.mdx
 delete mode 100644 website/src/pages/fr/subgraphs/mcp/cline.mdx
 delete mode 100644 website/src/pages/fr/subgraphs/mcp/cursor.mdx
 delete mode 100644 website/src/pages/fr/token-api/mcp/_meta.js
 delete mode 100644 website/src/pages/fr/token-api/mcp/claude.mdx
 delete mode 100644 website/src/pages/fr/token-api/mcp/cline.mdx
 delete mode 100644 website/src/pages/fr/token-api/mcp/cursor.mdx
 create mode 100644 website/src/pages/fr/token-api/svm/_meta.js
 create mode 100644 website/src/pages/fr/token-api/svm/get-balances-svm.mdx
 create mode 100644 website/src/pages/fr/token-api/svm/get-swaps-svm.mdx
 create mode 100644 website/src/pages/fr/token-api/svm/get-transfers-svm.mdx
 create mode 100644 website/src/pages/hi/ai-suite/_meta-titles.json
 create mode 100644 website/src/pages/hi/ai-suite/_meta.js
 create mode 100644 website/src/pages/hi/ai-suite/ai-introduction.mdx
 create mode 100644 website/src/pages/hi/ai-suite/graph-assistant/_meta.js
 create mode 100644 website/src/pages/hi/ai-suite/graph-assistant/faq.mdx
 create mode 100644 website/src/pages/hi/ai-suite/graph-assistant/how-to-guide.mdx
 create mode 100644 website/src/pages/hi/ai-suite/graph-assistant/introduction.mdx
 create mode 100644 website/src/pages/hi/ai-suite/graph-assistant/quick-start.mdx
 create mode 100644 website/src/pages/hi/ai-suite/subgraph-mcp/_meta.js
 create mode 100644 website/src/pages/hi/ai-suite/subgraph-mcp/claude.mdx
 create mode 100644 website/src/pages/hi/ai-suite/subgraph-mcp/cline.mdx
 create mode 100644 website/src/pages/hi/ai-suite/subgraph-mcp/cursor.mdx
 create mode 100644 website/src/pages/hi/ai-suite/subgraph-mcp/introduction.mdx
 create mode 100644 website/src/pages/hi/ai-suite/token-api-mcp/_meta.js
 rename website/src/pages/{ro/token-api/mcp => hi/ai-suite/token-api-mcp}/claude.mdx (100%)
 rename website/src/pages/{ro/token-api/mcp => hi/ai-suite/token-api-mcp}/cline.mdx (100%)
 rename website/src/pages/{ro/token-api/mcp => hi/ai-suite/token-api-mcp}/cursor.mdx (100%)
 create mode 100644 website/src/pages/hi/ai-suite/token-api-mcp/introduction.mdx
 delete mode 100644 website/src/pages/hi/resources/claude-mcp.mdx
 delete mode 100644 website/src/pages/hi/subgraphs/mcp/_meta.js
 delete mode 100644 website/src/pages/hi/subgraphs/mcp/claude.mdx
 delete mode 100644 website/src/pages/hi/subgraphs/mcp/cline.mdx
 delete mode 100644 website/src/pages/hi/subgraphs/mcp/cursor.mdx
 delete mode 100644 website/src/pages/hi/token-api/mcp/_meta.js
 delete mode 100644 website/src/pages/hi/token-api/mcp/claude.mdx
 delete mode 100644 website/src/pages/hi/token-api/mcp/cline.mdx
 delete mode 100644 website/src/pages/hi/token-api/mcp/cursor.mdx
 create mode 100644 website/src/pages/hi/token-api/svm/_meta.js
 create mode 100644 website/src/pages/hi/token-api/svm/get-balances-svm.mdx
 create mode 100644 website/src/pages/hi/token-api/svm/get-swaps-svm.mdx
 create mode 100644 website/src/pages/hi/token-api/svm/get-transfers-svm.mdx
 create mode 100644 website/src/pages/it/ai-suite/_meta-titles.json
 create mode 100644 website/src/pages/it/ai-suite/_meta.js
 create mode 100644 website/src/pages/it/ai-suite/ai-introduction.mdx
 create mode 100644 website/src/pages/it/ai-suite/graph-assistant/_meta.js
 create mode 100644 website/src/pages/it/ai-suite/graph-assistant/faq.mdx
 create mode 100644 website/src/pages/it/ai-suite/graph-assistant/how-to-guide.mdx
 create mode 100644 website/src/pages/it/ai-suite/graph-assistant/introduction.mdx
 create mode 100644 website/src/pages/it/ai-suite/graph-assistant/quick-start.mdx
 create mode 100644 website/src/pages/it/ai-suite/subgraph-mcp/_meta.js
 create mode 100644 website/src/pages/it/ai-suite/subgraph-mcp/claude.mdx
 create mode 100644 website/src/pages/it/ai-suite/subgraph-mcp/cline.mdx
 create mode 100644 website/src/pages/it/ai-suite/subgraph-mcp/cursor.mdx
 create mode 100644 website/src/pages/it/ai-suite/subgraph-mcp/introduction.mdx
 create mode 100644 website/src/pages/it/ai-suite/token-api-mcp/_meta.js
 rename website/src/pages/{uk/token-api/mcp => it/ai-suite/token-api-mcp}/claude.mdx (100%)
 rename website/src/pages/{uk/token-api/mcp => it/ai-suite/token-api-mcp}/cline.mdx (100%)
 rename website/src/pages/{uk/token-api/mcp => it/ai-suite/token-api-mcp}/cursor.mdx (100%)
 create mode 100644 website/src/pages/it/ai-suite/token-api-mcp/introduction.mdx
 delete mode 100644 website/src/pages/it/resources/claude-mcp.mdx
 delete mode 100644 website/src/pages/it/subgraphs/mcp/_meta.js
 delete mode 100644 website/src/pages/it/subgraphs/mcp/claude.mdx
 delete mode 100644 website/src/pages/it/subgraphs/mcp/cline.mdx
 delete mode 100644 website/src/pages/it/subgraphs/mcp/cursor.mdx
 delete mode 100644 website/src/pages/it/token-api/mcp/_meta.js
 create mode 100644 website/src/pages/it/token-api/svm/_meta.js
 create mode 100644 website/src/pages/it/token-api/svm/get-balances-svm.mdx
 create mode 100644 website/src/pages/it/token-api/svm/get-swaps-svm.mdx
 create mode 100644 website/src/pages/it/token-api/svm/get-transfers-svm.mdx
 create mode 100644 website/src/pages/ja/ai-suite/_meta-titles.json
 create mode 100644 website/src/pages/ja/ai-suite/_meta.js
 create mode 100644 website/src/pages/ja/ai-suite/ai-introduction.mdx
 create mode 100644 website/src/pages/ja/ai-suite/graph-assistant/_meta.js
 create mode 100644 website/src/pages/ja/ai-suite/graph-assistant/faq.mdx
 create mode 100644 website/src/pages/ja/ai-suite/graph-assistant/how-to-guide.mdx
 create mode 100644 website/src/pages/ja/ai-suite/graph-assistant/introduction.mdx
 create mode 100644 website/src/pages/ja/ai-suite/graph-assistant/quick-start.mdx
 create mode 100644 website/src/pages/ja/ai-suite/subgraph-mcp/_meta.js
 create mode 100644 website/src/pages/ja/ai-suite/subgraph-mcp/claude.mdx
 create mode 100644 website/src/pages/ja/ai-suite/subgraph-mcp/cline.mdx
 create mode 100644 website/src/pages/ja/ai-suite/subgraph-mcp/cursor.mdx
 create mode 100644 website/src/pages/ja/ai-suite/subgraph-mcp/introduction.mdx
 create mode 100644 website/src/pages/ja/ai-suite/token-api-mcp/_meta.js
 rename website/src/pages/{vi/token-api/mcp => ja/ai-suite/token-api-mcp}/claude.mdx (100%)
 rename website/src/pages/{vi/token-api/mcp => ja/ai-suite/token-api-mcp}/cline.mdx (100%)
 rename website/src/pages/{vi/token-api/mcp => ja/ai-suite/token-api-mcp}/cursor.mdx (100%)
 create mode 100644 website/src/pages/ja/ai-suite/token-api-mcp/introduction.mdx
 delete mode 100644 website/src/pages/ja/resources/claude-mcp.mdx
 delete mode 100644 website/src/pages/ja/subgraphs/mcp/_meta.js
 delete mode 100644 website/src/pages/ja/subgraphs/mcp/claude.mdx
 delete mode 100644 website/src/pages/ja/subgraphs/mcp/cline.mdx
 delete mode 100644 website/src/pages/ja/subgraphs/mcp/cursor.mdx
 delete mode 100644 website/src/pages/ja/token-api/mcp/_meta.js
 delete mode 100644 website/src/pages/ja/token-api/mcp/claude.mdx
 delete mode 100644 website/src/pages/ja/token-api/mcp/cline.mdx
 delete mode 100644 website/src/pages/ja/token-api/mcp/cursor.mdx
 create mode 100644 website/src/pages/ja/token-api/svm/_meta.js
 create mode 100644 website/src/pages/ja/token-api/svm/get-balances-svm.mdx
 create mode 100644 website/src/pages/ja/token-api/svm/get-swaps-svm.mdx
 create mode 100644 website/src/pages/ja/token-api/svm/get-transfers-svm.mdx
 create mode 100644 website/src/pages/ko/ai-suite/_meta-titles.json
 create mode 100644 website/src/pages/ko/ai-suite/_meta.js
 create mode 100644 website/src/pages/ko/ai-suite/ai-introduction.mdx
 create mode 100644 website/src/pages/ko/ai-suite/graph-assistant/_meta.js
 create mode 100644 website/src/pages/ko/ai-suite/graph-assistant/faq.mdx
 create mode 100644 website/src/pages/ko/ai-suite/graph-assistant/how-to-guide.mdx
 create mode 100644 website/src/pages/ko/ai-suite/graph-assistant/introduction.mdx
 create mode 100644 website/src/pages/ko/ai-suite/graph-assistant/quick-start.mdx
 create mode 100644 website/src/pages/ko/ai-suite/subgraph-mcp/_meta.js
 create mode 100644 website/src/pages/ko/ai-suite/subgraph-mcp/claude.mdx
 create mode 100644 website/src/pages/ko/ai-suite/subgraph-mcp/cline.mdx
 create mode 100644 website/src/pages/ko/ai-suite/subgraph-mcp/cursor.mdx
 create mode 100644 website/src/pages/ko/ai-suite/subgraph-mcp/introduction.mdx
 create mode 100644 website/src/pages/ko/ai-suite/token-api-mcp/_meta.js
 rename website/src/pages/{cs/token-api/mcp => ko/ai-suite/token-api-mcp}/claude.mdx (99%)
 rename website/src/pages/{cs/token-api/mcp => ko/ai-suite/token-api-mcp}/cline.mdx (99%)
 rename website/src/pages/{cs/token-api/mcp => ko/ai-suite/token-api-mcp}/cursor.mdx (99%)
 create mode 100644 website/src/pages/ko/ai-suite/token-api-mcp/introduction.mdx
 delete mode 100644 website/src/pages/ko/resources/claude-mcp.mdx
 delete mode 100644 website/src/pages/ko/subgraphs/mcp/_meta.js
 delete mode 100644 website/src/pages/ko/subgraphs/mcp/claude.mdx
 delete mode 100644 website/src/pages/ko/subgraphs/mcp/cline.mdx
 delete mode 100644 website/src/pages/ko/subgraphs/mcp/cursor.mdx
 delete mode 100644 website/src/pages/ko/token-api/mcp/_meta.js
 create mode 100644 website/src/pages/ko/token-api/svm/_meta.js
 create mode 100644 website/src/pages/ko/token-api/svm/get-balances-svm.mdx
 create mode 100644 website/src/pages/ko/token-api/svm/get-swaps-svm.mdx
 create mode 100644 website/src/pages/ko/token-api/svm/get-transfers-svm.mdx
 create mode 100644 website/src/pages/mr/ai-suite/_meta-titles.json
 create mode 100644 website/src/pages/mr/ai-suite/_meta.js
 create mode 100644 website/src/pages/mr/ai-suite/ai-introduction.mdx
 create mode 100644 website/src/pages/mr/ai-suite/graph-assistant/_meta.js
 create mode 100644 website/src/pages/mr/ai-suite/graph-assistant/faq.mdx
 create mode 100644 website/src/pages/mr/ai-suite/graph-assistant/how-to-guide.mdx
 create mode 100644 website/src/pages/mr/ai-suite/graph-assistant/introduction.mdx
 create mode 100644 website/src/pages/mr/ai-suite/graph-assistant/quick-start.mdx
 create mode 100644 website/src/pages/mr/ai-suite/subgraph-mcp/_meta.js
 create mode 100644 website/src/pages/mr/ai-suite/subgraph-mcp/claude.mdx
 create mode 100644 website/src/pages/mr/ai-suite/subgraph-mcp/cline.mdx
 create mode 100644 website/src/pages/mr/ai-suite/subgraph-mcp/cursor.mdx
 create mode 100644 website/src/pages/mr/ai-suite/subgraph-mcp/introduction.mdx
 create mode 100644 website/src/pages/mr/ai-suite/token-api-mcp/_meta.js
 rename website/src/pages/{sv/token-api/mcp => mr/ai-suite/token-api-mcp}/claude.mdx (99%)
 rename website/src/pages/{sv/token-api/mcp => mr/ai-suite/token-api-mcp}/cline.mdx (99%)
 rename website/src/pages/{sv/token-api/mcp => mr/ai-suite/token-api-mcp}/cursor.mdx (99%)
 create mode 100644 website/src/pages/mr/ai-suite/token-api-mcp/introduction.mdx
 delete mode 100644 website/src/pages/mr/resources/claude-mcp.mdx
 delete mode 100644 website/src/pages/mr/subgraphs/mcp/_meta.js
 delete mode 100644 website/src/pages/mr/subgraphs/mcp/claude.mdx
 delete mode 100644 website/src/pages/mr/subgraphs/mcp/cline.mdx
 delete mode 100644 website/src/pages/mr/subgraphs/mcp/cursor.mdx
 delete mode 100644 website/src/pages/mr/token-api/mcp/_meta.js
 delete mode 100644 website/src/pages/mr/token-api/mcp/claude.mdx
 delete mode 100644 website/src/pages/mr/token-api/mcp/cline.mdx
 delete mode 100644 website/src/pages/mr/token-api/mcp/cursor.mdx
 create mode 100644 website/src/pages/mr/token-api/svm/_meta.js
 create mode 100644 website/src/pages/mr/token-api/svm/get-balances-svm.mdx
 create mode 100644 website/src/pages/mr/token-api/svm/get-swaps-svm.mdx
 create mode 100644 website/src/pages/mr/token-api/svm/get-transfers-svm.mdx
 create mode 100644 website/src/pages/nl/ai-suite/_meta-titles.json
 create mode 100644 website/src/pages/nl/ai-suite/_meta.js
 create mode 100644 website/src/pages/nl/ai-suite/ai-introduction.mdx
 create mode 100644 website/src/pages/nl/ai-suite/graph-assistant/_meta.js
 create mode 100644 website/src/pages/nl/ai-suite/graph-assistant/faq.mdx
 create mode 100644 website/src/pages/nl/ai-suite/graph-assistant/how-to-guide.mdx
 create mode 100644 website/src/pages/nl/ai-suite/graph-assistant/introduction.mdx
 create mode 100644 website/src/pages/nl/ai-suite/graph-assistant/quick-start.mdx
 create mode 100644 website/src/pages/nl/ai-suite/subgraph-mcp/_meta.js
 create mode 100644 website/src/pages/nl/ai-suite/subgraph-mcp/claude.mdx
 create mode 100644 website/src/pages/nl/ai-suite/subgraph-mcp/cline.mdx
 create mode 100644 website/src/pages/nl/ai-suite/subgraph-mcp/cursor.mdx
 create mode 100644 website/src/pages/nl/ai-suite/subgraph-mcp/introduction.mdx
 create mode 100644 website/src/pages/nl/ai-suite/token-api-mcp/_meta.js
 rename website/src/pages/{es/token-api/mcp => nl/ai-suite/token-api-mcp}/claude.mdx (99%)
 rename website/src/pages/{tr/token-api/mcp => nl/ai-suite/token-api-mcp}/cline.mdx (99%)
 rename website/src/pages/{es/token-api/mcp => nl/ai-suite/token-api-mcp}/cursor.mdx (98%)
 create mode 100644 website/src/pages/nl/ai-suite/token-api-mcp/introduction.mdx
 delete mode 100644 website/src/pages/nl/resources/claude-mcp.mdx
 delete mode 100644 website/src/pages/nl/subgraphs/mcp/_meta.js
 delete mode 100644 website/src/pages/nl/subgraphs/mcp/claude.mdx
 delete mode 100644 website/src/pages/nl/subgraphs/mcp/cline.mdx
 delete mode 100644 website/src/pages/nl/subgraphs/mcp/cursor.mdx
 delete mode 100644 website/src/pages/nl/token-api/mcp/_meta.js
 create mode 100644 website/src/pages/nl/token-api/svm/_meta.js
 create mode 100644 website/src/pages/nl/token-api/svm/get-balances-svm.mdx
 create mode 100644 website/src/pages/nl/token-api/svm/get-swaps-svm.mdx
 create mode 100644 website/src/pages/nl/token-api/svm/get-transfers-svm.mdx
 create mode 100644 website/src/pages/pl/ai-suite/_meta-titles.json
 create mode 100644 website/src/pages/pl/ai-suite/_meta.js
 create mode 100644 website/src/pages/pl/ai-suite/ai-introduction.mdx
 create mode 100644 website/src/pages/pl/ai-suite/graph-assistant/_meta.js
 create mode 100644 website/src/pages/pl/ai-suite/graph-assistant/faq.mdx
 create mode 100644 website/src/pages/pl/ai-suite/graph-assistant/how-to-guide.mdx
 create mode 100644 website/src/pages/pl/ai-suite/graph-assistant/introduction.mdx
 create mode 100644 website/src/pages/pl/ai-suite/graph-assistant/quick-start.mdx
 create mode 100644 website/src/pages/pl/ai-suite/subgraph-mcp/_meta.js
 create mode 100644 website/src/pages/pl/ai-suite/subgraph-mcp/claude.mdx
 create mode 100644 website/src/pages/pl/ai-suite/subgraph-mcp/cline.mdx
 create mode 100644 website/src/pages/pl/ai-suite/subgraph-mcp/cursor.mdx
 create mode 100644 website/src/pages/pl/ai-suite/subgraph-mcp/introduction.mdx
 create mode 100644 website/src/pages/pl/ai-suite/token-api-mcp/_meta.js
 rename website/src/pages/{tr/token-api/mcp => pl/ai-suite/token-api-mcp}/claude.mdx (99%)
 rename website/src/pages/{es/token-api/mcp => pl/ai-suite/token-api-mcp}/cline.mdx (99%)
 rename website/src/pages/{tr/token-api/mcp => pl/ai-suite/token-api-mcp}/cursor.mdx (98%)
 create mode 100644 website/src/pages/pl/ai-suite/token-api-mcp/introduction.mdx
 delete mode 100644 website/src/pages/pl/resources/claude-mcp.mdx
 delete mode 100644 website/src/pages/pl/subgraphs/mcp/_meta.js
 delete mode 100644 website/src/pages/pl/subgraphs/mcp/claude.mdx
 delete mode 100644 website/src/pages/pl/subgraphs/mcp/cline.mdx
 delete mode 100644 website/src/pages/pl/subgraphs/mcp/cursor.mdx
 delete mode 100644 website/src/pages/pl/token-api/mcp/_meta.js
 create mode 100644 website/src/pages/pl/token-api/svm/_meta.js
 create mode 100644 website/src/pages/pl/token-api/svm/get-balances-svm.mdx
 create mode 100644 website/src/pages/pl/token-api/svm/get-swaps-svm.mdx
 create mode 100644 website/src/pages/pl/token-api/svm/get-transfers-svm.mdx
 create mode 100644 website/src/pages/pt/ai-suite/_meta-titles.json
 create mode 100644 website/src/pages/pt/ai-suite/_meta.js
 create mode 100644 website/src/pages/pt/ai-suite/ai-introduction.mdx
 create mode 100644 website/src/pages/pt/ai-suite/graph-assistant/_meta.js
 create mode 100644 website/src/pages/pt/ai-suite/graph-assistant/faq.mdx
 create mode 100644 website/src/pages/pt/ai-suite/graph-assistant/how-to-guide.mdx
 create mode 100644 website/src/pages/pt/ai-suite/graph-assistant/introduction.mdx
 create mode 100644 website/src/pages/pt/ai-suite/graph-assistant/quick-start.mdx
 create mode 100644 website/src/pages/pt/ai-suite/subgraph-mcp/_meta.js
 create mode 100644 website/src/pages/pt/ai-suite/subgraph-mcp/claude.mdx
 create mode 100644 website/src/pages/pt/ai-suite/subgraph-mcp/cline.mdx
 create mode 100644 website/src/pages/pt/ai-suite/subgraph-mcp/cursor.mdx
 create mode 100644 website/src/pages/pt/ai-suite/subgraph-mcp/introduction.mdx
 create mode 100644 website/src/pages/pt/ai-suite/token-api-mcp/_meta.js
 create mode 100644 website/src/pages/pt/ai-suite/token-api-mcp/claude.mdx
 create mode 100644 website/src/pages/pt/ai-suite/token-api-mcp/cline.mdx
 create mode 100644 website/src/pages/pt/ai-suite/token-api-mcp/cursor.mdx
 create mode 100644 website/src/pages/pt/ai-suite/token-api-mcp/introduction.mdx
 delete mode 100644 website/src/pages/pt/resources/claude-mcp.mdx
 delete mode 100644 website/src/pages/pt/subgraphs/mcp/_meta.js
 delete mode 100644 website/src/pages/pt/subgraphs/mcp/claude.mdx
 delete mode 100644 website/src/pages/pt/subgraphs/mcp/cline.mdx
 delete mode 100644 website/src/pages/pt/subgraphs/mcp/cursor.mdx
 delete mode 100644 website/src/pages/pt/token-api/mcp/_meta.js
 delete mode 100644 website/src/pages/pt/token-api/mcp/claude.mdx
 delete mode 100644 website/src/pages/pt/token-api/mcp/cline.mdx
 delete mode 100644 website/src/pages/pt/token-api/mcp/cursor.mdx
 create mode 100644 website/src/pages/pt/token-api/svm/_meta.js
 create mode 100644 website/src/pages/pt/token-api/svm/get-balances-svm.mdx
 create mode 100644 website/src/pages/pt/token-api/svm/get-swaps-svm.mdx
 create mode 100644 website/src/pages/pt/token-api/svm/get-transfers-svm.mdx
 create mode 100644 website/src/pages/ro/ai-suite/_meta-titles.json
 create mode 100644 website/src/pages/ro/ai-suite/_meta.js
 create mode 100644 website/src/pages/ro/ai-suite/ai-introduction.mdx
 create mode 100644 website/src/pages/ro/ai-suite/graph-assistant/_meta.js
 create mode 100644 website/src/pages/ro/ai-suite/graph-assistant/faq.mdx
 create mode 100644 website/src/pages/ro/ai-suite/graph-assistant/how-to-guide.mdx
 create mode 100644 website/src/pages/ro/ai-suite/graph-assistant/introduction.mdx
 create mode 100644 website/src/pages/ro/ai-suite/graph-assistant/quick-start.mdx
 create mode 100644 website/src/pages/ro/ai-suite/subgraph-mcp/_meta.js
 create mode 100644 website/src/pages/ro/ai-suite/subgraph-mcp/claude.mdx
 create mode 100644 website/src/pages/ro/ai-suite/subgraph-mcp/cline.mdx
 create mode 100644 website/src/pages/ro/ai-suite/subgraph-mcp/cursor.mdx
 create mode 100644 website/src/pages/ro/ai-suite/subgraph-mcp/introduction.mdx
 create mode 100644 website/src/pages/ro/ai-suite/token-api-mcp/_meta.js
 create mode 100644 website/src/pages/ro/ai-suite/token-api-mcp/claude.mdx
 create mode 100644 website/src/pages/ro/ai-suite/token-api-mcp/cline.mdx
 create mode 100644 website/src/pages/ro/ai-suite/token-api-mcp/cursor.mdx
 create mode 100644 website/src/pages/ro/ai-suite/token-api-mcp/introduction.mdx
 delete mode 100644 website/src/pages/ro/resources/claude-mcp.mdx
 delete mode 100644 website/src/pages/ro/subgraphs/mcp/_meta.js
 delete mode 100644 website/src/pages/ro/subgraphs/mcp/claude.mdx
 delete mode 100644 website/src/pages/ro/subgraphs/mcp/cline.mdx
 delete mode 100644 website/src/pages/ro/subgraphs/mcp/cursor.mdx
 delete mode 100644 website/src/pages/ro/token-api/mcp/_meta.js
 create mode 100644 website/src/pages/ro/token-api/svm/_meta.js
 create mode 100644 website/src/pages/ro/token-api/svm/get-balances-svm.mdx
 create mode 100644 website/src/pages/ro/token-api/svm/get-swaps-svm.mdx
 create mode 100644 website/src/pages/ro/token-api/svm/get-transfers-svm.mdx
 create mode 100644 website/src/pages/ru/ai-suite/_meta-titles.json
 create mode 100644 website/src/pages/ru/ai-suite/_meta.js
 create mode 100644 website/src/pages/ru/ai-suite/ai-introduction.mdx
 create mode 100644 website/src/pages/ru/ai-suite/graph-assistant/_meta.js
 create mode 100644 website/src/pages/ru/ai-suite/graph-assistant/faq.mdx
 create mode 100644 website/src/pages/ru/ai-suite/graph-assistant/how-to-guide.mdx
 create mode 100644 website/src/pages/ru/ai-suite/graph-assistant/introduction.mdx
 create mode 100644 website/src/pages/ru/ai-suite/graph-assistant/quick-start.mdx
 create mode 100644 website/src/pages/ru/ai-suite/subgraph-mcp/_meta.js
 create mode 100644 website/src/pages/ru/ai-suite/subgraph-mcp/claude.mdx
 create mode 100644 website/src/pages/ru/ai-suite/subgraph-mcp/cline.mdx
 create mode 100644 website/src/pages/ru/ai-suite/subgraph-mcp/cursor.mdx
 create mode 100644 website/src/pages/ru/ai-suite/subgraph-mcp/introduction.mdx
 create mode 100644 website/src/pages/ru/ai-suite/token-api-mcp/_meta.js
 create mode 100644 website/src/pages/ru/ai-suite/token-api-mcp/claude.mdx
 create mode 100644 website/src/pages/ru/ai-suite/token-api-mcp/cline.mdx
 create mode 100644 website/src/pages/ru/ai-suite/token-api-mcp/cursor.mdx
 create mode 100644 website/src/pages/ru/ai-suite/token-api-mcp/introduction.mdx
 delete mode 100644 website/src/pages/ru/resources/claude-mcp.mdx
 delete mode 100644 website/src/pages/ru/subgraphs/mcp/_meta.js
 delete mode 100644 website/src/pages/ru/subgraphs/mcp/claude.mdx
 delete mode 100644 website/src/pages/ru/subgraphs/mcp/cline.mdx
 delete mode 100644 website/src/pages/ru/subgraphs/mcp/cursor.mdx
 delete mode 100644 website/src/pages/ru/token-api/mcp/_meta.js
 delete mode 100644 website/src/pages/ru/token-api/mcp/claude.mdx
 delete mode 100644 website/src/pages/ru/token-api/mcp/cline.mdx
 delete mode 100644 website/src/pages/ru/token-api/mcp/cursor.mdx
 create mode 100644 website/src/pages/ru/token-api/svm/_meta.js
 create mode 100644 website/src/pages/ru/token-api/svm/get-balances-svm.mdx
 create mode 100644 website/src/pages/ru/token-api/svm/get-swaps-svm.mdx
 create mode 100644 website/src/pages/ru/token-api/svm/get-transfers-svm.mdx
 create mode 100644 website/src/pages/sv/ai-suite/_meta-titles.json
 create mode 100644 website/src/pages/sv/ai-suite/_meta.js
 create mode 100644 website/src/pages/sv/ai-suite/ai-introduction.mdx
 create mode 100644 website/src/pages/sv/ai-suite/graph-assistant/_meta.js
 create mode 100644 website/src/pages/sv/ai-suite/graph-assistant/faq.mdx
 create mode 100644 website/src/pages/sv/ai-suite/graph-assistant/how-to-guide.mdx
 create mode 100644 website/src/pages/sv/ai-suite/graph-assistant/introduction.mdx
 create mode 100644 website/src/pages/sv/ai-suite/graph-assistant/quick-start.mdx
 create mode 100644 website/src/pages/sv/ai-suite/subgraph-mcp/_meta.js
 create mode 100644 website/src/pages/sv/ai-suite/subgraph-mcp/claude.mdx
 create mode 100644 website/src/pages/sv/ai-suite/subgraph-mcp/cline.mdx
 create mode 100644 website/src/pages/sv/ai-suite/subgraph-mcp/cursor.mdx
 create mode 100644 website/src/pages/sv/ai-suite/subgraph-mcp/introduction.mdx
 create mode 100644 website/src/pages/sv/ai-suite/token-api-mcp/_meta.js
 create mode 100644 website/src/pages/sv/ai-suite/token-api-mcp/claude.mdx
 create mode 100644 website/src/pages/sv/ai-suite/token-api-mcp/cline.mdx
 create mode 100644 website/src/pages/sv/ai-suite/token-api-mcp/cursor.mdx
 create mode 100644 website/src/pages/sv/ai-suite/token-api-mcp/introduction.mdx
 delete mode 100644 website/src/pages/sv/resources/claude-mcp.mdx
 delete mode 100644 website/src/pages/sv/subgraphs/mcp/_meta.js
 delete mode 100644 website/src/pages/sv/subgraphs/mcp/claude.mdx
 delete mode 100644 website/src/pages/sv/subgraphs/mcp/cline.mdx
 delete mode 100644 website/src/pages/sv/subgraphs/mcp/cursor.mdx
 delete mode 100644 website/src/pages/sv/token-api/mcp/_meta.js
 create mode 100644 website/src/pages/sv/token-api/svm/_meta.js
 create mode 100644 website/src/pages/sv/token-api/svm/get-balances-svm.mdx
 create mode 100644 website/src/pages/sv/token-api/svm/get-swaps-svm.mdx
 create mode 100644 website/src/pages/sv/token-api/svm/get-transfers-svm.mdx
 create mode 100644 website/src/pages/tr/ai-suite/_meta-titles.json
 create mode 100644 website/src/pages/tr/ai-suite/_meta.js
 create mode 100644 website/src/pages/tr/ai-suite/ai-introduction.mdx
 create mode 100644 website/src/pages/tr/ai-suite/graph-assistant/_meta.js
 create mode 100644 website/src/pages/tr/ai-suite/graph-assistant/faq.mdx
 create mode 100644 website/src/pages/tr/ai-suite/graph-assistant/how-to-guide.mdx
 create mode 100644 website/src/pages/tr/ai-suite/graph-assistant/introduction.mdx
 create mode 100644 website/src/pages/tr/ai-suite/graph-assistant/quick-start.mdx
 create mode 100644 website/src/pages/tr/ai-suite/subgraph-mcp/_meta.js
 create mode 100644 website/src/pages/tr/ai-suite/subgraph-mcp/claude.mdx
 create mode 100644 website/src/pages/tr/ai-suite/subgraph-mcp/cline.mdx
 create mode 100644 website/src/pages/tr/ai-suite/subgraph-mcp/cursor.mdx
 create mode 100644 website/src/pages/tr/ai-suite/subgraph-mcp/introduction.mdx
 create mode 100644 website/src/pages/tr/ai-suite/token-api-mcp/_meta.js
 create mode 100644 website/src/pages/tr/ai-suite/token-api-mcp/claude.mdx
 create mode 100644 website/src/pages/tr/ai-suite/token-api-mcp/cline.mdx
 create mode 100644 website/src/pages/tr/ai-suite/token-api-mcp/cursor.mdx
 create mode 100644 website/src/pages/tr/ai-suite/token-api-mcp/introduction.mdx
 delete mode 100644 website/src/pages/tr/resources/claude-mcp.mdx
 delete mode 100644 website/src/pages/tr/subgraphs/mcp/_meta.js
 delete mode 100644 website/src/pages/tr/subgraphs/mcp/claude.mdx
 delete mode 100644 website/src/pages/tr/subgraphs/mcp/cline.mdx
 delete mode 100644 website/src/pages/tr/subgraphs/mcp/cursor.mdx
 delete mode 100644 website/src/pages/tr/token-api/mcp/_meta.js
 create mode 100644 website/src/pages/tr/token-api/svm/_meta.js
 create mode 100644 website/src/pages/tr/token-api/svm/get-balances-svm.mdx
 create mode 100644 website/src/pages/tr/token-api/svm/get-swaps-svm.mdx
 create mode 100644 website/src/pages/tr/token-api/svm/get-transfers-svm.mdx
 create mode 100644 website/src/pages/uk/ai-suite/_meta-titles.json
 create mode 100644 website/src/pages/uk/ai-suite/_meta.js
 create mode 100644 website/src/pages/uk/ai-suite/ai-introduction.mdx
 create mode 100644 website/src/pages/uk/ai-suite/graph-assistant/_meta.js
 create mode 100644 website/src/pages/uk/ai-suite/graph-assistant/faq.mdx
 create mode 100644 website/src/pages/uk/ai-suite/graph-assistant/how-to-guide.mdx
 create mode 100644 website/src/pages/uk/ai-suite/graph-assistant/introduction.mdx
 create mode 100644 website/src/pages/uk/ai-suite/graph-assistant/quick-start.mdx
 create mode 100644 website/src/pages/uk/ai-suite/subgraph-mcp/_meta.js
 create mode 100644 website/src/pages/uk/ai-suite/subgraph-mcp/claude.mdx
 create mode 100644 website/src/pages/uk/ai-suite/subgraph-mcp/cline.mdx
 create mode 100644 website/src/pages/uk/ai-suite/subgraph-mcp/cursor.mdx
 create mode 100644 website/src/pages/uk/ai-suite/subgraph-mcp/introduction.mdx
 create mode 100644 website/src/pages/uk/ai-suite/token-api-mcp/_meta.js
 create mode 100644 website/src/pages/uk/ai-suite/token-api-mcp/claude.mdx
 create mode 100644 website/src/pages/uk/ai-suite/token-api-mcp/cline.mdx
 create mode 100644 website/src/pages/uk/ai-suite/token-api-mcp/cursor.mdx
 create mode 100644 website/src/pages/uk/ai-suite/token-api-mcp/introduction.mdx
 delete mode 100644 website/src/pages/uk/resources/claude-mcp.mdx
 delete mode 100644 website/src/pages/uk/subgraphs/mcp/_meta.js
 delete mode 100644 website/src/pages/uk/subgraphs/mcp/claude.mdx
 delete mode 100644 website/src/pages/uk/subgraphs/mcp/cline.mdx
 delete mode 100644 website/src/pages/uk/subgraphs/mcp/cursor.mdx
 delete mode 100644 website/src/pages/uk/token-api/mcp/_meta.js
 create mode 100644 website/src/pages/uk/token-api/svm/_meta.js
 create mode 100644 website/src/pages/uk/token-api/svm/get-balances-svm.mdx
 create mode 100644 website/src/pages/uk/token-api/svm/get-swaps-svm.mdx
 create mode 100644 website/src/pages/uk/token-api/svm/get-transfers-svm.mdx
 create mode 100644 website/src/pages/ur/ai-suite/_meta-titles.json
 create mode 100644 website/src/pages/ur/ai-suite/_meta.js
 create mode 100644 website/src/pages/ur/ai-suite/ai-introduction.mdx
 create mode 100644 website/src/pages/ur/ai-suite/graph-assistant/_meta.js
 create mode 100644 website/src/pages/ur/ai-suite/graph-assistant/faq.mdx
 create mode 100644 website/src/pages/ur/ai-suite/graph-assistant/how-to-guide.mdx
 create mode 100644 website/src/pages/ur/ai-suite/graph-assistant/introduction.mdx
 create mode 100644 website/src/pages/ur/ai-suite/graph-assistant/quick-start.mdx
 create mode 100644 website/src/pages/ur/ai-suite/subgraph-mcp/_meta.js
 create mode 100644 website/src/pages/ur/ai-suite/subgraph-mcp/claude.mdx
 create mode 100644 website/src/pages/ur/ai-suite/subgraph-mcp/cline.mdx
 create mode 100644 website/src/pages/ur/ai-suite/subgraph-mcp/cursor.mdx
 create mode 100644 website/src/pages/ur/ai-suite/subgraph-mcp/introduction.mdx
 create mode 100644 website/src/pages/ur/ai-suite/token-api-mcp/_meta.js
 create mode 100644 website/src/pages/ur/ai-suite/token-api-mcp/claude.mdx
 create mode 100644 website/src/pages/ur/ai-suite/token-api-mcp/cline.mdx
 create mode 100644 website/src/pages/ur/ai-suite/token-api-mcp/cursor.mdx
 create mode 100644 website/src/pages/ur/ai-suite/token-api-mcp/introduction.mdx
 delete mode 100644 website/src/pages/ur/resources/claude-mcp.mdx
 delete mode 100644 website/src/pages/ur/subgraphs/mcp/_meta.js
 delete mode 100644 website/src/pages/ur/subgraphs/mcp/claude.mdx
 delete mode 100644 website/src/pages/ur/subgraphs/mcp/cline.mdx
 delete mode 100644 website/src/pages/ur/subgraphs/mcp/cursor.mdx
 delete mode 100644 website/src/pages/ur/token-api/mcp/_meta.js
 delete mode 100644 website/src/pages/ur/token-api/mcp/claude.mdx
 delete mode 100644 website/src/pages/ur/token-api/mcp/cline.mdx
 delete mode 100644 website/src/pages/ur/token-api/mcp/cursor.mdx
 create mode 100644 website/src/pages/ur/token-api/svm/_meta.js
 create mode 100644 website/src/pages/ur/token-api/svm/get-balances-svm.mdx
 create mode 100644 website/src/pages/ur/token-api/svm/get-swaps-svm.mdx
 create mode 100644 website/src/pages/ur/token-api/svm/get-transfers-svm.mdx
 create mode 100644 website/src/pages/vi/ai-suite/_meta-titles.json
 create mode 100644 website/src/pages/vi/ai-suite/_meta.js
 create mode 100644 website/src/pages/vi/ai-suite/ai-introduction.mdx
 create mode 100644 website/src/pages/vi/ai-suite/graph-assistant/_meta.js
 create mode 100644 website/src/pages/vi/ai-suite/graph-assistant/faq.mdx
 create mode 100644 website/src/pages/vi/ai-suite/graph-assistant/how-to-guide.mdx
 create mode 100644 website/src/pages/vi/ai-suite/graph-assistant/introduction.mdx
 create mode 100644 website/src/pages/vi/ai-suite/graph-assistant/quick-start.mdx
 create mode 100644 website/src/pages/vi/ai-suite/subgraph-mcp/_meta.js
 create mode 100644 website/src/pages/vi/ai-suite/subgraph-mcp/claude.mdx
 create mode 100644 website/src/pages/vi/ai-suite/subgraph-mcp/cline.mdx
 create mode 100644 website/src/pages/vi/ai-suite/subgraph-mcp/cursor.mdx
 create mode 100644 website/src/pages/vi/ai-suite/subgraph-mcp/introduction.mdx
 create mode 100644 website/src/pages/vi/ai-suite/token-api-mcp/_meta.js
 create mode 100644 website/src/pages/vi/ai-suite/token-api-mcp/claude.mdx
 create mode 100644 website/src/pages/vi/ai-suite/token-api-mcp/cline.mdx
 create mode 100644 website/src/pages/vi/ai-suite/token-api-mcp/cursor.mdx
 create mode 100644 website/src/pages/vi/ai-suite/token-api-mcp/introduction.mdx
 delete mode 100644 website/src/pages/vi/resources/claude-mcp.mdx
 delete mode 100644 website/src/pages/vi/subgraphs/mcp/_meta.js
 delete mode 100644 website/src/pages/vi/subgraphs/mcp/claude.mdx
 delete mode 100644 website/src/pages/vi/subgraphs/mcp/cline.mdx
 delete mode 100644 website/src/pages/vi/subgraphs/mcp/cursor.mdx
 delete mode 100644 website/src/pages/vi/token-api/mcp/_meta.js
 create mode 100644 website/src/pages/vi/token-api/svm/_meta.js
 create mode 100644 website/src/pages/vi/token-api/svm/get-balances-svm.mdx
 create mode 100644 website/src/pages/vi/token-api/svm/get-swaps-svm.mdx
 create mode 100644 website/src/pages/vi/token-api/svm/get-transfers-svm.mdx
 create mode 100644 website/src/pages/zh/ai-suite/_meta-titles.json
 create mode 100644 website/src/pages/zh/ai-suite/_meta.js
 create mode 100644 website/src/pages/zh/ai-suite/ai-introduction.mdx
 create mode 100644 website/src/pages/zh/ai-suite/graph-assistant/_meta.js
 create mode 100644 website/src/pages/zh/ai-suite/graph-assistant/faq.mdx
 create mode 100644 website/src/pages/zh/ai-suite/graph-assistant/how-to-guide.mdx
 create mode 100644 website/src/pages/zh/ai-suite/graph-assistant/introduction.mdx
 create mode 100644 website/src/pages/zh/ai-suite/graph-assistant/quick-start.mdx
 create mode 100644 website/src/pages/zh/ai-suite/subgraph-mcp/_meta.js
 create mode 100644 website/src/pages/zh/ai-suite/subgraph-mcp/claude.mdx
 create mode 100644 website/src/pages/zh/ai-suite/subgraph-mcp/cline.mdx
 create mode 100644 website/src/pages/zh/ai-suite/subgraph-mcp/cursor.mdx
 create mode 100644 website/src/pages/zh/ai-suite/subgraph-mcp/introduction.mdx
 create mode 100644 website/src/pages/zh/ai-suite/token-api-mcp/_meta.js
 create mode 100644 website/src/pages/zh/ai-suite/token-api-mcp/claude.mdx
 create mode 100644 website/src/pages/zh/ai-suite/token-api-mcp/cline.mdx
 create mode 100644 website/src/pages/zh/ai-suite/token-api-mcp/cursor.mdx
 create mode 100644 website/src/pages/zh/ai-suite/token-api-mcp/introduction.mdx
 delete mode 100644 website/src/pages/zh/resources/claude-mcp.mdx
 delete mode 100644 website/src/pages/zh/subgraphs/mcp/_meta.js
 delete mode 100644 website/src/pages/zh/subgraphs/mcp/claude.mdx
 delete mode 100644 website/src/pages/zh/subgraphs/mcp/cline.mdx
 delete mode 100644 website/src/pages/zh/subgraphs/mcp/cursor.mdx
 delete mode 100644 website/src/pages/zh/token-api/mcp/_meta.js
 delete mode 100644 website/src/pages/zh/token-api/mcp/claude.mdx
 delete mode 100644 website/src/pages/zh/token-api/mcp/cline.mdx
 delete mode 100644 website/src/pages/zh/token-api/mcp/cursor.mdx
 create mode 100644 website/src/pages/zh/token-api/svm/_meta.js
 create mode 100644 website/src/pages/zh/token-api/svm/get-balances-svm.mdx
 create mode 100644 website/src/pages/zh/token-api/svm/get-swaps-svm.mdx
 create mode 100644 website/src/pages/zh/token-api/svm/get-transfers-svm.mdx

diff --git a/package.json b/package.json
index ef163fc97e95..1e10dc53a916 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
   "name": "graph-docs",
   "private": true,
   "version": "1.0.0",
-  "packageManager": "pnpm@10.12.3",
+  "packageManager": "pnpm@10.13.1",
   "scripts": {
     "dev": "turbo run dev",
     "build": "NODE_OPTIONS='--max-old-space-size=8192' turbo run build",
@@ -21,11 +21,11 @@
   },
   "devDependencies": {
     "@edgeandnode/eslint-config": "^2.0.3",
-    "@types/node": "^22.15.33",
+    "@types/node": "^22.16.2",
     "eslint": "^8.57.1",
-    "eslint-plugin-mdx": "^3.5.0",
-    "prettier": "^3.6.1",
-    "prettier-plugin-tailwindcss": "^0.6.13",
+    "eslint-plugin-mdx": "^3.6.2",
+    "prettier": "^3.6.2",
+    "prettier-plugin-tailwindcss": "^0.6.14",
     "remark-frontmatter": "^5.0.0",
     "remark-lint-first-heading-level": "^4.0.1",
     "remark-lint-heading-increment": "^4.0.1",
diff --git a/packages/og-image/package.json b/packages/og-image/package.json
index 6666c73f6868..00039ec94383 100644
--- a/packages/og-image/package.json
+++ b/packages/og-image/package.json
@@ -16,13 +16,13 @@
     "yoga-wasm-web": "^0.3.3"
   },
   "devDependencies": {
-    "@cloudflare/workers-types": "^4.20250620.0",
+    "@cloudflare/workers-types": "^4.20250710.0",
     "@types/react": "^18.3.23",
     "jest-image-snapshot": "^6.5.1",
     "tsx": "^4.20.3",
     "typescript": "^5.8.3",
     "vitest": "^2.1.9",
-    "wrangler": "^3.114.10"
+    "wrangler": "^3.114.11"
   },
   "sideEffects": false
 }
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index ef4e59e9d41e..6700a4587de8 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -15,20 +15,20 @@ importers:
         specifier: ^2.0.3
         version: 2.0.3(eslint@8.57.1)(typescript@5.8.3)
       '@types/node':
-        specifier: ^22.15.33
-        version: 22.15.33
+        specifier: ^22.16.2
+        version: 22.16.2
       eslint:
         specifier: ^8.57.1
         version: 8.57.1
       eslint-plugin-mdx:
-        specifier: ^3.5.0
-        version: 3.5.0(eslint@8.57.1)
+        specifier: ^3.6.2
+        version: 3.6.2(eslint@8.57.1)
       prettier:
-        specifier: ^3.6.1
-        version: 3.6.1
+        specifier: ^3.6.2
+        version: 3.6.2
       prettier-plugin-tailwindcss:
-        specifier: ^0.6.13
-        version: 0.6.13(prettier@3.6.1)
+        specifier: ^0.6.14
+        version: 0.6.14(prettier@3.6.2)
       remark-frontmatter:
         specifier: ^5.0.0
         version: 5.0.0
@@ -67,8 +67,8 @@ importers:
         version: 0.3.3
     devDependencies:
       '@cloudflare/workers-types':
-        specifier: ^4.20250620.0
-        version: 4.20250620.0
+        specifier: ^4.20250710.0
+        version: 4.20250710.0
       '@types/react':
         specifier: ^18.3.23
         version: 18.3.23
@@ -83,10 +83,10 @@ importers:
         version: 5.8.3
       vitest:
         specifier: ^2.1.9
-        version: 2.1.9(@types/node@22.15.33)(jsdom@24.1.3)
+        version: 2.1.9(@types/node@22.16.2)(jsdom@24.1.3)
       wrangler:
-        specifier: ^3.114.10
-        version: 3.114.10(@cloudflare/workers-types@4.20250620.0)
+        specifier: ^3.114.11
+        version: 3.114.11(@cloudflare/workers-types@4.20250710.0)
 
   packages/remark-lint-restrict-elements:
     dependencies:
@@ -101,16 +101,16 @@ importers:
     dependencies:
       '@docsearch/react':
         specifier: ^3.9.0
-        version: 3.9.0(@algolia/client-search@5.29.0)(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)
+        version: 3.9.0(@algolia/client-search@5.32.0)(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)
       '@edgeandnode/common':
         specifier: ^7.0.4
         version: 7.0.4(hardhat@2.25.0(typescript@5.8.3))
       '@edgeandnode/gds':
-        specifier: ^6.6.2
-        version: 6.6.2(@emotion/is-prop-valid@0.8.8)(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(@theme-ui/core@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(dayjs@1.11.13)(hardhat@2.25.0(typescript@5.8.3))(next@14.2.30(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)(theme-ui@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(typescript@5.8.3)
+        specifier: ^6.7.0
+        version: 6.7.0(@emotion/is-prop-valid@0.8.8)(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(@theme-ui/core@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(dayjs@1.11.13)(hardhat@2.25.0(typescript@5.8.3))(next@14.2.30(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)(theme-ui@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(typescript@5.8.3)
       '@edgeandnode/go':
-        specifier: ^10.2.3
-        version: 10.2.3(f31233e6aec53dd14ecd91b56887af79)
+        specifier: ^10.3.0
+        version: 10.3.0(df7a60f2b2bbf39644b6c2833d03ec2d)
       '@emotion/react':
         specifier: ^11.14.0
         version: 11.14.0(@types/react@18.3.23)(react@18.3.1)
@@ -148,11 +148,11 @@ importers:
         specifier: ^13.2.0
         version: 13.2.0
       mixpanel-browser:
-        specifier: ^2.65.0
-        version: 2.65.0
+        specifier: ^2.66.0
+        version: 2.66.0
       motion:
-        specifier: ^12.19.1
-        version: 12.19.1(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+        specifier: ^12.23.1
+        version: 12.23.1(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       next:
         specifier: ^14.2.30
         version: 14.2.30(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -193,15 +193,15 @@ importers:
         specifier: ^6.0.3
         version: 6.0.3
       zod:
-        specifier: ^3.25.67
-        version: 3.25.67
+        specifier: ^3.25.76
+        version: 3.25.76
     devDependencies:
       '@types/hast':
         specifier: ^3.0.4
         version: 3.0.4
       '@types/lodash':
-        specifier: ^4.17.19
-        version: 4.17.19
+        specifier: ^4.17.20
+        version: 4.17.20
       '@types/mdast':
         specifier: ^4.0.4
         version: 4.0.4
@@ -209,8 +209,8 @@ importers:
         specifier: ^2.60.0
         version: 2.60.0
       '@types/node':
-        specifier: ^22.15.33
-        version: 22.15.33
+        specifier: ^22.16.2
+        version: 22.16.2
       '@types/react':
         specifier: ^18.3.23
         version: 18.3.23
@@ -267,56 +267,56 @@ packages:
       '@algolia/client-search': '>= 4.9.1 < 6'
       algoliasearch: '>= 4.9.1 < 6'
 
-  '@algolia/client-abtesting@5.29.0':
-    resolution: {integrity: sha512-AM/6LYMSTnZvAT5IarLEKjYWOdV+Fb+LVs8JRq88jn8HH6bpVUtjWdOZXqX1hJRXuCAY8SdQfb7F8uEiMNXdYQ==}
+  '@algolia/client-abtesting@5.32.0':
+    resolution: {integrity: sha512-HG/6Eib6DnJYm/B2ijWFXr4txca/YOuA4K7AsEU0JBrOZSB+RU7oeDyNBPi3c0v0UDDqlkBqM3vBU/auwZlglA==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/client-analytics@5.29.0':
-    resolution: {integrity: sha512-La34HJh90l0waw3wl5zETO8TuukeUyjcXhmjYZL3CAPLggmKv74mobiGRIb+mmBENybiFDXf/BeKFLhuDYWMMQ==}
+  '@algolia/client-analytics@5.32.0':
+    resolution: {integrity: sha512-8Y9MLU72WFQOW3HArYv16+Wvm6eGmsqbxxM1qxtm0hvSASJbxCm+zQAZe5stqysTlcWo4BJ82KEH1PfgHbJAmQ==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/client-common@5.29.0':
-    resolution: {integrity: sha512-T0lzJH/JiCxQYtCcnWy7Jf1w/qjGDXTi2npyF9B9UsTvXB97GRC6icyfXxe21mhYvhQcaB1EQ/J2575FXxi2rA==}
+  '@algolia/client-common@5.32.0':
+    resolution: {integrity: sha512-w8L+rgyXMCPBKmEdOT+RfgMrF0mT6HK60vPYWLz8DBs/P7yFdGo7urn99XCJvVLMSKXrIbZ2FMZ/i50nZTXnuQ==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/client-insights@5.29.0':
-    resolution: {integrity: sha512-A39F1zmHY9aev0z4Rt3fTLcGN5AG1VsVUkVWy6yQG5BRDScktH+U5m3zXwThwniBTDV1HrPgiGHZeWb67GkR2Q==}
+  '@algolia/client-insights@5.32.0':
+    resolution: {integrity: sha512-AdWfynhUeX7jz/LTiFU3wwzJembTbdLkQIOLs4n7PyBuxZ3jz4azV1CWbIP8AjUOFmul6uXbmYza+KqyS5CzOA==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/client-personalization@5.29.0':
-    resolution: {integrity: sha512-ibxmh2wKKrzu5du02gp8CLpRMeo+b/75e4ORct98CT7mIxuYFXowULwCd6cMMkz/R0LpKXIbTUl15UL5soaiUQ==}
+  '@algolia/client-personalization@5.32.0':
+    resolution: {integrity: sha512-bTupJY4xzGZYI4cEQcPlSjjIEzMvv80h7zXGrXY1Y0KC/n/SLiMv84v7Uy+B6AG1Kiy9FQm2ADChBLo1uEhGtQ==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/client-query-suggestions@5.29.0':
-    resolution: {integrity: sha512-VZq4/AukOoJC2WSwF6J5sBtt+kImOoBwQc1nH3tgI+cxJBg7B77UsNC+jT6eP2dQCwGKBBRTmtPLUTDDnHpMgA==}
+  '@algolia/client-query-suggestions@5.32.0':
+    resolution: {integrity: sha512-if+YTJw1G3nDKL2omSBjQltCHUQzbaHADkcPQrGFnIGhVyHU3Dzq4g46uEv8mrL5sxL8FjiS9LvekeUlL2NRqw==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/client-search@5.29.0':
-    resolution: {integrity: sha512-cZ0Iq3OzFUPpgszzDr1G1aJV5UMIZ4VygJ2Az252q4Rdf5cQMhYEIKArWY/oUjMhQmosM8ygOovNq7gvA9CdCg==}
+  '@algolia/client-search@5.32.0':
+    resolution: {integrity: sha512-kmK5nVkKb4DSUgwbveMKe4X3xHdMsPsOVJeEzBvFJ+oS7CkBPmpfHAEq+CcmiPJs20YMv6yVtUT9yPWL5WgAhg==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/ingestion@1.29.0':
-    resolution: {integrity: sha512-scBXn0wO5tZCxmO6evfa7A3bGryfyOI3aoXqSQBj5SRvNYXaUlFWQ/iKI70gRe/82ICwE0ICXbHT/wIvxOW7vw==}
+  '@algolia/ingestion@1.32.0':
+    resolution: {integrity: sha512-PZTqjJbx+fmPuT2ud1n4vYDSF1yrT//vOGI9HNYKNA0PM0xGUBWigf5gRivHsXa3oBnUlTyHV9j7Kqx5BHbVHQ==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/monitoring@1.29.0':
-    resolution: {integrity: sha512-FGWWG9jLFhsKB7YiDjM2dwQOYnWu//7Oxrb2vT96N7+s+hg1mdHHfHNRyEudWdxd4jkMhBjeqNA21VbTiOIPVg==}
+  '@algolia/monitoring@1.32.0':
+    resolution: {integrity: sha512-kYYoOGjvNQAmHDS1v5sBj+0uEL9RzYqH/TAdq8wmcV+/22weKt/fjh+6LfiqkS1SCZFYYrwGnirrUhUM36lBIQ==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/recommend@5.29.0':
-    resolution: {integrity: sha512-xte5+mpdfEARAu61KXa4ewpjchoZuJlAlvQb8ptK6hgHlBHDnYooy1bmOFpokaAICrq/H9HpoqNUX71n+3249A==}
+  '@algolia/recommend@5.32.0':
+    resolution: {integrity: sha512-jyIBLdskjPAL7T1g57UMfUNx+PzvYbxKslwRUKBrBA6sNEsYCFdxJAtZSLUMmw6MC98RDt4ksmEl5zVMT5bsuw==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/requester-browser-xhr@5.29.0':
-    resolution: {integrity: sha512-og+7Em75aPHhahEUScq2HQ3J7ULN63Levtd87BYMpn6Im5d5cNhaC4QAUsXu6LWqxRPgh4G+i+wIb6tVhDhg2A==}
+  '@algolia/requester-browser-xhr@5.32.0':
+    resolution: {integrity: sha512-eDp14z92Gt6JlFgiexImcWWH+Lk07s/FtxcoDaGrE4UVBgpwqOO6AfQM6dXh1pvHxlDFbMJihHc/vj3gBhPjqQ==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/requester-fetch@5.29.0':
-    resolution: {integrity: sha512-JCxapz7neAy8hT/nQpCvOrI5JO8VyQ1kPvBiaXWNC1prVq0UMYHEL52o1BsPvtXfdQ7BVq19OIq6TjOI06mV/w==}
+  '@algolia/requester-fetch@5.32.0':
+    resolution: {integrity: sha512-rnWVglh/K75hnaLbwSc2t7gCkbq1ldbPgeIKDUiEJxZ4mlguFgcltWjzpDQ/t1LQgxk9HdIFcQfM17Hid3aQ6Q==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/requester-node-http@5.29.0':
-    resolution: {integrity: sha512-lVBD81RBW5VTdEYgnzCz7Pf9j2H44aymCP+/eHGJu4vhU+1O8aKf3TVBgbQr5UM6xoe8IkR/B112XY6YIG2vtg==}
+  '@algolia/requester-node-http@5.32.0':
+    resolution: {integrity: sha512-LbzQ04+VLkzXY4LuOzgyjqEv/46Gwrk55PldaglMJ4i4eDXSRXGKkwJpXFwsoU+c1HMQlHIyjJBhrfsfdyRmyQ==}
     engines: {node: '>= 14.0.0'}
 
   '@alloc/quick-lru@5.2.0':
@@ -340,8 +340,12 @@ packages:
     resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==}
     engines: {node: '>=6.9.0'}
 
-  '@babel/generator@7.27.5':
-    resolution: {integrity: sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw==}
+  '@babel/generator@7.28.0':
+    resolution: {integrity: sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==}
+    engines: {node: '>=6.9.0'}
+
+  '@babel/helper-globals@7.28.0':
+    resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==}
     engines: {node: '>=6.9.0'}
 
   '@babel/helper-module-imports@7.27.1':
@@ -356,8 +360,8 @@ packages:
     resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==}
     engines: {node: '>=6.9.0'}
 
-  '@babel/parser@7.27.5':
-    resolution: {integrity: sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==}
+  '@babel/parser@7.28.0':
+    resolution: {integrity: sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==}
     engines: {node: '>=6.0.0'}
     hasBin: true
 
@@ -369,12 +373,12 @@ packages:
     resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==}
     engines: {node: '>=6.9.0'}
 
-  '@babel/traverse@7.27.4':
-    resolution: {integrity: sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA==}
+  '@babel/traverse@7.28.0':
+    resolution: {integrity: sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==}
     engines: {node: '>=6.9.0'}
 
-  '@babel/types@7.27.6':
-    resolution: {integrity: sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==}
+  '@babel/types@7.28.0':
+    resolution: {integrity: sha512-jYnje+JyZG5YThjHiF28oT4SIZLnYOcSBb6+SDaFIyzDVSkXQmQQYclJ2R+YxcdmK0AX6x1E5OQNtuh3jHDrUg==}
     engines: {node: '>=6.9.0'}
 
   '@base-ui-components/react@1.0.0-alpha.7':
@@ -453,8 +457,8 @@ packages:
     cpu: [x64]
     os: [win32]
 
-  '@cloudflare/workers-types@4.20250620.0':
-    resolution: {integrity: sha512-EVvRB/DJEm6jhdKg+A4Qm4y/ry1cIvylSgSO3/f/Bv161vldDRxaXM2YoQQWFhLOJOw0qtrHsKOD51KYxV1XCw==}
+  '@cloudflare/workers-types@4.20250710.0':
+    resolution: {integrity: sha512-o055XFgW/ZinLnxDDlm4Q4b2yEmP2x5kekOka/E86blax/RGXj51mBQV/Co3VNog1CePzOA9S/CEOthoIirWRA==}
 
   '@corex/deepmerge@4.0.43':
     resolution: {integrity: sha512-N8uEMrMPL0cu/bdboEWpQYb/0i2K5Qn8eCsxzOmxSggJbbQte7ljMRoXm917AbntqTGOzdTu+vP3KOOzoC70HQ==}
@@ -528,8 +532,8 @@ packages:
       typescript:
         optional: true
 
-  '@edgeandnode/gds@6.6.2':
-    resolution: {integrity: sha512-lXr4YQpnTitq+mqvRXIM6i2W36PPjtC/AHuPQsVK7uJbLXQ392ghuzHASFrtT7/XjY6nZ3vHg0zktVexFimM5Q==}
+  '@edgeandnode/gds@6.7.0':
+    resolution: {integrity: sha512-mQNzBOkXf0QytAZwKRkibdGmUhjzJNFvEOh3mtlk4t1lrLHyZy3lfxmj9DZYcqTjGKhcy92hV03qVncsZLCKyw==}
     peerDependencies:
       '@emotion/react': ^11
       dayjs: ^1.11
@@ -541,12 +545,12 @@ packages:
       next:
         optional: true
 
-  '@edgeandnode/go@10.2.3':
-    resolution: {integrity: sha512-D0ouLK91Wr4ZA7Vz+ZF3F3msMxm6NcVi1K3YKBEPuHYn43wt625ON73YQZvTv6VJzZEzfUsxaFcUVbm2qS11tA==}
+  '@edgeandnode/go@10.3.0':
+    resolution: {integrity: sha512-qd04ZJcHXDRDsFTgM/hjJwyriBQzpFCIB6zS/ArG61dTdvYWZfU4ugbsm+WVTrf/gxOEl9EFWej3oazM6gwWkg==}
     peerDependencies:
       '@edgeandnode/common': ^7.0.4
       '@edgeandnode/ens': ^2.3.0
-      '@edgeandnode/gds': ^6.6.2
+      '@edgeandnode/gds': ^6.7.0
       '@emotion/react': ^11
       '@tanstack/react-query': ^5
       graphql: '>=16.9'
@@ -559,14 +563,14 @@ packages:
       next:
         optional: true
 
-  '@emnapi/core@1.4.3':
-    resolution: {integrity: sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g==}
+  '@emnapi/core@1.4.4':
+    resolution: {integrity: sha512-A9CnAbC6ARNMKcIcrQwq6HeHCjpcBZ5wSx4U01WXCqEKlrzB9F9315WDNHkrs2xbx7YjjSxbUYxuN6EQzpcY2g==}
 
-  '@emnapi/runtime@1.4.3':
-    resolution: {integrity: sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==}
+  '@emnapi/runtime@1.4.4':
+    resolution: {integrity: sha512-hHyapA4A3gPaDCNfiqyZUStTMqIkKRshqPIuDOXv1hcBnD4U3l8cP0T1HMCfGRxQ6V64TGCcoswChANyOAwbQg==}
 
-  '@emnapi/wasi-threads@1.0.2':
-    resolution: {integrity: sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA==}
+  '@emnapi/wasi-threads@1.0.3':
+    resolution: {integrity: sha512-8K5IFFsQqF9wQNJptGbS6FNKgUTsSRYnTqNCG1vPP8jFdjSv18n2mQfJpkt2Oibo9iBEzcDnDxNwKTzC7svlJw==}
 
   '@emotion/babel-plugin@11.13.5':
     resolution: {integrity: sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==}
@@ -652,8 +656,8 @@ packages:
     cpu: [ppc64]
     os: [aix]
 
-  '@esbuild/aix-ppc64@0.25.5':
-    resolution: {integrity: sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==}
+  '@esbuild/aix-ppc64@0.25.6':
+    resolution: {integrity: sha512-ShbM/3XxwuxjFiuVBHA+d3j5dyac0aEVVq1oluIDf71hUw0aRF59dV/efUsIwFnR6m8JNM2FjZOzmaZ8yG61kw==}
     engines: {node: '>=18'}
     cpu: [ppc64]
     os: [aix]
@@ -670,8 +674,8 @@ packages:
     cpu: [arm64]
     os: [android]
 
-  '@esbuild/android-arm64@0.25.5':
-    resolution: {integrity: sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==}
+  '@esbuild/android-arm64@0.25.6':
+    resolution: {integrity: sha512-hd5zdUarsK6strW+3Wxi5qWws+rJhCCbMiC9QZyzoxfk5uHRIE8T287giQxzVpEvCwuJ9Qjg6bEjcRJcgfLqoA==}
     engines: {node: '>=18'}
     cpu: [arm64]
     os: [android]
@@ -688,8 +692,8 @@ packages:
     cpu: [arm]
     os: [android]
 
-  '@esbuild/android-arm@0.25.5':
-    resolution: {integrity: sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==}
+  '@esbuild/android-arm@0.25.6':
+    resolution: {integrity: sha512-S8ToEOVfg++AU/bHwdksHNnyLyVM+eMVAOf6yRKFitnwnbwwPNqKr3srzFRe7nzV69RQKb5DgchIX5pt3L53xg==}
     engines: {node: '>=18'}
     cpu: [arm]
     os: [android]
@@ -706,8 +710,8 @@ packages:
     cpu: [x64]
     os: [android]
 
-  '@esbuild/android-x64@0.25.5':
-    resolution: {integrity: sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==}
+  '@esbuild/android-x64@0.25.6':
+    resolution: {integrity: sha512-0Z7KpHSr3VBIO9A/1wcT3NTy7EB4oNC4upJ5ye3R7taCc2GUdeynSLArnon5G8scPwaU866d3H4BCrE5xLW25A==}
     engines: {node: '>=18'}
     cpu: [x64]
     os: [android]
@@ -724,8 +728,8 @@ packages:
     cpu: [arm64]
     os: [darwin]
 
-  '@esbuild/darwin-arm64@0.25.5':
-    resolution: {integrity: sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==}
+  '@esbuild/darwin-arm64@0.25.6':
+    resolution: {integrity: sha512-FFCssz3XBavjxcFxKsGy2DYK5VSvJqa6y5HXljKzhRZ87LvEi13brPrf/wdyl/BbpbMKJNOr1Sd0jtW4Ge1pAA==}
     engines: {node: '>=18'}
     cpu: [arm64]
     os: [darwin]
@@ -742,8 +746,8 @@ packages:
     cpu: [x64]
     os: [darwin]
 
-  '@esbuild/darwin-x64@0.25.5':
-    resolution: {integrity: sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==}
+  '@esbuild/darwin-x64@0.25.6':
+    resolution: {integrity: sha512-GfXs5kry/TkGM2vKqK2oyiLFygJRqKVhawu3+DOCk7OxLy/6jYkWXhlHwOoTb0WqGnWGAS7sooxbZowy+pK9Yg==}
     engines: {node: '>=18'}
     cpu: [x64]
     os: [darwin]
@@ -760,8 +764,8 @@ packages:
     cpu: [arm64]
     os: [freebsd]
 
-  '@esbuild/freebsd-arm64@0.25.5':
-    resolution: {integrity: sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==}
+  '@esbuild/freebsd-arm64@0.25.6':
+    resolution: {integrity: sha512-aoLF2c3OvDn2XDTRvn8hN6DRzVVpDlj2B/F66clWd/FHLiHaG3aVZjxQX2DYphA5y/evbdGvC6Us13tvyt4pWg==}
     engines: {node: '>=18'}
     cpu: [arm64]
     os: [freebsd]
@@ -778,8 +782,8 @@ packages:
     cpu: [x64]
     os: [freebsd]
 
-  '@esbuild/freebsd-x64@0.25.5':
-    resolution: {integrity: sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==}
+  '@esbuild/freebsd-x64@0.25.6':
+    resolution: {integrity: sha512-2SkqTjTSo2dYi/jzFbU9Plt1vk0+nNg8YC8rOXXea+iA3hfNJWebKYPs3xnOUf9+ZWhKAaxnQNUf2X9LOpeiMQ==}
     engines: {node: '>=18'}
     cpu: [x64]
     os: [freebsd]
@@ -796,8 +800,8 @@ packages:
     cpu: [arm64]
     os: [linux]
 
-  '@esbuild/linux-arm64@0.25.5':
-    resolution: {integrity: sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==}
+  '@esbuild/linux-arm64@0.25.6':
+    resolution: {integrity: sha512-b967hU0gqKd9Drsh/UuAm21Khpoh6mPBSgz8mKRq4P5mVK8bpA+hQzmm/ZwGVULSNBzKdZPQBRT3+WuVavcWsQ==}
     engines: {node: '>=18'}
     cpu: [arm64]
     os: [linux]
@@ -814,8 +818,8 @@ packages:
     cpu: [arm]
     os: [linux]
 
-  '@esbuild/linux-arm@0.25.5':
-    resolution: {integrity: sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==}
+  '@esbuild/linux-arm@0.25.6':
+    resolution: {integrity: sha512-SZHQlzvqv4Du5PrKE2faN0qlbsaW/3QQfUUc6yO2EjFcA83xnwm91UbEEVx4ApZ9Z5oG8Bxz4qPE+HFwtVcfyw==}
     engines: {node: '>=18'}
     cpu: [arm]
     os: [linux]
@@ -832,8 +836,8 @@ packages:
     cpu: [ia32]
     os: [linux]
 
-  '@esbuild/linux-ia32@0.25.5':
-    resolution: {integrity: sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==}
+  '@esbuild/linux-ia32@0.25.6':
+    resolution: {integrity: sha512-aHWdQ2AAltRkLPOsKdi3xv0mZ8fUGPdlKEjIEhxCPm5yKEThcUjHpWB1idN74lfXGnZ5SULQSgtr5Qos5B0bPw==}
     engines: {node: '>=18'}
     cpu: [ia32]
     os: [linux]
@@ -850,8 +854,8 @@ packages:
     cpu: [loong64]
     os: [linux]
 
-  '@esbuild/linux-loong64@0.25.5':
-    resolution: {integrity: sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==}
+  '@esbuild/linux-loong64@0.25.6':
+    resolution: {integrity: sha512-VgKCsHdXRSQ7E1+QXGdRPlQ/e08bN6WMQb27/TMfV+vPjjTImuT9PmLXupRlC90S1JeNNW5lzkAEO/McKeJ2yg==}
     engines: {node: '>=18'}
     cpu: [loong64]
     os: [linux]
@@ -868,8 +872,8 @@ packages:
     cpu: [mips64el]
     os: [linux]
 
-  '@esbuild/linux-mips64el@0.25.5':
-    resolution: {integrity: sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==}
+  '@esbuild/linux-mips64el@0.25.6':
+    resolution: {integrity: sha512-WViNlpivRKT9/py3kCmkHnn44GkGXVdXfdc4drNmRl15zVQ2+D2uFwdlGh6IuK5AAnGTo2qPB1Djppj+t78rzw==}
     engines: {node: '>=18'}
     cpu: [mips64el]
     os: [linux]
@@ -886,8 +890,8 @@ packages:
     cpu: [ppc64]
     os: [linux]
 
-  '@esbuild/linux-ppc64@0.25.5':
-    resolution: {integrity: sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==}
+  '@esbuild/linux-ppc64@0.25.6':
+    resolution: {integrity: sha512-wyYKZ9NTdmAMb5730I38lBqVu6cKl4ZfYXIs31Baf8aoOtB4xSGi3THmDYt4BTFHk7/EcVixkOV2uZfwU3Q2Jw==}
     engines: {node: '>=18'}
     cpu: [ppc64]
     os: [linux]
@@ -904,8 +908,8 @@ packages:
     cpu: [riscv64]
     os: [linux]
 
-  '@esbuild/linux-riscv64@0.25.5':
-    resolution: {integrity: sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==}
+  '@esbuild/linux-riscv64@0.25.6':
+    resolution: {integrity: sha512-KZh7bAGGcrinEj4qzilJ4hqTY3Dg2U82c8bv+e1xqNqZCrCyc+TL9AUEn5WGKDzm3CfC5RODE/qc96OcbIe33w==}
     engines: {node: '>=18'}
     cpu: [riscv64]
     os: [linux]
@@ -922,8 +926,8 @@ packages:
     cpu: [s390x]
     os: [linux]
 
-  '@esbuild/linux-s390x@0.25.5':
-    resolution: {integrity: sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==}
+  '@esbuild/linux-s390x@0.25.6':
+    resolution: {integrity: sha512-9N1LsTwAuE9oj6lHMyyAM+ucxGiVnEqUdp4v7IaMmrwb06ZTEVCIs3oPPplVsnjPfyjmxwHxHMF8b6vzUVAUGw==}
     engines: {node: '>=18'}
     cpu: [s390x]
     os: [linux]
@@ -940,14 +944,14 @@ packages:
     cpu: [x64]
     os: [linux]
 
-  '@esbuild/linux-x64@0.25.5':
-    resolution: {integrity: sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==}
+  '@esbuild/linux-x64@0.25.6':
+    resolution: {integrity: sha512-A6bJB41b4lKFWRKNrWoP2LHsjVzNiaurf7wyj/XtFNTsnPuxwEBWHLty+ZE0dWBKuSK1fvKgrKaNjBS7qbFKig==}
     engines: {node: '>=18'}
     cpu: [x64]
     os: [linux]
 
-  '@esbuild/netbsd-arm64@0.25.5':
-    resolution: {integrity: sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==}
+  '@esbuild/netbsd-arm64@0.25.6':
+    resolution: {integrity: sha512-IjA+DcwoVpjEvyxZddDqBY+uJ2Snc6duLpjmkXm/v4xuS3H+3FkLZlDm9ZsAbF9rsfP3zeA0/ArNDORZgrxR/Q==}
     engines: {node: '>=18'}
     cpu: [arm64]
     os: [netbsd]
@@ -964,14 +968,14 @@ packages:
     cpu: [x64]
     os: [netbsd]
 
-  '@esbuild/netbsd-x64@0.25.5':
-    resolution: {integrity: sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==}
+  '@esbuild/netbsd-x64@0.25.6':
+    resolution: {integrity: sha512-dUXuZr5WenIDlMHdMkvDc1FAu4xdWixTCRgP7RQLBOkkGgwuuzaGSYcOpW4jFxzpzL1ejb8yF620UxAqnBrR9g==}
     engines: {node: '>=18'}
     cpu: [x64]
     os: [netbsd]
 
-  '@esbuild/openbsd-arm64@0.25.5':
-    resolution: {integrity: sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==}
+  '@esbuild/openbsd-arm64@0.25.6':
+    resolution: {integrity: sha512-l8ZCvXP0tbTJ3iaqdNf3pjaOSd5ex/e6/omLIQCVBLmHTlfXW3zAxQ4fnDmPLOB1x9xrcSi/xtCWFwCZRIaEwg==}
     engines: {node: '>=18'}
     cpu: [arm64]
     os: [openbsd]
@@ -988,12 +992,18 @@ packages:
     cpu: [x64]
     os: [openbsd]
 
-  '@esbuild/openbsd-x64@0.25.5':
-    resolution: {integrity: sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==}
+  '@esbuild/openbsd-x64@0.25.6':
+    resolution: {integrity: sha512-hKrmDa0aOFOr71KQ/19JC7az1P0GWtCN1t2ahYAf4O007DHZt/dW8ym5+CUdJhQ/qkZmI1HAF8KkJbEFtCL7gw==}
     engines: {node: '>=18'}
     cpu: [x64]
     os: [openbsd]
 
+  '@esbuild/openharmony-arm64@0.25.6':
+    resolution: {integrity: sha512-+SqBcAWoB1fYKmpWoQP4pGtx+pUUC//RNYhFdbcSA16617cchuryuhOCRpPsjCblKukAckWsV+aQ3UKT/RMPcA==}
+    engines: {node: '>=18'}
+    cpu: [arm64]
+    os: [openharmony]
+
   '@esbuild/sunos-x64@0.17.19':
     resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==}
     engines: {node: '>=12'}
@@ -1006,8 +1016,8 @@ packages:
     cpu: [x64]
     os: [sunos]
 
-  '@esbuild/sunos-x64@0.25.5':
-    resolution: {integrity: sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==}
+  '@esbuild/sunos-x64@0.25.6':
+    resolution: {integrity: sha512-dyCGxv1/Br7MiSC42qinGL8KkG4kX0pEsdb0+TKhmJZgCUDBGmyo1/ArCjNGiOLiIAgdbWgmWgib4HoCi5t7kA==}
     engines: {node: '>=18'}
     cpu: [x64]
     os: [sunos]
@@ -1024,8 +1034,8 @@ packages:
     cpu: [arm64]
     os: [win32]
 
-  '@esbuild/win32-arm64@0.25.5':
-    resolution: {integrity: sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==}
+  '@esbuild/win32-arm64@0.25.6':
+    resolution: {integrity: sha512-42QOgcZeZOvXfsCBJF5Afw73t4veOId//XD3i+/9gSkhSV6Gk3VPlWncctI+JcOyERv85FUo7RxuxGy+z8A43Q==}
     engines: {node: '>=18'}
     cpu: [arm64]
     os: [win32]
@@ -1042,8 +1052,8 @@ packages:
     cpu: [ia32]
     os: [win32]
 
-  '@esbuild/win32-ia32@0.25.5':
-    resolution: {integrity: sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==}
+  '@esbuild/win32-ia32@0.25.6':
+    resolution: {integrity: sha512-4AWhgXmDuYN7rJI6ORB+uU9DHLq/erBbuMoAuB4VWJTu5KtCgcKYPynF0YI1VkBNuEfjNlLrFr9KZPJzrtLkrQ==}
     engines: {node: '>=18'}
     cpu: [ia32]
     os: [win32]
@@ -1060,8 +1070,8 @@ packages:
     cpu: [x64]
     os: [win32]
 
-  '@esbuild/win32-x64@0.25.5':
-    resolution: {integrity: sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==}
+  '@esbuild/win32-x64@0.25.6':
+    resolution: {integrity: sha512-NgJPHHbEpLQgDH2MjQu90pzW/5vvXIZ7KOnPyNBm92A6WgZ/7b6fJyUBjoumLqeOQQGqY2QjQxRo97ah4Sj0cA==}
     engines: {node: '>=18'}
     cpu: [x64]
     os: [win32]
@@ -1193,19 +1203,19 @@ packages:
     resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==}
     engines: {node: '>=14'}
 
-  '@figma/code-connect@1.3.3':
-    resolution: {integrity: sha512-Fxb9csQXjiIIEc1SA78rQ/2yIb1zxMKL/E59LwW/m5XELVqUsuBACxXPVLxk232xoFAZigFrcAmljxhFOBmx1Q==}
+  '@figma/code-connect@1.3.4':
+    resolution: {integrity: sha512-irK9z44i5ahTsYKY/IsCVo3L9pda8SwhVPcWRUrResIcCvPr5Cl3eiys4lwpNmnFrkPjAz81io6DnlAe5Cu4IA==}
     engines: {node: '>=18'}
     hasBin: true
 
-  '@floating-ui/core@1.7.1':
-    resolution: {integrity: sha512-azI0DrjMMfIug/ExbBaeDVJXcY0a7EPvPjb2xAJPa4HeimBX+Z18HK8QQR3jb6356SnDDdxx+hinMLcJEDdOjw==}
+  '@floating-ui/core@1.7.2':
+    resolution: {integrity: sha512-wNB5ooIKHQc+Kui96jE/n69rHFWAVoxn5CAzL1Xdd8FG03cgY3MLO+GF9U3W737fYDSgPWA6MReKhBQBop6Pcw==}
 
-  '@floating-ui/dom@1.7.1':
-    resolution: {integrity: sha512-cwsmW/zyw5ltYTUeeYJ60CnQuPqmGwuGVhG9w0PRaRKkAyi38BT5CKrpIbb+jtahSwUl04cWzSx9ZOIxeS6RsQ==}
+  '@floating-ui/dom@1.7.2':
+    resolution: {integrity: sha512-7cfaOQuCS27HD7DX+6ib2OrnW+b4ZBwDNnCcT0uTyidcmyWb03FnQqJybDBoCnpdxwBSfA94UAYlRCt7mV+TbA==}
 
-  '@floating-ui/react-dom@2.1.3':
-    resolution: {integrity: sha512-huMBfiU9UnQ2oBwIhgzyIiSpVgvlDstU8CX0AF+wS+KzmYMs0J2a3GwuFHV1Lz+jlrQGeC1fF+Nv0QoumyV0bA==}
+  '@floating-ui/react-dom@2.1.4':
+    resolution: {integrity: sha512-JbbpPhp38UmXDDAu60RJmbeme37Jbgsm7NrHGgzYYFKmblzRUh6Pa641dII6LsjwF4XlScDrde2UAzDo/b9KPw==}
     peerDependencies:
       react: '>=16.8.0'
       react-dom: '>=16.8.0'
@@ -1216,14 +1226,14 @@ packages:
       react: '>=16.8.0'
       react-dom: '>=16.8.0'
 
-  '@floating-ui/react@0.27.12':
-    resolution: {integrity: sha512-kKlWNrpIQxF1B/a2MZvE0/uyKby4960yjO91W7nVyNKmmfNi62xU9HCjL1M1eWzx/LFj/VPSwJVbwQk9Pq/68A==}
+  '@floating-ui/react@0.27.13':
+    resolution: {integrity: sha512-Qmj6t9TjgWAvbygNEu1hj4dbHI9CY0ziCMIJrmYoDIn9TUAH5lRmiIeZmRd4c6QEZkzdoH7jNnoNyoY1AIESiA==}
     peerDependencies:
       react: '>=17.0.0'
       react-dom: '>=17.0.0'
 
-  '@floating-ui/utils@0.2.9':
-    resolution: {integrity: sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==}
+  '@floating-ui/utils@0.2.10':
+    resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==}
 
   '@formatjs/ecma402-abstract@2.3.4':
     resolution: {integrity: sha512-qrycXDeaORzIqNhBOx0btnhpD1c+/qFIHAN9znofuMJX6QBwtbrmlpWfD4oiUUD2vJUOIYFA/gYtg2KAMGG7sA==}
@@ -1405,23 +1415,18 @@ packages:
     resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
     engines: {node: '>=12'}
 
-  '@jridgewell/gen-mapping@0.3.8':
-    resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==}
-    engines: {node: '>=6.0.0'}
+  '@jridgewell/gen-mapping@0.3.12':
+    resolution: {integrity: sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==}
 
   '@jridgewell/resolve-uri@3.1.2':
     resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
     engines: {node: '>=6.0.0'}
 
-  '@jridgewell/set-array@1.2.1':
-    resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
-    engines: {node: '>=6.0.0'}
-
-  '@jridgewell/sourcemap-codec@1.5.0':
-    resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
+  '@jridgewell/sourcemap-codec@1.5.4':
+    resolution: {integrity: sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==}
 
-  '@jridgewell/trace-mapping@0.3.25':
-    resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
+  '@jridgewell/trace-mapping@0.3.29':
+    resolution: {integrity: sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==}
 
   '@jridgewell/trace-mapping@0.3.9':
     resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==}
@@ -1438,8 +1443,8 @@ packages:
       '@types/react': '>=16'
       react: '>=16'
 
-  '@mermaid-js/parser@0.5.0':
-    resolution: {integrity: sha512-AiaN7+VjXC+3BYE+GwNezkpjIcCI2qIMB/K4S2/vMWe0q/XJCBbx5+K7iteuz7VyltX9iAK4FmVTvGc9kjOV4w==}
+  '@mermaid-js/parser@0.6.1':
+    resolution: {integrity: sha512-lCQNpV8R4lgsGcjX5667UiuDLk2micCtjtxR1YKbBXvN5w2v+FeLYoHrTSSrjwXdMcDYvE4ZBPvKT31dfeSmmA==}
 
   '@napi-rs/simple-git-android-arm-eabi@0.1.19':
     resolution: {integrity: sha512-XryEH/hadZ4Duk/HS/HC/cA1j0RHmqUGey3MsCf65ZS0VrWMqChXM/xlTPWuY5jfCc/rPubHaqI7DZlbexnX/g==}
@@ -1644,36 +1649,36 @@ packages:
     resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==}
     engines: {node: '>=12.4.0'}
 
-  '@nomicfoundation/edr-darwin-arm64@0.11.2':
-    resolution: {integrity: sha512-/QU0GHeoLFOJp28qK46kkTG849NN/5Qgq9ifKzhqBas1MCqwcdjrUI3raGkvE9SWJevljWd1HdW16fFpxUrzbA==}
+  '@nomicfoundation/edr-darwin-arm64@0.11.3':
+    resolution: {integrity: sha512-w0tksbdtSxz9nuzHKsfx4c2mwaD0+l5qKL2R290QdnN9gi9AV62p9DHkOgfBdyg6/a6ZlnQqnISi7C9avk/6VA==}
     engines: {node: '>= 18'}
 
-  '@nomicfoundation/edr-darwin-x64@0.11.2':
-    resolution: {integrity: sha512-Dam+k00vyYNXCkM7JZGQBm0McNaL6ilbfY8BuIdHU2mpIVO5hpAFk8IQnMnG3FRuXuPJ0JoSTkn1R495T8AKqw==}
+  '@nomicfoundation/edr-darwin-x64@0.11.3':
+    resolution: {integrity: sha512-QR4jAFrPbOcrO7O2z2ESg+eUeIZPe2bPIlQYgiJ04ltbSGW27FblOzdd5+S3RoOD/dsZGKAvvy6dadBEl0NgoA==}
     engines: {node: '>= 18'}
 
-  '@nomicfoundation/edr-linux-arm64-gnu@0.11.2':
-    resolution: {integrity: sha512-6Z+hZ61c0v5EPVhCAc/rV36eN20GbPRfcmUeFJ3t+RjdY20EiUQzP85YU0q3AgCuwr410W27pazoBoL73cCPbg==}
+  '@nomicfoundation/edr-linux-arm64-gnu@0.11.3':
+    resolution: {integrity: sha512-Ktjv89RZZiUmOFPspuSBVJ61mBZQ2+HuLmV67InNlh9TSUec/iDjGIwAn59dx0bF/LOSrM7qg5od3KKac4LJDQ==}
     engines: {node: '>= 18'}
 
-  '@nomicfoundation/edr-linux-arm64-musl@0.11.2':
-    resolution: {integrity: sha512-AqC4AI3pR4vSsEcFyW/6rI1q16wEjIRYIR25IJO/EdBmXdsuVZgxsf/kMUCWQhhTuy89RTgIGTbMAQA0+DfSvA==}
+  '@nomicfoundation/edr-linux-arm64-musl@0.11.3':
+    resolution: {integrity: sha512-B3sLJx1rL2E9pfdD4mApiwOZSrX0a/KQSBWdlq1uAhFKqkl00yZaY4LejgZndsJAa4iKGQJlGnw4HCGeVt0+jA==}
     engines: {node: '>= 18'}
 
-  '@nomicfoundation/edr-linux-x64-gnu@0.11.2':
-    resolution: {integrity: sha512-vz1uiof1ZIi6RnXfHZiAXRgkloLciuYGD1rNDrqm1Pp7Nf0pbxw+e4TBQLoMYKzZn0MYS4u4Fa0AV2S7NjfptQ==}
+  '@nomicfoundation/edr-linux-x64-gnu@0.11.3':
+    resolution: {integrity: sha512-D/4cFKDXH6UYyKPu6J3Y8TzW11UzeQI0+wS9QcJzjlrrfKj0ENW7g9VihD1O2FvXkdkTjcCZYb6ai8MMTCsaVw==}
     engines: {node: '>= 18'}
 
-  '@nomicfoundation/edr-linux-x64-musl@0.11.2':
-    resolution: {integrity: sha512-ArAbcrWwn+8Ze8JAaA9349N2E7hfs9PYvxDgfhujEH9iVC9XI6L+OhMATPsS3wkOST/+ykxELAF1KT4YjSxcrA==}
+  '@nomicfoundation/edr-linux-x64-musl@0.11.3':
+    resolution: {integrity: sha512-ergXuIb4nIvmf+TqyiDX5tsE49311DrBky6+jNLgsGDTBaN1GS3OFwFS8I6Ri/GGn6xOaT8sKu3q7/m+WdlFzg==}
     engines: {node: '>= 18'}
 
-  '@nomicfoundation/edr-win32-x64-msvc@0.11.2':
-    resolution: {integrity: sha512-GDXBhxy5wlmZYQrTXu9Oh9OPTsi4tCdmHy1z8O9XqdH9wsP674Frh6Fb43yjVoS2Ek1F9yX11nexIrFXSuNyJQ==}
+  '@nomicfoundation/edr-win32-x64-msvc@0.11.3':
+    resolution: {integrity: sha512-snvEf+WB3OV0wj2A7kQ+ZQqBquMcrozSLXcdnMdEl7Tmn+KDCbmFKBt3Tk0X3qOU4RKQpLPnTxdM07TJNVtung==}
     engines: {node: '>= 18'}
 
-  '@nomicfoundation/edr@0.11.2':
-    resolution: {integrity: sha512-JEFMTs5Tju+YiCsv6EO+657O/fvPaQ7bkUCkWqHFYFFbCKH1yh0PeRIaqj5h4z4O16ckxbVpAM676ZFTmvFUGQ==}
+  '@nomicfoundation/edr@0.11.3':
+    resolution: {integrity: sha512-kqILRkAd455Sd6v8mfP3C1/0tCOynJWY+Ir+k/9Boocu2kObCrsFgG+ZWB7fSBVdd9cPVSNrnhWS+V+PEo637g==}
     engines: {node: '>= 18'}
 
   '@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.2':
@@ -2768,103 +2773,103 @@ packages:
     resolution: {integrity: sha512-FqALmHI8D4o6lk/LRWDnhw95z5eO+eAa6ORjVg09YRR7BkcM6oPHU9uyC0gtQG5vpFLvgpeU4+zEAz2H8APHNw==}
     engines: {node: '>= 10'}
 
-  '@rollup/rollup-android-arm-eabi@4.44.0':
-    resolution: {integrity: sha512-xEiEE5oDW6tK4jXCAyliuntGR+amEMO7HLtdSshVuhFnKTYoeYMyXQK7pLouAJJj5KHdwdn87bfHAR2nSdNAUA==}
+  '@rollup/rollup-android-arm-eabi@4.44.2':
+    resolution: {integrity: sha512-g0dF8P1e2QYPOj1gu7s/3LVP6kze9A7m6x0BZ9iTdXK8N5c2V7cpBKHV3/9A4Zd8xxavdhK0t4PnqjkqVmUc9Q==}
     cpu: [arm]
     os: [android]
 
-  '@rollup/rollup-android-arm64@4.44.0':
-    resolution: {integrity: sha512-uNSk/TgvMbskcHxXYHzqwiyBlJ/lGcv8DaUfcnNwict8ba9GTTNxfn3/FAoFZYgkaXXAdrAA+SLyKplyi349Jw==}
+  '@rollup/rollup-android-arm64@4.44.2':
+    resolution: {integrity: sha512-Yt5MKrOosSbSaAK5Y4J+vSiID57sOvpBNBR6K7xAaQvk3MkcNVV0f9fE20T+41WYN8hDn6SGFlFrKudtx4EoxA==}
     cpu: [arm64]
     os: [android]
 
-  '@rollup/rollup-darwin-arm64@4.44.0':
-    resolution: {integrity: sha512-VGF3wy0Eq1gcEIkSCr8Ke03CWT+Pm2yveKLaDvq51pPpZza3JX/ClxXOCmTYYq3us5MvEuNRTaeyFThCKRQhOA==}
+  '@rollup/rollup-darwin-arm64@4.44.2':
+    resolution: {integrity: sha512-EsnFot9ZieM35YNA26nhbLTJBHD0jTwWpPwmRVDzjylQT6gkar+zenfb8mHxWpRrbn+WytRRjE0WKsfaxBkVUA==}
     cpu: [arm64]
     os: [darwin]
 
-  '@rollup/rollup-darwin-x64@4.44.0':
-    resolution: {integrity: sha512-fBkyrDhwquRvrTxSGH/qqt3/T0w5Rg0L7ZIDypvBPc1/gzjJle6acCpZ36blwuwcKD/u6oCE/sRWlUAcxLWQbQ==}
+  '@rollup/rollup-darwin-x64@4.44.2':
+    resolution: {integrity: sha512-dv/t1t1RkCvJdWWxQ2lWOO+b7cMsVw5YFaS04oHpZRWehI1h0fV1gF4wgGCTyQHHjJDfbNpwOi6PXEafRBBezw==}
     cpu: [x64]
     os: [darwin]
 
-  '@rollup/rollup-freebsd-arm64@4.44.0':
-    resolution: {integrity: sha512-u5AZzdQJYJXByB8giQ+r4VyfZP+walV+xHWdaFx/1VxsOn6eWJhK2Vl2eElvDJFKQBo/hcYIBg/jaKS8ZmKeNQ==}
+  '@rollup/rollup-freebsd-arm64@4.44.2':
+    resolution: {integrity: sha512-W4tt4BLorKND4qeHElxDoim0+BsprFTwb+vriVQnFFtT/P6v/xO5I99xvYnVzKWrK6j7Hb0yp3x7V5LUbaeOMg==}
     cpu: [arm64]
     os: [freebsd]
 
-  '@rollup/rollup-freebsd-x64@4.44.0':
-    resolution: {integrity: sha512-qC0kS48c/s3EtdArkimctY7h3nHicQeEUdjJzYVJYR3ct3kWSafmn6jkNCA8InbUdge6PVx6keqjk5lVGJf99g==}
+  '@rollup/rollup-freebsd-x64@4.44.2':
+    resolution: {integrity: sha512-tdT1PHopokkuBVyHjvYehnIe20fxibxFCEhQP/96MDSOcyjM/shlTkZZLOufV3qO6/FQOSiJTBebhVc12JyPTA==}
     cpu: [x64]
     os: [freebsd]
 
-  '@rollup/rollup-linux-arm-gnueabihf@4.44.0':
-    resolution: {integrity: sha512-x+e/Z9H0RAWckn4V2OZZl6EmV0L2diuX3QB0uM1r6BvhUIv6xBPL5mrAX2E3e8N8rEHVPwFfz/ETUbV4oW9+lQ==}
+  '@rollup/rollup-linux-arm-gnueabihf@4.44.2':
+    resolution: {integrity: sha512-+xmiDGGaSfIIOXMzkhJ++Oa0Gwvl9oXUeIiwarsdRXSe27HUIvjbSIpPxvnNsRebsNdUo7uAiQVgBD1hVriwSQ==}
     cpu: [arm]
     os: [linux]
 
-  '@rollup/rollup-linux-arm-musleabihf@4.44.0':
-    resolution: {integrity: sha512-1exwiBFf4PU/8HvI8s80icyCcnAIB86MCBdst51fwFmH5dyeoWVPVgmQPcKrMtBQ0W5pAs7jBCWuRXgEpRzSCg==}
+  '@rollup/rollup-linux-arm-musleabihf@4.44.2':
+    resolution: {integrity: sha512-bDHvhzOfORk3wt8yxIra8N4k/N0MnKInCW5OGZaeDYa/hMrdPaJzo7CSkjKZqX4JFUWjUGm88lI6QJLCM7lDrA==}
     cpu: [arm]
     os: [linux]
 
-  '@rollup/rollup-linux-arm64-gnu@4.44.0':
-    resolution: {integrity: sha512-ZTR2mxBHb4tK4wGf9b8SYg0Y6KQPjGpR4UWwTFdnmjB4qRtoATZ5dWn3KsDwGa5Z2ZBOE7K52L36J9LueKBdOQ==}
+  '@rollup/rollup-linux-arm64-gnu@4.44.2':
+    resolution: {integrity: sha512-NMsDEsDiYghTbeZWEGnNi4F0hSbGnsuOG+VnNvxkKg0IGDvFh7UVpM/14mnMwxRxUf9AdAVJgHPvKXf6FpMB7A==}
     cpu: [arm64]
     os: [linux]
 
-  '@rollup/rollup-linux-arm64-musl@4.44.0':
-    resolution: {integrity: sha512-GFWfAhVhWGd4r6UxmnKRTBwP1qmModHtd5gkraeW2G490BpFOZkFtem8yuX2NyafIP/mGpRJgTJ2PwohQkUY/Q==}
+  '@rollup/rollup-linux-arm64-musl@4.44.2':
+    resolution: {integrity: sha512-lb5bxXnxXglVq+7imxykIp5xMq+idehfl+wOgiiix0191av84OqbjUED+PRC5OA8eFJYj5xAGcpAZ0pF2MnW+A==}
     cpu: [arm64]
     os: [linux]
 
-  '@rollup/rollup-linux-loongarch64-gnu@4.44.0':
-    resolution: {integrity: sha512-xw+FTGcov/ejdusVOqKgMGW3c4+AgqrfvzWEVXcNP6zq2ue+lsYUgJ+5Rtn/OTJf7e2CbgTFvzLW2j0YAtj0Gg==}
+  '@rollup/rollup-linux-loongarch64-gnu@4.44.2':
+    resolution: {integrity: sha512-Yl5Rdpf9pIc4GW1PmkUGHdMtbx0fBLE1//SxDmuf3X0dUC57+zMepow2LK0V21661cjXdTn8hO2tXDdAWAqE5g==}
     cpu: [loong64]
     os: [linux]
 
-  '@rollup/rollup-linux-powerpc64le-gnu@4.44.0':
-    resolution: {integrity: sha512-bKGibTr9IdF0zr21kMvkZT4K6NV+jjRnBoVMt2uNMG0BYWm3qOVmYnXKzx7UhwrviKnmK46IKMByMgvpdQlyJQ==}
+  '@rollup/rollup-linux-powerpc64le-gnu@4.44.2':
+    resolution: {integrity: sha512-03vUDH+w55s680YYryyr78jsO1RWU9ocRMaeV2vMniJJW/6HhoTBwyyiiTPVHNWLnhsnwcQ0oH3S9JSBEKuyqw==}
     cpu: [ppc64]
     os: [linux]
 
-  '@rollup/rollup-linux-riscv64-gnu@4.44.0':
-    resolution: {integrity: sha512-vV3cL48U5kDaKZtXrti12YRa7TyxgKAIDoYdqSIOMOFBXqFj2XbChHAtXquEn2+n78ciFgr4KIqEbydEGPxXgA==}
+  '@rollup/rollup-linux-riscv64-gnu@4.44.2':
+    resolution: {integrity: sha512-iYtAqBg5eEMG4dEfVlkqo05xMOk6y/JXIToRca2bAWuqjrJYJlx/I7+Z+4hSrsWU8GdJDFPL4ktV3dy4yBSrzg==}
     cpu: [riscv64]
     os: [linux]
 
-  '@rollup/rollup-linux-riscv64-musl@4.44.0':
-    resolution: {integrity: sha512-TDKO8KlHJuvTEdfw5YYFBjhFts2TR0VpZsnLLSYmB7AaohJhM8ctDSdDnUGq77hUh4m/djRafw+9zQpkOanE2Q==}
+  '@rollup/rollup-linux-riscv64-musl@4.44.2':
+    resolution: {integrity: sha512-e6vEbgaaqz2yEHqtkPXa28fFuBGmUJ0N2dOJK8YUfijejInt9gfCSA7YDdJ4nYlv67JfP3+PSWFX4IVw/xRIPg==}
     cpu: [riscv64]
     os: [linux]
 
-  '@rollup/rollup-linux-s390x-gnu@4.44.0':
-    resolution: {integrity: sha512-8541GEyktXaw4lvnGp9m84KENcxInhAt6vPWJ9RodsB/iGjHoMB2Pp5MVBCiKIRxrxzJhGCxmNzdu+oDQ7kwRA==}
+  '@rollup/rollup-linux-s390x-gnu@4.44.2':
+    resolution: {integrity: sha512-evFOtkmVdY3udE+0QKrV5wBx7bKI0iHz5yEVx5WqDJkxp9YQefy4Mpx3RajIVcM6o7jxTvVd/qpC1IXUhGc1Mw==}
     cpu: [s390x]
     os: [linux]
 
-  '@rollup/rollup-linux-x64-gnu@4.44.0':
-    resolution: {integrity: sha512-iUVJc3c0o8l9Sa/qlDL2Z9UP92UZZW1+EmQ4xfjTc1akr0iUFZNfxrXJ/R1T90h/ILm9iXEY6+iPrmYB3pXKjw==}
+  '@rollup/rollup-linux-x64-gnu@4.44.2':
+    resolution: {integrity: sha512-/bXb0bEsWMyEkIsUL2Yt5nFB5naLAwyOWMEviQfQY1x3l5WsLKgvZf66TM7UTfED6erckUVUJQ/jJ1FSpm3pRQ==}
     cpu: [x64]
     os: [linux]
 
-  '@rollup/rollup-linux-x64-musl@4.44.0':
-    resolution: {integrity: sha512-PQUobbhLTQT5yz/SPg116VJBgz+XOtXt8D1ck+sfJJhuEsMj2jSej5yTdp8CvWBSceu+WW+ibVL6dm0ptG5fcA==}
+  '@rollup/rollup-linux-x64-musl@4.44.2':
+    resolution: {integrity: sha512-3D3OB1vSSBXmkGEZR27uiMRNiwN08/RVAcBKwhUYPaiZ8bcvdeEwWPvbnXvvXHY+A/7xluzcN+kaiOFNiOZwWg==}
     cpu: [x64]
     os: [linux]
 
-  '@rollup/rollup-win32-arm64-msvc@4.44.0':
-    resolution: {integrity: sha512-M0CpcHf8TWn+4oTxJfh7LQuTuaYeXGbk0eageVjQCKzYLsajWS/lFC94qlRqOlyC2KvRT90ZrfXULYmukeIy7w==}
+  '@rollup/rollup-win32-arm64-msvc@4.44.2':
+    resolution: {integrity: sha512-VfU0fsMK+rwdK8mwODqYeM2hDrF2WiHaSmCBrS7gColkQft95/8tphyzv2EupVxn3iE0FI78wzffoULH1G+dkw==}
     cpu: [arm64]
     os: [win32]
 
-  '@rollup/rollup-win32-ia32-msvc@4.44.0':
-    resolution: {integrity: sha512-3XJ0NQtMAXTWFW8FqZKcw3gOQwBtVWP/u8TpHP3CRPXD7Pd6s8lLdH3sHWh8vqKCyyiI8xW5ltJScQmBU9j7WA==}
+  '@rollup/rollup-win32-ia32-msvc@4.44.2':
+    resolution: {integrity: sha512-+qMUrkbUurpE6DVRjiJCNGZBGo9xM4Y0FXU5cjgudWqIBWbcLkjE3XprJUsOFgC6xjBClwVa9k6O3A7K3vxb5Q==}
     cpu: [ia32]
     os: [win32]
 
-  '@rollup/rollup-win32-x64-msvc@4.44.0':
-    resolution: {integrity: sha512-Q2Mgwt+D8hd5FIPUuPDsvPR7Bguza6yTkJxspDGkZj7tBRn2y4KSWYuIXpftFSjBra76TbKerCV7rgFPQrn+wQ==}
+  '@rollup/rollup-win32-x64-msvc@4.44.2':
+    resolution: {integrity: sha512-3+QZROYfJ25PDcxFF66UEk8jGWigHJeecZILvkPkyQN7oc5BvFo4YEXFkOs154j3FTMp9mn9Ky8RCOwastduEA==}
     cpu: [x64]
     os: [win32]
 
@@ -2877,8 +2882,8 @@ packages:
   '@rtsao/scc@1.1.0':
     resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==}
 
-  '@rushstack/eslint-patch@1.11.0':
-    resolution: {integrity: sha512-zxnHvoMQVqewTJr/W4pKjF0bMGiKJv1WX7bSrkl46Hg0QjESbzBROWK0Wg4RphzSOS5Jiy7eFimmM3UgMrMZbQ==}
+  '@rushstack/eslint-patch@1.12.0':
+    resolution: {integrity: sha512-5EwMtOqvJMMa3HbmxLlF74e+3/HhwBTMcvt3nqVJgGCozO6hzIPOBlwm8mGVNR9SN2IJpxSnlxczyDjcn7qIyw==}
 
   '@scure/base@1.1.9':
     resolution: {integrity: sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==}
@@ -3041,22 +3046,22 @@ packages:
       react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
       react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
 
-  '@tanstack/query-core@5.81.2':
-    resolution: {integrity: sha512-QLYkPdrudoMATDFa3MiLEwRhNnAlzHWDf0LKaXUqJd0/+QxN8uTPi7bahRlxoAyH0UbLMBdeDbYzWALj7THOtw==}
+  '@tanstack/query-core@5.82.0':
+    resolution: {integrity: sha512-JrjoVuaajBQtnoWSg8iaPHaT4mW73lK2t+exxHNOSMqy0+13eKLqJgTKXKImLejQIfdAHQ6Un0njEhOvUtOd5w==}
 
-  '@tanstack/react-query@5.81.2':
-    resolution: {integrity: sha512-pe8kFlTrL2zFLlcAj2kZk9UaYYHDk9/1hg9EBaoO3cxDhOZf1FRGJeziSXKrVZyxIfs7b3aoOj/bw7Lie0mDUg==}
+  '@tanstack/react-query@5.82.0':
+    resolution: {integrity: sha512-mnk8/ofKEthFeMdhV1dV8YXRf+9HqvXAcciXkoo755d/ocfWq7N/Y9jGOzS3h7ZW9dDGwSIhs3/HANWUBsyqYg==}
     peerDependencies:
       react: ^18 || ^19
 
-  '@tanstack/react-virtual@3.13.11':
-    resolution: {integrity: sha512-u5EaOSJOq08T9NXFuDopMdxZBNDFuEMohIFFU45fBYDXXh9SjYdbpNq1OLFSOpQnDRPjqgmY96ipZTkzom9t9Q==}
+  '@tanstack/react-virtual@3.13.12':
+    resolution: {integrity: sha512-Gd13QdxPSukP8ZrkbgS2RwoZseTTbQPLnQEn7HY/rqtM+8Zt95f7xKC7N0EsKs7aoz0WzZ+fditZux+F8EzYxA==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
       react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
 
-  '@tanstack/virtual-core@3.13.11':
-    resolution: {integrity: sha512-ORL6UyuZJ0D9X33LDR4TcgcM+K2YiS2j4xbvH1vnhhObwR1Z4dKwPTL/c0kj2Yeb4Yp2lBv1wpyVaqlohk8zpg==}
+  '@tanstack/virtual-core@3.13.12':
+    resolution: {integrity: sha512-1YBOJfRHV4sXUmWsFSf5rQor4Ss82G8dQWLRbnk3GA4jeP8hQt1hxXh0tmflpC0dz3VgEv/1+qwPyLeWkQuPFA==}
 
   '@theguild/remark-mermaid@0.1.3':
     resolution: {integrity: sha512-2FjVlaaKXK7Zj7UJAgOVTyaahn/3/EAfqYhyXg0BfDBVUl+lXcoIWRaxzqfnDr2rv8ax6GsC5mNh6hAaT86PDw==}
@@ -3250,8 +3255,8 @@ packages:
   '@types/katex@0.16.7':
     resolution: {integrity: sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==}
 
-  '@types/lodash@4.17.19':
-    resolution: {integrity: sha512-NYqRyg/hIQrYPT9lbOeYc3kIRabJDn/k4qQHIXUpx88CBDww2fD15Sg5kbXlW86zm2XEW4g0QxkTI3/Kfkc7xQ==}
+  '@types/lodash@4.17.20':
+    resolution: {integrity: sha512-H3MHACvFUEiujabxhaI/ImO6gUrd8oOurg7LQtS7mbwIXA/cUqWrvBsaeJ23aZEPk1TAYkurjfMbSELfoCXlGA==}
 
   '@types/lru-cache@5.1.1':
     resolution: {integrity: sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==}
@@ -3271,8 +3276,8 @@ packages:
   '@types/nlcst@2.0.3':
     resolution: {integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==}
 
-  '@types/node@22.15.33':
-    resolution: {integrity: sha512-wzoocdnnpSxZ+6CjW4ADCK1jVmd1S/J3ArNWfn8FDDQtRm8dkDg7TA+mvek2wNrfCgwuZxqEOiB9B1XCJ6+dbw==}
+  '@types/node@22.16.2':
+    resolution: {integrity: sha512-Cdqa/eJTvt4fC4wmq1Mcc0CPUjp/Qy2FGqLza3z3pKymsI969TcZ54diNJv8UYUgeWxyb8FSbCkhdR6WqmUFhA==}
 
   '@types/parse-json@4.0.2':
     resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==}
@@ -3416,98 +3421,98 @@ packages:
     engines: {node: '>=10'}
     deprecated: Please upgrade to 1.0.1
 
-  '@unrs/resolver-binding-android-arm-eabi@1.9.1':
-    resolution: {integrity: sha512-dd7yIp1hfJFX9ZlVLQRrh/Re9WMUHHmF9hrKD1yIvxcyNr2BhQ3xc1upAVhy8NijadnCswAxWQu8MkkSMC1qXQ==}
+  '@unrs/resolver-binding-android-arm-eabi@1.11.1':
+    resolution: {integrity: sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==}
     cpu: [arm]
     os: [android]
 
-  '@unrs/resolver-binding-android-arm64@1.9.1':
-    resolution: {integrity: sha512-EzUPcMFtDVlo5yrbzMqUsGq3HnLXw+3ZOhSd7CUaDmbTtnrzM+RO2ntw2dm2wjbbc5djWj3yX0wzbbg8pLhx8g==}
+  '@unrs/resolver-binding-android-arm64@1.11.1':
+    resolution: {integrity: sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==}
     cpu: [arm64]
     os: [android]
 
-  '@unrs/resolver-binding-darwin-arm64@1.9.1':
-    resolution: {integrity: sha512-nB+dna3q4kOleKFcSZJ/wDXIsAd1kpMO9XrVAt8tG3RDWJ6vi+Ic6bpz4cmg5tWNeCfHEY4KuqJCB+pKejPEmQ==}
+  '@unrs/resolver-binding-darwin-arm64@1.11.1':
+    resolution: {integrity: sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==}
     cpu: [arm64]
     os: [darwin]
 
-  '@unrs/resolver-binding-darwin-x64@1.9.1':
-    resolution: {integrity: sha512-aKWHCrOGaCGwZcekf3TnczQoBxk5w//W3RZ4EQyhux6rKDwBPgDU9Y2yGigCV1Z+8DWqZgVGQi+hdpnlSy3a1w==}
+  '@unrs/resolver-binding-darwin-x64@1.11.1':
+    resolution: {integrity: sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==}
     cpu: [x64]
     os: [darwin]
 
-  '@unrs/resolver-binding-freebsd-x64@1.9.1':
-    resolution: {integrity: sha512-4dIEMXrXt0UqDVgrsUd1I+NoIzVQWXy/CNhgpfS75rOOMK/4Abn0Mx2M2gWH4Mk9+ds/ASAiCmqoUFynmMY5hA==}
+  '@unrs/resolver-binding-freebsd-x64@1.11.1':
+    resolution: {integrity: sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==}
     cpu: [x64]
     os: [freebsd]
 
-  '@unrs/resolver-binding-linux-arm-gnueabihf@1.9.1':
-    resolution: {integrity: sha512-vtvS13IXPs1eE8DuS/soiosqMBeyh50YLRZ+p7EaIKAPPeevRnA9G/wu/KbVt01ZD5qiGjxS+CGIdVC7I6gTOw==}
+  '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1':
+    resolution: {integrity: sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==}
     cpu: [arm]
     os: [linux]
 
-  '@unrs/resolver-binding-linux-arm-musleabihf@1.9.1':
-    resolution: {integrity: sha512-BfdnN6aZ7NcX8djW8SR6GOJc+K+sFhWRF4vJueVE0vbUu5N1bLnBpxJg1TGlhSyo+ImC4SR0jcNiKN0jdoxt+A==}
+  '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1':
+    resolution: {integrity: sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==}
     cpu: [arm]
     os: [linux]
 
-  '@unrs/resolver-binding-linux-arm64-gnu@1.9.1':
-    resolution: {integrity: sha512-Jhge7lFtH0QqfRz2PyJjJXWENqywPteITd+nOS0L6AhbZli+UmEyGBd2Sstt1c+l9C+j/YvKTl9wJo9PPmsFNg==}
+  '@unrs/resolver-binding-linux-arm64-gnu@1.11.1':
+    resolution: {integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==}
     cpu: [arm64]
     os: [linux]
 
-  '@unrs/resolver-binding-linux-arm64-musl@1.9.1':
-    resolution: {integrity: sha512-ofdK/ow+ZSbSU0pRoB7uBaiRHeaAOYQFU5Spp87LdcPL/P1RhbCTMSIYVb61XWzsVEmYKjHFtoIE0wxP6AFvrA==}
+  '@unrs/resolver-binding-linux-arm64-musl@1.11.1':
+    resolution: {integrity: sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==}
     cpu: [arm64]
     os: [linux]
 
-  '@unrs/resolver-binding-linux-ppc64-gnu@1.9.1':
-    resolution: {integrity: sha512-eC8SXVn8de67HacqU7PoGdHA+9tGbqfEdD05AEFRAB81ejeQtNi5Fx7lPcxpLH79DW0BnMAHau3hi4RVkHfSCw==}
+  '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1':
+    resolution: {integrity: sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==}
     cpu: [ppc64]
     os: [linux]
 
-  '@unrs/resolver-binding-linux-riscv64-gnu@1.9.1':
-    resolution: {integrity: sha512-fIkwvAAQ41kfoGWfzeJ33iLGShl0JEDZHrMnwTHMErUcPkaaZRJYjQjsFhMl315NEQ4mmTlC+2nfK/J2IszDOw==}
+  '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1':
+    resolution: {integrity: sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==}
     cpu: [riscv64]
     os: [linux]
 
-  '@unrs/resolver-binding-linux-riscv64-musl@1.9.1':
-    resolution: {integrity: sha512-RAAszxImSOFLk44aLwnSqpcOdce8sBcxASledSzuFAd8Q5ZhhVck472SisspnzHdc7THCvGXiUeZ2hOC7NUoBQ==}
+  '@unrs/resolver-binding-linux-riscv64-musl@1.11.1':
+    resolution: {integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==}
     cpu: [riscv64]
     os: [linux]
 
-  '@unrs/resolver-binding-linux-s390x-gnu@1.9.1':
-    resolution: {integrity: sha512-QoP9vkY+THuQdZi05bA6s6XwFd6HIz3qlx82v9bTOgxeqin/3C12Ye7f7EOD00RQ36OtOPWnhEMMm84sv7d1XQ==}
+  '@unrs/resolver-binding-linux-s390x-gnu@1.11.1':
+    resolution: {integrity: sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==}
     cpu: [s390x]
     os: [linux]
 
-  '@unrs/resolver-binding-linux-x64-gnu@1.9.1':
-    resolution: {integrity: sha512-/p77cGN/h9zbsfCseAP5gY7tK+7+DdM8fkPfr9d1ye1fsF6bmtGbtZN6e/8j4jCZ9NEIBBkT0GhdgixSelTK9g==}
+  '@unrs/resolver-binding-linux-x64-gnu@1.11.1':
+    resolution: {integrity: sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==}
     cpu: [x64]
     os: [linux]
 
-  '@unrs/resolver-binding-linux-x64-musl@1.9.1':
-    resolution: {integrity: sha512-wInTqT3Bu9u50mDStEig1v8uxEL2Ht+K8pir/YhyyrM5ordJtxoqzsL1vR/CQzOJuDunUTrDkMM0apjW/d7/PA==}
+  '@unrs/resolver-binding-linux-x64-musl@1.11.1':
+    resolution: {integrity: sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==}
     cpu: [x64]
     os: [linux]
 
-  '@unrs/resolver-binding-wasm32-wasi@1.9.1':
-    resolution: {integrity: sha512-eNwqO5kUa+1k7yFIircwwiniKWA0UFHo2Cfm8LYgkh9km7uMad+0x7X7oXbQonJXlqfitBTSjhA0un+DsHIrhw==}
+  '@unrs/resolver-binding-wasm32-wasi@1.11.1':
+    resolution: {integrity: sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==}
     engines: {node: '>=14.0.0'}
     cpu: [wasm32]
 
-  '@unrs/resolver-binding-win32-arm64-msvc@1.9.1':
-    resolution: {integrity: sha512-Eaz1xMUnoa2mFqh20mPqSdbYl6crnk8HnIXDu6nsla9zpgZJZO8w3c1gvNN/4Eb0RXRq3K9OG6mu8vw14gIqiA==}
+  '@unrs/resolver-binding-win32-arm64-msvc@1.11.1':
+    resolution: {integrity: sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==}
     cpu: [arm64]
     os: [win32]
 
-  '@unrs/resolver-binding-win32-ia32-msvc@1.9.1':
-    resolution: {integrity: sha512-H/+d+5BGlnEQif0gnwWmYbYv7HJj563PUKJfn8PlmzF8UmF+8KxdvXdwCsoOqh4HHnENnoLrav9NYBrv76x1wQ==}
+  '@unrs/resolver-binding-win32-ia32-msvc@1.11.1':
+    resolution: {integrity: sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==}
     cpu: [ia32]
     os: [win32]
 
-  '@unrs/resolver-binding-win32-x64-msvc@1.9.1':
-    resolution: {integrity: sha512-rS86wI4R6cknYM3is3grCb/laE8XBEbpWAMSIPjYfmYp75KL5dT87jXF2orDa4tQYg5aajP5G8Fgh34dRyR+Rw==}
+  '@unrs/resolver-binding-win32-x64-msvc@1.11.1':
+    resolution: {integrity: sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==}
     cpu: [x64]
     os: [win32]
 
@@ -3544,13 +3549,13 @@ packages:
   '@vitest/utils@2.1.9':
     resolution: {integrity: sha512-v0psaMSkNJ3A2NMrUEHFRzJtDPFn+/VWZ5WxImB21T9fjucJRmS7xCS3ppEnARb9y11OAzaD+P2Ps+b+BGX5iQ==}
 
-  '@web3icons/common@0.11.13':
-    resolution: {integrity: sha512-oqgc6KZPp3b8RYC0ibS16Ds7vhGWHNUh0JKmgHa9wwJcy00QMBbggpiHfwrdxs4SCVkAJk8w6o3T0rNTpXwi9g==}
+  '@web3icons/common@0.11.14':
+    resolution: {integrity: sha512-TEqInrR1fCW9V6bI5AbmZjxsTGbyF7jF0XJS9dsS3PAokVnkGGNKAP8J2wiqyFZ7kZSpcnnNLqarsliIvEUSIA==}
     peerDependencies:
       typescript: ^5.0.0
 
-  '@web3icons/react@4.0.16':
-    resolution: {integrity: sha512-RPRZxiGX53aOHNYYAHNUqNDE7HEeDCKvLwv/SeFHLk0MIRcTxVqn0Kn4w9pkjA/0aVVhFH17oBdMQPbDujMtfg==}
+  '@web3icons/react@4.0.17':
+    resolution: {integrity: sha512-es05+Oy+mb1wnFossmdK2orTI0rb5BMUUBdRchrTgtlPS9zrDgGtTNwYNciQFfKOSx0AQtwwzdBYmDSAxduagw==}
     peerDependencies:
       react: ^18.2.0
 
@@ -3618,8 +3623,8 @@ packages:
     resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==}
     engines: {node: '>= 6.0.0'}
 
-  agent-base@7.1.3:
-    resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==}
+  agent-base@7.1.4:
+    resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==}
     engines: {node: '>= 14'}
 
   aggregate-error@3.1.0:
@@ -3640,8 +3645,8 @@ packages:
   ajv@8.17.1:
     resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==}
 
-  algoliasearch@5.29.0:
-    resolution: {integrity: sha512-E2l6AlTWGznM2e7vEE6T6hzObvEyXukxMOlBmVlMyixZyK1umuO/CiVc6sDBbzVH0oEviCE5IfVY1oZBmccYPQ==}
+  algoliasearch@5.32.0:
+    resolution: {integrity: sha512-84xBncKNPBK8Ae89F65+SyVcOihrIbm/3N7to+GpRBHEUXGjA3ydWTMpcRW6jmFzkBQ/eqYy/y+J+NBpJWYjBg==}
     engines: {node: '>= 14.0.0'}
 
   ansi-align@3.0.1:
@@ -3853,8 +3858,8 @@ packages:
   browser-stdout@1.3.1:
     resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==}
 
-  browserslist@4.25.0:
-    resolution: {integrity: sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA==}
+  browserslist@4.25.1:
+    resolution: {integrity: sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==}
     engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
     hasBin: true
 
@@ -3909,15 +3914,15 @@ packages:
   camelize@1.0.1:
     resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==}
 
-  caniuse-lite@1.0.30001724:
-    resolution: {integrity: sha512-WqJo7p0TbHDOythNTqYujmaJTvtYRZrjpP8TCvH6Vb9CYJerJNKamKzIWOM4BkQatWj9H2lYulpdAQNBe7QhNA==}
+  caniuse-lite@1.0.30001727:
+    resolution: {integrity: sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==}
 
   ccount@2.0.1:
     resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
 
-  chai@5.2.0:
-    resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==}
-    engines: {node: '>=12'}
+  chai@5.2.1:
+    resolution: {integrity: sha512-5nFxhUrX0PqtyogoYOA8IPswy5sZFTOsBFl/9bNsmDLgsxYTzSZQJDPppDnZPTQbzSEm0hqGjWPzRemQCYbD6A==}
+    engines: {node: '>=18'}
 
   chalk@4.1.2:
     resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
@@ -3965,8 +3970,8 @@ packages:
   ci-info@2.0.0:
     resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==}
 
-  ci-info@4.2.0:
-    resolution: {integrity: sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg==}
+  ci-info@4.3.0:
+    resolution: {integrity: sha512-l+2bNRMiQgcfILUi33labAZYIWlH1kWDp+ecNo5iisRKrbm0xcRyCww71/YU0Fkw0mAFpz9bJayXPjey6vkmaQ==}
     engines: {node: '>=8'}
 
   clean-stack@2.2.0:
@@ -4142,8 +4147,8 @@ packages:
     engines: {node: '>=4'}
     hasBin: true
 
-  cssstyle@4.5.0:
-    resolution: {integrity: sha512-/7gw8TGrvH/0g564EnhgFZogTMVe+lifpB7LWU+PEsiq5o83TUXR3fDbzTRXOJhoJwck5IS9ez3Em5LNMMO2aw==}
+  cssstyle@4.6.0:
+    resolution: {integrity: sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==}
     engines: {node: '>=18'}
 
   csstype@3.1.3:
@@ -4159,8 +4164,8 @@ packages:
     peerDependencies:
       cytoscape: ^3.2.0
 
-  cytoscape@3.32.0:
-    resolution: {integrity: sha512-5JHBC9n75kz5851jeklCPmZWcg3hUe6sjqJvyk3+hVqFaKcHwHgxsjeN1yLmggoUc6STbtm9/NQyabQehfjvWQ==}
+  cytoscape@3.32.1:
+    resolution: {integrity: sha512-dbeqFTLYEwlFg7UGtcZhCCG/2WayX72zK3Sq323CEX29CY81tYfVhw1MIdduCtpstB0cTOhJswWlM/OEB3Xp+Q==}
     engines: {node: '>=0.10'}
 
   d3-array@2.12.1:
@@ -4357,8 +4362,8 @@ packages:
   decimal.js-light@2.5.1:
     resolution: {integrity: sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==}
 
-  decimal.js@10.5.0:
-    resolution: {integrity: sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==}
+  decimal.js@10.6.0:
+    resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==}
 
   decode-named-character-reference@1.2.0:
     resolution: {integrity: sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==}
@@ -4449,8 +4454,8 @@ packages:
     resolution: {integrity: sha512-vwEppIphpFdvaMCaHfCEv9IgwcxMljMw2TnAQBB4VWPvzXQLTb82jwmdOKzlEVUL3gNFT4l4TPKO+Bn+sqcrVQ==}
     engines: {node: '>=12'}
 
-  dotenv@16.5.0:
-    resolution: {integrity: sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==}
+  dotenv@16.6.1:
+    resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==}
     engines: {node: '>=12'}
 
   dunder-proto@1.0.1:
@@ -4460,8 +4465,8 @@ packages:
   eastasianwidth@0.2.0:
     resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
 
-  electron-to-chromium@1.5.172:
-    resolution: {integrity: sha512-fnKW9dGgmBfsebbYognQSv0CGGLFH1a5iV9EDYTBwmAQn+whbzHbLFlC+3XbHc8xaNtpO0etm8LOcRXs1qMRkQ==}
+  electron-to-chromium@1.5.181:
+    resolution: {integrity: sha512-+ISMj8OIQ+0qEeDj14Rt8WwcTOiqHyAB+5bnK1K7xNNLjBJ4hRCQfUkw8RWtcLbfBzDwc15ZnKH0c7SNOfwiyA==}
 
   elliptic@6.6.1:
     resolution: {integrity: sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==}
@@ -4554,8 +4559,8 @@ packages:
     engines: {node: '>=12'}
     hasBin: true
 
-  esbuild@0.25.5:
-    resolution: {integrity: sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==}
+  esbuild@0.25.6:
+    resolution: {integrity: sha512-GVuzuUwtdsghE3ocJ9Bs8PNoF13HNQ5TXbEi2AhvVb8xU1Iwt9Fos9FEamfoee+u/TOsn7GUWc04lz46n2bbTg==}
     engines: {node: '>=18'}
     hasBin: true
 
@@ -4590,8 +4595,8 @@ packages:
       eslint-plugin-import-x:
         optional: true
 
-  eslint-mdx@3.5.0:
-    resolution: {integrity: sha512-3iFgW201z26bnFJelrrG2D8YXx1jk9JzXBp2pN32EMIpg47ZBM20mkdneLXn2CBKp27ZMHTygEA1DJNpqMu4Pg==}
+  eslint-mdx@3.6.2:
+    resolution: {integrity: sha512-5hczn5iSSEcwtNtVXFwCKIk6iLEDaZpwc3vjYDl/B779OzaAAK/ou16J2xVdO6ecOLEO1WZqp7MRCQ/WsKDUig==}
     engines: {node: '>=18.0.0'}
     peerDependencies:
       eslint: '>=8.0.0'
@@ -4637,8 +4642,8 @@ packages:
     peerDependencies:
       eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9
 
-  eslint-plugin-mdx@3.5.0:
-    resolution: {integrity: sha512-pxXH/a2eH3Pxkmp1LSTqFfizIF1ZEUJjEm99gy+k/c+rK+SITEHg04LbPZBqG0T3Z4x0tPtY7zm9miqypcPxuw==}
+  eslint-plugin-mdx@3.6.2:
+    resolution: {integrity: sha512-RfMd5HYD/9+cqANhVWJbuBRg3huWUsAoGJNGmPsyiRD2X6BaG6bvt1omyk1ORlg81GK8ST7Ojt5fNAuwWhWU8A==}
     engines: {node: '>=18.0.0'}
     peerDependencies:
       eslint: '>=8.0.0'
@@ -4770,8 +4775,8 @@ packages:
     resolution: {integrity: sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==}
     engines: {node: '>=6'}
 
-  expect-type@1.2.1:
-    resolution: {integrity: sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==}
+  expect-type@1.2.2:
+    resolution: {integrity: sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==}
     engines: {node: '>=12.0.0'}
 
   exsolve@1.0.7:
@@ -4896,8 +4901,8 @@ packages:
   fraction.js@4.3.7:
     resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==}
 
-  framer-motion@12.19.1:
-    resolution: {integrity: sha512-nq9hwWAEKf4gzprbOZzKugLV5OVKF7zrNDY6UOVu+4D3ZgIkg8L9Jy6AMrpBM06fhbKJ6LEG6UY5+t7Eq6wNlg==}
+  framer-motion@12.23.1:
+    resolution: {integrity: sha512-7P1t2DnKEUXvPxVZJu9Hd4gfdoUF6z9U3w3/MUXCVFNHiFV+iSoboqeK4/ZCCpa49/ZiVEWfaaYCPscqPPsOVQ==}
     peerDependencies:
       '@emotion/is-prop-valid': '*'
       react: ^18.0.0 || ^19.0.0
@@ -5000,10 +5005,6 @@ packages:
     engines: {node: '>=12'}
     deprecated: Glob versions prior to v9 are no longer supported
 
-  globals@11.12.0:
-    resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
-    engines: {node: '>=4'}
-
   globals@13.24.0:
     resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==}
     engines: {node: '>=8'}
@@ -5786,8 +5787,8 @@ packages:
     resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
     engines: {node: '>= 8'}
 
-  mermaid@11.7.0:
-    resolution: {integrity: sha512-/1/5R0rt0Z1Ak0CuznAnCF3HtQgayRXUz6SguzOwN4L+DuCobz0UxnQ+ZdTSZ3AugKVVh78tiVmsHpHWV25TCw==}
+  mermaid@11.8.1:
+    resolution: {integrity: sha512-VSXJLqP1Sqw5sGr273mhvpPRhXwE6NlmMSqBZQw+yZJoAJkOIPPn/uT3teeCBx60Fkt5zEI3FrH2eVT0jXRDzw==}
 
   mhchemparser@4.2.1:
     resolution: {integrity: sha512-kYmyrCirqJf3zZ9t/0wGgRZ4/ZJw//VwaRVGA75C4nhE60vtnIzhl9J9ndkX/h6hxSN7pjg/cE0VxbnNM+bnDQ==}
@@ -5970,8 +5971,8 @@ packages:
   mitt@3.0.1:
     resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==}
 
-  mixpanel-browser@2.65.0:
-    resolution: {integrity: sha512-BtrVYqilloAqx3TIhoIpNikHznTocEy/z3QIf6WEiz4PFxrgI6LgSMFIVKqLqGZJ8svrPlHbpp/CJp5wQYUZWw==}
+  mixpanel-browser@2.66.0:
+    resolution: {integrity: sha512-n02abeEhQCNHnpQlYTYx8EzcZGpNXvmw8ozgbFiTbthMRY65aPXuRat5hCiZXllZ+UY31awszFx/LpryPwie0A==}
 
   mj-context-menu@0.6.1:
     resolution: {integrity: sha512-7NO5s6n10TIV96d4g2uDpG7ZDpIhMh0QNfGdJw/W47JswFcosz457wqz/b5sAKvl12sxINGFCn80NZHKwxQEXA==}
@@ -5992,14 +5993,14 @@ packages:
     engines: {node: '>= 14.0.0'}
     hasBin: true
 
-  motion-dom@12.19.0:
-    resolution: {integrity: sha512-m96uqq8VbwxFLU0mtmlsIVe8NGGSdpBvBSHbnnOJQxniPaabvVdGgxSamhuDwBsRhwX7xPxdICgVJlOpzn/5bw==}
+  motion-dom@12.23.1:
+    resolution: {integrity: sha512-kcMDS8yhUZgO7iu3FB0UYZpHUymZlj4aoEqH0Vf0k3JtZA0xfYIrmbDlKn6X7+INXV3hDAIBUf4aT5jEUHvvWQ==}
 
-  motion-utils@12.19.0:
-    resolution: {integrity: sha512-BuFTHINYmV07pdWs6lj6aI63vr2N4dg0vR+td0rtrdpWOhBzIkEklZyLcvKBoEtwSqx8Jg06vUB5RS0xDiUybw==}
+  motion-utils@12.23.1:
+    resolution: {integrity: sha512-coqLmHUTBA1KyBNEO64sTCWlduDV5Q6Yv0szjxnHVzZmcFYpVowyP6S38iOUlhocannaCCHlZ06lyLWQe/jheQ==}
 
-  motion@12.19.1:
-    resolution: {integrity: sha512-OhoHWrht+zwDPccr2wGltJdwgz2elFBBt/sLei2g0hwICvy2hOBFUkA4Ylup3VnDgz+vUtecf694EV7bJK4XjA==}
+  motion@12.23.1:
+    resolution: {integrity: sha512-VuvoiZp6inGTYXzle/EXxCxFDgd0hlplRH2pcF7OIFXvbojpSDrYQVQShOScGYru9jKlavjDq1E9owm/p3ARtQ==}
     peerDependencies:
       '@emotion/is-prop-valid': '*'
       react: ^18.0.0 || ^19.0.0
@@ -6031,8 +6032,8 @@ packages:
     engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
     hasBin: true
 
-  napi-postinstall@0.2.4:
-    resolution: {integrity: sha512-ZEzHJwBhZ8qQSbknHqYcdtQVr8zUgGyM/q6h6qAyhtyVMNrSgDhrC4disf03dYW0e+czXyLnZINnCTEkWy0eJg==}
+  napi-postinstall@0.3.0:
+    resolution: {integrity: sha512-M7NqKyhODKV1gRLdkwE7pDsZP2/SC2a2vHkOYh9MCpKMbWVfyVfUw5MaH83Fv6XMjxr5jryUp3IDDL9rlxsTeA==}
     engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
     hasBin: true
 
@@ -6338,8 +6339,8 @@ packages:
   pathe@2.0.3:
     resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==}
 
-  pathval@2.0.0:
-    resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==}
+  pathval@2.0.1:
+    resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==}
     engines: {node: '>= 14.16'}
 
   picocolors@1.1.1:
@@ -6368,8 +6369,8 @@ packages:
   pkg-types@1.3.1:
     resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==}
 
-  pkg-types@2.1.0:
-    resolution: {integrity: sha512-wmJwA+8ihJixSoHKxZJRBQG1oY8Yr9pGLzRmSsNms0iNWyHHAlZCa7mmKiFR10YPZuz/2k169JiS/inOjBCZ2A==}
+  pkg-types@2.2.0:
+    resolution: {integrity: sha512-2SM/GZGAEkPp3KWORxQZns4M+WSeXbC2HEvmOIJe3Cmiv6ieAJvdVhDldtHqM5J1Y7MrR1XhkBT/rMlhh9FdqQ==}
 
   pluralize@8.0.0:
     resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==}
@@ -6460,11 +6461,13 @@ packages:
     resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
     engines: {node: '>= 0.8.0'}
 
-  prettier-plugin-tailwindcss@0.6.13:
-    resolution: {integrity: sha512-uQ0asli1+ic8xrrSmIOaElDu0FacR4x69GynTh2oZjFY10JUt6EEumTQl5tB4fMeD6I1naKd+4rXQQ7esT2i1g==}
+  prettier-plugin-tailwindcss@0.6.14:
+    resolution: {integrity: sha512-pi2e/+ZygeIqntN+vC573BcW5Cve8zUB0SSAGxqpB4f96boZF4M3phPVoOFCeypwkpRYdi7+jQ5YJJUwrkGUAg==}
     engines: {node: '>=14.21.3'}
     peerDependencies:
       '@ianvs/prettier-plugin-sort-imports': '*'
+      '@prettier/plugin-hermes': '*'
+      '@prettier/plugin-oxc': '*'
       '@prettier/plugin-pug': '*'
       '@shopify/prettier-plugin-liquid': '*'
       '@trivago/prettier-plugin-sort-imports': '*'
@@ -6484,6 +6487,10 @@ packages:
     peerDependenciesMeta:
       '@ianvs/prettier-plugin-sort-imports':
         optional: true
+      '@prettier/plugin-hermes':
+        optional: true
+      '@prettier/plugin-oxc':
+        optional: true
       '@prettier/plugin-pug':
         optional: true
       '@shopify/prettier-plugin-liquid':
@@ -6520,8 +6527,8 @@ packages:
     engines: {node: '>=10.13.0'}
     hasBin: true
 
-  prettier@3.6.1:
-    resolution: {integrity: sha512-5xGWRa90Sp2+x1dQtNpIpeOQpTDBs9cZDmA/qs2vDNN2i18PdapqY7CmBeyLlMuGqXJRIOPaCaVZTLNQRWUH/A==}
+  prettier@3.6.2:
+    resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==}
     engines: {node: '>=14'}
     hasBin: true
 
@@ -6904,8 +6911,8 @@ packages:
   rollup-pluginutils@2.8.2:
     resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==}
 
-  rollup@4.44.0:
-    resolution: {integrity: sha512-qHcdEzLCiktQIfwBq420pn2dP+30uzqYxv9ETm91wdt2R9AFcWfjNAmje4NWlnCIQ5RMTzVf0ZyisOKqHR6RwA==}
+  rollup@4.44.2:
+    resolution: {integrity: sha512-PVoapzTwSEcelaWGth3uR66u7ZRo6qhPHc0f2uRO9fX6XDVNrIiGYS0Pj9+R8yIIYSD/mCx2b16Ws9itljKSPg==}
     engines: {node: '>=18.0.0', npm: '>=8.0.0'}
     hasBin: true
 
@@ -7654,8 +7661,8 @@ packages:
     resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
     engines: {node: '>= 0.8'}
 
-  unrs-resolver@1.9.1:
-    resolution: {integrity: sha512-4AZVxP05JGN6DwqIkSP4VKLOcwQa5l37SWHF/ahcuqBMbfxbpN1L1QKafEhWCziHhzKex9H/AR09H0OuVyU+9g==}
+  unrs-resolver@1.11.1:
+    resolution: {integrity: sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==}
 
   update-browserslist-db@1.1.3:
     resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==}
@@ -7747,8 +7754,8 @@ packages:
   victory-vendor@36.9.2:
     resolution: {integrity: sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ==}
 
-  viem@2.31.4:
-    resolution: {integrity: sha512-0UZ/asvzl6p44CIBRDbwEcn3HXIQQurBZcMo5qmLhQ8s27Ockk+RYohgTLlpLvkYs8/t4UUEREAbHLuek1kXcw==}
+  viem@2.31.7:
+    resolution: {integrity: sha512-mpB8Hp6xK77E/b/yJmpAIQcxcOfpbrwWNItjnXaIA8lxZYt4JS433Pge2gg6Hp3PwyFtaUMh01j5L8EXnLTjQQ==}
     peerDependencies:
       typescript: '>=5.0.4'
     peerDependenciesMeta:
@@ -7927,8 +7934,8 @@ packages:
   workerpool@6.5.1:
     resolution: {integrity: sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==}
 
-  wrangler@3.114.10:
-    resolution: {integrity: sha512-UMs4bSH+P47oXvXqgziRqD8UOT8KBF6D/4O0bB9Kyh9QrT1FGpG2p4rV4FtbKFOchDrXQozbthScND+vLc8gqw==}
+  wrangler@3.114.11:
+    resolution: {integrity: sha512-g0KhNj0AzlDXrW/XNzOrbfjBnDHbmf3a+3+UR67BbKnS8EUC9yTPrKCRymERdFKfiSvlPs34tHGAzOTw62Jb4g==}
     engines: {node: '>=16.17.0'}
     hasBin: true
     peerDependencies:
@@ -7984,6 +7991,18 @@ packages:
       utf-8-validate:
         optional: true
 
+  ws@8.18.3:
+    resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==}
+    engines: {node: '>=10.0.0'}
+    peerDependencies:
+      bufferutil: ^4.0.1
+      utf-8-validate: '>=5.0.2'
+    peerDependenciesMeta:
+      bufferutil:
+        optional: true
+      utf-8-validate:
+        optional: true
+
   xml-name-validator@5.0.0:
     resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==}
     engines: {node: '>=18'}
@@ -8033,12 +8052,6 @@ packages:
   youch@3.3.4:
     resolution: {integrity: sha512-UeVBXie8cA35DS6+nBkls68xaBBXCye0CNznrhszZjTbRVnJKQuNsyLKBTTL4ln1o1rh2PKtv35twV7irj5SEg==}
 
-  zod-validation-error@3.4.0:
-    resolution: {integrity: sha512-ZOPR9SVY6Pb2qqO5XHt+MkkTRxGXb4EVtnjc9JpXUOtUB1T9Ru7mZOT361AN3MsetVe7R0a1KZshJDZdgp9miQ==}
-    engines: {node: '>=18.0.0'}
-    peerDependencies:
-      zod: ^3.18.0
-
   zod-validation-error@3.5.2:
     resolution: {integrity: sha512-mdi7YOLtram5dzJ5aDtm1AG9+mxRma1iaMrZdYIpFO7epdKBUwLHIxTF8CPDeCQ828zAXYtizrKlEJAtzgfgrw==}
     engines: {node: '>=18.0.0'}
@@ -8048,11 +8061,11 @@ packages:
   zod@3.22.3:
     resolution: {integrity: sha512-EjIevzuJRiRPbVH4mGc8nApb/lVLKVpmUhAaR5R5doKGfAnGJ6Gr3CViAVjP+4FWSxCsybeWQdcgCtbX+7oZug==}
 
-  zod@3.23.8:
-    resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==}
+  zod@3.25.58:
+    resolution: {integrity: sha512-DVLmMQzSZwNYzQoMaM3MQWnxr2eq+AtM9Hx3w1/Yl0pH8sLTSjN4jGP7w6f7uand6Hw44tsnSu1hz1AOA6qI2Q==}
 
-  zod@3.25.67:
-    resolution: {integrity: sha512-idA2YXwpCdqUSKRCACDE6ItZD9TZzy3OZMtpfLoh6oPR47lipysRrJfjzMqFxQ3uJuUPyUeWe1r9vLH33xO/Qw==}
+  zod@3.25.76:
+    resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==}
 
   zwitch@2.0.4:
     resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
@@ -8063,110 +8076,110 @@ snapshots:
 
   '@adraffy/ens-normalize@1.11.0': {}
 
-  '@algolia/autocomplete-core@1.17.9(@algolia/client-search@5.29.0)(algoliasearch@5.29.0)(search-insights@2.17.3)':
+  '@algolia/autocomplete-core@1.17.9(@algolia/client-search@5.32.0)(algoliasearch@5.32.0)(search-insights@2.17.3)':
     dependencies:
-      '@algolia/autocomplete-plugin-algolia-insights': 1.17.9(@algolia/client-search@5.29.0)(algoliasearch@5.29.0)(search-insights@2.17.3)
-      '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.29.0)(algoliasearch@5.29.0)
+      '@algolia/autocomplete-plugin-algolia-insights': 1.17.9(@algolia/client-search@5.32.0)(algoliasearch@5.32.0)(search-insights@2.17.3)
+      '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.32.0)(algoliasearch@5.32.0)
     transitivePeerDependencies:
       - '@algolia/client-search'
       - algoliasearch
       - search-insights
 
-  '@algolia/autocomplete-plugin-algolia-insights@1.17.9(@algolia/client-search@5.29.0)(algoliasearch@5.29.0)(search-insights@2.17.3)':
+  '@algolia/autocomplete-plugin-algolia-insights@1.17.9(@algolia/client-search@5.32.0)(algoliasearch@5.32.0)(search-insights@2.17.3)':
     dependencies:
-      '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.29.0)(algoliasearch@5.29.0)
+      '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.32.0)(algoliasearch@5.32.0)
       search-insights: 2.17.3
     transitivePeerDependencies:
       - '@algolia/client-search'
       - algoliasearch
 
-  '@algolia/autocomplete-preset-algolia@1.17.9(@algolia/client-search@5.29.0)(algoliasearch@5.29.0)':
+  '@algolia/autocomplete-preset-algolia@1.17.9(@algolia/client-search@5.32.0)(algoliasearch@5.32.0)':
     dependencies:
-      '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.29.0)(algoliasearch@5.29.0)
-      '@algolia/client-search': 5.29.0
-      algoliasearch: 5.29.0
+      '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.32.0)(algoliasearch@5.32.0)
+      '@algolia/client-search': 5.32.0
+      algoliasearch: 5.32.0
 
-  '@algolia/autocomplete-shared@1.17.9(@algolia/client-search@5.29.0)(algoliasearch@5.29.0)':
+  '@algolia/autocomplete-shared@1.17.9(@algolia/client-search@5.32.0)(algoliasearch@5.32.0)':
     dependencies:
-      '@algolia/client-search': 5.29.0
-      algoliasearch: 5.29.0
+      '@algolia/client-search': 5.32.0
+      algoliasearch: 5.32.0
 
-  '@algolia/client-abtesting@5.29.0':
+  '@algolia/client-abtesting@5.32.0':
     dependencies:
-      '@algolia/client-common': 5.29.0
-      '@algolia/requester-browser-xhr': 5.29.0
-      '@algolia/requester-fetch': 5.29.0
-      '@algolia/requester-node-http': 5.29.0
+      '@algolia/client-common': 5.32.0
+      '@algolia/requester-browser-xhr': 5.32.0
+      '@algolia/requester-fetch': 5.32.0
+      '@algolia/requester-node-http': 5.32.0
 
-  '@algolia/client-analytics@5.29.0':
+  '@algolia/client-analytics@5.32.0':
     dependencies:
-      '@algolia/client-common': 5.29.0
-      '@algolia/requester-browser-xhr': 5.29.0
-      '@algolia/requester-fetch': 5.29.0
-      '@algolia/requester-node-http': 5.29.0
+      '@algolia/client-common': 5.32.0
+      '@algolia/requester-browser-xhr': 5.32.0
+      '@algolia/requester-fetch': 5.32.0
+      '@algolia/requester-node-http': 5.32.0
 
-  '@algolia/client-common@5.29.0': {}
+  '@algolia/client-common@5.32.0': {}
 
-  '@algolia/client-insights@5.29.0':
+  '@algolia/client-insights@5.32.0':
     dependencies:
-      '@algolia/client-common': 5.29.0
-      '@algolia/requester-browser-xhr': 5.29.0
-      '@algolia/requester-fetch': 5.29.0
-      '@algolia/requester-node-http': 5.29.0
+      '@algolia/client-common': 5.32.0
+      '@algolia/requester-browser-xhr': 5.32.0
+      '@algolia/requester-fetch': 5.32.0
+      '@algolia/requester-node-http': 5.32.0
 
-  '@algolia/client-personalization@5.29.0':
+  '@algolia/client-personalization@5.32.0':
     dependencies:
-      '@algolia/client-common': 5.29.0
-      '@algolia/requester-browser-xhr': 5.29.0
-      '@algolia/requester-fetch': 5.29.0
-      '@algolia/requester-node-http': 5.29.0
+      '@algolia/client-common': 5.32.0
+      '@algolia/requester-browser-xhr': 5.32.0
+      '@algolia/requester-fetch': 5.32.0
+      '@algolia/requester-node-http': 5.32.0
 
-  '@algolia/client-query-suggestions@5.29.0':
+  '@algolia/client-query-suggestions@5.32.0':
     dependencies:
-      '@algolia/client-common': 5.29.0
-      '@algolia/requester-browser-xhr': 5.29.0
-      '@algolia/requester-fetch': 5.29.0
-      '@algolia/requester-node-http': 5.29.0
+      '@algolia/client-common': 5.32.0
+      '@algolia/requester-browser-xhr': 5.32.0
+      '@algolia/requester-fetch': 5.32.0
+      '@algolia/requester-node-http': 5.32.0
 
-  '@algolia/client-search@5.29.0':
+  '@algolia/client-search@5.32.0':
     dependencies:
-      '@algolia/client-common': 5.29.0
-      '@algolia/requester-browser-xhr': 5.29.0
-      '@algolia/requester-fetch': 5.29.0
-      '@algolia/requester-node-http': 5.29.0
+      '@algolia/client-common': 5.32.0
+      '@algolia/requester-browser-xhr': 5.32.0
+      '@algolia/requester-fetch': 5.32.0
+      '@algolia/requester-node-http': 5.32.0
 
-  '@algolia/ingestion@1.29.0':
+  '@algolia/ingestion@1.32.0':
     dependencies:
-      '@algolia/client-common': 5.29.0
-      '@algolia/requester-browser-xhr': 5.29.0
-      '@algolia/requester-fetch': 5.29.0
-      '@algolia/requester-node-http': 5.29.0
+      '@algolia/client-common': 5.32.0
+      '@algolia/requester-browser-xhr': 5.32.0
+      '@algolia/requester-fetch': 5.32.0
+      '@algolia/requester-node-http': 5.32.0
 
-  '@algolia/monitoring@1.29.0':
+  '@algolia/monitoring@1.32.0':
     dependencies:
-      '@algolia/client-common': 5.29.0
-      '@algolia/requester-browser-xhr': 5.29.0
-      '@algolia/requester-fetch': 5.29.0
-      '@algolia/requester-node-http': 5.29.0
+      '@algolia/client-common': 5.32.0
+      '@algolia/requester-browser-xhr': 5.32.0
+      '@algolia/requester-fetch': 5.32.0
+      '@algolia/requester-node-http': 5.32.0
 
-  '@algolia/recommend@5.29.0':
+  '@algolia/recommend@5.32.0':
     dependencies:
-      '@algolia/client-common': 5.29.0
-      '@algolia/requester-browser-xhr': 5.29.0
-      '@algolia/requester-fetch': 5.29.0
-      '@algolia/requester-node-http': 5.29.0
+      '@algolia/client-common': 5.32.0
+      '@algolia/requester-browser-xhr': 5.32.0
+      '@algolia/requester-fetch': 5.32.0
+      '@algolia/requester-node-http': 5.32.0
 
-  '@algolia/requester-browser-xhr@5.29.0':
+  '@algolia/requester-browser-xhr@5.32.0':
     dependencies:
-      '@algolia/client-common': 5.29.0
+      '@algolia/client-common': 5.32.0
 
-  '@algolia/requester-fetch@5.29.0':
+  '@algolia/requester-fetch@5.32.0':
     dependencies:
-      '@algolia/client-common': 5.29.0
+      '@algolia/client-common': 5.32.0
 
-  '@algolia/requester-node-http@5.29.0':
+  '@algolia/requester-node-http@5.32.0':
     dependencies:
-      '@algolia/client-common': 5.29.0
+      '@algolia/client-common': 5.32.0
 
   '@alloc/quick-lru@5.2.0': {}
 
@@ -8196,18 +8209,20 @@ snapshots:
       js-tokens: 4.0.0
       picocolors: 1.1.1
 
-  '@babel/generator@7.27.5':
+  '@babel/generator@7.28.0':
     dependencies:
-      '@babel/parser': 7.27.5
-      '@babel/types': 7.27.6
-      '@jridgewell/gen-mapping': 0.3.8
-      '@jridgewell/trace-mapping': 0.3.25
+      '@babel/parser': 7.28.0
+      '@babel/types': 7.28.0
+      '@jridgewell/gen-mapping': 0.3.12
+      '@jridgewell/trace-mapping': 0.3.29
       jsesc: 3.1.0
 
+  '@babel/helper-globals@7.28.0': {}
+
   '@babel/helper-module-imports@7.27.1':
     dependencies:
-      '@babel/traverse': 7.27.4
-      '@babel/types': 7.27.6
+      '@babel/traverse': 7.28.0
+      '@babel/types': 7.28.0
     transitivePeerDependencies:
       - supports-color
 
@@ -8215,31 +8230,31 @@ snapshots:
 
   '@babel/helper-validator-identifier@7.27.1': {}
 
-  '@babel/parser@7.27.5':
+  '@babel/parser@7.28.0':
     dependencies:
-      '@babel/types': 7.27.6
+      '@babel/types': 7.28.0
 
   '@babel/runtime@7.27.6': {}
 
   '@babel/template@7.27.2':
     dependencies:
       '@babel/code-frame': 7.27.1
-      '@babel/parser': 7.27.5
-      '@babel/types': 7.27.6
+      '@babel/parser': 7.28.0
+      '@babel/types': 7.28.0
 
-  '@babel/traverse@7.27.4':
+  '@babel/traverse@7.28.0':
     dependencies:
       '@babel/code-frame': 7.27.1
-      '@babel/generator': 7.27.5
-      '@babel/parser': 7.27.5
+      '@babel/generator': 7.28.0
+      '@babel/helper-globals': 7.28.0
+      '@babel/parser': 7.28.0
       '@babel/template': 7.27.2
-      '@babel/types': 7.27.6
+      '@babel/types': 7.28.0
       debug: 4.4.1(supports-color@8.1.1)
-      globals: 11.12.0
     transitivePeerDependencies:
       - supports-color
 
-  '@babel/types@7.27.6':
+  '@babel/types@7.28.0':
     dependencies:
       '@babel/helper-string-parser': 7.27.1
       '@babel/helper-validator-identifier': 7.27.1
@@ -8247,8 +8262,8 @@ snapshots:
   '@base-ui-components/react@1.0.0-alpha.7(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
       '@babel/runtime': 7.27.6
-      '@floating-ui/react': 0.27.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@floating-ui/utils': 0.2.9
+      '@floating-ui/react': 0.27.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@floating-ui/utils': 0.2.10
       '@react-aria/overlays': 3.27.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       prop-types: 15.8.1
       react: 18.3.1
@@ -8303,7 +8318,7 @@ snapshots:
   '@cloudflare/workerd-windows-64@1.20250408.0':
     optional: true
 
-  '@cloudflare/workers-types@4.20250620.0': {}
+  '@cloudflare/workers-types@4.20250710.0': {}
 
   '@corex/deepmerge@4.0.43': {}
 
@@ -8333,12 +8348,12 @@ snapshots:
 
   '@docsearch/css@3.9.0': {}
 
-  '@docsearch/react@3.9.0(@algolia/client-search@5.29.0)(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)':
+  '@docsearch/react@3.9.0(@algolia/client-search@5.32.0)(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)':
     dependencies:
-      '@algolia/autocomplete-core': 1.17.9(@algolia/client-search@5.29.0)(algoliasearch@5.29.0)(search-insights@2.17.3)
-      '@algolia/autocomplete-preset-algolia': 1.17.9(@algolia/client-search@5.29.0)(algoliasearch@5.29.0)
+      '@algolia/autocomplete-core': 1.17.9(@algolia/client-search@5.32.0)(algoliasearch@5.32.0)(search-insights@2.17.3)
+      '@algolia/autocomplete-preset-algolia': 1.17.9(@algolia/client-search@5.32.0)(algoliasearch@5.32.0)
       '@docsearch/css': 3.9.0
-      algoliasearch: 5.29.0
+      algoliasearch: 5.32.0
     optionalDependencies:
       '@types/react': 18.3.23
       react: 18.3.1
@@ -8356,7 +8371,7 @@ snapshots:
       '@uniswap/v3-sdk': 3.25.2(hardhat@2.25.0(typescript@5.8.3))
       dataloader: 2.2.3
       dayjs: 1.11.13
-      decimal.js: 10.5.0
+      decimal.js: 10.6.0
       ethers: 5.8.0
       graphql: 16.11.0
       graphql-tag: 2.12.6(graphql@16.11.0)
@@ -8367,13 +8382,13 @@ snapshots:
       - hardhat
       - utf-8-validate
 
-  '@edgeandnode/ens@2.3.0(typescript@5.8.3)(viem@2.31.4(typescript@5.8.3)(zod@3.25.67))':
+  '@edgeandnode/ens@2.3.0(typescript@5.8.3)(viem@2.31.7(typescript@5.8.3)(zod@3.25.76))':
     dependencies:
-      '@ensdomains/ensjs': 4.0.2(typescript@5.8.3)(viem@2.31.4(typescript@5.8.3)(zod@3.25.67))(zod@3.25.67)
+      '@ensdomains/ensjs': 4.0.2(typescript@5.8.3)(viem@2.31.7(typescript@5.8.3)(zod@3.25.76))(zod@3.25.76)
       graphql: 16.11.0
       graphql-request: 7.2.0(graphql@16.11.0)
-      viem: 2.31.4(typescript@5.8.3)(zod@3.25.67)
-      zod: 3.25.67
+      viem: 2.31.7(typescript@5.8.3)(zod@3.25.76)
+      zod: 3.25.76
     transitivePeerDependencies:
       - encoding
       - typescript
@@ -8382,7 +8397,7 @@ snapshots:
     dependencies:
       '@hasparus/eslint-plugin': 1.0.0
       '@next/eslint-plugin-next': 13.4.9
-      '@rushstack/eslint-patch': 1.11.0
+      '@rushstack/eslint-patch': 1.12.0
       '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3)
       '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.8.3)
       eslint: 8.57.1
@@ -8401,14 +8416,14 @@ snapshots:
       - eslint-plugin-import-x
       - supports-color
 
-  '@edgeandnode/gds@6.6.2(@emotion/is-prop-valid@0.8.8)(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(@theme-ui/core@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(dayjs@1.11.13)(hardhat@2.25.0(typescript@5.8.3))(next@14.2.30(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)(theme-ui@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(typescript@5.8.3)':
+  '@edgeandnode/gds@6.7.0(@emotion/is-prop-valid@0.8.8)(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(@theme-ui/core@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(dayjs@1.11.13)(hardhat@2.25.0(typescript@5.8.3))(next@14.2.30(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)(theme-ui@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(typescript@5.8.3)':
     dependencies:
       '@base-ui-components/react': 1.0.0-alpha.7(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@bramus/style-observer': 2.0.2
       '@edgeandnode/common': 7.0.4(hardhat@2.25.0(typescript@5.8.3))
       '@emotion/react': 11.14.0(@types/react@18.3.23)(react@18.3.1)
-      '@figma/code-connect': 1.3.3
-      '@floating-ui/react-dom': 2.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@figma/code-connect': 1.3.4
+      '@floating-ui/react-dom': 2.1.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@headlessui/react': 2.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@phosphor-icons/react': 2.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@radix-ui/react-accordion': 1.2.11(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -8429,7 +8444,7 @@ snapshots:
       '@tanem/react-nprogress': 5.0.55(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@theme-ui/css': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))
       '@theme-ui/match-media': 0.17.2(@theme-ui/core@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(@theme-ui/css@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1)))(react@18.3.1)
-      '@web3icons/react': 4.0.16(react@18.3.1)(typescript@5.8.3)
+      '@web3icons/react': 4.0.17(react@18.3.1)(typescript@5.8.3)
       '@xstate/react': 3.2.2(@types/react@18.3.23)(react@18.3.1)(xstate@4.38.3)
       color: 5.0.0
       dayjs: 1.11.13
@@ -8437,7 +8452,7 @@ snapshots:
       ethers: 5.8.0
       lodash: 4.17.21
       md5: 2.3.0
-      motion: 12.19.1(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      motion: 12.23.1(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       numeral: 2.0.6
       prism-react-renderer: 2.4.1(react@18.3.1)
       prismjs: 1.30.0
@@ -8476,11 +8491,11 @@ snapshots:
       - typescript
       - utf-8-validate
 
-  '@edgeandnode/go@10.2.3(f31233e6aec53dd14ecd91b56887af79)':
+  '@edgeandnode/go@10.3.0(df7a60f2b2bbf39644b6c2833d03ec2d)':
     dependencies:
       '@edgeandnode/common': 7.0.4(hardhat@2.25.0(typescript@5.8.3))
-      '@edgeandnode/ens': 2.3.0(typescript@5.8.3)(viem@2.31.4(typescript@5.8.3)(zod@3.25.67))
-      '@edgeandnode/gds': 6.6.2(@emotion/is-prop-valid@0.8.8)(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(@theme-ui/core@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(dayjs@1.11.13)(hardhat@2.25.0(typescript@5.8.3))(next@14.2.30(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)(theme-ui@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(typescript@5.8.3)
+      '@edgeandnode/ens': 2.3.0(typescript@5.8.3)(viem@2.31.7(typescript@5.8.3)(zod@3.25.76))
+      '@edgeandnode/gds': 6.7.0(@emotion/is-prop-valid@0.8.8)(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(@theme-ui/core@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(dayjs@1.11.13)(hardhat@2.25.0(typescript@5.8.3))(next@14.2.30(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)(theme-ui@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(typescript@5.8.3)
       '@emotion/react': 11.14.0(@types/react@18.3.23)(react@18.3.1)
       '@graphql-typed-document-node/core': 3.2.0(graphql@16.11.0)
       '@radix-ui/react-collapsible': 1.1.11(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -8488,13 +8503,13 @@ snapshots:
       '@radix-ui/react-navigation-menu': 1.2.13(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@tanstack/react-query': 5.81.2(react@18.3.1)
+      '@tanstack/react-query': 5.82.0(react@18.3.1)
       '@theme-ui/css': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))
-      '@web3icons/react': 4.0.16(react@18.3.1)(typescript@5.8.3)
+      '@web3icons/react': 4.0.17(react@18.3.1)(typescript@5.8.3)
       escape-string-regexp: 5.0.0
       graphql: 16.11.0
       graphql-request: 7.2.0(graphql@16.11.0)
-      motion: 12.19.1(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      motion: 12.23.1(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
       tailwindcss: 3.4.17
@@ -8508,18 +8523,18 @@ snapshots:
       - ts-node
       - typescript
 
-  '@emnapi/core@1.4.3':
+  '@emnapi/core@1.4.4':
     dependencies:
-      '@emnapi/wasi-threads': 1.0.2
+      '@emnapi/wasi-threads': 1.0.3
       tslib: 2.8.1
     optional: true
 
-  '@emnapi/runtime@1.4.3':
+  '@emnapi/runtime@1.4.4':
     dependencies:
       tslib: 2.8.1
     optional: true
 
-  '@emnapi/wasi-threads@1.0.2':
+  '@emnapi/wasi-threads@1.0.3':
     dependencies:
       tslib: 2.8.1
     optional: true
@@ -8620,19 +8635,19 @@ snapshots:
       dns-packet: 5.6.1
       typescript-logging: 1.0.1
 
-  '@ensdomains/ensjs@4.0.2(typescript@5.8.3)(viem@2.31.4(typescript@5.8.3)(zod@3.25.67))(zod@3.25.67)':
+  '@ensdomains/ensjs@4.0.2(typescript@5.8.3)(viem@2.31.7(typescript@5.8.3)(zod@3.25.76))(zod@3.25.76)':
     dependencies:
       '@adraffy/ens-normalize': 1.10.1
       '@ensdomains/address-encoder': 1.1.1
       '@ensdomains/content-hash': 3.1.0-rc.1
       '@ensdomains/dnsprovejs': 0.5.1
-      abitype: 1.0.8(typescript@5.8.3)(zod@3.25.67)
+      abitype: 1.0.8(typescript@5.8.3)(zod@3.25.76)
       dns-packet: 5.6.1
       graphql: 16.11.0
       graphql-request: 6.1.0(graphql@16.11.0)
       pako: 2.1.0
       ts-pattern: 5.7.1
-      viem: 2.31.4(typescript@5.8.3)(zod@3.25.67)
+      viem: 2.31.7(typescript@5.8.3)(zod@3.25.76)
     transitivePeerDependencies:
       - encoding
       - typescript
@@ -8651,7 +8666,7 @@ snapshots:
   '@esbuild/aix-ppc64@0.21.5':
     optional: true
 
-  '@esbuild/aix-ppc64@0.25.5':
+  '@esbuild/aix-ppc64@0.25.6':
     optional: true
 
   '@esbuild/android-arm64@0.17.19':
@@ -8660,7 +8675,7 @@ snapshots:
   '@esbuild/android-arm64@0.21.5':
     optional: true
 
-  '@esbuild/android-arm64@0.25.5':
+  '@esbuild/android-arm64@0.25.6':
     optional: true
 
   '@esbuild/android-arm@0.17.19':
@@ -8669,7 +8684,7 @@ snapshots:
   '@esbuild/android-arm@0.21.5':
     optional: true
 
-  '@esbuild/android-arm@0.25.5':
+  '@esbuild/android-arm@0.25.6':
     optional: true
 
   '@esbuild/android-x64@0.17.19':
@@ -8678,7 +8693,7 @@ snapshots:
   '@esbuild/android-x64@0.21.5':
     optional: true
 
-  '@esbuild/android-x64@0.25.5':
+  '@esbuild/android-x64@0.25.6':
     optional: true
 
   '@esbuild/darwin-arm64@0.17.19':
@@ -8687,7 +8702,7 @@ snapshots:
   '@esbuild/darwin-arm64@0.21.5':
     optional: true
 
-  '@esbuild/darwin-arm64@0.25.5':
+  '@esbuild/darwin-arm64@0.25.6':
     optional: true
 
   '@esbuild/darwin-x64@0.17.19':
@@ -8696,7 +8711,7 @@ snapshots:
   '@esbuild/darwin-x64@0.21.5':
     optional: true
 
-  '@esbuild/darwin-x64@0.25.5':
+  '@esbuild/darwin-x64@0.25.6':
     optional: true
 
   '@esbuild/freebsd-arm64@0.17.19':
@@ -8705,7 +8720,7 @@ snapshots:
   '@esbuild/freebsd-arm64@0.21.5':
     optional: true
 
-  '@esbuild/freebsd-arm64@0.25.5':
+  '@esbuild/freebsd-arm64@0.25.6':
     optional: true
 
   '@esbuild/freebsd-x64@0.17.19':
@@ -8714,7 +8729,7 @@ snapshots:
   '@esbuild/freebsd-x64@0.21.5':
     optional: true
 
-  '@esbuild/freebsd-x64@0.25.5':
+  '@esbuild/freebsd-x64@0.25.6':
     optional: true
 
   '@esbuild/linux-arm64@0.17.19':
@@ -8723,7 +8738,7 @@ snapshots:
   '@esbuild/linux-arm64@0.21.5':
     optional: true
 
-  '@esbuild/linux-arm64@0.25.5':
+  '@esbuild/linux-arm64@0.25.6':
     optional: true
 
   '@esbuild/linux-arm@0.17.19':
@@ -8732,7 +8747,7 @@ snapshots:
   '@esbuild/linux-arm@0.21.5':
     optional: true
 
-  '@esbuild/linux-arm@0.25.5':
+  '@esbuild/linux-arm@0.25.6':
     optional: true
 
   '@esbuild/linux-ia32@0.17.19':
@@ -8741,7 +8756,7 @@ snapshots:
   '@esbuild/linux-ia32@0.21.5':
     optional: true
 
-  '@esbuild/linux-ia32@0.25.5':
+  '@esbuild/linux-ia32@0.25.6':
     optional: true
 
   '@esbuild/linux-loong64@0.17.19':
@@ -8750,7 +8765,7 @@ snapshots:
   '@esbuild/linux-loong64@0.21.5':
     optional: true
 
-  '@esbuild/linux-loong64@0.25.5':
+  '@esbuild/linux-loong64@0.25.6':
     optional: true
 
   '@esbuild/linux-mips64el@0.17.19':
@@ -8759,7 +8774,7 @@ snapshots:
   '@esbuild/linux-mips64el@0.21.5':
     optional: true
 
-  '@esbuild/linux-mips64el@0.25.5':
+  '@esbuild/linux-mips64el@0.25.6':
     optional: true
 
   '@esbuild/linux-ppc64@0.17.19':
@@ -8768,7 +8783,7 @@ snapshots:
   '@esbuild/linux-ppc64@0.21.5':
     optional: true
 
-  '@esbuild/linux-ppc64@0.25.5':
+  '@esbuild/linux-ppc64@0.25.6':
     optional: true
 
   '@esbuild/linux-riscv64@0.17.19':
@@ -8777,7 +8792,7 @@ snapshots:
   '@esbuild/linux-riscv64@0.21.5':
     optional: true
 
-  '@esbuild/linux-riscv64@0.25.5':
+  '@esbuild/linux-riscv64@0.25.6':
     optional: true
 
   '@esbuild/linux-s390x@0.17.19':
@@ -8786,7 +8801,7 @@ snapshots:
   '@esbuild/linux-s390x@0.21.5':
     optional: true
 
-  '@esbuild/linux-s390x@0.25.5':
+  '@esbuild/linux-s390x@0.25.6':
     optional: true
 
   '@esbuild/linux-x64@0.17.19':
@@ -8795,10 +8810,10 @@ snapshots:
   '@esbuild/linux-x64@0.21.5':
     optional: true
 
-  '@esbuild/linux-x64@0.25.5':
+  '@esbuild/linux-x64@0.25.6':
     optional: true
 
-  '@esbuild/netbsd-arm64@0.25.5':
+  '@esbuild/netbsd-arm64@0.25.6':
     optional: true
 
   '@esbuild/netbsd-x64@0.17.19':
@@ -8807,10 +8822,10 @@ snapshots:
   '@esbuild/netbsd-x64@0.21.5':
     optional: true
 
-  '@esbuild/netbsd-x64@0.25.5':
+  '@esbuild/netbsd-x64@0.25.6':
     optional: true
 
-  '@esbuild/openbsd-arm64@0.25.5':
+  '@esbuild/openbsd-arm64@0.25.6':
     optional: true
 
   '@esbuild/openbsd-x64@0.17.19':
@@ -8819,7 +8834,10 @@ snapshots:
   '@esbuild/openbsd-x64@0.21.5':
     optional: true
 
-  '@esbuild/openbsd-x64@0.25.5':
+  '@esbuild/openbsd-x64@0.25.6':
+    optional: true
+
+  '@esbuild/openharmony-arm64@0.25.6':
     optional: true
 
   '@esbuild/sunos-x64@0.17.19':
@@ -8828,7 +8846,7 @@ snapshots:
   '@esbuild/sunos-x64@0.21.5':
     optional: true
 
-  '@esbuild/sunos-x64@0.25.5':
+  '@esbuild/sunos-x64@0.25.6':
     optional: true
 
   '@esbuild/win32-arm64@0.17.19':
@@ -8837,7 +8855,7 @@ snapshots:
   '@esbuild/win32-arm64@0.21.5':
     optional: true
 
-  '@esbuild/win32-arm64@0.25.5':
+  '@esbuild/win32-arm64@0.25.6':
     optional: true
 
   '@esbuild/win32-ia32@0.17.19':
@@ -8846,7 +8864,7 @@ snapshots:
   '@esbuild/win32-ia32@0.21.5':
     optional: true
 
-  '@esbuild/win32-ia32@0.25.5':
+  '@esbuild/win32-ia32@0.25.6':
     optional: true
 
   '@esbuild/win32-x64@0.17.19':
@@ -8855,7 +8873,7 @@ snapshots:
   '@esbuild/win32-x64@0.21.5':
     optional: true
 
-  '@esbuild/win32-x64@0.25.5':
+  '@esbuild/win32-x64@0.25.6':
     optional: true
 
   '@eslint-community/eslint-utils@4.7.0(eslint@8.57.1)':
@@ -9156,14 +9174,14 @@ snapshots:
 
   '@fastify/busboy@2.1.1': {}
 
-  '@figma/code-connect@1.3.3':
+  '@figma/code-connect@1.3.4':
     dependencies:
       boxen: 5.1.1
       chalk: 4.1.2
       commander: 11.1.0
       compare-versions: 6.1.1
       cross-spawn: 7.0.6
-      dotenv: 16.5.0
+      dotenv: 16.6.1
       fast-fuzzy: 1.12.0
       find-up: 5.0.0
       glob: 10.4.5
@@ -9178,52 +9196,52 @@ snapshots:
       ts-morph: 23.0.0
       typescript: 5.5.4
       undici: 5.29.0
-      zod: 3.23.8
-      zod-validation-error: 3.4.0(zod@3.23.8)
+      zod: 3.25.58
+      zod-validation-error: 3.5.2(zod@3.25.58)
     transitivePeerDependencies:
       - bufferutil
       - canvas
       - supports-color
       - utf-8-validate
 
-  '@floating-ui/core@1.7.1':
+  '@floating-ui/core@1.7.2':
     dependencies:
-      '@floating-ui/utils': 0.2.9
+      '@floating-ui/utils': 0.2.10
 
-  '@floating-ui/dom@1.7.1':
+  '@floating-ui/dom@1.7.2':
     dependencies:
-      '@floating-ui/core': 1.7.1
-      '@floating-ui/utils': 0.2.9
+      '@floating-ui/core': 1.7.2
+      '@floating-ui/utils': 0.2.10
 
-  '@floating-ui/react-dom@2.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@floating-ui/react-dom@2.1.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@floating-ui/dom': 1.7.1
+      '@floating-ui/dom': 1.7.2
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
   '@floating-ui/react@0.26.28(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@floating-ui/react-dom': 2.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@floating-ui/utils': 0.2.9
+      '@floating-ui/react-dom': 2.1.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@floating-ui/utils': 0.2.10
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
       tabbable: 6.2.0
 
-  '@floating-ui/react@0.27.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@floating-ui/react@0.27.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@floating-ui/react-dom': 2.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@floating-ui/utils': 0.2.9
+      '@floating-ui/react-dom': 2.1.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@floating-ui/utils': 0.2.10
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
       tabbable: 6.2.0
 
-  '@floating-ui/utils@0.2.9': {}
+  '@floating-ui/utils@0.2.10': {}
 
   '@formatjs/ecma402-abstract@2.3.4':
     dependencies:
       '@formatjs/fast-memoize': 2.2.7
       '@formatjs/intl-localematcher': 0.6.1
-      decimal.js: 10.5.0
+      decimal.js: 10.6.0
       tslib: 2.8.1
 
   '@formatjs/fast-memoize@2.2.7':
@@ -9264,7 +9282,7 @@ snapshots:
       '@floating-ui/react': 0.26.28(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/focus': 3.20.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@tanstack/react-virtual': 3.13.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@tanstack/react-virtual': 3.13.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
       use-sync-external-store: 1.5.0(react@18.3.1)
@@ -9364,7 +9382,7 @@ snapshots:
 
   '@img/sharp-wasm32@0.33.5':
     dependencies:
-      '@emnapi/runtime': 1.4.3
+      '@emnapi/runtime': 1.4.4
     optional: true
 
   '@img/sharp-win32-ia32@0.33.5':
@@ -9399,27 +9417,24 @@ snapshots:
       wrap-ansi: 8.1.0
       wrap-ansi-cjs: wrap-ansi@7.0.0
 
-  '@jridgewell/gen-mapping@0.3.8':
+  '@jridgewell/gen-mapping@0.3.12':
     dependencies:
-      '@jridgewell/set-array': 1.2.1
-      '@jridgewell/sourcemap-codec': 1.5.0
-      '@jridgewell/trace-mapping': 0.3.25
+      '@jridgewell/sourcemap-codec': 1.5.4
+      '@jridgewell/trace-mapping': 0.3.29
 
   '@jridgewell/resolve-uri@3.1.2': {}
 
-  '@jridgewell/set-array@1.2.1': {}
+  '@jridgewell/sourcemap-codec@1.5.4': {}
 
-  '@jridgewell/sourcemap-codec@1.5.0': {}
-
-  '@jridgewell/trace-mapping@0.3.25':
+  '@jridgewell/trace-mapping@0.3.29':
     dependencies:
       '@jridgewell/resolve-uri': 3.1.2
-      '@jridgewell/sourcemap-codec': 1.5.0
+      '@jridgewell/sourcemap-codec': 1.5.4
 
   '@jridgewell/trace-mapping@0.3.9':
     dependencies:
       '@jridgewell/resolve-uri': 3.1.2
-      '@jridgewell/sourcemap-codec': 1.5.0
+      '@jridgewell/sourcemap-codec': 1.5.4
 
   '@leichtgewicht/ip-codec@2.0.5': {}
 
@@ -9459,7 +9474,7 @@ snapshots:
       '@types/react': 18.3.23
       react: 18.3.1
 
-  '@mermaid-js/parser@0.5.0':
+  '@mermaid-js/parser@0.6.1':
     dependencies:
       langium: 3.3.1
 
@@ -9524,8 +9539,8 @@ snapshots:
 
   '@napi-rs/wasm-runtime@0.2.11':
     dependencies:
-      '@emnapi/core': 1.4.3
-      '@emnapi/runtime': 1.4.3
+      '@emnapi/core': 1.4.4
+      '@emnapi/runtime': 1.4.4
       '@tybys/wasm-util': 0.9.0
     optional: true
 
@@ -9602,29 +9617,29 @@ snapshots:
 
   '@nolyfill/is-core-module@1.0.39': {}
 
-  '@nomicfoundation/edr-darwin-arm64@0.11.2': {}
+  '@nomicfoundation/edr-darwin-arm64@0.11.3': {}
 
-  '@nomicfoundation/edr-darwin-x64@0.11.2': {}
+  '@nomicfoundation/edr-darwin-x64@0.11.3': {}
 
-  '@nomicfoundation/edr-linux-arm64-gnu@0.11.2': {}
+  '@nomicfoundation/edr-linux-arm64-gnu@0.11.3': {}
 
-  '@nomicfoundation/edr-linux-arm64-musl@0.11.2': {}
+  '@nomicfoundation/edr-linux-arm64-musl@0.11.3': {}
 
-  '@nomicfoundation/edr-linux-x64-gnu@0.11.2': {}
+  '@nomicfoundation/edr-linux-x64-gnu@0.11.3': {}
 
-  '@nomicfoundation/edr-linux-x64-musl@0.11.2': {}
+  '@nomicfoundation/edr-linux-x64-musl@0.11.3': {}
 
-  '@nomicfoundation/edr-win32-x64-msvc@0.11.2': {}
+  '@nomicfoundation/edr-win32-x64-msvc@0.11.3': {}
 
-  '@nomicfoundation/edr@0.11.2':
+  '@nomicfoundation/edr@0.11.3':
     dependencies:
-      '@nomicfoundation/edr-darwin-arm64': 0.11.2
-      '@nomicfoundation/edr-darwin-x64': 0.11.2
-      '@nomicfoundation/edr-linux-arm64-gnu': 0.11.2
-      '@nomicfoundation/edr-linux-arm64-musl': 0.11.2
-      '@nomicfoundation/edr-linux-x64-gnu': 0.11.2
-      '@nomicfoundation/edr-linux-x64-musl': 0.11.2
-      '@nomicfoundation/edr-win32-x64-msvc': 0.11.2
+      '@nomicfoundation/edr-darwin-arm64': 0.11.3
+      '@nomicfoundation/edr-darwin-x64': 0.11.3
+      '@nomicfoundation/edr-linux-arm64-gnu': 0.11.3
+      '@nomicfoundation/edr-linux-arm64-musl': 0.11.3
+      '@nomicfoundation/edr-linux-x64-gnu': 0.11.3
+      '@nomicfoundation/edr-linux-x64-musl': 0.11.3
+      '@nomicfoundation/edr-win32-x64-msvc': 0.11.3
 
   '@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.2':
     optional: true
@@ -9661,7 +9676,7 @@ snapshots:
     dependencies:
       '@npmcli/map-workspaces': 3.0.6
       '@npmcli/package-json': 5.2.1
-      ci-info: 4.2.0
+      ci-info: 4.3.0
       ini: 4.1.3
       nopt: 7.2.1
       proc-log: 4.2.0
@@ -9973,7 +9988,7 @@ snapshots:
 
   '@radix-ui/react-popper@1.2.7(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@floating-ui/react-dom': 2.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@floating-ui/react-dom': 2.1.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@radix-ui/react-arrow': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.23)(react@18.3.1)
       '@radix-ui/react-context': 1.1.2(@types/react@18.3.23)(react@18.3.1)
@@ -11176,64 +11191,64 @@ snapshots:
 
   '@resvg/resvg-wasm@2.6.2': {}
 
-  '@rollup/rollup-android-arm-eabi@4.44.0':
+  '@rollup/rollup-android-arm-eabi@4.44.2':
     optional: true
 
-  '@rollup/rollup-android-arm64@4.44.0':
+  '@rollup/rollup-android-arm64@4.44.2':
     optional: true
 
-  '@rollup/rollup-darwin-arm64@4.44.0':
+  '@rollup/rollup-darwin-arm64@4.44.2':
     optional: true
 
-  '@rollup/rollup-darwin-x64@4.44.0':
+  '@rollup/rollup-darwin-x64@4.44.2':
     optional: true
 
-  '@rollup/rollup-freebsd-arm64@4.44.0':
+  '@rollup/rollup-freebsd-arm64@4.44.2':
     optional: true
 
-  '@rollup/rollup-freebsd-x64@4.44.0':
+  '@rollup/rollup-freebsd-x64@4.44.2':
     optional: true
 
-  '@rollup/rollup-linux-arm-gnueabihf@4.44.0':
+  '@rollup/rollup-linux-arm-gnueabihf@4.44.2':
     optional: true
 
-  '@rollup/rollup-linux-arm-musleabihf@4.44.0':
+  '@rollup/rollup-linux-arm-musleabihf@4.44.2':
     optional: true
 
-  '@rollup/rollup-linux-arm64-gnu@4.44.0':
+  '@rollup/rollup-linux-arm64-gnu@4.44.2':
     optional: true
 
-  '@rollup/rollup-linux-arm64-musl@4.44.0':
+  '@rollup/rollup-linux-arm64-musl@4.44.2':
     optional: true
 
-  '@rollup/rollup-linux-loongarch64-gnu@4.44.0':
+  '@rollup/rollup-linux-loongarch64-gnu@4.44.2':
     optional: true
 
-  '@rollup/rollup-linux-powerpc64le-gnu@4.44.0':
+  '@rollup/rollup-linux-powerpc64le-gnu@4.44.2':
     optional: true
 
-  '@rollup/rollup-linux-riscv64-gnu@4.44.0':
+  '@rollup/rollup-linux-riscv64-gnu@4.44.2':
     optional: true
 
-  '@rollup/rollup-linux-riscv64-musl@4.44.0':
+  '@rollup/rollup-linux-riscv64-musl@4.44.2':
     optional: true
 
-  '@rollup/rollup-linux-s390x-gnu@4.44.0':
+  '@rollup/rollup-linux-s390x-gnu@4.44.2':
     optional: true
 
-  '@rollup/rollup-linux-x64-gnu@4.44.0':
+  '@rollup/rollup-linux-x64-gnu@4.44.2':
     optional: true
 
-  '@rollup/rollup-linux-x64-musl@4.44.0':
+  '@rollup/rollup-linux-x64-musl@4.44.2':
     optional: true
 
-  '@rollup/rollup-win32-arm64-msvc@4.44.0':
+  '@rollup/rollup-win32-arm64-msvc@4.44.2':
     optional: true
 
-  '@rollup/rollup-win32-ia32-msvc@4.44.0':
+  '@rollup/rollup-win32-ia32-msvc@4.44.2':
     optional: true
 
-  '@rollup/rollup-win32-x64-msvc@4.44.0':
+  '@rollup/rollup-win32-x64-msvc@4.44.2':
     optional: true
 
   '@rrweb/types@2.0.0-alpha.18': {}
@@ -11242,7 +11257,7 @@ snapshots:
 
   '@rtsao/scc@1.1.0': {}
 
-  '@rushstack/eslint-patch@1.11.0': {}
+  '@rushstack/eslint-patch@1.12.0': {}
 
   '@scure/base@1.1.9': {}
 
@@ -11489,24 +11504,24 @@ snapshots:
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@tanstack/query-core@5.81.2': {}
+  '@tanstack/query-core@5.82.0': {}
 
-  '@tanstack/react-query@5.81.2(react@18.3.1)':
+  '@tanstack/react-query@5.82.0(react@18.3.1)':
     dependencies:
-      '@tanstack/query-core': 5.81.2
+      '@tanstack/query-core': 5.82.0
       react: 18.3.1
 
-  '@tanstack/react-virtual@3.13.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@tanstack/react-virtual@3.13.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@tanstack/virtual-core': 3.13.11
+      '@tanstack/virtual-core': 3.13.12
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@tanstack/virtual-core@3.13.11': {}
+  '@tanstack/virtual-core@3.13.12': {}
 
   '@theguild/remark-mermaid@0.1.3(react@18.3.1)':
     dependencies:
-      mermaid: 11.7.0
+      mermaid: 11.8.1
       react: 18.3.1
       unist-util-visit: 5.0.0
     transitivePeerDependencies:
@@ -11584,11 +11599,11 @@ snapshots:
 
   '@types/bn.js@5.2.0':
     dependencies:
-      '@types/node': 22.15.33
+      '@types/node': 22.16.2
 
   '@types/concat-stream@2.0.3':
     dependencies:
-      '@types/node': 22.15.33
+      '@types/node': 22.16.2
 
   '@types/cookie@0.6.0': {}
 
@@ -11737,7 +11752,7 @@ snapshots:
 
   '@types/katex@0.16.7': {}
 
-  '@types/lodash@4.17.19': {}
+  '@types/lodash@4.17.20': {}
 
   '@types/lru-cache@5.1.1': {}
 
@@ -11755,7 +11770,7 @@ snapshots:
     dependencies:
       '@types/unist': 3.0.3
 
-  '@types/node@22.15.33':
+  '@types/node@22.16.2':
     dependencies:
       undici-types: 6.21.0
 
@@ -11946,63 +11961,63 @@ snapshots:
       '@uniswap/v3-core': 1.0.0
       '@uniswap/v3-periphery': 1.4.4
 
-  '@unrs/resolver-binding-android-arm-eabi@1.9.1':
+  '@unrs/resolver-binding-android-arm-eabi@1.11.1':
     optional: true
 
-  '@unrs/resolver-binding-android-arm64@1.9.1':
+  '@unrs/resolver-binding-android-arm64@1.11.1':
     optional: true
 
-  '@unrs/resolver-binding-darwin-arm64@1.9.1':
+  '@unrs/resolver-binding-darwin-arm64@1.11.1':
     optional: true
 
-  '@unrs/resolver-binding-darwin-x64@1.9.1':
+  '@unrs/resolver-binding-darwin-x64@1.11.1':
     optional: true
 
-  '@unrs/resolver-binding-freebsd-x64@1.9.1':
+  '@unrs/resolver-binding-freebsd-x64@1.11.1':
     optional: true
 
-  '@unrs/resolver-binding-linux-arm-gnueabihf@1.9.1':
+  '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1':
     optional: true
 
-  '@unrs/resolver-binding-linux-arm-musleabihf@1.9.1':
+  '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1':
     optional: true
 
-  '@unrs/resolver-binding-linux-arm64-gnu@1.9.1':
+  '@unrs/resolver-binding-linux-arm64-gnu@1.11.1':
     optional: true
 
-  '@unrs/resolver-binding-linux-arm64-musl@1.9.1':
+  '@unrs/resolver-binding-linux-arm64-musl@1.11.1':
     optional: true
 
-  '@unrs/resolver-binding-linux-ppc64-gnu@1.9.1':
+  '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1':
     optional: true
 
-  '@unrs/resolver-binding-linux-riscv64-gnu@1.9.1':
+  '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1':
     optional: true
 
-  '@unrs/resolver-binding-linux-riscv64-musl@1.9.1':
+  '@unrs/resolver-binding-linux-riscv64-musl@1.11.1':
     optional: true
 
-  '@unrs/resolver-binding-linux-s390x-gnu@1.9.1':
+  '@unrs/resolver-binding-linux-s390x-gnu@1.11.1':
     optional: true
 
-  '@unrs/resolver-binding-linux-x64-gnu@1.9.1':
+  '@unrs/resolver-binding-linux-x64-gnu@1.11.1':
     optional: true
 
-  '@unrs/resolver-binding-linux-x64-musl@1.9.1':
+  '@unrs/resolver-binding-linux-x64-musl@1.11.1':
     optional: true
 
-  '@unrs/resolver-binding-wasm32-wasi@1.9.1':
+  '@unrs/resolver-binding-wasm32-wasi@1.11.1':
     dependencies:
       '@napi-rs/wasm-runtime': 0.2.11
     optional: true
 
-  '@unrs/resolver-binding-win32-arm64-msvc@1.9.1':
+  '@unrs/resolver-binding-win32-arm64-msvc@1.11.1':
     optional: true
 
-  '@unrs/resolver-binding-win32-ia32-msvc@1.9.1':
+  '@unrs/resolver-binding-win32-ia32-msvc@1.11.1':
     optional: true
 
-  '@unrs/resolver-binding-win32-x64-msvc@1.9.1':
+  '@unrs/resolver-binding-win32-x64-msvc@1.11.1':
     optional: true
 
   '@ver0/deep-equal@1.0.0': {}
@@ -12011,16 +12026,16 @@ snapshots:
     dependencies:
       '@vitest/spy': 2.1.9
       '@vitest/utils': 2.1.9
-      chai: 5.2.0
+      chai: 5.2.1
       tinyrainbow: 1.2.0
 
-  '@vitest/mocker@2.1.9(vite@5.4.19(@types/node@22.15.33))':
+  '@vitest/mocker@2.1.9(vite@5.4.19(@types/node@22.16.2))':
     dependencies:
       '@vitest/spy': 2.1.9
       estree-walker: 3.0.3
       magic-string: 0.30.17
     optionalDependencies:
-      vite: 5.4.19(@types/node@22.15.33)
+      vite: 5.4.19(@types/node@22.16.2)
 
   '@vitest/pretty-format@2.1.9':
     dependencies:
@@ -12047,13 +12062,13 @@ snapshots:
       loupe: 3.1.4
       tinyrainbow: 1.2.0
 
-  '@web3icons/common@0.11.13(typescript@5.8.3)':
+  '@web3icons/common@0.11.14(typescript@5.8.3)':
     dependencies:
       typescript: 5.8.3
 
-  '@web3icons/react@4.0.16(react@18.3.1)(typescript@5.8.3)':
+  '@web3icons/react@4.0.17(react@18.3.1)(typescript@5.8.3)':
     dependencies:
-      '@web3icons/common': 0.11.13(typescript@5.8.3)
+      '@web3icons/common': 0.11.14(typescript@5.8.3)
       react: 18.3.1
     transitivePeerDependencies:
       - typescript
@@ -12074,10 +12089,10 @@ snapshots:
 
   abbrev@2.0.0: {}
 
-  abitype@1.0.8(typescript@5.8.3)(zod@3.25.67):
+  abitype@1.0.8(typescript@5.8.3)(zod@3.25.76):
     optionalDependencies:
       typescript: 5.8.3
-      zod: 3.25.67
+      zod: 3.25.76
 
   acorn-jsx@5.3.2(acorn@8.15.0):
     dependencies:
@@ -12099,7 +12114,7 @@ snapshots:
     transitivePeerDependencies:
       - supports-color
 
-  agent-base@7.1.3: {}
+  agent-base@7.1.4: {}
 
   aggregate-error@3.1.0:
     dependencies:
@@ -12124,21 +12139,21 @@ snapshots:
       json-schema-traverse: 1.0.0
       require-from-string: 2.0.2
 
-  algoliasearch@5.29.0:
-    dependencies:
-      '@algolia/client-abtesting': 5.29.0
-      '@algolia/client-analytics': 5.29.0
-      '@algolia/client-common': 5.29.0
-      '@algolia/client-insights': 5.29.0
-      '@algolia/client-personalization': 5.29.0
-      '@algolia/client-query-suggestions': 5.29.0
-      '@algolia/client-search': 5.29.0
-      '@algolia/ingestion': 1.29.0
-      '@algolia/monitoring': 1.29.0
-      '@algolia/recommend': 5.29.0
-      '@algolia/requester-browser-xhr': 5.29.0
-      '@algolia/requester-fetch': 5.29.0
-      '@algolia/requester-node-http': 5.29.0
+  algoliasearch@5.32.0:
+    dependencies:
+      '@algolia/client-abtesting': 5.32.0
+      '@algolia/client-analytics': 5.32.0
+      '@algolia/client-common': 5.32.0
+      '@algolia/client-insights': 5.32.0
+      '@algolia/client-personalization': 5.32.0
+      '@algolia/client-query-suggestions': 5.32.0
+      '@algolia/client-search': 5.32.0
+      '@algolia/ingestion': 1.32.0
+      '@algolia/monitoring': 1.32.0
+      '@algolia/recommend': 5.32.0
+      '@algolia/requester-browser-xhr': 5.32.0
+      '@algolia/requester-fetch': 5.32.0
+      '@algolia/requester-node-http': 5.32.0
 
   ansi-align@3.0.1:
     dependencies:
@@ -12270,8 +12285,8 @@ snapshots:
 
   autoprefixer@10.4.21(postcss@8.5.6):
     dependencies:
-      browserslist: 4.25.0
-      caniuse-lite: 1.0.30001724
+      browserslist: 4.25.1
+      caniuse-lite: 1.0.30001727
       fraction.js: 4.3.7
       normalize-range: 0.1.2
       picocolors: 1.1.1
@@ -12366,12 +12381,12 @@ snapshots:
 
   browser-stdout@1.3.1: {}
 
-  browserslist@4.25.0:
+  browserslist@4.25.1:
     dependencies:
-      caniuse-lite: 1.0.30001724
-      electron-to-chromium: 1.5.172
+      caniuse-lite: 1.0.30001727
+      electron-to-chromium: 1.5.181
       node-releases: 2.0.19
-      update-browserslist-db: 1.1.3(browserslist@4.25.0)
+      update-browserslist-db: 1.1.3(browserslist@4.25.1)
 
   buffer-from@1.1.2: {}
 
@@ -12380,9 +12395,9 @@ snapshots:
       base64-js: 1.5.1
       ieee754: 1.2.1
 
-  bundle-require@5.1.0(esbuild@0.25.5):
+  bundle-require@5.1.0(esbuild@0.25.6):
     dependencies:
-      esbuild: 0.25.5
+      esbuild: 0.25.6
       load-tsconfig: 0.2.5
 
   busboy@1.6.0:
@@ -12418,17 +12433,17 @@ snapshots:
 
   camelize@1.0.1: {}
 
-  caniuse-lite@1.0.30001724: {}
+  caniuse-lite@1.0.30001727: {}
 
   ccount@2.0.1: {}
 
-  chai@5.2.0:
+  chai@5.2.1:
     dependencies:
       assertion-error: 2.0.1
       check-error: 2.1.1
       deep-eql: 5.0.2
       loupe: 3.1.4
-      pathval: 2.0.0
+      pathval: 2.0.1
 
   chalk@4.1.2:
     dependencies:
@@ -12481,7 +12496,7 @@ snapshots:
 
   ci-info@2.0.0: {}
 
-  ci-info@4.2.0: {}
+  ci-info@4.3.0: {}
 
   clean-stack@2.2.0: {}
 
@@ -12635,24 +12650,24 @@ snapshots:
 
   cssesc@3.0.0: {}
 
-  cssstyle@4.5.0:
+  cssstyle@4.6.0:
     dependencies:
       '@asamuzakjp/css-color': 3.2.0
       rrweb-cssom: 0.8.0
 
   csstype@3.1.3: {}
 
-  cytoscape-cose-bilkent@4.1.0(cytoscape@3.32.0):
+  cytoscape-cose-bilkent@4.1.0(cytoscape@3.32.1):
     dependencies:
       cose-base: 1.0.3
-      cytoscape: 3.32.0
+      cytoscape: 3.32.1
 
-  cytoscape-fcose@2.2.0(cytoscape@3.32.0):
+  cytoscape-fcose@2.2.0(cytoscape@3.32.1):
     dependencies:
       cose-base: 2.2.0
-      cytoscape: 3.32.0
+      cytoscape: 3.32.1
 
-  cytoscape@3.32.0: {}
+  cytoscape@3.32.1: {}
 
   d3-array@2.12.1:
     dependencies:
@@ -12871,7 +12886,7 @@ snapshots:
 
   decimal.js-light@2.5.1: {}
 
-  decimal.js@10.5.0: {}
+  decimal.js@10.6.0: {}
 
   decode-named-character-reference@1.2.0:
     dependencies:
@@ -12953,7 +12968,7 @@ snapshots:
 
   dotenv@14.3.2: {}
 
-  dotenv@16.5.0: {}
+  dotenv@16.6.1: {}
 
   dunder-proto@1.0.1:
     dependencies:
@@ -12963,7 +12978,7 @@ snapshots:
 
   eastasianwidth@0.2.0: {}
 
-  electron-to-chromium@1.5.172: {}
+  electron-to-chromium@1.5.181: {}
 
   elliptic@6.6.1:
     dependencies:
@@ -13172,33 +13187,34 @@ snapshots:
       '@esbuild/win32-ia32': 0.21.5
       '@esbuild/win32-x64': 0.21.5
 
-  esbuild@0.25.5:
+  esbuild@0.25.6:
     optionalDependencies:
-      '@esbuild/aix-ppc64': 0.25.5
-      '@esbuild/android-arm': 0.25.5
-      '@esbuild/android-arm64': 0.25.5
-      '@esbuild/android-x64': 0.25.5
-      '@esbuild/darwin-arm64': 0.25.5
-      '@esbuild/darwin-x64': 0.25.5
-      '@esbuild/freebsd-arm64': 0.25.5
-      '@esbuild/freebsd-x64': 0.25.5
-      '@esbuild/linux-arm': 0.25.5
-      '@esbuild/linux-arm64': 0.25.5
-      '@esbuild/linux-ia32': 0.25.5
-      '@esbuild/linux-loong64': 0.25.5
-      '@esbuild/linux-mips64el': 0.25.5
-      '@esbuild/linux-ppc64': 0.25.5
-      '@esbuild/linux-riscv64': 0.25.5
-      '@esbuild/linux-s390x': 0.25.5
-      '@esbuild/linux-x64': 0.25.5
-      '@esbuild/netbsd-arm64': 0.25.5
-      '@esbuild/netbsd-x64': 0.25.5
-      '@esbuild/openbsd-arm64': 0.25.5
-      '@esbuild/openbsd-x64': 0.25.5
-      '@esbuild/sunos-x64': 0.25.5
-      '@esbuild/win32-arm64': 0.25.5
-      '@esbuild/win32-ia32': 0.25.5
-      '@esbuild/win32-x64': 0.25.5
+      '@esbuild/aix-ppc64': 0.25.6
+      '@esbuild/android-arm': 0.25.6
+      '@esbuild/android-arm64': 0.25.6
+      '@esbuild/android-x64': 0.25.6
+      '@esbuild/darwin-arm64': 0.25.6
+      '@esbuild/darwin-x64': 0.25.6
+      '@esbuild/freebsd-arm64': 0.25.6
+      '@esbuild/freebsd-x64': 0.25.6
+      '@esbuild/linux-arm': 0.25.6
+      '@esbuild/linux-arm64': 0.25.6
+      '@esbuild/linux-ia32': 0.25.6
+      '@esbuild/linux-loong64': 0.25.6
+      '@esbuild/linux-mips64el': 0.25.6
+      '@esbuild/linux-ppc64': 0.25.6
+      '@esbuild/linux-riscv64': 0.25.6
+      '@esbuild/linux-s390x': 0.25.6
+      '@esbuild/linux-x64': 0.25.6
+      '@esbuild/netbsd-arm64': 0.25.6
+      '@esbuild/netbsd-x64': 0.25.6
+      '@esbuild/openbsd-arm64': 0.25.6
+      '@esbuild/openbsd-x64': 0.25.6
+      '@esbuild/openharmony-arm64': 0.25.6
+      '@esbuild/sunos-x64': 0.25.6
+      '@esbuild/win32-arm64': 0.25.6
+      '@esbuild/win32-ia32': 0.25.6
+      '@esbuild/win32-x64': 0.25.6
 
   escalade@3.2.0: {}
 
@@ -13225,13 +13241,13 @@ snapshots:
       is-bun-module: 2.0.0
       stable-hash: 0.0.5
       tinyglobby: 0.2.14
-      unrs-resolver: 1.9.1
+      unrs-resolver: 1.11.1
     optionalDependencies:
       eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1)
     transitivePeerDependencies:
       - supports-color
 
-  eslint-mdx@3.5.0(eslint@8.57.1):
+  eslint-mdx@3.6.2(eslint@8.57.1):
     dependencies:
       acorn: 8.15.0
       acorn-jsx: 5.3.2(acorn@8.15.0)
@@ -13310,10 +13326,10 @@ snapshots:
       safe-regex-test: 1.1.0
       string.prototype.includes: 2.0.1
 
-  eslint-plugin-mdx@3.5.0(eslint@8.57.1):
+  eslint-plugin-mdx@3.6.2(eslint@8.57.1):
     dependencies:
       eslint: 8.57.1
-      eslint-mdx: 3.5.0(eslint@8.57.1)
+      eslint-mdx: 3.6.2(eslint@8.57.1)
       mdast-util-from-markdown: 2.0.2
       mdast-util-mdx: 3.0.0
       micromark-extension-mdxjs: 3.0.0
@@ -13551,7 +13567,7 @@ snapshots:
 
   exit-hook@2.2.1: {}
 
-  expect-type@1.2.1: {}
+  expect-type@1.2.2: {}
 
   exsolve@1.0.7: {}
 
@@ -13629,7 +13645,7 @@ snapshots:
     dependencies:
       magic-string: 0.30.17
       mlly: 1.7.4
-      rollup: 4.44.0
+      rollup: 4.44.2
 
   flat-cache@3.2.0:
     dependencies:
@@ -13668,10 +13684,10 @@ snapshots:
 
   fraction.js@4.3.7: {}
 
-  framer-motion@12.19.1(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+  framer-motion@12.23.1(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
     dependencies:
-      motion-dom: 12.19.0
-      motion-utils: 12.19.0
+      motion-dom: 12.23.1
+      motion-utils: 12.23.1
       tslib: 2.8.1
     optionalDependencies:
       '@emotion/is-prop-valid': 0.8.8
@@ -13792,8 +13808,6 @@ snapshots:
       minimatch: 5.1.6
       once: 1.4.0
 
-  globals@11.12.0: {}
-
   globals@13.24.0:
     dependencies:
       type-fest: 0.20.2
@@ -13865,7 +13879,7 @@ snapshots:
     dependencies:
       '@ethereumjs/util': 9.1.0
       '@ethersproject/abi': 5.8.0
-      '@nomicfoundation/edr': 0.11.2
+      '@nomicfoundation/edr': 0.11.3
       '@nomicfoundation/solidity-analyzer': 0.1.2
       '@sentry/node': 5.30.0
       '@types/bn.js': 5.2.0
@@ -14132,7 +14146,7 @@ snapshots:
 
   http-proxy-agent@7.0.2:
     dependencies:
-      agent-base: 7.1.3
+      agent-base: 7.1.4
       debug: 4.4.1(supports-color@8.1.1)
     transitivePeerDependencies:
       - supports-color
@@ -14146,7 +14160,7 @@ snapshots:
 
   https-proxy-agent@7.0.6:
     dependencies:
-      agent-base: 7.1.3
+      agent-base: 7.1.4
       debug: 4.4.1(supports-color@8.1.1)
     transitivePeerDependencies:
       - supports-color
@@ -14441,9 +14455,9 @@ snapshots:
 
   jsdom@24.1.3:
     dependencies:
-      cssstyle: 4.5.0
+      cssstyle: 4.6.0
       data-urls: 5.0.0
-      decimal.js: 10.5.0
+      decimal.js: 10.6.0
       form-data: 4.0.3
       html-encoding-sniffer: 4.0.0
       http-proxy-agent: 7.0.2
@@ -14460,7 +14474,7 @@ snapshots:
       whatwg-encoding: 3.1.1
       whatwg-mimetype: 4.0.0
       whatwg-url: 14.2.0
-      ws: 8.18.2
+      ws: 8.18.3
       xml-name-validator: 5.0.0
     transitivePeerDependencies:
       - bufferutil
@@ -14572,7 +14586,7 @@ snapshots:
   local-pkg@1.1.1:
     dependencies:
       mlly: 1.7.4
-      pkg-types: 2.1.0
+      pkg-types: 2.2.0
       quansync: 0.2.10
 
   locate-path@6.0.0:
@@ -14610,7 +14624,7 @@ snapshots:
 
   magic-string@0.30.17:
     dependencies:
-      '@jridgewell/sourcemap-codec': 1.5.0
+      '@jridgewell/sourcemap-codec': 1.5.4
 
   markdown-extensions@2.0.0: {}
 
@@ -14825,15 +14839,15 @@ snapshots:
 
   merge2@1.4.1: {}
 
-  mermaid@11.7.0:
+  mermaid@11.8.1:
     dependencies:
       '@braintree/sanitize-url': 7.1.1
       '@iconify/utils': 2.3.0
-      '@mermaid-js/parser': 0.5.0
+      '@mermaid-js/parser': 0.6.1
       '@types/d3': 7.4.3
-      cytoscape: 3.32.0
-      cytoscape-cose-bilkent: 4.1.0(cytoscape@3.32.0)
-      cytoscape-fcose: 2.2.0(cytoscape@3.32.0)
+      cytoscape: 3.32.1
+      cytoscape-cose-bilkent: 4.1.0(cytoscape@3.32.1)
+      cytoscape-fcose: 2.2.0(cytoscape@3.32.1)
       d3: 7.9.0
       d3-sankey: 0.12.3
       dagre-d3-es: 7.0.11
@@ -15203,7 +15217,7 @@ snapshots:
 
   mitt@3.0.1: {}
 
-  mixpanel-browser@2.65.0:
+  mixpanel-browser@2.66.0:
     dependencies:
       rrweb: 2.0.0-alpha.18
 
@@ -15245,15 +15259,15 @@ snapshots:
       yargs-parser: 20.2.9
       yargs-unparser: 2.0.0
 
-  motion-dom@12.19.0:
+  motion-dom@12.23.1:
     dependencies:
-      motion-utils: 12.19.0
+      motion-utils: 12.23.1
 
-  motion-utils@12.19.0: {}
+  motion-utils@12.23.1: {}
 
-  motion@12.19.1(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+  motion@12.23.1(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
     dependencies:
-      framer-motion: 12.19.1(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      framer-motion: 12.23.1(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       tslib: 2.8.1
     optionalDependencies:
       '@emotion/is-prop-valid': 0.8.8
@@ -15274,7 +15288,7 @@ snapshots:
 
   nanoid@3.3.11: {}
 
-  napi-postinstall@0.2.4: {}
+  napi-postinstall@0.3.0: {}
 
   natural-compare@1.4.0: {}
 
@@ -15299,7 +15313,7 @@ snapshots:
       '@next/env': 14.2.30
       '@swc/helpers': 0.5.5
       busboy: 1.6.0
-      caniuse-lite: 1.0.30001724
+      caniuse-lite: 1.0.30001727
       graceful-fs: 4.2.11
       postcss: 8.4.31
       react: 18.3.1
@@ -15361,8 +15375,8 @@ snapshots:
       unist-util-remove: 4.0.0
       unist-util-visit: 5.0.0
       yaml: 2.8.0
-      zod: 3.25.67
-      zod-validation-error: 3.5.2(zod@3.25.67)
+      zod: 3.25.76
+      zod-validation-error: 3.5.2(zod@3.25.76)
     transitivePeerDependencies:
       - '@types/react'
       - acorn
@@ -15532,7 +15546,7 @@ snapshots:
       object-keys: 1.1.1
       safe-push-apply: 1.0.0
 
-  ox@0.8.1(typescript@5.8.3)(zod@3.25.67):
+  ox@0.8.1(typescript@5.8.3)(zod@3.25.76):
     dependencies:
       '@adraffy/ens-normalize': 1.11.0
       '@noble/ciphers': 1.3.0
@@ -15540,7 +15554,7 @@ snapshots:
       '@noble/hashes': 1.8.0
       '@scure/bip32': 1.7.0
       '@scure/bip39': 1.6.0
-      abitype: 1.0.8(typescript@5.8.3)(zod@3.25.67)
+      abitype: 1.0.8(typescript@5.8.3)(zod@3.25.76)
       eventemitter3: 5.0.1
     optionalDependencies:
       typescript: 5.8.3
@@ -15647,7 +15661,7 @@ snapshots:
 
   pathe@2.0.3: {}
 
-  pathval@2.0.0: {}
+  pathval@2.0.1: {}
 
   picocolors@1.1.1: {}
 
@@ -15669,7 +15683,7 @@ snapshots:
       mlly: 1.7.4
       pathe: 2.0.3
 
-  pkg-types@2.1.0:
+  pkg-types@2.2.0:
     dependencies:
       confbox: 0.2.2
       exsolve: 1.0.7
@@ -15744,13 +15758,13 @@ snapshots:
 
   prelude-ls@1.2.1: {}
 
-  prettier-plugin-tailwindcss@0.6.13(prettier@3.6.1):
+  prettier-plugin-tailwindcss@0.6.14(prettier@3.6.2):
     dependencies:
-      prettier: 3.6.1
+      prettier: 3.6.2
 
   prettier@2.8.8: {}
 
-  prettier@3.6.1: {}
+  prettier@3.6.2: {}
 
   printable-characters@1.0.42: {}
 
@@ -16304,30 +16318,30 @@ snapshots:
     dependencies:
       estree-walker: 0.6.1
 
-  rollup@4.44.0:
+  rollup@4.44.2:
     dependencies:
       '@types/estree': 1.0.8
     optionalDependencies:
-      '@rollup/rollup-android-arm-eabi': 4.44.0
-      '@rollup/rollup-android-arm64': 4.44.0
-      '@rollup/rollup-darwin-arm64': 4.44.0
-      '@rollup/rollup-darwin-x64': 4.44.0
-      '@rollup/rollup-freebsd-arm64': 4.44.0
-      '@rollup/rollup-freebsd-x64': 4.44.0
-      '@rollup/rollup-linux-arm-gnueabihf': 4.44.0
-      '@rollup/rollup-linux-arm-musleabihf': 4.44.0
-      '@rollup/rollup-linux-arm64-gnu': 4.44.0
-      '@rollup/rollup-linux-arm64-musl': 4.44.0
-      '@rollup/rollup-linux-loongarch64-gnu': 4.44.0
-      '@rollup/rollup-linux-powerpc64le-gnu': 4.44.0
-      '@rollup/rollup-linux-riscv64-gnu': 4.44.0
-      '@rollup/rollup-linux-riscv64-musl': 4.44.0
-      '@rollup/rollup-linux-s390x-gnu': 4.44.0
-      '@rollup/rollup-linux-x64-gnu': 4.44.0
-      '@rollup/rollup-linux-x64-musl': 4.44.0
-      '@rollup/rollup-win32-arm64-msvc': 4.44.0
-      '@rollup/rollup-win32-ia32-msvc': 4.44.0
-      '@rollup/rollup-win32-x64-msvc': 4.44.0
+      '@rollup/rollup-android-arm-eabi': 4.44.2
+      '@rollup/rollup-android-arm64': 4.44.2
+      '@rollup/rollup-darwin-arm64': 4.44.2
+      '@rollup/rollup-darwin-x64': 4.44.2
+      '@rollup/rollup-freebsd-arm64': 4.44.2
+      '@rollup/rollup-freebsd-x64': 4.44.2
+      '@rollup/rollup-linux-arm-gnueabihf': 4.44.2
+      '@rollup/rollup-linux-arm-musleabihf': 4.44.2
+      '@rollup/rollup-linux-arm64-gnu': 4.44.2
+      '@rollup/rollup-linux-arm64-musl': 4.44.2
+      '@rollup/rollup-linux-loongarch64-gnu': 4.44.2
+      '@rollup/rollup-linux-powerpc64le-gnu': 4.44.2
+      '@rollup/rollup-linux-riscv64-gnu': 4.44.2
+      '@rollup/rollup-linux-riscv64-musl': 4.44.2
+      '@rollup/rollup-linux-s390x-gnu': 4.44.2
+      '@rollup/rollup-linux-x64-gnu': 4.44.2
+      '@rollup/rollup-linux-x64-musl': 4.44.2
+      '@rollup/rollup-win32-arm64-msvc': 4.44.2
+      '@rollup/rollup-win32-ia32-msvc': 4.44.2
+      '@rollup/rollup-win32-x64-msvc': 4.44.2
       fsevents: 2.3.3
 
   roughjs@4.6.6:
@@ -16800,7 +16814,7 @@ snapshots:
 
   sucrase@3.35.0:
     dependencies:
-      '@jridgewell/gen-mapping': 0.3.8
+      '@jridgewell/gen-mapping': 0.3.12
       commander: 4.1.1
       glob: 10.4.5
       lines-and-columns: 1.2.4
@@ -16972,18 +16986,18 @@ snapshots:
 
   tsup@8.5.0(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.8.0):
     dependencies:
-      bundle-require: 5.1.0(esbuild@0.25.5)
+      bundle-require: 5.1.0(esbuild@0.25.6)
       cac: 6.7.14
       chokidar: 4.0.3
       consola: 3.4.2
       debug: 4.4.1(supports-color@8.1.1)
-      esbuild: 0.25.5
+      esbuild: 0.25.6
       fix-dts-default-cjs-exports: 1.0.1
       joycon: 3.1.1
       picocolors: 1.1.1
       postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.3)(yaml@2.8.0)
       resolve-from: 5.0.0
-      rollup: 4.44.0
+      rollup: 4.44.2
       source-map: 0.8.0-beta.0
       sucrase: 3.35.0
       tinyexec: 0.3.2
@@ -17000,7 +17014,7 @@ snapshots:
 
   tsx@4.20.3:
     dependencies:
-      esbuild: 0.25.5
+      esbuild: 0.25.6
       get-tsconfig: 4.10.1
     optionalDependencies:
       fsevents: 2.3.3
@@ -17134,7 +17148,7 @@ snapshots:
       '@types/concat-stream': 2.0.3
       '@types/debug': 4.1.12
       '@types/is-empty': 1.2.3
-      '@types/node': 22.15.33
+      '@types/node': 22.16.2
       '@types/unist': 3.0.3
       concat-stream: 2.0.0
       debug: 4.4.1(supports-color@8.1.1)
@@ -17255,33 +17269,33 @@ snapshots:
 
   unpipe@1.0.0: {}
 
-  unrs-resolver@1.9.1:
+  unrs-resolver@1.11.1:
     dependencies:
-      napi-postinstall: 0.2.4
+      napi-postinstall: 0.3.0
     optionalDependencies:
-      '@unrs/resolver-binding-android-arm-eabi': 1.9.1
-      '@unrs/resolver-binding-android-arm64': 1.9.1
-      '@unrs/resolver-binding-darwin-arm64': 1.9.1
-      '@unrs/resolver-binding-darwin-x64': 1.9.1
-      '@unrs/resolver-binding-freebsd-x64': 1.9.1
-      '@unrs/resolver-binding-linux-arm-gnueabihf': 1.9.1
-      '@unrs/resolver-binding-linux-arm-musleabihf': 1.9.1
-      '@unrs/resolver-binding-linux-arm64-gnu': 1.9.1
-      '@unrs/resolver-binding-linux-arm64-musl': 1.9.1
-      '@unrs/resolver-binding-linux-ppc64-gnu': 1.9.1
-      '@unrs/resolver-binding-linux-riscv64-gnu': 1.9.1
-      '@unrs/resolver-binding-linux-riscv64-musl': 1.9.1
-      '@unrs/resolver-binding-linux-s390x-gnu': 1.9.1
-      '@unrs/resolver-binding-linux-x64-gnu': 1.9.1
-      '@unrs/resolver-binding-linux-x64-musl': 1.9.1
-      '@unrs/resolver-binding-wasm32-wasi': 1.9.1
-      '@unrs/resolver-binding-win32-arm64-msvc': 1.9.1
-      '@unrs/resolver-binding-win32-ia32-msvc': 1.9.1
-      '@unrs/resolver-binding-win32-x64-msvc': 1.9.1
-
-  update-browserslist-db@1.1.3(browserslist@4.25.0):
-    dependencies:
-      browserslist: 4.25.0
+      '@unrs/resolver-binding-android-arm-eabi': 1.11.1
+      '@unrs/resolver-binding-android-arm64': 1.11.1
+      '@unrs/resolver-binding-darwin-arm64': 1.11.1
+      '@unrs/resolver-binding-darwin-x64': 1.11.1
+      '@unrs/resolver-binding-freebsd-x64': 1.11.1
+      '@unrs/resolver-binding-linux-arm-gnueabihf': 1.11.1
+      '@unrs/resolver-binding-linux-arm-musleabihf': 1.11.1
+      '@unrs/resolver-binding-linux-arm64-gnu': 1.11.1
+      '@unrs/resolver-binding-linux-arm64-musl': 1.11.1
+      '@unrs/resolver-binding-linux-ppc64-gnu': 1.11.1
+      '@unrs/resolver-binding-linux-riscv64-gnu': 1.11.1
+      '@unrs/resolver-binding-linux-riscv64-musl': 1.11.1
+      '@unrs/resolver-binding-linux-s390x-gnu': 1.11.1
+      '@unrs/resolver-binding-linux-x64-gnu': 1.11.1
+      '@unrs/resolver-binding-linux-x64-musl': 1.11.1
+      '@unrs/resolver-binding-wasm32-wasi': 1.11.1
+      '@unrs/resolver-binding-win32-arm64-msvc': 1.11.1
+      '@unrs/resolver-binding-win32-ia32-msvc': 1.11.1
+      '@unrs/resolver-binding-win32-x64-msvc': 1.11.1
+
+  update-browserslist-db@1.1.3(browserslist@4.25.1):
+    dependencies:
+      browserslist: 4.25.1
       escalade: 3.2.0
       picocolors: 1.1.1
 
@@ -17392,15 +17406,15 @@ snapshots:
       d3-time: 3.1.0
       d3-timer: 3.0.1
 
-  viem@2.31.4(typescript@5.8.3)(zod@3.25.67):
+  viem@2.31.7(typescript@5.8.3)(zod@3.25.76):
     dependencies:
       '@noble/curves': 1.9.2
       '@noble/hashes': 1.8.0
       '@scure/bip32': 1.7.0
       '@scure/bip39': 1.6.0
-      abitype: 1.0.8(typescript@5.8.3)(zod@3.25.67)
+      abitype: 1.0.8(typescript@5.8.3)(zod@3.25.76)
       isows: 1.0.7(ws@8.18.2)
-      ox: 0.8.1(typescript@5.8.3)(zod@3.25.67)
+      ox: 0.8.1(typescript@5.8.3)(zod@3.25.76)
       ws: 8.18.2
     optionalDependencies:
       typescript: 5.8.3
@@ -17409,13 +17423,13 @@ snapshots:
       - utf-8-validate
       - zod
 
-  vite-node@2.1.9(@types/node@22.15.33):
+  vite-node@2.1.9(@types/node@22.16.2):
     dependencies:
       cac: 6.7.14
       debug: 4.4.1(supports-color@8.1.1)
       es-module-lexer: 1.7.0
       pathe: 1.1.2
-      vite: 5.4.19(@types/node@22.15.33)
+      vite: 5.4.19(@types/node@22.16.2)
     transitivePeerDependencies:
       - '@types/node'
       - less
@@ -17427,27 +17441,27 @@ snapshots:
       - supports-color
       - terser
 
-  vite@5.4.19(@types/node@22.15.33):
+  vite@5.4.19(@types/node@22.16.2):
     dependencies:
       esbuild: 0.21.5
       postcss: 8.5.6
-      rollup: 4.44.0
+      rollup: 4.44.2
     optionalDependencies:
-      '@types/node': 22.15.33
+      '@types/node': 22.16.2
       fsevents: 2.3.3
 
-  vitest@2.1.9(@types/node@22.15.33)(jsdom@24.1.3):
+  vitest@2.1.9(@types/node@22.16.2)(jsdom@24.1.3):
     dependencies:
       '@vitest/expect': 2.1.9
-      '@vitest/mocker': 2.1.9(vite@5.4.19(@types/node@22.15.33))
+      '@vitest/mocker': 2.1.9(vite@5.4.19(@types/node@22.16.2))
       '@vitest/pretty-format': 2.1.9
       '@vitest/runner': 2.1.9
       '@vitest/snapshot': 2.1.9
       '@vitest/spy': 2.1.9
       '@vitest/utils': 2.1.9
-      chai: 5.2.0
+      chai: 5.2.1
       debug: 4.4.1(supports-color@8.1.1)
-      expect-type: 1.2.1
+      expect-type: 1.2.2
       magic-string: 0.30.17
       pathe: 1.1.2
       std-env: 3.9.0
@@ -17455,11 +17469,11 @@ snapshots:
       tinyexec: 0.3.2
       tinypool: 1.1.1
       tinyrainbow: 1.2.0
-      vite: 5.4.19(@types/node@22.15.33)
-      vite-node: 2.1.9(@types/node@22.15.33)
+      vite: 5.4.19(@types/node@22.16.2)
+      vite-node: 2.1.9(@types/node@22.16.2)
       why-is-node-running: 2.3.0
     optionalDependencies:
-      '@types/node': 22.15.33
+      '@types/node': 22.16.2
       jsdom: 24.1.3
     transitivePeerDependencies:
       - less
@@ -17601,7 +17615,7 @@ snapshots:
 
   workerpool@6.5.1: {}
 
-  wrangler@3.114.10(@cloudflare/workers-types@4.20250620.0):
+  wrangler@3.114.11(@cloudflare/workers-types@4.20250710.0):
     dependencies:
       '@cloudflare/kv-asset-handler': 0.3.4
       '@cloudflare/unenv-preset': 2.0.2(unenv@2.0.0-rc.14)(workerd@1.20250408.0)
@@ -17614,7 +17628,7 @@ snapshots:
       unenv: 2.0.0-rc.14
       workerd: 1.20250408.0
     optionalDependencies:
-      '@cloudflare/workers-types': 4.20250620.0
+      '@cloudflare/workers-types': 4.20250710.0
       fsevents: 2.3.3
       sharp: 0.33.5
     transitivePeerDependencies:
@@ -17641,6 +17655,8 @@ snapshots:
 
   ws@8.18.2: {}
 
+  ws@8.18.3: {}
+
   xml-name-validator@5.0.0: {}
 
   xmlchars@2.2.0: {}
@@ -17684,18 +17700,18 @@ snapshots:
       mustache: 4.2.0
       stacktracey: 2.1.8
 
-  zod-validation-error@3.4.0(zod@3.23.8):
+  zod-validation-error@3.5.2(zod@3.25.58):
     dependencies:
-      zod: 3.23.8
+      zod: 3.25.58
 
-  zod-validation-error@3.5.2(zod@3.25.67):
+  zod-validation-error@3.5.2(zod@3.25.76):
     dependencies:
-      zod: 3.25.67
+      zod: 3.25.76
 
   zod@3.22.3: {}
 
-  zod@3.23.8: {}
+  zod@3.25.58: {}
 
-  zod@3.25.67: {}
+  zod@3.25.76: {}
 
   zwitch@2.0.4: {}
diff --git a/website/package.json b/website/package.json
index de1b54cabe11..02e4c97c301b 100644
--- a/website/package.json
+++ b/website/package.json
@@ -19,8 +19,8 @@
   "dependencies": {
     "@docsearch/react": "^3.9.0",
     "@edgeandnode/common": "^7.0.4",
-    "@edgeandnode/gds": "^6.6.2",
-    "@edgeandnode/go": "^10.2.3",
+    "@edgeandnode/gds": "^6.7.0",
+    "@edgeandnode/go": "^10.3.0",
     "@emotion/react": "^11.14.0",
     "@graphprotocol/contracts": "^7.3.0",
     "@pinax/graph-networks-registry": "^0.7.1",
@@ -33,8 +33,8 @@
     "lodash": "^4.17.21",
     "mdast-util-mdx-jsx": "^3.2.0",
     "mdast-util-to-hast": "^13.2.0",
-    "mixpanel-browser": "^2.65.0",
-    "motion": "^12.19.1",
+    "mixpanel-browser": "^2.66.0",
+    "motion": "^12.23.1",
     "next": "^14.2.30",
     "next-seo": "^6.8.0",
     "next-sitemap": "^4.2.3",
@@ -48,14 +48,14 @@
     "theme-ui": "^0.17.2",
     "unist-util-visit": "^5.0.0",
     "vfile": "^6.0.3",
-    "zod": "^3.25.67"
+    "zod": "^3.25.76"
   },
   "devDependencies": {
     "@types/hast": "^3.0.4",
-    "@types/lodash": "^4.17.19",
+    "@types/lodash": "^4.17.20",
     "@types/mdast": "^4.0.4",
     "@types/mixpanel-browser": "^2.60.0",
-    "@types/node": "^22.15.33",
+    "@types/node": "^22.16.2",
     "@types/react": "^18.3.23",
     "@types/react-dom": "^18.3.7",
     "@types/vfile": "^4.0.0",
diff --git a/website/route-lockfile.txt b/website/route-lockfile.txt
index e2481392bf41..bd51529eb7fe 100644
--- a/website/route-lockfile.txt
+++ b/website/route-lockfile.txt
@@ -2,6 +2,19 @@
 /ar/
 /ar/404/
 /ar/about/
+/ar/ai-suite/ai-introduction/
+/ar/ai-suite/graph-assistant/faq/
+/ar/ai-suite/graph-assistant/how-to-guide/
+/ar/ai-suite/graph-assistant/introduction/
+/ar/ai-suite/graph-assistant/quick-start/
+/ar/ai-suite/subgraph-mcp/claude/
+/ar/ai-suite/subgraph-mcp/cline/
+/ar/ai-suite/subgraph-mcp/cursor/
+/ar/ai-suite/subgraph-mcp/introduction/
+/ar/ai-suite/token-api-mcp/claude/
+/ar/ai-suite/token-api-mcp/cline/
+/ar/ai-suite/token-api-mcp/cursor/
+/ar/ai-suite/token-api-mcp/introduction/
 /ar/archived/arbitrum/arbitrum-faq/
 /ar/archived/arbitrum/l2-transfer-tools-faq/
 /ar/archived/arbitrum/l2-transfer-tools-guide/
@@ -16,7 +29,6 @@
 /ar/indexing/tooling/graph-node/
 /ar/indexing/tooling/graphcast/
 /ar/resources/benefits/
-/ar/resources/claude-mcp/
 /ar/resources/glossary/
 /ar/resources/migration-guides/assemblyscript-migration-guide/
 /ar/resources/migration-guides/graphql-validations-migration-guide/
@@ -64,9 +76,6 @@
 /ar/subgraphs/guides/subgraph-debug-forking/
 /ar/subgraphs/guides/subgraph-uncrashable/
 /ar/subgraphs/guides/transfer-to-the-graph/
-/ar/subgraphs/mcp/claude/
-/ar/subgraphs/mcp/cline/
-/ar/subgraphs/mcp/cursor/
 /ar/subgraphs/querying/best-practices/
 /ar/subgraphs/querying/distributed-systems/
 /ar/subgraphs/querying/from-an-application/
@@ -87,10 +96,6 @@
 /ar/substreams/introduction/
 /ar/substreams/publishing/
 /ar/substreams/quick-start/
-/ar/substreams/sps/faq/
-/ar/substreams/sps/introduction/
-/ar/substreams/sps/triggers/
-/ar/substreams/sps/tutorial/
 /ar/supported-networks/
 /ar/supported-networks/abstract-testnet/
 /ar/supported-networks/abstract/
@@ -154,6 +159,7 @@
 /ar/supported-networks/holesky/
 /ar/supported-networks/hoodi-cl/
 /ar/supported-networks/hoodi/
+/ar/supported-networks/injective-evm-testnet/
 /ar/supported-networks/injective-mainnet/
 /ar/supported-networks/injective-testnet/
 /ar/supported-networks/ink-sepolia/
@@ -260,16 +266,29 @@
 /ar/token-api/evm/get-tokens-evm-by-contract/
 /ar/token-api/evm/get-transfers-evm/
 /ar/token-api/faq/
-/ar/token-api/mcp/claude/
-/ar/token-api/mcp/cline/
-/ar/token-api/mcp/cursor/
 /ar/token-api/monitoring/get-health/
 /ar/token-api/monitoring/get-networks/
 /ar/token-api/monitoring/get-version/
 /ar/token-api/quick-start/
+/ar/token-api/svm/get-balances-svm/
+/ar/token-api/svm/get-swaps-svm/
+/ar/token-api/svm/get-transfers-svm/
 /cs/
 /cs/404/
 /cs/about/
+/cs/ai-suite/ai-introduction/
+/cs/ai-suite/graph-assistant/faq/
+/cs/ai-suite/graph-assistant/how-to-guide/
+/cs/ai-suite/graph-assistant/introduction/
+/cs/ai-suite/graph-assistant/quick-start/
+/cs/ai-suite/subgraph-mcp/claude/
+/cs/ai-suite/subgraph-mcp/cline/
+/cs/ai-suite/subgraph-mcp/cursor/
+/cs/ai-suite/subgraph-mcp/introduction/
+/cs/ai-suite/token-api-mcp/claude/
+/cs/ai-suite/token-api-mcp/cline/
+/cs/ai-suite/token-api-mcp/cursor/
+/cs/ai-suite/token-api-mcp/introduction/
 /cs/archived/arbitrum/arbitrum-faq/
 /cs/archived/arbitrum/l2-transfer-tools-faq/
 /cs/archived/arbitrum/l2-transfer-tools-guide/
@@ -284,7 +303,6 @@
 /cs/indexing/tooling/graph-node/
 /cs/indexing/tooling/graphcast/
 /cs/resources/benefits/
-/cs/resources/claude-mcp/
 /cs/resources/glossary/
 /cs/resources/migration-guides/assemblyscript-migration-guide/
 /cs/resources/migration-guides/graphql-validations-migration-guide/
@@ -332,9 +350,6 @@
 /cs/subgraphs/guides/subgraph-debug-forking/
 /cs/subgraphs/guides/subgraph-uncrashable/
 /cs/subgraphs/guides/transfer-to-the-graph/
-/cs/subgraphs/mcp/claude/
-/cs/subgraphs/mcp/cline/
-/cs/subgraphs/mcp/cursor/
 /cs/subgraphs/querying/best-practices/
 /cs/subgraphs/querying/distributed-systems/
 /cs/subgraphs/querying/from-an-application/
@@ -355,10 +370,6 @@
 /cs/substreams/introduction/
 /cs/substreams/publishing/
 /cs/substreams/quick-start/
-/cs/substreams/sps/faq/
-/cs/substreams/sps/introduction/
-/cs/substreams/sps/triggers/
-/cs/substreams/sps/tutorial/
 /cs/supported-networks/
 /cs/supported-networks/abstract-testnet/
 /cs/supported-networks/abstract/
@@ -422,6 +433,7 @@
 /cs/supported-networks/holesky/
 /cs/supported-networks/hoodi-cl/
 /cs/supported-networks/hoodi/
+/cs/supported-networks/injective-evm-testnet/
 /cs/supported-networks/injective-mainnet/
 /cs/supported-networks/injective-testnet/
 /cs/supported-networks/ink-sepolia/
@@ -528,16 +540,29 @@
 /cs/token-api/evm/get-tokens-evm-by-contract/
 /cs/token-api/evm/get-transfers-evm/
 /cs/token-api/faq/
-/cs/token-api/mcp/claude/
-/cs/token-api/mcp/cline/
-/cs/token-api/mcp/cursor/
 /cs/token-api/monitoring/get-health/
 /cs/token-api/monitoring/get-networks/
 /cs/token-api/monitoring/get-version/
 /cs/token-api/quick-start/
+/cs/token-api/svm/get-balances-svm/
+/cs/token-api/svm/get-swaps-svm/
+/cs/token-api/svm/get-transfers-svm/
 /de/
 /de/404/
 /de/about/
+/de/ai-suite/ai-introduction/
+/de/ai-suite/graph-assistant/faq/
+/de/ai-suite/graph-assistant/how-to-guide/
+/de/ai-suite/graph-assistant/introduction/
+/de/ai-suite/graph-assistant/quick-start/
+/de/ai-suite/subgraph-mcp/claude/
+/de/ai-suite/subgraph-mcp/cline/
+/de/ai-suite/subgraph-mcp/cursor/
+/de/ai-suite/subgraph-mcp/introduction/
+/de/ai-suite/token-api-mcp/claude/
+/de/ai-suite/token-api-mcp/cline/
+/de/ai-suite/token-api-mcp/cursor/
+/de/ai-suite/token-api-mcp/introduction/
 /de/archived/arbitrum/arbitrum-faq/
 /de/archived/arbitrum/l2-transfer-tools-faq/
 /de/archived/arbitrum/l2-transfer-tools-guide/
@@ -552,7 +577,6 @@
 /de/indexing/tooling/graph-node/
 /de/indexing/tooling/graphcast/
 /de/resources/benefits/
-/de/resources/claude-mcp/
 /de/resources/glossary/
 /de/resources/migration-guides/assemblyscript-migration-guide/
 /de/resources/migration-guides/graphql-validations-migration-guide/
@@ -600,9 +624,6 @@
 /de/subgraphs/guides/subgraph-debug-forking/
 /de/subgraphs/guides/subgraph-uncrashable/
 /de/subgraphs/guides/transfer-to-the-graph/
-/de/subgraphs/mcp/claude/
-/de/subgraphs/mcp/cline/
-/de/subgraphs/mcp/cursor/
 /de/subgraphs/querying/best-practices/
 /de/subgraphs/querying/distributed-systems/
 /de/subgraphs/querying/from-an-application/
@@ -623,10 +644,6 @@
 /de/substreams/introduction/
 /de/substreams/publishing/
 /de/substreams/quick-start/
-/de/substreams/sps/faq/
-/de/substreams/sps/introduction/
-/de/substreams/sps/triggers/
-/de/substreams/sps/tutorial/
 /de/supported-networks/
 /de/supported-networks/abstract-testnet/
 /de/supported-networks/abstract/
@@ -690,6 +707,7 @@
 /de/supported-networks/holesky/
 /de/supported-networks/hoodi-cl/
 /de/supported-networks/hoodi/
+/de/supported-networks/injective-evm-testnet/
 /de/supported-networks/injective-mainnet/
 /de/supported-networks/injective-testnet/
 /de/supported-networks/ink-sepolia/
@@ -796,16 +814,29 @@
 /de/token-api/evm/get-tokens-evm-by-contract/
 /de/token-api/evm/get-transfers-evm/
 /de/token-api/faq/
-/de/token-api/mcp/claude/
-/de/token-api/mcp/cline/
-/de/token-api/mcp/cursor/
 /de/token-api/monitoring/get-health/
 /de/token-api/monitoring/get-networks/
 /de/token-api/monitoring/get-version/
 /de/token-api/quick-start/
+/de/token-api/svm/get-balances-svm/
+/de/token-api/svm/get-swaps-svm/
+/de/token-api/svm/get-transfers-svm/
 /en/
 /en/404/
 /en/about/
+/en/ai-suite/ai-introduction/
+/en/ai-suite/graph-assistant/faq/
+/en/ai-suite/graph-assistant/how-to-guide/
+/en/ai-suite/graph-assistant/introduction/
+/en/ai-suite/graph-assistant/quick-start/
+/en/ai-suite/subgraph-mcp/claude/
+/en/ai-suite/subgraph-mcp/cline/
+/en/ai-suite/subgraph-mcp/cursor/
+/en/ai-suite/subgraph-mcp/introduction/
+/en/ai-suite/token-api-mcp/claude/
+/en/ai-suite/token-api-mcp/cline/
+/en/ai-suite/token-api-mcp/cursor/
+/en/ai-suite/token-api-mcp/introduction/
 /en/archived/arbitrum/arbitrum-faq/
 /en/archived/arbitrum/l2-transfer-tools-faq/
 /en/archived/arbitrum/l2-transfer-tools-guide/
@@ -820,7 +851,6 @@
 /en/indexing/tooling/graph-node/
 /en/indexing/tooling/graphcast/
 /en/resources/benefits/
-/en/resources/claude-mcp/
 /en/resources/glossary/
 /en/resources/migration-guides/assemblyscript-migration-guide/
 /en/resources/migration-guides/graphql-validations-migration-guide/
@@ -868,9 +898,6 @@
 /en/subgraphs/guides/subgraph-debug-forking/
 /en/subgraphs/guides/subgraph-uncrashable/
 /en/subgraphs/guides/transfer-to-the-graph/
-/en/subgraphs/mcp/claude/
-/en/subgraphs/mcp/cline/
-/en/subgraphs/mcp/cursor/
 /en/subgraphs/querying/best-practices/
 /en/subgraphs/querying/distributed-systems/
 /en/subgraphs/querying/from-an-application/
@@ -891,10 +918,6 @@
 /en/substreams/introduction/
 /en/substreams/publishing/
 /en/substreams/quick-start/
-/en/substreams/sps/faq/
-/en/substreams/sps/introduction/
-/en/substreams/sps/triggers/
-/en/substreams/sps/tutorial/
 /en/supported-networks/
 /en/supported-networks/abstract-testnet/
 /en/supported-networks/abstract/
@@ -958,6 +981,7 @@
 /en/supported-networks/holesky/
 /en/supported-networks/hoodi-cl/
 /en/supported-networks/hoodi/
+/en/supported-networks/injective-evm-testnet/
 /en/supported-networks/injective-mainnet/
 /en/supported-networks/injective-testnet/
 /en/supported-networks/ink-sepolia/
@@ -1064,16 +1088,29 @@
 /en/token-api/evm/get-tokens-evm-by-contract/
 /en/token-api/evm/get-transfers-evm/
 /en/token-api/faq/
-/en/token-api/mcp/claude/
-/en/token-api/mcp/cline/
-/en/token-api/mcp/cursor/
 /en/token-api/monitoring/get-health/
 /en/token-api/monitoring/get-networks/
 /en/token-api/monitoring/get-version/
 /en/token-api/quick-start/
+/en/token-api/svm/get-balances-svm/
+/en/token-api/svm/get-swaps-svm/
+/en/token-api/svm/get-transfers-svm/
 /es/
 /es/404/
 /es/about/
+/es/ai-suite/ai-introduction/
+/es/ai-suite/graph-assistant/faq/
+/es/ai-suite/graph-assistant/how-to-guide/
+/es/ai-suite/graph-assistant/introduction/
+/es/ai-suite/graph-assistant/quick-start/
+/es/ai-suite/subgraph-mcp/claude/
+/es/ai-suite/subgraph-mcp/cline/
+/es/ai-suite/subgraph-mcp/cursor/
+/es/ai-suite/subgraph-mcp/introduction/
+/es/ai-suite/token-api-mcp/claude/
+/es/ai-suite/token-api-mcp/cline/
+/es/ai-suite/token-api-mcp/cursor/
+/es/ai-suite/token-api-mcp/introduction/
 /es/archived/arbitrum/arbitrum-faq/
 /es/archived/arbitrum/l2-transfer-tools-faq/
 /es/archived/arbitrum/l2-transfer-tools-guide/
@@ -1088,7 +1125,6 @@
 /es/indexing/tooling/graph-node/
 /es/indexing/tooling/graphcast/
 /es/resources/benefits/
-/es/resources/claude-mcp/
 /es/resources/glossary/
 /es/resources/migration-guides/assemblyscript-migration-guide/
 /es/resources/migration-guides/graphql-validations-migration-guide/
@@ -1136,9 +1172,6 @@
 /es/subgraphs/guides/subgraph-debug-forking/
 /es/subgraphs/guides/subgraph-uncrashable/
 /es/subgraphs/guides/transfer-to-the-graph/
-/es/subgraphs/mcp/claude/
-/es/subgraphs/mcp/cline/
-/es/subgraphs/mcp/cursor/
 /es/subgraphs/querying/best-practices/
 /es/subgraphs/querying/distributed-systems/
 /es/subgraphs/querying/from-an-application/
@@ -1159,10 +1192,6 @@
 /es/substreams/introduction/
 /es/substreams/publishing/
 /es/substreams/quick-start/
-/es/substreams/sps/faq/
-/es/substreams/sps/introduction/
-/es/substreams/sps/triggers/
-/es/substreams/sps/tutorial/
 /es/supported-networks/
 /es/supported-networks/abstract-testnet/
 /es/supported-networks/abstract/
@@ -1226,6 +1255,7 @@
 /es/supported-networks/holesky/
 /es/supported-networks/hoodi-cl/
 /es/supported-networks/hoodi/
+/es/supported-networks/injective-evm-testnet/
 /es/supported-networks/injective-mainnet/
 /es/supported-networks/injective-testnet/
 /es/supported-networks/ink-sepolia/
@@ -1332,16 +1362,29 @@
 /es/token-api/evm/get-tokens-evm-by-contract/
 /es/token-api/evm/get-transfers-evm/
 /es/token-api/faq/
-/es/token-api/mcp/claude/
-/es/token-api/mcp/cline/
-/es/token-api/mcp/cursor/
 /es/token-api/monitoring/get-health/
 /es/token-api/monitoring/get-networks/
 /es/token-api/monitoring/get-version/
 /es/token-api/quick-start/
+/es/token-api/svm/get-balances-svm/
+/es/token-api/svm/get-swaps-svm/
+/es/token-api/svm/get-transfers-svm/
 /fr/
 /fr/404/
 /fr/about/
+/fr/ai-suite/ai-introduction/
+/fr/ai-suite/graph-assistant/faq/
+/fr/ai-suite/graph-assistant/how-to-guide/
+/fr/ai-suite/graph-assistant/introduction/
+/fr/ai-suite/graph-assistant/quick-start/
+/fr/ai-suite/subgraph-mcp/claude/
+/fr/ai-suite/subgraph-mcp/cline/
+/fr/ai-suite/subgraph-mcp/cursor/
+/fr/ai-suite/subgraph-mcp/introduction/
+/fr/ai-suite/token-api-mcp/claude/
+/fr/ai-suite/token-api-mcp/cline/
+/fr/ai-suite/token-api-mcp/cursor/
+/fr/ai-suite/token-api-mcp/introduction/
 /fr/archived/arbitrum/arbitrum-faq/
 /fr/archived/arbitrum/l2-transfer-tools-faq/
 /fr/archived/arbitrum/l2-transfer-tools-guide/
@@ -1356,7 +1399,6 @@
 /fr/indexing/tooling/graph-node/
 /fr/indexing/tooling/graphcast/
 /fr/resources/benefits/
-/fr/resources/claude-mcp/
 /fr/resources/glossary/
 /fr/resources/migration-guides/assemblyscript-migration-guide/
 /fr/resources/migration-guides/graphql-validations-migration-guide/
@@ -1404,9 +1446,6 @@
 /fr/subgraphs/guides/subgraph-debug-forking/
 /fr/subgraphs/guides/subgraph-uncrashable/
 /fr/subgraphs/guides/transfer-to-the-graph/
-/fr/subgraphs/mcp/claude/
-/fr/subgraphs/mcp/cline/
-/fr/subgraphs/mcp/cursor/
 /fr/subgraphs/querying/best-practices/
 /fr/subgraphs/querying/distributed-systems/
 /fr/subgraphs/querying/from-an-application/
@@ -1427,10 +1466,6 @@
 /fr/substreams/introduction/
 /fr/substreams/publishing/
 /fr/substreams/quick-start/
-/fr/substreams/sps/faq/
-/fr/substreams/sps/introduction/
-/fr/substreams/sps/triggers/
-/fr/substreams/sps/tutorial/
 /fr/supported-networks/
 /fr/supported-networks/abstract-testnet/
 /fr/supported-networks/abstract/
@@ -1494,6 +1529,7 @@
 /fr/supported-networks/holesky/
 /fr/supported-networks/hoodi-cl/
 /fr/supported-networks/hoodi/
+/fr/supported-networks/injective-evm-testnet/
 /fr/supported-networks/injective-mainnet/
 /fr/supported-networks/injective-testnet/
 /fr/supported-networks/ink-sepolia/
@@ -1600,16 +1636,29 @@
 /fr/token-api/evm/get-tokens-evm-by-contract/
 /fr/token-api/evm/get-transfers-evm/
 /fr/token-api/faq/
-/fr/token-api/mcp/claude/
-/fr/token-api/mcp/cline/
-/fr/token-api/mcp/cursor/
 /fr/token-api/monitoring/get-health/
 /fr/token-api/monitoring/get-networks/
 /fr/token-api/monitoring/get-version/
 /fr/token-api/quick-start/
+/fr/token-api/svm/get-balances-svm/
+/fr/token-api/svm/get-swaps-svm/
+/fr/token-api/svm/get-transfers-svm/
 /hi/
 /hi/404/
 /hi/about/
+/hi/ai-suite/ai-introduction/
+/hi/ai-suite/graph-assistant/faq/
+/hi/ai-suite/graph-assistant/how-to-guide/
+/hi/ai-suite/graph-assistant/introduction/
+/hi/ai-suite/graph-assistant/quick-start/
+/hi/ai-suite/subgraph-mcp/claude/
+/hi/ai-suite/subgraph-mcp/cline/
+/hi/ai-suite/subgraph-mcp/cursor/
+/hi/ai-suite/subgraph-mcp/introduction/
+/hi/ai-suite/token-api-mcp/claude/
+/hi/ai-suite/token-api-mcp/cline/
+/hi/ai-suite/token-api-mcp/cursor/
+/hi/ai-suite/token-api-mcp/introduction/
 /hi/archived/arbitrum/arbitrum-faq/
 /hi/archived/arbitrum/l2-transfer-tools-faq/
 /hi/archived/arbitrum/l2-transfer-tools-guide/
@@ -1624,7 +1673,6 @@
 /hi/indexing/tooling/graph-node/
 /hi/indexing/tooling/graphcast/
 /hi/resources/benefits/
-/hi/resources/claude-mcp/
 /hi/resources/glossary/
 /hi/resources/migration-guides/assemblyscript-migration-guide/
 /hi/resources/migration-guides/graphql-validations-migration-guide/
@@ -1672,9 +1720,6 @@
 /hi/subgraphs/guides/subgraph-debug-forking/
 /hi/subgraphs/guides/subgraph-uncrashable/
 /hi/subgraphs/guides/transfer-to-the-graph/
-/hi/subgraphs/mcp/claude/
-/hi/subgraphs/mcp/cline/
-/hi/subgraphs/mcp/cursor/
 /hi/subgraphs/querying/best-practices/
 /hi/subgraphs/querying/distributed-systems/
 /hi/subgraphs/querying/from-an-application/
@@ -1695,10 +1740,6 @@
 /hi/substreams/introduction/
 /hi/substreams/publishing/
 /hi/substreams/quick-start/
-/hi/substreams/sps/faq/
-/hi/substreams/sps/introduction/
-/hi/substreams/sps/triggers/
-/hi/substreams/sps/tutorial/
 /hi/supported-networks/
 /hi/supported-networks/abstract-testnet/
 /hi/supported-networks/abstract/
@@ -1762,6 +1803,7 @@
 /hi/supported-networks/holesky/
 /hi/supported-networks/hoodi-cl/
 /hi/supported-networks/hoodi/
+/hi/supported-networks/injective-evm-testnet/
 /hi/supported-networks/injective-mainnet/
 /hi/supported-networks/injective-testnet/
 /hi/supported-networks/ink-sepolia/
@@ -1868,16 +1910,29 @@
 /hi/token-api/evm/get-tokens-evm-by-contract/
 /hi/token-api/evm/get-transfers-evm/
 /hi/token-api/faq/
-/hi/token-api/mcp/claude/
-/hi/token-api/mcp/cline/
-/hi/token-api/mcp/cursor/
 /hi/token-api/monitoring/get-health/
 /hi/token-api/monitoring/get-networks/
 /hi/token-api/monitoring/get-version/
 /hi/token-api/quick-start/
+/hi/token-api/svm/get-balances-svm/
+/hi/token-api/svm/get-swaps-svm/
+/hi/token-api/svm/get-transfers-svm/
 /it/
 /it/404/
 /it/about/
+/it/ai-suite/ai-introduction/
+/it/ai-suite/graph-assistant/faq/
+/it/ai-suite/graph-assistant/how-to-guide/
+/it/ai-suite/graph-assistant/introduction/
+/it/ai-suite/graph-assistant/quick-start/
+/it/ai-suite/subgraph-mcp/claude/
+/it/ai-suite/subgraph-mcp/cline/
+/it/ai-suite/subgraph-mcp/cursor/
+/it/ai-suite/subgraph-mcp/introduction/
+/it/ai-suite/token-api-mcp/claude/
+/it/ai-suite/token-api-mcp/cline/
+/it/ai-suite/token-api-mcp/cursor/
+/it/ai-suite/token-api-mcp/introduction/
 /it/archived/arbitrum/arbitrum-faq/
 /it/archived/arbitrum/l2-transfer-tools-faq/
 /it/archived/arbitrum/l2-transfer-tools-guide/
@@ -1892,7 +1947,6 @@
 /it/indexing/tooling/graph-node/
 /it/indexing/tooling/graphcast/
 /it/resources/benefits/
-/it/resources/claude-mcp/
 /it/resources/glossary/
 /it/resources/migration-guides/assemblyscript-migration-guide/
 /it/resources/migration-guides/graphql-validations-migration-guide/
@@ -1940,9 +1994,6 @@
 /it/subgraphs/guides/subgraph-debug-forking/
 /it/subgraphs/guides/subgraph-uncrashable/
 /it/subgraphs/guides/transfer-to-the-graph/
-/it/subgraphs/mcp/claude/
-/it/subgraphs/mcp/cline/
-/it/subgraphs/mcp/cursor/
 /it/subgraphs/querying/best-practices/
 /it/subgraphs/querying/distributed-systems/
 /it/subgraphs/querying/from-an-application/
@@ -1963,10 +2014,6 @@
 /it/substreams/introduction/
 /it/substreams/publishing/
 /it/substreams/quick-start/
-/it/substreams/sps/faq/
-/it/substreams/sps/introduction/
-/it/substreams/sps/triggers/
-/it/substreams/sps/tutorial/
 /it/supported-networks/
 /it/supported-networks/abstract-testnet/
 /it/supported-networks/abstract/
@@ -2030,6 +2077,7 @@
 /it/supported-networks/holesky/
 /it/supported-networks/hoodi-cl/
 /it/supported-networks/hoodi/
+/it/supported-networks/injective-evm-testnet/
 /it/supported-networks/injective-mainnet/
 /it/supported-networks/injective-testnet/
 /it/supported-networks/ink-sepolia/
@@ -2136,16 +2184,29 @@
 /it/token-api/evm/get-tokens-evm-by-contract/
 /it/token-api/evm/get-transfers-evm/
 /it/token-api/faq/
-/it/token-api/mcp/claude/
-/it/token-api/mcp/cline/
-/it/token-api/mcp/cursor/
 /it/token-api/monitoring/get-health/
 /it/token-api/monitoring/get-networks/
 /it/token-api/monitoring/get-version/
 /it/token-api/quick-start/
+/it/token-api/svm/get-balances-svm/
+/it/token-api/svm/get-swaps-svm/
+/it/token-api/svm/get-transfers-svm/
 /ja/
 /ja/404/
 /ja/about/
+/ja/ai-suite/ai-introduction/
+/ja/ai-suite/graph-assistant/faq/
+/ja/ai-suite/graph-assistant/how-to-guide/
+/ja/ai-suite/graph-assistant/introduction/
+/ja/ai-suite/graph-assistant/quick-start/
+/ja/ai-suite/subgraph-mcp/claude/
+/ja/ai-suite/subgraph-mcp/cline/
+/ja/ai-suite/subgraph-mcp/cursor/
+/ja/ai-suite/subgraph-mcp/introduction/
+/ja/ai-suite/token-api-mcp/claude/
+/ja/ai-suite/token-api-mcp/cline/
+/ja/ai-suite/token-api-mcp/cursor/
+/ja/ai-suite/token-api-mcp/introduction/
 /ja/archived/arbitrum/arbitrum-faq/
 /ja/archived/arbitrum/l2-transfer-tools-faq/
 /ja/archived/arbitrum/l2-transfer-tools-guide/
@@ -2160,7 +2221,6 @@
 /ja/indexing/tooling/graph-node/
 /ja/indexing/tooling/graphcast/
 /ja/resources/benefits/
-/ja/resources/claude-mcp/
 /ja/resources/glossary/
 /ja/resources/migration-guides/assemblyscript-migration-guide/
 /ja/resources/migration-guides/graphql-validations-migration-guide/
@@ -2208,9 +2268,6 @@
 /ja/subgraphs/guides/subgraph-debug-forking/
 /ja/subgraphs/guides/subgraph-uncrashable/
 /ja/subgraphs/guides/transfer-to-the-graph/
-/ja/subgraphs/mcp/claude/
-/ja/subgraphs/mcp/cline/
-/ja/subgraphs/mcp/cursor/
 /ja/subgraphs/querying/best-practices/
 /ja/subgraphs/querying/distributed-systems/
 /ja/subgraphs/querying/from-an-application/
@@ -2231,10 +2288,6 @@
 /ja/substreams/introduction/
 /ja/substreams/publishing/
 /ja/substreams/quick-start/
-/ja/substreams/sps/faq/
-/ja/substreams/sps/introduction/
-/ja/substreams/sps/triggers/
-/ja/substreams/sps/tutorial/
 /ja/supported-networks/
 /ja/supported-networks/abstract-testnet/
 /ja/supported-networks/abstract/
@@ -2298,6 +2351,7 @@
 /ja/supported-networks/holesky/
 /ja/supported-networks/hoodi-cl/
 /ja/supported-networks/hoodi/
+/ja/supported-networks/injective-evm-testnet/
 /ja/supported-networks/injective-mainnet/
 /ja/supported-networks/injective-testnet/
 /ja/supported-networks/ink-sepolia/
@@ -2404,14 +2458,27 @@
 /ja/token-api/evm/get-tokens-evm-by-contract/
 /ja/token-api/evm/get-transfers-evm/
 /ja/token-api/faq/
-/ja/token-api/mcp/claude/
-/ja/token-api/mcp/cline/
-/ja/token-api/mcp/cursor/
 /ja/token-api/monitoring/get-health/
 /ja/token-api/monitoring/get-networks/
 /ja/token-api/monitoring/get-version/
 /ja/token-api/quick-start/
+/ja/token-api/svm/get-balances-svm/
+/ja/token-api/svm/get-swaps-svm/
+/ja/token-api/svm/get-transfers-svm/
 /ko/about/
+/ko/ai-suite/ai-introduction/
+/ko/ai-suite/graph-assistant/faq/
+/ko/ai-suite/graph-assistant/how-to-guide/
+/ko/ai-suite/graph-assistant/introduction/
+/ko/ai-suite/graph-assistant/quick-start/
+/ko/ai-suite/subgraph-mcp/claude/
+/ko/ai-suite/subgraph-mcp/cline/
+/ko/ai-suite/subgraph-mcp/cursor/
+/ko/ai-suite/subgraph-mcp/introduction/
+/ko/ai-suite/token-api-mcp/claude/
+/ko/ai-suite/token-api-mcp/cline/
+/ko/ai-suite/token-api-mcp/cursor/
+/ko/ai-suite/token-api-mcp/introduction/
 /ko/archived/arbitrum/arbitrum-faq/
 /ko/archived/arbitrum/l2-transfer-tools-faq/
 /ko/archived/arbitrum/l2-transfer-tools-guide/
@@ -2426,7 +2493,6 @@
 /ko/indexing/tooling/graph-node/
 /ko/indexing/tooling/graphcast/
 /ko/resources/benefits/
-/ko/resources/claude-mcp/
 /ko/resources/glossary/
 /ko/resources/migration-guides/assemblyscript-migration-guide/
 /ko/resources/migration-guides/graphql-validations-migration-guide/
@@ -2474,9 +2540,6 @@
 /ko/subgraphs/guides/subgraph-debug-forking/
 /ko/subgraphs/guides/subgraph-uncrashable/
 /ko/subgraphs/guides/transfer-to-the-graph/
-/ko/subgraphs/mcp/claude/
-/ko/subgraphs/mcp/cline/
-/ko/subgraphs/mcp/cursor/
 /ko/subgraphs/querying/best-practices/
 /ko/subgraphs/querying/distributed-systems/
 /ko/subgraphs/querying/from-an-application/
@@ -2497,10 +2560,6 @@
 /ko/substreams/introduction/
 /ko/substreams/publishing/
 /ko/substreams/quick-start/
-/ko/substreams/sps/faq/
-/ko/substreams/sps/introduction/
-/ko/substreams/sps/triggers/
-/ko/substreams/sps/tutorial/
 /ko/supported-networks/
 /ko/token-api/evm/get-balances-evm-by-address/
 /ko/token-api/evm/get-historical-balances-evm-by-address/
@@ -2518,16 +2577,29 @@
 /ko/token-api/evm/get-tokens-evm-by-contract/
 /ko/token-api/evm/get-transfers-evm/
 /ko/token-api/faq/
-/ko/token-api/mcp/claude/
-/ko/token-api/mcp/cline/
-/ko/token-api/mcp/cursor/
 /ko/token-api/monitoring/get-health/
 /ko/token-api/monitoring/get-networks/
 /ko/token-api/monitoring/get-version/
 /ko/token-api/quick-start/
+/ko/token-api/svm/get-balances-svm/
+/ko/token-api/svm/get-swaps-svm/
+/ko/token-api/svm/get-transfers-svm/
 /mr/
 /mr/404/
 /mr/about/
+/mr/ai-suite/ai-introduction/
+/mr/ai-suite/graph-assistant/faq/
+/mr/ai-suite/graph-assistant/how-to-guide/
+/mr/ai-suite/graph-assistant/introduction/
+/mr/ai-suite/graph-assistant/quick-start/
+/mr/ai-suite/subgraph-mcp/claude/
+/mr/ai-suite/subgraph-mcp/cline/
+/mr/ai-suite/subgraph-mcp/cursor/
+/mr/ai-suite/subgraph-mcp/introduction/
+/mr/ai-suite/token-api-mcp/claude/
+/mr/ai-suite/token-api-mcp/cline/
+/mr/ai-suite/token-api-mcp/cursor/
+/mr/ai-suite/token-api-mcp/introduction/
 /mr/archived/arbitrum/arbitrum-faq/
 /mr/archived/arbitrum/l2-transfer-tools-faq/
 /mr/archived/arbitrum/l2-transfer-tools-guide/
@@ -2542,7 +2614,6 @@
 /mr/indexing/tooling/graph-node/
 /mr/indexing/tooling/graphcast/
 /mr/resources/benefits/
-/mr/resources/claude-mcp/
 /mr/resources/glossary/
 /mr/resources/migration-guides/assemblyscript-migration-guide/
 /mr/resources/migration-guides/graphql-validations-migration-guide/
@@ -2590,9 +2661,6 @@
 /mr/subgraphs/guides/subgraph-debug-forking/
 /mr/subgraphs/guides/subgraph-uncrashable/
 /mr/subgraphs/guides/transfer-to-the-graph/
-/mr/subgraphs/mcp/claude/
-/mr/subgraphs/mcp/cline/
-/mr/subgraphs/mcp/cursor/
 /mr/subgraphs/querying/best-practices/
 /mr/subgraphs/querying/distributed-systems/
 /mr/subgraphs/querying/from-an-application/
@@ -2613,10 +2681,6 @@
 /mr/substreams/introduction/
 /mr/substreams/publishing/
 /mr/substreams/quick-start/
-/mr/substreams/sps/faq/
-/mr/substreams/sps/introduction/
-/mr/substreams/sps/triggers/
-/mr/substreams/sps/tutorial/
 /mr/supported-networks/
 /mr/supported-networks/abstract-testnet/
 /mr/supported-networks/abstract/
@@ -2680,6 +2744,7 @@
 /mr/supported-networks/holesky/
 /mr/supported-networks/hoodi-cl/
 /mr/supported-networks/hoodi/
+/mr/supported-networks/injective-evm-testnet/
 /mr/supported-networks/injective-mainnet/
 /mr/supported-networks/injective-testnet/
 /mr/supported-networks/ink-sepolia/
@@ -2786,14 +2851,27 @@
 /mr/token-api/evm/get-tokens-evm-by-contract/
 /mr/token-api/evm/get-transfers-evm/
 /mr/token-api/faq/
-/mr/token-api/mcp/claude/
-/mr/token-api/mcp/cline/
-/mr/token-api/mcp/cursor/
 /mr/token-api/monitoring/get-health/
 /mr/token-api/monitoring/get-networks/
 /mr/token-api/monitoring/get-version/
 /mr/token-api/quick-start/
+/mr/token-api/svm/get-balances-svm/
+/mr/token-api/svm/get-swaps-svm/
+/mr/token-api/svm/get-transfers-svm/
 /nl/about/
+/nl/ai-suite/ai-introduction/
+/nl/ai-suite/graph-assistant/faq/
+/nl/ai-suite/graph-assistant/how-to-guide/
+/nl/ai-suite/graph-assistant/introduction/
+/nl/ai-suite/graph-assistant/quick-start/
+/nl/ai-suite/subgraph-mcp/claude/
+/nl/ai-suite/subgraph-mcp/cline/
+/nl/ai-suite/subgraph-mcp/cursor/
+/nl/ai-suite/subgraph-mcp/introduction/
+/nl/ai-suite/token-api-mcp/claude/
+/nl/ai-suite/token-api-mcp/cline/
+/nl/ai-suite/token-api-mcp/cursor/
+/nl/ai-suite/token-api-mcp/introduction/
 /nl/archived/arbitrum/arbitrum-faq/
 /nl/archived/arbitrum/l2-transfer-tools-faq/
 /nl/archived/arbitrum/l2-transfer-tools-guide/
@@ -2808,7 +2886,6 @@
 /nl/indexing/tooling/graph-node/
 /nl/indexing/tooling/graphcast/
 /nl/resources/benefits/
-/nl/resources/claude-mcp/
 /nl/resources/glossary/
 /nl/resources/migration-guides/assemblyscript-migration-guide/
 /nl/resources/migration-guides/graphql-validations-migration-guide/
@@ -2856,9 +2933,6 @@
 /nl/subgraphs/guides/subgraph-debug-forking/
 /nl/subgraphs/guides/subgraph-uncrashable/
 /nl/subgraphs/guides/transfer-to-the-graph/
-/nl/subgraphs/mcp/claude/
-/nl/subgraphs/mcp/cline/
-/nl/subgraphs/mcp/cursor/
 /nl/subgraphs/querying/best-practices/
 /nl/subgraphs/querying/distributed-systems/
 /nl/subgraphs/querying/from-an-application/
@@ -2879,10 +2953,6 @@
 /nl/substreams/introduction/
 /nl/substreams/publishing/
 /nl/substreams/quick-start/
-/nl/substreams/sps/faq/
-/nl/substreams/sps/introduction/
-/nl/substreams/sps/triggers/
-/nl/substreams/sps/tutorial/
 /nl/supported-networks/
 /nl/token-api/evm/get-balances-evm-by-address/
 /nl/token-api/evm/get-historical-balances-evm-by-address/
@@ -2900,14 +2970,27 @@
 /nl/token-api/evm/get-tokens-evm-by-contract/
 /nl/token-api/evm/get-transfers-evm/
 /nl/token-api/faq/
-/nl/token-api/mcp/claude/
-/nl/token-api/mcp/cline/
-/nl/token-api/mcp/cursor/
 /nl/token-api/monitoring/get-health/
 /nl/token-api/monitoring/get-networks/
 /nl/token-api/monitoring/get-version/
 /nl/token-api/quick-start/
+/nl/token-api/svm/get-balances-svm/
+/nl/token-api/svm/get-swaps-svm/
+/nl/token-api/svm/get-transfers-svm/
 /pl/about/
+/pl/ai-suite/ai-introduction/
+/pl/ai-suite/graph-assistant/faq/
+/pl/ai-suite/graph-assistant/how-to-guide/
+/pl/ai-suite/graph-assistant/introduction/
+/pl/ai-suite/graph-assistant/quick-start/
+/pl/ai-suite/subgraph-mcp/claude/
+/pl/ai-suite/subgraph-mcp/cline/
+/pl/ai-suite/subgraph-mcp/cursor/
+/pl/ai-suite/subgraph-mcp/introduction/
+/pl/ai-suite/token-api-mcp/claude/
+/pl/ai-suite/token-api-mcp/cline/
+/pl/ai-suite/token-api-mcp/cursor/
+/pl/ai-suite/token-api-mcp/introduction/
 /pl/archived/arbitrum/arbitrum-faq/
 /pl/archived/arbitrum/l2-transfer-tools-faq/
 /pl/archived/arbitrum/l2-transfer-tools-guide/
@@ -2922,7 +3005,6 @@
 /pl/indexing/tooling/graph-node/
 /pl/indexing/tooling/graphcast/
 /pl/resources/benefits/
-/pl/resources/claude-mcp/
 /pl/resources/glossary/
 /pl/resources/migration-guides/assemblyscript-migration-guide/
 /pl/resources/migration-guides/graphql-validations-migration-guide/
@@ -2970,9 +3052,6 @@
 /pl/subgraphs/guides/subgraph-debug-forking/
 /pl/subgraphs/guides/subgraph-uncrashable/
 /pl/subgraphs/guides/transfer-to-the-graph/
-/pl/subgraphs/mcp/claude/
-/pl/subgraphs/mcp/cline/
-/pl/subgraphs/mcp/cursor/
 /pl/subgraphs/querying/best-practices/
 /pl/subgraphs/querying/distributed-systems/
 /pl/subgraphs/querying/from-an-application/
@@ -2993,10 +3072,6 @@
 /pl/substreams/introduction/
 /pl/substreams/publishing/
 /pl/substreams/quick-start/
-/pl/substreams/sps/faq/
-/pl/substreams/sps/introduction/
-/pl/substreams/sps/triggers/
-/pl/substreams/sps/tutorial/
 /pl/supported-networks/
 /pl/token-api/evm/get-balances-evm-by-address/
 /pl/token-api/evm/get-historical-balances-evm-by-address/
@@ -3014,16 +3089,29 @@
 /pl/token-api/evm/get-tokens-evm-by-contract/
 /pl/token-api/evm/get-transfers-evm/
 /pl/token-api/faq/
-/pl/token-api/mcp/claude/
-/pl/token-api/mcp/cline/
-/pl/token-api/mcp/cursor/
 /pl/token-api/monitoring/get-health/
 /pl/token-api/monitoring/get-networks/
 /pl/token-api/monitoring/get-version/
 /pl/token-api/quick-start/
+/pl/token-api/svm/get-balances-svm/
+/pl/token-api/svm/get-swaps-svm/
+/pl/token-api/svm/get-transfers-svm/
 /pt/
 /pt/404/
 /pt/about/
+/pt/ai-suite/ai-introduction/
+/pt/ai-suite/graph-assistant/faq/
+/pt/ai-suite/graph-assistant/how-to-guide/
+/pt/ai-suite/graph-assistant/introduction/
+/pt/ai-suite/graph-assistant/quick-start/
+/pt/ai-suite/subgraph-mcp/claude/
+/pt/ai-suite/subgraph-mcp/cline/
+/pt/ai-suite/subgraph-mcp/cursor/
+/pt/ai-suite/subgraph-mcp/introduction/
+/pt/ai-suite/token-api-mcp/claude/
+/pt/ai-suite/token-api-mcp/cline/
+/pt/ai-suite/token-api-mcp/cursor/
+/pt/ai-suite/token-api-mcp/introduction/
 /pt/archived/arbitrum/arbitrum-faq/
 /pt/archived/arbitrum/l2-transfer-tools-faq/
 /pt/archived/arbitrum/l2-transfer-tools-guide/
@@ -3038,7 +3126,6 @@
 /pt/indexing/tooling/graph-node/
 /pt/indexing/tooling/graphcast/
 /pt/resources/benefits/
-/pt/resources/claude-mcp/
 /pt/resources/glossary/
 /pt/resources/migration-guides/assemblyscript-migration-guide/
 /pt/resources/migration-guides/graphql-validations-migration-guide/
@@ -3086,9 +3173,6 @@
 /pt/subgraphs/guides/subgraph-debug-forking/
 /pt/subgraphs/guides/subgraph-uncrashable/
 /pt/subgraphs/guides/transfer-to-the-graph/
-/pt/subgraphs/mcp/claude/
-/pt/subgraphs/mcp/cline/
-/pt/subgraphs/mcp/cursor/
 /pt/subgraphs/querying/best-practices/
 /pt/subgraphs/querying/distributed-systems/
 /pt/subgraphs/querying/from-an-application/
@@ -3109,10 +3193,6 @@
 /pt/substreams/introduction/
 /pt/substreams/publishing/
 /pt/substreams/quick-start/
-/pt/substreams/sps/faq/
-/pt/substreams/sps/introduction/
-/pt/substreams/sps/triggers/
-/pt/substreams/sps/tutorial/
 /pt/supported-networks/
 /pt/supported-networks/abstract-testnet/
 /pt/supported-networks/abstract/
@@ -3176,6 +3256,7 @@
 /pt/supported-networks/holesky/
 /pt/supported-networks/hoodi-cl/
 /pt/supported-networks/hoodi/
+/pt/supported-networks/injective-evm-testnet/
 /pt/supported-networks/injective-mainnet/
 /pt/supported-networks/injective-testnet/
 /pt/supported-networks/ink-sepolia/
@@ -3282,14 +3363,27 @@
 /pt/token-api/evm/get-tokens-evm-by-contract/
 /pt/token-api/evm/get-transfers-evm/
 /pt/token-api/faq/
-/pt/token-api/mcp/claude/
-/pt/token-api/mcp/cline/
-/pt/token-api/mcp/cursor/
 /pt/token-api/monitoring/get-health/
 /pt/token-api/monitoring/get-networks/
 /pt/token-api/monitoring/get-version/
 /pt/token-api/quick-start/
+/pt/token-api/svm/get-balances-svm/
+/pt/token-api/svm/get-swaps-svm/
+/pt/token-api/svm/get-transfers-svm/
 /ro/about/
+/ro/ai-suite/ai-introduction/
+/ro/ai-suite/graph-assistant/faq/
+/ro/ai-suite/graph-assistant/how-to-guide/
+/ro/ai-suite/graph-assistant/introduction/
+/ro/ai-suite/graph-assistant/quick-start/
+/ro/ai-suite/subgraph-mcp/claude/
+/ro/ai-suite/subgraph-mcp/cline/
+/ro/ai-suite/subgraph-mcp/cursor/
+/ro/ai-suite/subgraph-mcp/introduction/
+/ro/ai-suite/token-api-mcp/claude/
+/ro/ai-suite/token-api-mcp/cline/
+/ro/ai-suite/token-api-mcp/cursor/
+/ro/ai-suite/token-api-mcp/introduction/
 /ro/archived/arbitrum/arbitrum-faq/
 /ro/archived/arbitrum/l2-transfer-tools-faq/
 /ro/archived/arbitrum/l2-transfer-tools-guide/
@@ -3304,7 +3398,6 @@
 /ro/indexing/tooling/graph-node/
 /ro/indexing/tooling/graphcast/
 /ro/resources/benefits/
-/ro/resources/claude-mcp/
 /ro/resources/glossary/
 /ro/resources/migration-guides/assemblyscript-migration-guide/
 /ro/resources/migration-guides/graphql-validations-migration-guide/
@@ -3352,9 +3445,6 @@
 /ro/subgraphs/guides/subgraph-debug-forking/
 /ro/subgraphs/guides/subgraph-uncrashable/
 /ro/subgraphs/guides/transfer-to-the-graph/
-/ro/subgraphs/mcp/claude/
-/ro/subgraphs/mcp/cline/
-/ro/subgraphs/mcp/cursor/
 /ro/subgraphs/querying/best-practices/
 /ro/subgraphs/querying/distributed-systems/
 /ro/subgraphs/querying/from-an-application/
@@ -3375,10 +3465,6 @@
 /ro/substreams/introduction/
 /ro/substreams/publishing/
 /ro/substreams/quick-start/
-/ro/substreams/sps/faq/
-/ro/substreams/sps/introduction/
-/ro/substreams/sps/triggers/
-/ro/substreams/sps/tutorial/
 /ro/supported-networks/
 /ro/token-api/evm/get-balances-evm-by-address/
 /ro/token-api/evm/get-historical-balances-evm-by-address/
@@ -3396,16 +3482,29 @@
 /ro/token-api/evm/get-tokens-evm-by-contract/
 /ro/token-api/evm/get-transfers-evm/
 /ro/token-api/faq/
-/ro/token-api/mcp/claude/
-/ro/token-api/mcp/cline/
-/ro/token-api/mcp/cursor/
 /ro/token-api/monitoring/get-health/
 /ro/token-api/monitoring/get-networks/
 /ro/token-api/monitoring/get-version/
 /ro/token-api/quick-start/
+/ro/token-api/svm/get-balances-svm/
+/ro/token-api/svm/get-swaps-svm/
+/ro/token-api/svm/get-transfers-svm/
 /ru/
 /ru/404/
 /ru/about/
+/ru/ai-suite/ai-introduction/
+/ru/ai-suite/graph-assistant/faq/
+/ru/ai-suite/graph-assistant/how-to-guide/
+/ru/ai-suite/graph-assistant/introduction/
+/ru/ai-suite/graph-assistant/quick-start/
+/ru/ai-suite/subgraph-mcp/claude/
+/ru/ai-suite/subgraph-mcp/cline/
+/ru/ai-suite/subgraph-mcp/cursor/
+/ru/ai-suite/subgraph-mcp/introduction/
+/ru/ai-suite/token-api-mcp/claude/
+/ru/ai-suite/token-api-mcp/cline/
+/ru/ai-suite/token-api-mcp/cursor/
+/ru/ai-suite/token-api-mcp/introduction/
 /ru/archived/arbitrum/arbitrum-faq/
 /ru/archived/arbitrum/l2-transfer-tools-faq/
 /ru/archived/arbitrum/l2-transfer-tools-guide/
@@ -3420,7 +3519,6 @@
 /ru/indexing/tooling/graph-node/
 /ru/indexing/tooling/graphcast/
 /ru/resources/benefits/
-/ru/resources/claude-mcp/
 /ru/resources/glossary/
 /ru/resources/migration-guides/assemblyscript-migration-guide/
 /ru/resources/migration-guides/graphql-validations-migration-guide/
@@ -3468,9 +3566,6 @@
 /ru/subgraphs/guides/subgraph-debug-forking/
 /ru/subgraphs/guides/subgraph-uncrashable/
 /ru/subgraphs/guides/transfer-to-the-graph/
-/ru/subgraphs/mcp/claude/
-/ru/subgraphs/mcp/cline/
-/ru/subgraphs/mcp/cursor/
 /ru/subgraphs/querying/best-practices/
 /ru/subgraphs/querying/distributed-systems/
 /ru/subgraphs/querying/from-an-application/
@@ -3491,10 +3586,6 @@
 /ru/substreams/introduction/
 /ru/substreams/publishing/
 /ru/substreams/quick-start/
-/ru/substreams/sps/faq/
-/ru/substreams/sps/introduction/
-/ru/substreams/sps/triggers/
-/ru/substreams/sps/tutorial/
 /ru/supported-networks/
 /ru/supported-networks/abstract-testnet/
 /ru/supported-networks/abstract/
@@ -3558,6 +3649,7 @@
 /ru/supported-networks/holesky/
 /ru/supported-networks/hoodi-cl/
 /ru/supported-networks/hoodi/
+/ru/supported-networks/injective-evm-testnet/
 /ru/supported-networks/injective-mainnet/
 /ru/supported-networks/injective-testnet/
 /ru/supported-networks/ink-sepolia/
@@ -3664,16 +3756,29 @@
 /ru/token-api/evm/get-tokens-evm-by-contract/
 /ru/token-api/evm/get-transfers-evm/
 /ru/token-api/faq/
-/ru/token-api/mcp/claude/
-/ru/token-api/mcp/cline/
-/ru/token-api/mcp/cursor/
 /ru/token-api/monitoring/get-health/
 /ru/token-api/monitoring/get-networks/
 /ru/token-api/monitoring/get-version/
 /ru/token-api/quick-start/
+/ru/token-api/svm/get-balances-svm/
+/ru/token-api/svm/get-swaps-svm/
+/ru/token-api/svm/get-transfers-svm/
 /sv/
 /sv/404/
 /sv/about/
+/sv/ai-suite/ai-introduction/
+/sv/ai-suite/graph-assistant/faq/
+/sv/ai-suite/graph-assistant/how-to-guide/
+/sv/ai-suite/graph-assistant/introduction/
+/sv/ai-suite/graph-assistant/quick-start/
+/sv/ai-suite/subgraph-mcp/claude/
+/sv/ai-suite/subgraph-mcp/cline/
+/sv/ai-suite/subgraph-mcp/cursor/
+/sv/ai-suite/subgraph-mcp/introduction/
+/sv/ai-suite/token-api-mcp/claude/
+/sv/ai-suite/token-api-mcp/cline/
+/sv/ai-suite/token-api-mcp/cursor/
+/sv/ai-suite/token-api-mcp/introduction/
 /sv/archived/arbitrum/arbitrum-faq/
 /sv/archived/arbitrum/l2-transfer-tools-faq/
 /sv/archived/arbitrum/l2-transfer-tools-guide/
@@ -3688,7 +3793,6 @@
 /sv/indexing/tooling/graph-node/
 /sv/indexing/tooling/graphcast/
 /sv/resources/benefits/
-/sv/resources/claude-mcp/
 /sv/resources/glossary/
 /sv/resources/migration-guides/assemblyscript-migration-guide/
 /sv/resources/migration-guides/graphql-validations-migration-guide/
@@ -3736,9 +3840,6 @@
 /sv/subgraphs/guides/subgraph-debug-forking/
 /sv/subgraphs/guides/subgraph-uncrashable/
 /sv/subgraphs/guides/transfer-to-the-graph/
-/sv/subgraphs/mcp/claude/
-/sv/subgraphs/mcp/cline/
-/sv/subgraphs/mcp/cursor/
 /sv/subgraphs/querying/best-practices/
 /sv/subgraphs/querying/distributed-systems/
 /sv/subgraphs/querying/from-an-application/
@@ -3759,10 +3860,6 @@
 /sv/substreams/introduction/
 /sv/substreams/publishing/
 /sv/substreams/quick-start/
-/sv/substreams/sps/faq/
-/sv/substreams/sps/introduction/
-/sv/substreams/sps/triggers/
-/sv/substreams/sps/tutorial/
 /sv/supported-networks/
 /sv/supported-networks/abstract-testnet/
 /sv/supported-networks/abstract/
@@ -3826,6 +3923,7 @@
 /sv/supported-networks/holesky/
 /sv/supported-networks/hoodi-cl/
 /sv/supported-networks/hoodi/
+/sv/supported-networks/injective-evm-testnet/
 /sv/supported-networks/injective-mainnet/
 /sv/supported-networks/injective-testnet/
 /sv/supported-networks/ink-sepolia/
@@ -3932,16 +4030,29 @@
 /sv/token-api/evm/get-tokens-evm-by-contract/
 /sv/token-api/evm/get-transfers-evm/
 /sv/token-api/faq/
-/sv/token-api/mcp/claude/
-/sv/token-api/mcp/cline/
-/sv/token-api/mcp/cursor/
 /sv/token-api/monitoring/get-health/
 /sv/token-api/monitoring/get-networks/
 /sv/token-api/monitoring/get-version/
 /sv/token-api/quick-start/
+/sv/token-api/svm/get-balances-svm/
+/sv/token-api/svm/get-swaps-svm/
+/sv/token-api/svm/get-transfers-svm/
 /tr/
 /tr/404/
 /tr/about/
+/tr/ai-suite/ai-introduction/
+/tr/ai-suite/graph-assistant/faq/
+/tr/ai-suite/graph-assistant/how-to-guide/
+/tr/ai-suite/graph-assistant/introduction/
+/tr/ai-suite/graph-assistant/quick-start/
+/tr/ai-suite/subgraph-mcp/claude/
+/tr/ai-suite/subgraph-mcp/cline/
+/tr/ai-suite/subgraph-mcp/cursor/
+/tr/ai-suite/subgraph-mcp/introduction/
+/tr/ai-suite/token-api-mcp/claude/
+/tr/ai-suite/token-api-mcp/cline/
+/tr/ai-suite/token-api-mcp/cursor/
+/tr/ai-suite/token-api-mcp/introduction/
 /tr/archived/arbitrum/arbitrum-faq/
 /tr/archived/arbitrum/l2-transfer-tools-faq/
 /tr/archived/arbitrum/l2-transfer-tools-guide/
@@ -3956,7 +4067,6 @@
 /tr/indexing/tooling/graph-node/
 /tr/indexing/tooling/graphcast/
 /tr/resources/benefits/
-/tr/resources/claude-mcp/
 /tr/resources/glossary/
 /tr/resources/migration-guides/assemblyscript-migration-guide/
 /tr/resources/migration-guides/graphql-validations-migration-guide/
@@ -4004,9 +4114,6 @@
 /tr/subgraphs/guides/subgraph-debug-forking/
 /tr/subgraphs/guides/subgraph-uncrashable/
 /tr/subgraphs/guides/transfer-to-the-graph/
-/tr/subgraphs/mcp/claude/
-/tr/subgraphs/mcp/cline/
-/tr/subgraphs/mcp/cursor/
 /tr/subgraphs/querying/best-practices/
 /tr/subgraphs/querying/distributed-systems/
 /tr/subgraphs/querying/from-an-application/
@@ -4027,10 +4134,6 @@
 /tr/substreams/introduction/
 /tr/substreams/publishing/
 /tr/substreams/quick-start/
-/tr/substreams/sps/faq/
-/tr/substreams/sps/introduction/
-/tr/substreams/sps/triggers/
-/tr/substreams/sps/tutorial/
 /tr/supported-networks/
 /tr/supported-networks/abstract-testnet/
 /tr/supported-networks/abstract/
@@ -4094,6 +4197,7 @@
 /tr/supported-networks/holesky/
 /tr/supported-networks/hoodi-cl/
 /tr/supported-networks/hoodi/
+/tr/supported-networks/injective-evm-testnet/
 /tr/supported-networks/injective-mainnet/
 /tr/supported-networks/injective-testnet/
 /tr/supported-networks/ink-sepolia/
@@ -4200,14 +4304,27 @@
 /tr/token-api/evm/get-tokens-evm-by-contract/
 /tr/token-api/evm/get-transfers-evm/
 /tr/token-api/faq/
-/tr/token-api/mcp/claude/
-/tr/token-api/mcp/cline/
-/tr/token-api/mcp/cursor/
 /tr/token-api/monitoring/get-health/
 /tr/token-api/monitoring/get-networks/
 /tr/token-api/monitoring/get-version/
 /tr/token-api/quick-start/
+/tr/token-api/svm/get-balances-svm/
+/tr/token-api/svm/get-swaps-svm/
+/tr/token-api/svm/get-transfers-svm/
 /uk/about/
+/uk/ai-suite/ai-introduction/
+/uk/ai-suite/graph-assistant/faq/
+/uk/ai-suite/graph-assistant/how-to-guide/
+/uk/ai-suite/graph-assistant/introduction/
+/uk/ai-suite/graph-assistant/quick-start/
+/uk/ai-suite/subgraph-mcp/claude/
+/uk/ai-suite/subgraph-mcp/cline/
+/uk/ai-suite/subgraph-mcp/cursor/
+/uk/ai-suite/subgraph-mcp/introduction/
+/uk/ai-suite/token-api-mcp/claude/
+/uk/ai-suite/token-api-mcp/cline/
+/uk/ai-suite/token-api-mcp/cursor/
+/uk/ai-suite/token-api-mcp/introduction/
 /uk/archived/arbitrum/arbitrum-faq/
 /uk/archived/arbitrum/l2-transfer-tools-faq/
 /uk/archived/arbitrum/l2-transfer-tools-guide/
@@ -4222,7 +4339,6 @@
 /uk/indexing/tooling/graph-node/
 /uk/indexing/tooling/graphcast/
 /uk/resources/benefits/
-/uk/resources/claude-mcp/
 /uk/resources/glossary/
 /uk/resources/migration-guides/assemblyscript-migration-guide/
 /uk/resources/migration-guides/graphql-validations-migration-guide/
@@ -4270,9 +4386,6 @@
 /uk/subgraphs/guides/subgraph-debug-forking/
 /uk/subgraphs/guides/subgraph-uncrashable/
 /uk/subgraphs/guides/transfer-to-the-graph/
-/uk/subgraphs/mcp/claude/
-/uk/subgraphs/mcp/cline/
-/uk/subgraphs/mcp/cursor/
 /uk/subgraphs/querying/best-practices/
 /uk/subgraphs/querying/distributed-systems/
 /uk/subgraphs/querying/from-an-application/
@@ -4293,10 +4406,6 @@
 /uk/substreams/introduction/
 /uk/substreams/publishing/
 /uk/substreams/quick-start/
-/uk/substreams/sps/faq/
-/uk/substreams/sps/introduction/
-/uk/substreams/sps/triggers/
-/uk/substreams/sps/tutorial/
 /uk/supported-networks/
 /uk/token-api/evm/get-balances-evm-by-address/
 /uk/token-api/evm/get-historical-balances-evm-by-address/
@@ -4314,16 +4423,29 @@
 /uk/token-api/evm/get-tokens-evm-by-contract/
 /uk/token-api/evm/get-transfers-evm/
 /uk/token-api/faq/
-/uk/token-api/mcp/claude/
-/uk/token-api/mcp/cline/
-/uk/token-api/mcp/cursor/
 /uk/token-api/monitoring/get-health/
 /uk/token-api/monitoring/get-networks/
 /uk/token-api/monitoring/get-version/
 /uk/token-api/quick-start/
+/uk/token-api/svm/get-balances-svm/
+/uk/token-api/svm/get-swaps-svm/
+/uk/token-api/svm/get-transfers-svm/
 /ur/
 /ur/404/
 /ur/about/
+/ur/ai-suite/ai-introduction/
+/ur/ai-suite/graph-assistant/faq/
+/ur/ai-suite/graph-assistant/how-to-guide/
+/ur/ai-suite/graph-assistant/introduction/
+/ur/ai-suite/graph-assistant/quick-start/
+/ur/ai-suite/subgraph-mcp/claude/
+/ur/ai-suite/subgraph-mcp/cline/
+/ur/ai-suite/subgraph-mcp/cursor/
+/ur/ai-suite/subgraph-mcp/introduction/
+/ur/ai-suite/token-api-mcp/claude/
+/ur/ai-suite/token-api-mcp/cline/
+/ur/ai-suite/token-api-mcp/cursor/
+/ur/ai-suite/token-api-mcp/introduction/
 /ur/archived/arbitrum/arbitrum-faq/
 /ur/archived/arbitrum/l2-transfer-tools-faq/
 /ur/archived/arbitrum/l2-transfer-tools-guide/
@@ -4338,7 +4460,6 @@
 /ur/indexing/tooling/graph-node/
 /ur/indexing/tooling/graphcast/
 /ur/resources/benefits/
-/ur/resources/claude-mcp/
 /ur/resources/glossary/
 /ur/resources/migration-guides/assemblyscript-migration-guide/
 /ur/resources/migration-guides/graphql-validations-migration-guide/
@@ -4386,9 +4507,6 @@
 /ur/subgraphs/guides/subgraph-debug-forking/
 /ur/subgraphs/guides/subgraph-uncrashable/
 /ur/subgraphs/guides/transfer-to-the-graph/
-/ur/subgraphs/mcp/claude/
-/ur/subgraphs/mcp/cline/
-/ur/subgraphs/mcp/cursor/
 /ur/subgraphs/querying/best-practices/
 /ur/subgraphs/querying/distributed-systems/
 /ur/subgraphs/querying/from-an-application/
@@ -4409,10 +4527,6 @@
 /ur/substreams/introduction/
 /ur/substreams/publishing/
 /ur/substreams/quick-start/
-/ur/substreams/sps/faq/
-/ur/substreams/sps/introduction/
-/ur/substreams/sps/triggers/
-/ur/substreams/sps/tutorial/
 /ur/supported-networks/
 /ur/supported-networks/abstract-testnet/
 /ur/supported-networks/abstract/
@@ -4476,6 +4590,7 @@
 /ur/supported-networks/holesky/
 /ur/supported-networks/hoodi-cl/
 /ur/supported-networks/hoodi/
+/ur/supported-networks/injective-evm-testnet/
 /ur/supported-networks/injective-mainnet/
 /ur/supported-networks/injective-testnet/
 /ur/supported-networks/ink-sepolia/
@@ -4582,14 +4697,27 @@
 /ur/token-api/evm/get-tokens-evm-by-contract/
 /ur/token-api/evm/get-transfers-evm/
 /ur/token-api/faq/
-/ur/token-api/mcp/claude/
-/ur/token-api/mcp/cline/
-/ur/token-api/mcp/cursor/
 /ur/token-api/monitoring/get-health/
 /ur/token-api/monitoring/get-networks/
 /ur/token-api/monitoring/get-version/
 /ur/token-api/quick-start/
+/ur/token-api/svm/get-balances-svm/
+/ur/token-api/svm/get-swaps-svm/
+/ur/token-api/svm/get-transfers-svm/
 /vi/about/
+/vi/ai-suite/ai-introduction/
+/vi/ai-suite/graph-assistant/faq/
+/vi/ai-suite/graph-assistant/how-to-guide/
+/vi/ai-suite/graph-assistant/introduction/
+/vi/ai-suite/graph-assistant/quick-start/
+/vi/ai-suite/subgraph-mcp/claude/
+/vi/ai-suite/subgraph-mcp/cline/
+/vi/ai-suite/subgraph-mcp/cursor/
+/vi/ai-suite/subgraph-mcp/introduction/
+/vi/ai-suite/token-api-mcp/claude/
+/vi/ai-suite/token-api-mcp/cline/
+/vi/ai-suite/token-api-mcp/cursor/
+/vi/ai-suite/token-api-mcp/introduction/
 /vi/archived/arbitrum/arbitrum-faq/
 /vi/archived/arbitrum/l2-transfer-tools-faq/
 /vi/archived/arbitrum/l2-transfer-tools-guide/
@@ -4604,7 +4732,6 @@
 /vi/indexing/tooling/graph-node/
 /vi/indexing/tooling/graphcast/
 /vi/resources/benefits/
-/vi/resources/claude-mcp/
 /vi/resources/glossary/
 /vi/resources/migration-guides/assemblyscript-migration-guide/
 /vi/resources/migration-guides/graphql-validations-migration-guide/
@@ -4652,9 +4779,6 @@
 /vi/subgraphs/guides/subgraph-debug-forking/
 /vi/subgraphs/guides/subgraph-uncrashable/
 /vi/subgraphs/guides/transfer-to-the-graph/
-/vi/subgraphs/mcp/claude/
-/vi/subgraphs/mcp/cline/
-/vi/subgraphs/mcp/cursor/
 /vi/subgraphs/querying/best-practices/
 /vi/subgraphs/querying/distributed-systems/
 /vi/subgraphs/querying/from-an-application/
@@ -4675,10 +4799,6 @@
 /vi/substreams/introduction/
 /vi/substreams/publishing/
 /vi/substreams/quick-start/
-/vi/substreams/sps/faq/
-/vi/substreams/sps/introduction/
-/vi/substreams/sps/triggers/
-/vi/substreams/sps/tutorial/
 /vi/supported-networks/
 /vi/token-api/evm/get-balances-evm-by-address/
 /vi/token-api/evm/get-historical-balances-evm-by-address/
@@ -4696,16 +4816,29 @@
 /vi/token-api/evm/get-tokens-evm-by-contract/
 /vi/token-api/evm/get-transfers-evm/
 /vi/token-api/faq/
-/vi/token-api/mcp/claude/
-/vi/token-api/mcp/cline/
-/vi/token-api/mcp/cursor/
 /vi/token-api/monitoring/get-health/
 /vi/token-api/monitoring/get-networks/
 /vi/token-api/monitoring/get-version/
 /vi/token-api/quick-start/
+/vi/token-api/svm/get-balances-svm/
+/vi/token-api/svm/get-swaps-svm/
+/vi/token-api/svm/get-transfers-svm/
 /zh/
 /zh/404/
 /zh/about/
+/zh/ai-suite/ai-introduction/
+/zh/ai-suite/graph-assistant/faq/
+/zh/ai-suite/graph-assistant/how-to-guide/
+/zh/ai-suite/graph-assistant/introduction/
+/zh/ai-suite/graph-assistant/quick-start/
+/zh/ai-suite/subgraph-mcp/claude/
+/zh/ai-suite/subgraph-mcp/cline/
+/zh/ai-suite/subgraph-mcp/cursor/
+/zh/ai-suite/subgraph-mcp/introduction/
+/zh/ai-suite/token-api-mcp/claude/
+/zh/ai-suite/token-api-mcp/cline/
+/zh/ai-suite/token-api-mcp/cursor/
+/zh/ai-suite/token-api-mcp/introduction/
 /zh/archived/arbitrum/arbitrum-faq/
 /zh/archived/arbitrum/l2-transfer-tools-faq/
 /zh/archived/arbitrum/l2-transfer-tools-guide/
@@ -4720,7 +4853,6 @@
 /zh/indexing/tooling/graph-node/
 /zh/indexing/tooling/graphcast/
 /zh/resources/benefits/
-/zh/resources/claude-mcp/
 /zh/resources/glossary/
 /zh/resources/migration-guides/assemblyscript-migration-guide/
 /zh/resources/migration-guides/graphql-validations-migration-guide/
@@ -4768,9 +4900,6 @@
 /zh/subgraphs/guides/subgraph-debug-forking/
 /zh/subgraphs/guides/subgraph-uncrashable/
 /zh/subgraphs/guides/transfer-to-the-graph/
-/zh/subgraphs/mcp/claude/
-/zh/subgraphs/mcp/cline/
-/zh/subgraphs/mcp/cursor/
 /zh/subgraphs/querying/best-practices/
 /zh/subgraphs/querying/distributed-systems/
 /zh/subgraphs/querying/from-an-application/
@@ -4791,10 +4920,6 @@
 /zh/substreams/introduction/
 /zh/substreams/publishing/
 /zh/substreams/quick-start/
-/zh/substreams/sps/faq/
-/zh/substreams/sps/introduction/
-/zh/substreams/sps/triggers/
-/zh/substreams/sps/tutorial/
 /zh/supported-networks/
 /zh/supported-networks/abstract-testnet/
 /zh/supported-networks/abstract/
@@ -4814,8 +4939,6 @@
 /zh/supported-networks/berachain/
 /zh/supported-networks/blast-mainnet/
 /zh/supported-networks/blast-testnet/
-/zh/supported-networks/bnb-op/
-/zh/supported-networks/bnb-svm/
 /zh/supported-networks/boba-bnb/
 /zh/supported-networks/boba-testnet/
 /zh/supported-networks/boba/
@@ -4841,113 +4964,18 @@
 /zh/supported-networks/fantom/
 /zh/supported-networks/fraxtal/
 /zh/supported-networks/fuji/
-/zh/supported-networks/fuse-testnet/
 /zh/supported-networks/fuse/
-/zh/supported-networks/gnosis-chiado-cl/
-/zh/supported-networks/gnosis-chiado/
-/zh/supported-networks/gnosis-cl/
-/zh/supported-networks/gnosis/
-/zh/supported-networks/gravity-mainnet/
-/zh/supported-networks/gravity-testnet/
-/zh/supported-networks/harmony/
-/zh/supported-networks/hashkeychain-sepolia/
-/zh/supported-networks/hashkeychain/
-/zh/supported-networks/hemi-sepolia/
-/zh/supported-networks/hemi/
 /zh/supported-networks/holesky-cl/
 /zh/supported-networks/holesky/
 /zh/supported-networks/hoodi-cl/
 /zh/supported-networks/hoodi/
-/zh/supported-networks/injective-mainnet/
-/zh/supported-networks/injective-testnet/
-/zh/supported-networks/ink-sepolia/
-/zh/supported-networks/ink/
-/zh/supported-networks/iotex-testnet/
-/zh/supported-networks/iotex/
-/zh/supported-networks/joc-testnet/
-/zh/supported-networks/joc/
 /zh/supported-networks/jungle4-evm/
 /zh/supported-networks/jungle4/
-/zh/supported-networks/kaia-testnet/
-/zh/supported-networks/kaia/
-/zh/supported-networks/katana-tatara/
-/zh/supported-networks/katana/
 /zh/supported-networks/kylin/
-/zh/supported-networks/lens-testnet/
-/zh/supported-networks/lens/
-/zh/supported-networks/linea-sepolia/
-/zh/supported-networks/linea/
-/zh/supported-networks/litecoin/
-/zh/supported-networks/lumia/
 /zh/supported-networks/mainnet-cl/
 /zh/supported-networks/mainnet/
-/zh/supported-networks/manta/
-/zh/supported-networks/mantra-mainnet/
-/zh/supported-networks/mantra-testnet/
-/zh/supported-networks/matic/
-/zh/supported-networks/mbase/
-/zh/supported-networks/megaeth-testnet/
-/zh/supported-networks/metis/
-/zh/supported-networks/mint-sepolia/
-/zh/supported-networks/mint/
-/zh/supported-networks/mode-mainnet/
-/zh/supported-networks/mode-sepolia/
-/zh/supported-networks/monad-testnet/
-/zh/supported-networks/moonbeam/
-/zh/supported-networks/moonriver/
-/zh/supported-networks/near-mainnet/
-/zh/supported-networks/near-testnet/
-/zh/supported-networks/neox-testnet/
-/zh/supported-networks/neox/
-/zh/supported-networks/optimism-sepolia/
-/zh/supported-networks/optimism/
-/zh/supported-networks/ozean-poseidon/
-/zh/supported-networks/peaq/
-/zh/supported-networks/polygon-amoy/
-/zh/supported-networks/polygon-zkevm-cardona/
-/zh/supported-networks/polygon-zkevm/
-/zh/supported-networks/ronin/
-/zh/supported-networks/rootstock-testnet/
-/zh/supported-networks/rootstock/
-/zh/supported-networks/scroll-sepolia/
-/zh/supported-networks/scroll/
-/zh/supported-networks/sei-atlantic/
-/zh/supported-networks/sei-mainnet/
 /zh/supported-networks/sepolia-cl/
 /zh/supported-networks/sepolia/
-/zh/supported-networks/solana-accounts/
-/zh/supported-networks/solana-devnet/
-/zh/supported-networks/solana-mainnet-beta/
-/zh/supported-networks/soneium-testnet/
-/zh/supported-networks/soneium/
-/zh/supported-networks/sonic/
-/zh/supported-networks/starknet-mainnet/
-/zh/supported-networks/starknet-testnet/
-/zh/supported-networks/status-sepolia/
-/zh/supported-networks/stellar-testnet/
-/zh/supported-networks/stellar/
-/zh/supported-networks/swellchain-sepolia/
-/zh/supported-networks/swellchain/
-/zh/supported-networks/telos-testnet/
-/zh/supported-networks/telos/
-/zh/supported-networks/tron-evm/
-/zh/supported-networks/tron/
-/zh/supported-networks/ultra/
-/zh/supported-networks/unichain-testnet/
-/zh/supported-networks/unichain/
-/zh/supported-networks/vana-moksha/
-/zh/supported-networks/vana/
-/zh/supported-networks/viction/
-/zh/supported-networks/wax-testnet/
-/zh/supported-networks/wax/
-/zh/supported-networks/xai/
-/zh/supported-networks/xlayer-mainnet/
-/zh/supported-networks/xlayer-sepolia/
-/zh/supported-networks/zetachain/
-/zh/supported-networks/zilliqa-protomainnet/
-/zh/supported-networks/zksync-era-sepolia/
-/zh/supported-networks/zksync-era/
-/zh/supported-networks/zora/
 /zh/token-api/evm/get-balances-evm-by-address/
 /zh/token-api/evm/get-historical-balances-evm-by-address/
 /zh/token-api/evm/get-holders-evm-by-contract/
@@ -4964,10 +4992,10 @@
 /zh/token-api/evm/get-tokens-evm-by-contract/
 /zh/token-api/evm/get-transfers-evm/
 /zh/token-api/faq/
-/zh/token-api/mcp/claude/
-/zh/token-api/mcp/cline/
-/zh/token-api/mcp/cursor/
 /zh/token-api/monitoring/get-health/
 /zh/token-api/monitoring/get-networks/
 /zh/token-api/monitoring/get-version/
 /zh/token-api/quick-start/
+/zh/token-api/svm/get-balances-svm/
+/zh/token-api/svm/get-swaps-svm/
+/zh/token-api/svm/get-transfers-svm/
diff --git a/website/src/openApi/index.ts b/website/src/openApi/index.ts
index a8390f7a3aed..313aa37d7817 100644
--- a/website/src/openApi/index.ts
+++ b/website/src/openApi/index.ts
@@ -14,6 +14,7 @@ export const APIS = {
     document: tokenApi as OpenAPIV3_1.Document,
     sections: {
       EVM: '/token-api/evm',
+      SVM: '/token-api/svm',
       Monitoring: '/token-api/monitoring',
     },
   },
diff --git a/website/src/openApi/tokenApi.json b/website/src/openApi/tokenApi.json
index 7d8e4acab7bf..6a2d8a11ecab 100644
--- a/website/src/openApi/tokenApi.json
+++ b/website/src/openApi/tokenApi.json
@@ -3,7 +3,7 @@
   "info": {
     "title": "Token API (Beta)",
     "description": "Power your apps & AI agents with real-time token data.",
-    "version": "1.6.2+a82a86b (2025-06-05)"
+    "version": "2.2.6+153a17c (2025-07-10)"
   },
   "servers": [
     {
@@ -87,7 +87,7 @@
                               "optimism",
                               "unichain"
                             ],
-                            "description": "The Graph Network ID https://thegraph.com/networks",
+                            "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
                             "example": "mainnet"
                           }
                         },
@@ -167,7 +167,7 @@
                 "optimism",
                 "unichain"
               ],
-              "description": "The Graph Network ID https://thegraph.com/networks",
+              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
               "example": "mainnet"
             }
           },
@@ -270,7 +270,7 @@
                               "optimism",
                               "unichain"
                             ],
-                            "description": "The Graph Network ID https://thegraph.com/networks",
+                            "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
                             "example": "mainnet"
                           }
                         },
@@ -359,7 +359,7 @@
                 "optimism",
                 "unichain"
               ],
-              "description": "The Graph Network ID https://thegraph.com/networks",
+              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
               "example": "mainnet"
             }
           }
@@ -452,7 +452,7 @@
                               "optimism",
                               "unichain"
                             ],
-                            "description": "The Graph Network ID https://thegraph.com/networks",
+                            "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
                             "example": "mainnet"
                           }
                         },
@@ -567,7 +567,7 @@
                 "optimism",
                 "unichain"
               ],
-              "description": "The Graph Network ID https://thegraph.com/networks",
+              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
               "example": "mainnet"
             }
           }
@@ -724,7 +724,7 @@
                 "optimism",
                 "unichain"
               ],
-              "description": "The Graph Network ID https://thegraph.com/networks",
+              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
               "example": "mainnet"
             },
             "required": false
@@ -897,7 +897,7 @@
                               "optimism",
                               "unichain"
                             ],
-                            "description": "The Graph Network ID https://thegraph.com/networks",
+                            "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
                             "example": "mainnet"
                           }
                         },
@@ -977,7 +977,7 @@
                 "optimism",
                 "unichain"
               ],
-              "description": "The Graph Network ID https://thegraph.com/networks",
+              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
               "example": "mainnet"
             }
           }
@@ -1117,7 +1117,7 @@
                 "optimism",
                 "unichain"
               ],
-              "description": "The Graph Network ID https://thegraph.com/networks",
+              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
               "example": "mainnet"
             },
             "required": false
@@ -1297,7 +1297,7 @@
                               "optimism",
                               "unichain"
                             ],
-                            "description": "The Graph Network ID https://thegraph.com/networks",
+                            "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
                             "example": "mainnet"
                           },
                           "symbol": {
@@ -1394,7 +1394,7 @@
                 "optimism",
                 "unichain"
               ],
-              "description": "The Graph Network ID https://thegraph.com/networks",
+              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
               "example": "mainnet"
             }
           },
@@ -1436,6 +1436,192 @@
         ]
       }
     },
+    "/balances/svm": {
+      "get": {
+        "responses": {
+          "200": {
+            "description": "Successful Response",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "data": {
+                      "type": "array",
+                      "items": {
+                        "type": "object",
+                        "properties": {
+                          "block_num": {
+                            "type": "number"
+                          },
+                          "datetime": {
+                            "type": "string"
+                          },
+                          "timestamp": {
+                            "type": "number"
+                          },
+                          "program_id": {
+                            "type": "string",
+                            "description": "Filter by address"
+                          },
+                          "token_account": {
+                            "type": "string",
+                            "description": "Filter by address"
+                          },
+                          "mint": {
+                            "type": "string",
+                            "description": "Filter by address"
+                          },
+                          "amount": {
+                            "type": "string"
+                          },
+                          "value": {
+                            "type": "number"
+                          },
+                          "decimals": {
+                            "type": "number"
+                          },
+                          "network_id": {
+                            "type": "string",
+                            "enum": [
+                              "solana"
+                            ],
+                            "description": "The Graph Network ID for SVM networks https://thegraph.com/networks",
+                            "example": "solana"
+                          }
+                        },
+                        "required": [
+                          "block_num",
+                          "datetime",
+                          "timestamp",
+                          "program_id",
+                          "token_account",
+                          "mint",
+                          "amount",
+                          "value",
+                          "decimals",
+                          "network_id"
+                        ]
+                      }
+                    },
+                    "statistics": {
+                      "type": "object",
+                      "properties": {
+                        "elapsed": {
+                          "type": "number"
+                        },
+                        "rows_read": {
+                          "type": "number"
+                        },
+                        "bytes_read": {
+                          "type": "number"
+                        }
+                      }
+                    }
+                  },
+                  "required": [
+                    "data"
+                  ]
+                },
+                "example": {
+                  "data": [
+                    {
+                      "block_num": 352305913,
+                      "datetime": "2025-07-10 05:14:43",
+                      "timestamp": 1752124483,
+                      "program_id": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
+                      "token_account": "4ct7br2vTPzfdmY3S5HLtTxcGSBfn6pnw98hsS6v359A",
+                      "mint": "So11111111111111111111111111111111111111112",
+                      "amount": "30697740781078",
+                      "value": 30697.740781078,
+                      "decimals": 9,
+                      "network_id": "solana"
+                    }
+                  ]
+                }
+              }
+            }
+          }
+        },
+        "operationId": "getBalancesSvm",
+        "tags": [
+          "SVM"
+        ],
+        "parameters": [
+          {
+            "in": "query",
+            "name": "token_account",
+            "schema": {
+              "type": "string",
+              "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
+              "description": "Filter by token account address"
+            }
+          },
+          {
+            "in": "query",
+            "name": "mint",
+            "schema": {
+              "type": "string",
+              "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
+              "description": "Filter by mint address",
+              "example": "So11111111111111111111111111111111111111112"
+            }
+          },
+          {
+            "in": "query",
+            "name": "program_id",
+            "schema": {
+              "type": "string",
+              "enum": [
+                "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb",
+                "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
+              ],
+              "description": "Filter by program ID"
+            }
+          },
+          {
+            "in": "query",
+            "name": "network_id",
+            "schema": {
+              "type": "string",
+              "enum": [
+                "solana"
+              ],
+              "description": "The Graph Network ID for SVM networks https://thegraph.com/networks",
+              "example": "solana"
+            }
+          },
+          {
+            "in": "query",
+            "name": "limit",
+            "schema": {
+              "type": "integer",
+              "minimum": 1,
+              "maximum": 1000,
+              "default": 10,
+              "description": "The maximum number of items returned in a single request."
+            }
+          },
+          {
+            "in": "query",
+            "name": "page",
+            "schema": {
+              "type": "integer",
+              "minimum": 1,
+              "default": 1,
+              "description": "The page number of the results to return."
+            }
+          }
+        ],
+        "summary": "Balances",
+        "description": "Provides Solana SPL tokens balances by token account address.",
+        "security": [
+          {
+            "bearerAuth": []
+          }
+        ]
+      }
+    },
     "/transfers/evm": {
       "get": {
         "responses": {
@@ -1493,7 +1679,7 @@
                               "optimism",
                               "unichain"
                             ],
-                            "description": "The Graph Network ID https://thegraph.com/networks",
+                            "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
                             "example": "mainnet"
                           },
                           "symbol": {
@@ -1576,7 +1762,7 @@
                 "optimism",
                 "unichain"
               ],
-              "description": "The Graph Network ID https://thegraph.com/networks",
+              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
               "example": "mainnet"
             }
           },
@@ -1691,7 +1877,7 @@
         ]
       }
     },
-    "/tokens/evm/{contract}": {
+    "/transfers/svm": {
       "get": {
         "responses": {
           "200": {
@@ -1712,69 +1898,67 @@
                           "datetime": {
                             "type": "string"
                           },
-                          "address": {
-                            "type": "string",
-                            "description": "Filter by address"
+                          "timestamp": {
+                            "type": "number"
                           },
-                          "circulating_supply": {
+                          "signature": {
                             "type": "string"
                           },
-                          "holders": {
-                            "type": "number"
+                          "program_id": {
+                            "type": "string",
+                            "description": "Filter by address"
                           },
-                          "network_id": {
+                          "mint": {
                             "type": "string",
-                            "enum": [
-                              "arbitrum-one",
-                              "avalanche",
-                              "base",
-                              "bsc",
-                              "mainnet",
-                              "matic",
-                              "optimism",
-                              "unichain"
-                            ],
-                            "description": "The Graph Network ID https://thegraph.com/networks",
-                            "example": "mainnet"
+                            "description": "Filter by address"
                           },
-                          "icon": {
-                            "type": "object",
-                            "properties": {
-                              "web3icon": {
-                                "type": "string"
-                              }
-                            },
-                            "required": [
-                              "web3icon"
-                            ]
+                          "authority": {
+                            "type": "string",
+                            "description": "Filter by address"
                           },
-                          "symbol": {
-                            "type": "string"
+                          "source": {
+                            "type": "string",
+                            "description": "Filter by address"
                           },
-                          "name": {
-                            "type": "string"
+                          "destination": {
+                            "type": "string",
+                            "description": "Filter by address"
                           },
-                          "decimals": {
-                            "type": "number"
+                          "amount": {
+                            "type": "string"
                           },
-                          "price_usd": {
+                          "value": {
                             "type": "number"
                           },
-                          "market_cap": {
-                            "type": "number"
+                          "decimals": {
+                            "type": [
+                              "integer",
+                              "null"
+                            ]
                           },
-                          "low_liquidity": {
-                            "type": "boolean"
+                          "network_id": {
+                            "type": "string",
+                            "enum": [
+                              "solana"
+                            ],
+                            "description": "The Graph Network ID for SVM networks https://thegraph.com/networks",
+                            "example": "solana"
                           }
                         },
                         "required": [
                           "block_num",
                           "datetime",
-                          "address",
-                          "circulating_supply",
-                          "holders",
-                          "network_id",
-                          "icon"
+                          "timestamp",
+                          "signature",
+                          "program_id",
+                          "mint",
+                          "authority",
+                          "source",
+                          "destination",
+                          "amount",
+                          "value",
+                          "decimals",
+                          "network_id"
                         ]
                       }
                     },
@@ -1800,18 +1984,19 @@
                 "example": {
                   "data": [
                     {
-                      "block_num": 22589353,
-                      "datetime": "2025-05-29 15:40:11",
-                      "address": "0xc944e90c64b2c07662a292be6244bdf05cda44a7",
-                      "decimals": 18,
-                      "symbol": "GRT",
-                      "name": "Graph Token",
-                      "circulating_supply": "16667753581.233711",
-                      "holders": 139562,
-                      "network_id": "mainnet",
-                      "icon": {
-                        "web3icon": "GRT"
-                      }
+                      "block_num": 352372432,
+                      "datetime": "2025-07-10 12:32:03",
+                      "timestamp": 1752150723,
+                      "signature": "4t7ZD3Fd8i9md6CTF6SEoZ9aPkr1fhRpXXSK2DhrUe5Wcm9VFdJ9Sn4WvbhdQaetLkiq8Xm3r5YgU1ffSJaA6c2e",
+                      "program_id": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
+                      "authority": "J5kWrUKVPrtjwMVQLNgUEC9RY9Ujh8pYTN3nqWUkg1zp",
+                      "mint": "So11111111111111111111111111111111111111112",
+                      "source": "G4sbSww72omqHsC6tYe4syFtzHyBieS6MjbRWmSn1mt5",
+                      "destination": "7ds7shXvLdNzihJXrjuoYYTr8bD5c2zwRxmZrrSZXgmM",
+                      "amount": 333993128,
+                      "decimals": 9,
+                      "value": 0.333993128,
+                      "network_id": "solana"
                     }
                   ]
                 }
@@ -1819,44 +2004,139 @@
             }
           }
         },
-        "operationId": "getTokensEvmByContract",
+        "operationId": "getTransfersSvm",
         "tags": [
-          "EVM"
+          "SVM"
         ],
         "parameters": [
           {
-            "in": "path",
-            "name": "contract",
+            "in": "query",
+            "name": "network_id",
             "schema": {
               "type": "string",
-              "pattern": "^(0[xX])?[0-9a-fA-F]{40}$",
-              "description": "Filter by contract address",
-              "example": "0xc944e90c64b2c07662a292be6244bdf05cda44a7"
-            },
-            "required": true
+              "enum": [
+                "solana"
+              ],
+              "description": "The Graph Network ID for SVM networks https://thegraph.com/networks",
+              "example": "solana"
+            }
           },
           {
             "in": "query",
-            "name": "network_id",
+            "name": "mint",
             "schema": {
               "type": "string",
-              "enum": [
-                "arbitrum-one",
-                "avalanche",
-                "base",
-                "bsc",
-                "mainnet",
-                "matic",
-                "optimism",
-                "unichain"
-              ],
-              "description": "The Graph Network ID https://thegraph.com/networks",
-              "example": "mainnet"
+              "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
+              "description": "Filter by mint address",
+              "example": "So11111111111111111111111111111111111111112"
+            }
+          },
+          {
+            "in": "query",
+            "name": "source",
+            "schema": {
+              "type": "string",
+              "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
+              "description": "Filter by token account address"
+            }
+          },
+          {
+            "in": "query",
+            "name": "destination",
+            "schema": {
+              "type": "string",
+              "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
+              "description": "Filter by token account address"
+            }
+          },
+          {
+            "in": "query",
+            "name": "authority",
+            "schema": {
+              "type": "string",
+              "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
+              "description": "Filter by authority token account address"
+            }
+          },
+          {
+            "in": "query",
+            "name": "program_id",
+            "schema": {
+              "type": "string",
+              "enum": [
+                "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb",
+                "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
+              ],
+              "description": "Filter by program ID"
+            }
+          },
+          {
+            "in": "query",
+            "name": "startTime",
+            "schema": {
+              "type": "number",
+              "minimum": 0,
+              "description": "UNIX timestamp in seconds."
+            }
+          },
+          {
+            "in": "query",
+            "name": "endTime",
+            "schema": {
+              "type": "number",
+              "minimum": 0,
+              "description": "UNIX timestamp in seconds."
+            }
+          },
+          {
+            "in": "query",
+            "name": "orderBy",
+            "schema": {
+              "type": "string",
+              "enum": [
+                "timestamp"
+              ],
+              "default": "timestamp",
+              "description": "The field by which to order the results."
+            }
+          },
+          {
+            "in": "query",
+            "name": "orderDirection",
+            "schema": {
+              "type": "string",
+              "enum": [
+                "asc",
+                "desc"
+              ],
+              "default": "desc",
+              "description": "The order in which to return the results: Ascending (asc) or Descending (desc)."
+            }
+          },
+          {
+            "in": "query",
+            "name": "limit",
+            "schema": {
+              "type": "integer",
+              "minimum": 1,
+              "maximum": 1000,
+              "default": 10,
+              "description": "The maximum number of items returned in a single request."
+            }
+          },
+          {
+            "in": "query",
+            "name": "page",
+            "schema": {
+              "type": "integer",
+              "minimum": 1,
+              "default": 1,
+              "description": "The page number of the results to return."
             }
           }
         ],
-        "summary": "Token Metadata",
-        "description": "Provides ERC-20 token contract metadata.",
+        "summary": "Transfers Events",
+        "description": "Provides SPL transfer events.",
         "security": [
           {
             "bearerAuth": []
@@ -1864,7 +2144,7 @@
         ]
       }
     },
-    "/holders/evm/{contract}": {
+    "/tokens/evm/{contract}": {
       "get": {
         "responses": {
           "200": {
@@ -1889,10 +2169,10 @@
                             "type": "string",
                             "description": "Filter by address"
                           },
-                          "amount": {
+                          "circulating_supply": {
                             "type": "string"
                           },
-                          "value": {
+                          "holders": {
                             "type": "number"
                           },
                           "network_id": {
@@ -1907,19 +2187,33 @@
                               "optimism",
                               "unichain"
                             ],
-                            "description": "The Graph Network ID https://thegraph.com/networks",
+                            "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
                             "example": "mainnet"
                           },
+                          "icon": {
+                            "type": "object",
+                            "properties": {
+                              "web3icon": {
+                                "type": "string"
+                              }
+                            },
+                            "required": [
+                              "web3icon"
+                            ]
+                          },
                           "symbol": {
                             "type": "string"
                           },
+                          "name": {
+                            "type": "string"
+                          },
                           "decimals": {
                             "type": "number"
                           },
                           "price_usd": {
                             "type": "number"
                           },
-                          "value_usd": {
+                          "market_cap": {
                             "type": "number"
                           },
                           "low_liquidity": {
@@ -1930,9 +2224,10 @@
                           "block_num",
                           "datetime",
                           "address",
-                          "amount",
-                          "value",
-                          "network_id"
+                          "circulating_supply",
+                          "holders",
+                          "network_id",
+                          "icon"
                         ]
                       }
                     },
@@ -1958,14 +2253,18 @@
                 "example": {
                   "data": [
                     {
-                      "block_num": 22578579,
-                      "last_balance_update": "2025-05-28 03:25:47",
-                      "address": "0x36aff7001294dae4c2ed4fdefc478a00de77f090",
-                      "amount": "2868440291872963359806035918",
-                      "value": 2868440291.8729634,
+                      "block_num": 22589353,
+                      "datetime": "2025-05-29 15:40:11",
+                      "address": "0xc944e90c64b2c07662a292be6244bdf05cda44a7",
                       "decimals": 18,
                       "symbol": "GRT",
-                      "network_id": "mainnet"
+                      "name": "Graph Token",
+                      "circulating_supply": "16667753581.233711",
+                      "holders": 139562,
+                      "network_id": "mainnet",
+                      "icon": {
+                        "web3icon": "GRT"
+                      }
                     }
                   ]
                 }
@@ -1973,7 +2272,7 @@
             }
           }
         },
-        "operationId": "getHoldersEvmByContract",
+        "operationId": "getTokensEvmByContract",
         "tags": [
           "EVM"
         ],
@@ -1991,21 +2290,530 @@
           },
           {
             "in": "query",
-            "name": "network_id",
+            "name": "network_id",
+            "schema": {
+              "type": "string",
+              "enum": [
+                "arbitrum-one",
+                "avalanche",
+                "base",
+                "bsc",
+                "mainnet",
+                "matic",
+                "optimism",
+                "unichain"
+              ],
+              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
+              "example": "mainnet"
+            }
+          }
+        ],
+        "summary": "Token Metadata",
+        "description": "Provides ERC-20 token contract metadata.",
+        "security": [
+          {
+            "bearerAuth": []
+          }
+        ]
+      }
+    },
+    "/holders/evm/{contract}": {
+      "get": {
+        "responses": {
+          "200": {
+            "description": "Successful Response",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "data": {
+                      "type": "array",
+                      "items": {
+                        "type": "object",
+                        "properties": {
+                          "block_num": {
+                            "type": "number"
+                          },
+                          "datetime": {
+                            "type": "string"
+                          },
+                          "address": {
+                            "type": "string",
+                            "description": "Filter by address"
+                          },
+                          "amount": {
+                            "type": "string"
+                          },
+                          "value": {
+                            "type": "number"
+                          },
+                          "network_id": {
+                            "type": "string",
+                            "enum": [
+                              "arbitrum-one",
+                              "avalanche",
+                              "base",
+                              "bsc",
+                              "mainnet",
+                              "matic",
+                              "optimism",
+                              "unichain"
+                            ],
+                            "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
+                            "example": "mainnet"
+                          },
+                          "symbol": {
+                            "type": "string"
+                          },
+                          "decimals": {
+                            "type": "number"
+                          },
+                          "price_usd": {
+                            "type": "number"
+                          },
+                          "value_usd": {
+                            "type": "number"
+                          },
+                          "low_liquidity": {
+                            "type": "boolean"
+                          }
+                        },
+                        "required": [
+                          "block_num",
+                          "datetime",
+                          "address",
+                          "amount",
+                          "value",
+                          "network_id"
+                        ]
+                      }
+                    },
+                    "statistics": {
+                      "type": "object",
+                      "properties": {
+                        "elapsed": {
+                          "type": "number"
+                        },
+                        "rows_read": {
+                          "type": "number"
+                        },
+                        "bytes_read": {
+                          "type": "number"
+                        }
+                      }
+                    }
+                  },
+                  "required": [
+                    "data"
+                  ]
+                },
+                "example": {
+                  "data": [
+                    {
+                      "block_num": 22578579,
+                      "last_balance_update": "2025-05-28 03:25:47",
+                      "address": "0x36aff7001294dae4c2ed4fdefc478a00de77f090",
+                      "amount": "2868440291872963359806035918",
+                      "value": 2868440291.8729634,
+                      "decimals": 18,
+                      "symbol": "GRT",
+                      "network_id": "mainnet"
+                    }
+                  ]
+                }
+              }
+            }
+          }
+        },
+        "operationId": "getHoldersEvmByContract",
+        "tags": [
+          "EVM"
+        ],
+        "parameters": [
+          {
+            "in": "path",
+            "name": "contract",
+            "schema": {
+              "type": "string",
+              "pattern": "^(0[xX])?[0-9a-fA-F]{40}$",
+              "description": "Filter by contract address",
+              "example": "0xc944e90c64b2c07662a292be6244bdf05cda44a7"
+            },
+            "required": true
+          },
+          {
+            "in": "query",
+            "name": "network_id",
+            "schema": {
+              "type": "string",
+              "enum": [
+                "arbitrum-one",
+                "avalanche",
+                "base",
+                "bsc",
+                "mainnet",
+                "matic",
+                "optimism",
+                "unichain"
+              ],
+              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
+              "example": "mainnet"
+            }
+          },
+          {
+            "in": "query",
+            "name": "orderBy",
+            "schema": {
+              "type": "string",
+              "enum": [
+                "value"
+              ],
+              "default": "value",
+              "description": "The field by which to order the results."
+            }
+          },
+          {
+            "in": "query",
+            "name": "orderDirection",
+            "schema": {
+              "type": "string",
+              "enum": [
+                "asc",
+                "desc"
+              ],
+              "default": "desc",
+              "description": "The order in which to return the results: Ascending (asc) or Descending (desc)."
+            }
+          },
+          {
+            "in": "query",
+            "name": "limit",
+            "schema": {
+              "type": "integer",
+              "minimum": 1,
+              "maximum": 1000,
+              "default": 10,
+              "description": "The maximum number of items returned in a single request."
+            }
+          },
+          {
+            "in": "query",
+            "name": "page",
+            "schema": {
+              "type": "integer",
+              "minimum": 1,
+              "default": 1,
+              "description": "The page number of the results to return."
+            }
+          }
+        ],
+        "summary": "Token Holders",
+        "description": "Provides ERC-20 token holder balances by contract address.",
+        "security": [
+          {
+            "bearerAuth": []
+          }
+        ]
+      }
+    },
+    "/swaps/evm": {
+      "get": {
+        "responses": {
+          "200": {
+            "description": "Successful Response",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "data": {
+                      "type": "array",
+                      "items": {
+                        "type": "object",
+                        "properties": {
+                          "block_num": {
+                            "type": "number"
+                          },
+                          "datetime": {
+                            "type": "string"
+                          },
+                          "timestamp": {
+                            "type": "number"
+                          },
+                          "network_id": {
+                            "type": "string",
+                            "enum": [
+                              "arbitrum-one",
+                              "avalanche",
+                              "base",
+                              "bsc",
+                              "mainnet",
+                              "matic",
+                              "optimism",
+                              "unichain"
+                            ],
+                            "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
+                            "example": "mainnet"
+                          },
+                          "transaction_id": {
+                            "type": "string"
+                          },
+                          "caller": {
+                            "type": "string",
+                            "description": "Filter by address"
+                          },
+                          "sender": {
+                            "type": "string",
+                            "description": "Filter by address"
+                          },
+                          "recipient": {
+                            "type": "string",
+                            "description": "Filter by address"
+                          },
+                          "factory": {
+                            "type": "string",
+                            "description": "Filter by address"
+                          },
+                          "pool": {
+                            "type": "string",
+                            "description": "Filter by address"
+                          },
+                          "token0": {
+                            "type": "object",
+                            "properties": {
+                              "address": {
+                                "type": "string",
+                                "description": "Filter by address"
+                              },
+                              "symbol": {
+                                "type": "string"
+                              },
+                              "decimals": {
+                                "type": "number"
+                              }
+                            },
+                            "required": [
+                              "address",
+                              "symbol",
+                              "decimals"
+                            ]
+                          },
+                          "token1": {
+                            "type": "object",
+                            "properties": {
+                              "address": {
+                                "type": "string",
+                                "description": "Filter by address"
+                              },
+                              "symbol": {
+                                "type": "string"
+                              },
+                              "decimals": {
+                                "type": "number"
+                              }
+                            },
+                            "required": [
+                              "address",
+                              "symbol",
+                              "decimals"
+                            ]
+                          },
+                          "amount0": {
+                            "type": "string"
+                          },
+                          "amount1": {
+                            "type": "string"
+                          },
+                          "price0": {
+                            "type": "number"
+                          },
+                          "price1": {
+                            "type": "number"
+                          },
+                          "value0": {
+                            "type": "number"
+                          },
+                          "value1": {
+                            "type": "number"
+                          },
+                          "fee": {
+                            "type": "string"
+                          },
+                          "protocol": {
+                            "type": "string"
+                          }
+                        },
+                        "required": [
+                          "block_num",
+                          "datetime",
+                          "timestamp",
+                          "network_id",
+                          "transaction_id",
+                          "caller",
+                          "sender",
+                          "recipient",
+                          "factory",
+                          "pool",
+                          "token0",
+                          "token1",
+                          "amount0",
+                          "amount1",
+                          "price0",
+                          "price1",
+                          "value0",
+                          "value1",
+                          "fee",
+                          "protocol"
+                        ]
+                      }
+                    },
+                    "statistics": {
+                      "type": "object",
+                      "properties": {
+                        "elapsed": {
+                          "type": "number"
+                        },
+                        "rows_read": {
+                          "type": "number"
+                        },
+                        "bytes_read": {
+                          "type": "number"
+                        }
+                      }
+                    }
+                  },
+                  "required": [
+                    "data"
+                  ]
+                },
+                "example": {
+                  "data": [
+                    {
+                      "block_num": 22589391,
+                      "datetime": "2025-05-29 15:47:47",
+                      "timestamp": 1748533667,
+                      "transaction_id": "0x1ce019b0ad129b8bd21b6c83b75de5e5fd7cd07f2ee739ca3198adcbeb61f5a9",
+                      "caller": "0x66a9893cc07d91d95644aedd05d03f95e1dba8af",
+                      "pool": "0xb98437c7ba28c6590dd4e1cc46aa89eed181f97108e5b6221730d41347bc817f",
+                      "factory": "0x000000000004444c5dc75cb358380d2e3de08a90",
+                      "token0": {
+                        "address": "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599",
+                        "symbol": "WBTC",
+                        "decimals": 8
+                      },
+                      "token1": {
+                        "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
+                        "symbol": "USDC",
+                        "decimals": 6
+                      },
+                      "sender": "0x66a9893cc07d91d95644aedd05d03f95e1dba8af",
+                      "recipient": null,
+                      "amount0": "-894320",
+                      "amount1": "957798098",
+                      "value0": -0.0089432,
+                      "value1": 957.798098,
+                      "price0": 107417.48517180652,
+                      "price1": 0.00000930947134352077,
+                      "protocol": "uniswap_v4",
+                      "network_id": "mainnet"
+                    }
+                  ]
+                }
+              }
+            }
+          }
+        },
+        "operationId": "getSwapsEvm",
+        "tags": [
+          "EVM"
+        ],
+        "parameters": [
+          {
+            "in": "query",
+            "name": "network_id",
+            "schema": {
+              "type": "string",
+              "enum": [
+                "arbitrum-one",
+                "avalanche",
+                "base",
+                "bsc",
+                "mainnet",
+                "matic",
+                "optimism",
+                "unichain"
+              ],
+              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
+              "example": "mainnet"
+            }
+          },
+          {
+            "in": "query",
+            "name": "pool",
+            "schema": {
+              "type": "string",
+              "pattern": "^(0[xX])?[0-9a-fA-F]{40}$",
+              "description": "Filter by contract address",
+              "example": "0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640"
+            }
+          },
+          {
+            "in": "query",
+            "name": "caller",
+            "schema": {
+              "type": "string",
+              "pattern": "^(0[xX])?[0-9a-fA-F]{40}$",
+              "description": "Filter by address"
+            }
+          },
+          {
+            "in": "query",
+            "name": "sender",
+            "schema": {
+              "type": "string",
+              "pattern": "^(0[xX])?[0-9a-fA-F]{40}$",
+              "description": "Filter by address"
+            }
+          },
+          {
+            "in": "query",
+            "name": "recipient",
+            "schema": {
+              "type": "string",
+              "pattern": "^(0[xX])?[0-9a-fA-F]{40}$",
+              "description": "Filter by address"
+            }
+          },
+          {
+            "in": "query",
+            "name": "protocol",
             "schema": {
               "type": "string",
               "enum": [
-                "arbitrum-one",
-                "avalanche",
-                "base",
-                "bsc",
-                "mainnet",
-                "matic",
-                "optimism",
-                "unichain"
+                "uniswap_v2",
+                "uniswap_v3"
               ],
-              "description": "The Graph Network ID https://thegraph.com/networks",
-              "example": "mainnet"
+              "description": "Protocol name",
+              "example": "uniswap_v3"
+            }
+          },
+          {
+            "in": "query",
+            "name": "startTime",
+            "schema": {
+              "type": "number",
+              "minimum": 0,
+              "description": "UNIX timestamp in seconds."
+            }
+          },
+          {
+            "in": "query",
+            "name": "endTime",
+            "schema": {
+              "type": "number",
+              "minimum": 0,
+              "description": "UNIX timestamp in seconds."
             }
           },
           {
@@ -2014,9 +2822,9 @@
             "schema": {
               "type": "string",
               "enum": [
-                "value"
+                "timestamp"
               ],
-              "default": "value",
+              "default": "timestamp",
               "description": "The field by which to order the results."
             }
           },
@@ -2033,6 +2841,15 @@
               "description": "The order in which to return the results: Ascending (asc) or Descending (desc)."
             }
           },
+          {
+            "in": "query",
+            "name": "transaction_id",
+            "schema": {
+              "type": "string",
+              "pattern": "^(0[xX])?[0-9a-fA-F]{64}$",
+              "description": "Filter by transaction"
+            }
+          },
           {
             "in": "query",
             "name": "limit",
@@ -2055,8 +2872,8 @@
             }
           }
         ],
-        "summary": "Token Holders",
-        "description": "Provides ERC-20 token holder balances by contract address.",
+        "summary": "Swap Events",
+        "description": "Provides Uniswap V2 & V3 swap events.",
         "security": [
           {
             "bearerAuth": []
@@ -2064,7 +2881,7 @@
         ]
       }
     },
-    "/swaps/evm": {
+    "/swaps/svm": {
       "get": {
         "responses": {
           "200": {
@@ -2088,45 +2905,38 @@
                           "timestamp": {
                             "type": "number"
                           },
-                          "network_id": {
-                            "type": "string",
-                            "enum": [
-                              "arbitrum-one",
-                              "avalanche",
-                              "base",
-                              "bsc",
-                              "mainnet",
-                              "matic",
-                              "optimism",
-                              "unichain"
-                            ],
-                            "description": "The Graph Network ID https://thegraph.com/networks",
-                            "example": "mainnet"
+                          "transaction_index": {
+                            "type": "number"
                           },
-                          "transaction_id": {
+                          "instruction_index": {
+                            "type": "number"
+                          },
+                          "signature": {
                             "type": "string"
                           },
-                          "caller": {
+                          "program_id": {
                             "type": "string",
                             "description": "Filter by address"
                           },
-                          "sender": {
-                            "type": "string",
-                            "description": "Filter by address"
+                          "program_name": {
+                            "type": "string"
                           },
-                          "recipient": {
+                          "user": {
                             "type": "string",
                             "description": "Filter by address"
                           },
-                          "factory": {
+                          "amm": {
                             "type": "string",
                             "description": "Filter by address"
                           },
-                          "pool": {
+                          "amm_name": {
+                            "type": "string"
+                          },
+                          "amm_pool": {
                             "type": "string",
                             "description": "Filter by address"
                           },
-                          "token0": {
+                          "input_mint": {
                             "type": "object",
                             "properties": {
                               "address": {
@@ -2146,7 +2956,10 @@
                               "decimals"
                             ]
                           },
-                          "token1": {
+                          "input_amount": {
+                            "type": "number"
+                          },
+                          "output_mint": {
                             "type": "object",
                             "properties": {
                               "address": {
@@ -2166,52 +2979,35 @@
                               "decimals"
                             ]
                           },
-                          "amount0": {
-                            "type": "string"
-                          },
-                          "amount1": {
-                            "type": "string"
-                          },
-                          "price0": {
-                            "type": "number"
-                          },
-                          "price1": {
-                            "type": "number"
-                          },
-                          "value0": {
-                            "type": "number"
-                          },
-                          "value1": {
+                          "output_amount": {
                             "type": "number"
                           },
-                          "fee": {
-                            "type": "string"
-                          },
-                          "protocol": {
-                            "type": "string"
+                          "network_id": {
+                            "type": "string",
+                            "enum": [
+                              "solana"
+                            ],
+                            "description": "The Graph Network ID for SVM networks https://thegraph.com/networks",
+                            "example": "solana"
                           }
                         },
                         "required": [
                           "block_num",
                           "datetime",
                           "timestamp",
-                          "network_id",
-                          "transaction_id",
-                          "caller",
-                          "sender",
-                          "recipient",
-                          "factory",
-                          "pool",
-                          "token0",
-                          "token1",
-                          "amount0",
-                          "amount1",
-                          "price0",
-                          "price1",
-                          "value0",
-                          "value1",
-                          "fee",
-                          "protocol"
+                          "transaction_index",
+                          "instruction_index",
+                          "signature",
+                          "program_id",
+                          "program_name",
+                          "user",
+                          "amm",
+                          "amm_name",
+                          "input_mint",
+                          "input_amount",
+                          "output_mint",
+                          "output_amount",
+                          "network_id"
                         ]
                       }
                     },
@@ -2237,33 +3033,21 @@
                 "example": {
                   "data": [
                     {
-                      "block_num": 22589391,
-                      "datetime": "2025-05-29 15:47:47",
-                      "timestamp": 1748533667,
-                      "transaction_id": "0x1ce019b0ad129b8bd21b6c83b75de5e5fd7cd07f2ee739ca3198adcbeb61f5a9",
-                      "caller": "0x66a9893cc07d91d95644aedd05d03f95e1dba8af",
-                      "pool": "0xb98437c7ba28c6590dd4e1cc46aa89eed181f97108e5b6221730d41347bc817f",
-                      "factory": "0x000000000004444c5dc75cb358380d2e3de08a90",
-                      "token0": {
-                        "address": "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599",
-                        "symbol": "WBTC",
-                        "decimals": 8
-                      },
-                      "token1": {
-                        "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
-                        "symbol": "USDC",
-                        "decimals": 6
-                      },
-                      "sender": "0x66a9893cc07d91d95644aedd05d03f95e1dba8af",
-                      "recipient": null,
-                      "amount0": "-894320",
-                      "amount1": "957798098",
-                      "value0": -0.0089432,
-                      "value1": 957.798098,
-                      "price0": 107417.48517180652,
-                      "price1": 0.00000930947134352077,
-                      "protocol": "uniswap_v4",
-                      "network_id": "mainnet"
+                      "block_num": 352243599,
+                      "datetime": "2025-07-09 22:24:36",
+                      "timestamp": 1752099876,
+                      "signature": "oWHA7wPQwpZhr9RJSbTNxsnPkBo1wnd68Zt2fJZPyK3cf1vYVzQiC9Et2mRNvh1t9Zt5dtmoEeSErSCqmMQ58Ls\u0000",
+                      "program_id": "pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA",
+                      "program_name": "Pump.fun AMM",
+                      "amm": "pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA",
+                      "amm_name": "Pump.fun AMM",
+                      "amm_pool": "AmmpSnW5xVeKHTAU9fMjyKEMPgrzmUj3ah5vgvHhAB5J",
+                      "user": "AEWxmZPEdHkCjJXVT9MreY7fCvzbpEK3wCVouCoEnmvE",
+                      "input_mint": "9BB6NFEcjBCtnNLFko2FqVQBq8HHM13kCyYcdQbgpump",
+                      "input_amount": 3653743,
+                      "output_mint": "So11111111111111111111111111111111111111112",
+                      "output_amount": 25548025,
+                      "network_id": "solana"
                     }
                   ]
                 }
@@ -2271,9 +3055,9 @@
             }
           }
         },
-        "operationId": "getSwapsEvm",
+        "operationId": "getSwapsSvm",
         "tags": [
-          "EVM"
+          "SVM"
         ],
         "parameters": [
           {
@@ -2282,68 +3066,79 @@
             "schema": {
               "type": "string",
               "enum": [
-                "arbitrum-one",
-                "avalanche",
-                "base",
-                "bsc",
-                "mainnet",
-                "matic",
-                "optimism",
-                "unichain"
+                "solana"
               ],
-              "description": "The Graph Network ID https://thegraph.com/networks",
-              "example": "mainnet"
-            }
+              "description": "The Graph Network ID for SVM networks https://thegraph.com/networks",
+              "example": "solana"
+            },
+            "required": false
           },
           {
             "in": "query",
-            "name": "pool",
+            "name": "program_id",
             "schema": {
               "type": "string",
-              "pattern": "^(0[xX])?[0-9a-fA-F]{40}$",
-              "description": "Filter by contract address",
-              "example": "0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640"
-            }
+              "enum": [
+                "675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8",
+                "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P",
+                "pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA",
+                "JUP4Fb2cqiRUcaTHdrPC8h2gNsA2ETXiPDD33WcGuJB",
+                "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4"
+              ],
+              "description": "Filter by program ID",
+              "example": "pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA"
+            },
+            "required": true
           },
           {
             "in": "query",
-            "name": "caller",
+            "name": "amm",
             "schema": {
               "type": "string",
-              "pattern": "^(0[xX])?[0-9a-fA-F]{40}$",
-              "description": "Filter by address"
-            }
+              "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
+              "description": "Filter by amm address"
+            },
+            "required": false
           },
           {
             "in": "query",
-            "name": "sender",
+            "name": "amm_pool",
             "schema": {
               "type": "string",
-              "pattern": "^(0[xX])?[0-9a-fA-F]{40}$",
-              "description": "Filter by address"
-            }
+              "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
+              "description": "Filter by amm pool address"
+            },
+            "required": false
           },
           {
             "in": "query",
-            "name": "recipient",
+            "name": "user",
             "schema": {
               "type": "string",
-              "pattern": "^(0[xX])?[0-9a-fA-F]{40}$",
-              "description": "Filter by address"
-            }
+              "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
+              "description": "Filter by user address"
+            },
+            "required": false
           },
           {
             "in": "query",
-            "name": "protocol",
+            "name": "input_mint",
             "schema": {
               "type": "string",
-              "enum": [
-                "uniswap_v2",
-                "uniswap_v3"
-              ],
-              "description": "Protocol name",
-              "example": "uniswap_v3"
-            }
+              "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
+              "description": "Filter by mint address"
+            },
+            "required": false
+          },
+          {
+            "in": "query",
+            "name": "output_mint",
+            "schema": {
+              "type": "string",
+              "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
+              "description": "Filter by mint address"
+            },
+            "required": false
           },
           {
             "in": "query",
@@ -2352,7 +3147,8 @@
               "type": "number",
               "minimum": 0,
               "description": "UNIX timestamp in seconds."
-            }
+            },
+            "required": false
           },
           {
             "in": "query",
@@ -2361,7 +3157,8 @@
               "type": "number",
               "minimum": 0,
               "description": "UNIX timestamp in seconds."
-            }
+            },
+            "required": false
           },
           {
             "in": "query",
@@ -2373,7 +3170,8 @@
               ],
               "default": "timestamp",
               "description": "The field by which to order the results."
-            }
+            },
+            "required": false
           },
           {
             "in": "query",
@@ -2386,16 +3184,18 @@
               ],
               "default": "desc",
               "description": "The order in which to return the results: Ascending (asc) or Descending (desc)."
-            }
+            },
+            "required": false
           },
           {
             "in": "query",
-            "name": "transaction_id",
+            "name": "signature",
             "schema": {
               "type": "string",
-              "pattern": "^(0[xX])?[0-9a-fA-F]{64}$",
-              "description": "Filter by transaction"
-            }
+              "pattern": "^[1-9A-HJ-NP-Za-km-z]{87,88}$",
+              "description": "Filter by transaction signature"
+            },
+            "required": false
           },
           {
             "in": "query",
@@ -2406,7 +3206,8 @@
               "maximum": 1000,
               "default": 10,
               "description": "The maximum number of items returned in a single request."
-            }
+            },
+            "required": false
           },
           {
             "in": "query",
@@ -2416,11 +3217,12 @@
               "minimum": 1,
               "default": 1,
               "description": "The page number of the results to return."
-            }
+            },
+            "required": false
           }
         ],
         "summary": "Swap Events",
-        "description": "Provides Uniswap V2 & V3 swap events.",
+        "description": "Provides AMM Swap events.",
         "security": [
           {
             "bearerAuth": []
@@ -2461,7 +3263,7 @@
                               "optimism",
                               "unichain"
                             ],
-                            "description": "The Graph Network ID https://thegraph.com/networks",
+                            "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
                             "example": "mainnet"
                           },
                           "transaction_id": {
@@ -2603,7 +3405,7 @@
                 "optimism",
                 "unichain"
               ],
-              "description": "The Graph Network ID https://thegraph.com/networks",
+              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
               "example": "mainnet"
             }
           },
@@ -2654,6 +3456,27 @@
               "description": "Protocol name",
               "example": "uniswap_v3"
             }
+          },
+          {
+            "in": "query",
+            "name": "limit",
+            "schema": {
+              "type": "integer",
+              "minimum": 1,
+              "maximum": 1000,
+              "default": 10,
+              "description": "The maximum number of items returned in a single request."
+            }
+          },
+          {
+            "in": "query",
+            "name": "page",
+            "schema": {
+              "type": "integer",
+              "minimum": 1,
+              "default": 1,
+              "description": "The page number of the results to return."
+            }
           }
         ],
         "summary": "Liquidity Pools",
@@ -2790,7 +3613,7 @@
                 "optimism",
                 "unichain"
               ],
-              "description": "The Graph Network ID https://thegraph.com/networks",
+              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
               "example": "mainnet"
             }
           },
@@ -2984,7 +3807,7 @@
                 "optimism",
                 "unichain"
               ],
-              "description": "The Graph Network ID https://thegraph.com/networks",
+              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
               "example": "mainnet"
             }
           },
@@ -3193,7 +4016,7 @@
                 "optimism",
                 "unichain"
               ],
-              "description": "The Graph Network ID https://thegraph.com/networks",
+              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
               "example": "mainnet"
             }
           },
@@ -3399,9 +4222,9 @@
                   ]
                 },
                 "example": {
-                  "version": "1.6.2",
-                  "commit": "a82a86b",
-                  "date": "2025-06-05",
+                  "version": "2.2.6",
+                  "commit": "153a17c",
+                  "date": "2025-07-10",
                   "repo": "pinax-network/token-api"
                 }
               }
diff --git a/website/src/pages/ar/ai-suite/_meta-titles.json b/website/src/pages/ar/ai-suite/_meta-titles.json
new file mode 100644
index 000000000000..5eb482a7092b
--- /dev/null
+++ b/website/src/pages/ar/ai-suite/_meta-titles.json
@@ -0,0 +1,6 @@
+{
+  "graph-assistant": "Graph Assistant",
+  "ai-introduction": "The Graph's AI",
+  "subgraph-mcp": "Subgraph MCP",
+  "token-api-mcp": "Token API MCP"
+}
diff --git a/website/src/pages/ar/ai-suite/_meta.js b/website/src/pages/ar/ai-suite/_meta.js
new file mode 100644
index 000000000000..c9e51dfd35fb
--- /dev/null
+++ b/website/src/pages/ar/ai-suite/_meta.js
@@ -0,0 +1,8 @@
+import titles from './_meta-titles.json'
+
+export default {
+  'ai-introduction': titles['ai-introduction'],
+  'graph-assistant': titles['graph-assistant'],
+  'subgraph-mcp': titles['subgraph-mcp'],
+  'token-api-mcp': titles['token-api-mcp'],
+}
diff --git a/website/src/pages/ar/ai-suite/ai-introduction.mdx b/website/src/pages/ar/ai-suite/ai-introduction.mdx
new file mode 100644
index 000000000000..d25cc9f77358
--- /dev/null
+++ b/website/src/pages/ar/ai-suite/ai-introduction.mdx
@@ -0,0 +1,58 @@
+---
+title: The Graph's AI
+---
+
+Build with speed and scale faster with The Graph's AI.
+
+## Using AI on The Graph
+
+Instead of relying on static datasets or centralized APIs, you can now access live blockchain data through our **agentic** app, [Graph Assistant](/ai-suite/graph-assistant/introduction/), and use our AI-native tooling, [Subgraph MCP](/ai-suite/subgraph-mcp/introduction/), and [Token API MCP](/ai-suite/token-api-mcp/introduction/).
+
+### Why Use Onchain Data with AI?
+
+Using onchain data with AI unlocks powerful new ways to interact with and understand blockchain ecosystems.
+
+- **AI for Non-Technical End Users**: AI can turn complex onchain data into accessible insights. Assistants powered by AI enable you to explore and analyze blockchain data without coding.
+- **AI for Developers**: You can use AI to interact directly with The Graph's data through your agents or build AI-powered applications on top of it. This streamlines development and opens up more intuitive, dynamic use cases.
+
+## AI for Non-Technical/End Users
+
+[Graph Assistant](/ai-suite/graph-assistant/introduction/) is a powerful **agentic** application that empowers users to easily interact with blockchain data. Ask questions in simple, natural language and get rich, AI powered insights. Both technical developers and non-technical product teams can move faster, make smarter decisions, and gain a clearer understanding than ever before.
+
+### Benefits of Using Graph Assistant
+
+- **Natural language Input**: You don't need to write complex queries or sift through dashboards. Simply ask your question in plain English and get clear, structured results.
+- **Multi-source support**: Works across multiple Subgraphs and Token API. The Assistant automatically determines which data source to use, so you don't have to switch tools or manage endpoints.
+- **Schema-free access**: You don't need to understand the schema. You can refer to tokens, protocols, dates, or addresses using natural language. The Assistant takes care of the rest.
+
+### Conversational Querying with Graph Assistant
+
+**Example queries:**
+
+- "List the top-5 swaps by USD value in the last 24 hours."
+- "Give me the daily volume on Uniswap."
+- "List the 20 most recently registered .eth names."
+
+[Graph Assistant](/ai-suite/graph-assistant/introduction/) will eventually be a one-stop shop for interacting with The Graph. Right now, it's an agentic AI app that uses state-of-the-art AI techniques, LLMs, and MCPs to understand and answer your questions about [Subgraphs](/subgraphs/developing/subgraphs/) and [Token API](/token-api/quick-start/) data.
+
+## AI for Developers
+
+### Enable Natural Language Access to Onchain Data
+
+[Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) servers connect to Claude, Cline, and Cursor. They enable models to understand, query, and interact with structured onchain data using natural language. MCPs remove the need to write low-level queries or interact with APIs directly.
+
+### Subgraph MCP
+
+The [Subgraph MCP](/ai-suite/subgraph-mcp/introduction/) server connects models to Subgraphs on The Graph Network. It allows language models to explore Subgraph schemas, execute GraphQL queries, find relevant Subgraphs by keyword or contract, and surface usage metrics using natural language.
+
+### Token API MCP
+
+The [Token API MCP](/ai-suite/token-api-mcp/introduction/) MCP server enables models to access onchain token data. It supports querying token metadata, wallet balances, transfer history, and top token holders through simple prompts.
+
+#### Benefits of Using Subgraph and Token API MCPs
+
+- Query Subgraphs and token data using natural language
+- Access GraphQL schemas and token metadata without manual queries
+- Find Subgraphs by keyword or contract and check 30-day usage
+- Retrieve real-time data from The Graph and onchain token sources
+- Get wallet balances, transfer history, and top token holders
diff --git a/website/src/pages/ar/ai-suite/graph-assistant/_meta.js b/website/src/pages/ar/ai-suite/graph-assistant/_meta.js
new file mode 100644
index 000000000000..74da5e0686a7
--- /dev/null
+++ b/website/src/pages/ar/ai-suite/graph-assistant/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  'quick-start': '',
+  introduction: '',
+  'how-to-guide': '',
+  faq: '',
+}
diff --git a/website/src/pages/ar/ai-suite/graph-assistant/faq.mdx b/website/src/pages/ar/ai-suite/graph-assistant/faq.mdx
new file mode 100644
index 000000000000..8addf9935524
--- /dev/null
+++ b/website/src/pages/ar/ai-suite/graph-assistant/faq.mdx
@@ -0,0 +1,26 @@
+---
+title: Graph Assistant FAQ
+sidebarTitle: 'FAQ'
+---
+
+This page summarizes some of the most common questions for developers using Graph Assistant.
+
+1. What is The Graph Assistant?
+
+The Graph Assistant is an AI-powered chat interface that lets you query blockchain data in plain English. Under the hood, it translates your questions into GraphQL calls against Subgraphs and the Token API, then returns results, no coding required.
+
+2. What is an agentic application?
+
+An agentic application combines AI-driven reasoning with external data sources or APIs to take autonomous actions on your behalf. In this case, Graph Assistant acts as an “agent” that interprets your natural-language prompts, builds and dispatches GraphQL queries, and formats the results so that you don't need to write or manage queries yourself.
+
+3. Which networks and data does Graph Assistant support?
+
+The Assistant has access to Subgraphs across multiple chains. If a Subgraph is published to The Graph Network and is being indexed, the Assistant can automatically route queries to it. The Assistant also has access to the Token API on Ethereum Mainnet, BSC, Unichain, Arbitrum-One, Optimism, and Polygon.
+
+4. Is there a usage limit or quota?
+
+Yes, 10 questions per hour.
+
+5. What if the Assistant can't interpret my question?
+
+When the Assistant fails to parse your intent (for example, ambiguous token name, missing context, or an unsupported request), it will prompt you for clarification. For instance, it might ask, “Did you mean XYZ on Ethereum or XYZ on Arbitrum?” or “Please specify a date range for this query.” If you continue to see parsing errors, check that you're using correct token symbols or specifying networks and time frames clearly.
diff --git a/website/src/pages/ar/ai-suite/graph-assistant/how-to-guide.mdx b/website/src/pages/ar/ai-suite/graph-assistant/how-to-guide.mdx
new file mode 100644
index 000000000000..463130894ad8
--- /dev/null
+++ b/website/src/pages/ar/ai-suite/graph-assistant/how-to-guide.mdx
@@ -0,0 +1,56 @@
+---
+title: How To Use The Graph Assistant
+sidebarTitle: 'How-to Guide'
+---
+
+## Overview
+
+You type a natural language question into the chat interface, such as:
+
+```yaml
+'On Uniswap, return the top-10 pools by total value locked in USD.'
+```
+
+> [!IMPORTANT] All users can process 10 free queries per user per hour.
+
+> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the underlying agents. Do not share sensitive, personal, or private information.
+
+### Behind the Scenes
+
+The Assistant:
+
+1. Interprets your intent
+2. Maps it to the correct Subgraphs or Token API endpoint
+3. Executes optimized queries
+4. Returns clean, structured results
+
+You don't need to write queries or understand a Subgraph's schema, you simply ask.
+
+### Example Use Cases
+
+**Protocol Analytics**
+
+- “Compare daily active users on Aave vs. Compound in May 2025.”
+- “Show me the total value locked (TVL) for XYZDAO over the last quarter.”
+
+**Token Insights**
+
+- “What are the top 10 tokens by market cap on Ethereum right now?”
+- “How many XYZ did I receive between May 1 and May 15?”
+
+**Historical Data Retrieval**
+
+- “Fetch the token price history of XYZ for the last six months.”
+- “What was the average gas price on Ethereum during April?”
+
+**Portfolio Monitoring**
+
+- “List my wallet’s current token balances and their USD equivalents.”
+- “Calculate profit/loss on XYZ since xyz date.”
+
+**Cross-Chain Comparison**
+
+- “Show me the 7-day trading volume of XYZ on Ethereum vs. Polygon.”
+- “How many XYZ swaps occurred on Arbitrum yesterday?”
+
+To get started follow the [quickstart](/ai-suite/graph-assistant/quick-start/) and explore its capabilities.
diff --git a/website/src/pages/ar/ai-suite/graph-assistant/introduction.mdx b/website/src/pages/ar/ai-suite/graph-assistant/introduction.mdx
new file mode 100644
index 000000000000..65fdf0f96028
--- /dev/null
+++ b/website/src/pages/ar/ai-suite/graph-assistant/introduction.mdx
@@ -0,0 +1,31 @@
+---
+title: Introduction
+---
+
+> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime.
+
+[Graph Assistant](https://thegraph.com/graph-assistant) (Beta) gives instant, code-free access to blockchain data, transforming natural language into precise, AI-powered queries without the need to code.
+
+## Overview
+
+[Graph Assistant](https://thegraph.com/graph-assistant) is an advanced, [agentic](/en/ai-suite/graph-assistant/faq/) easy-to-use chat interface for querying blockchain data using natural language. Unlike a basic chatbot, Graph Assistant can understand your intent, build complex queries, and execute them automatically. This gives you rich, AI-powered insights from onchain data without writing any code.
+
+- **Automatically** interprets user intent, generates precise queries, executes them via The Graph's Subgraphs and Token API, and presents structured, AI-powered answers without requiring any code.
+- **Removes** the technical complexity found in traditional dashboards or chatbots. It provides composable insights directly from indexed Subgraphs and Token datasets.
+
+## Core Features
+
+| Feature | Description |
+| --- | --- |
+| **Friendly Interface** | Conversational access to blockchain data via natural language. You simply ask questions, the Assistant fetches the answer, and renders results. |
+| **Backed by Subgraphs** | Uses subgraphs to index protocol-specific data like transactions, events, and protocol metrics. |
+| **Backed by Token API** | Uses Token API for token-level information like balances, transfers, and metadata. |
+| **No Setup Required** | No need to configure data sources or write queries. |
+| **Automatic Query Building** | The Assistant performs complex queries such as fetching historical token volumes, protocol analytics, or cross-chain data and handles filtering, pagination, and joins across Subgraphs automatically. |
+
+## Help Shape What's Next
+
+This is in **beta**, and community input is essential. If you have ideas, questions, or run into anything unexpected, we'd love to hear from you:
+
+- Join the community on [Discord](https://discord.com/invite/graphprotocol): Provide feedback and stay in the loop with other builders. You'll be able to join the `#graph-assistant` channel to share your experience directly.
+- Interested in going deeper? Reach out to become a dedicated beta tester so your specific use case can be better supported.
diff --git a/website/src/pages/ar/ai-suite/graph-assistant/quick-start.mdx b/website/src/pages/ar/ai-suite/graph-assistant/quick-start.mdx
new file mode 100644
index 000000000000..13f8478b8d2b
--- /dev/null
+++ b/website/src/pages/ar/ai-suite/graph-assistant/quick-start.mdx
@@ -0,0 +1,44 @@
+---
+title: Quick Start
+---
+
+> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime.
+
+This guide provides step-by-step instructions for getting started with Graph Assistant quickly.
+
+## Step-by Step
+
+### Step 1. Create an Account
+
+Go to: [Graph Assistant](https://thegraph.com/graph-assistant)
+
+- Click Sign Up (or Log In if you already have an account).
+- Use your Google, GitHub, X, email or wallet credentials to log in.
+- No additional setup is required.
+
+### Step 2. Open the Assistant Chat
+
+After logging in:
+
+- You'll see Graph Assistant's interface.
+- At the bottom of the page, you will find a chat input bar. This is where you will interact with the Assistant.
+
+### Step 3: Ask Your First Question
+
+> [!IMPORTANT] All users can process 10 free queries per user per hour.
+
+In the input bar, type a natural-language query (everyday language).
+
+Example:
+
+```yaml
+Show me the 24-hour trading volume of XYZ token on Ethereum
+```
+
+> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the AI interface. Do not share sensitive, personal, or private information.
+
+The Assistant will:
+
+- Digest your question
+- Fetch onchain data using Subgraphs or the Token API
+- Return a clean, formatted response with the data you need
diff --git a/website/src/pages/ar/token-api/mcp/_meta.js b/website/src/pages/ar/ai-suite/subgraph-mcp/_meta.js
similarity index 75%
rename from website/src/pages/ar/token-api/mcp/_meta.js
rename to website/src/pages/ar/ai-suite/subgraph-mcp/_meta.js
index 8630d4da27b3..6f527b4e53e4 100644
--- a/website/src/pages/ar/token-api/mcp/_meta.js
+++ b/website/src/pages/ar/ai-suite/subgraph-mcp/_meta.js
@@ -1,4 +1,5 @@
 export default {
+  introduction: '',
   claude: '',
   cline: '',
   cursor: '',
diff --git a/website/src/pages/cs/subgraphs/mcp/claude.mdx b/website/src/pages/ar/ai-suite/subgraph-mcp/claude.mdx
similarity index 87%
rename from website/src/pages/cs/subgraphs/mcp/claude.mdx
rename to website/src/pages/ar/ai-suite/subgraph-mcp/claude.mdx
index 027b272cb942..ff3caa4e3e7f 100644
--- a/website/src/pages/cs/subgraphs/mcp/claude.mdx
+++ b/website/src/pages/ar/ai-suite/subgraph-mcp/claude.mdx
@@ -2,17 +2,7 @@
 title: Claude Desktop
 ---
 
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Claude to interact directly with Subgraphs on The Graph Network. This integration allows you to find relevant Subgraphs for specific keywords and contracts, explore Subgraph schemas, and execute GraphQL queries—all through natural language conversations with Claude.
-
-## What You Can Do
-
-The Subgraph MCP integration enables you to:
-
-- Access the GraphQL schema for any Subgraph on The Graph Network
-- Execute GraphQL queries against any Subgraph deployment
-- Find top Subgraph deployments for a given keyword or contract address
-- Get 30-day query volume for Subgraph deployments
-- Ask natural language questions about Subgraph data without writing GraphQL queries manually
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data via natural language conversations with Claude.
 
 ## Prerequisites
 
diff --git a/website/src/pages/cs/subgraphs/mcp/cline.mdx b/website/src/pages/ar/ai-suite/subgraph-mcp/cline.mdx
similarity index 89%
rename from website/src/pages/cs/subgraphs/mcp/cline.mdx
rename to website/src/pages/ar/ai-suite/subgraph-mcp/cline.mdx
index 156221d9a127..eb8044bfe991 100644
--- a/website/src/pages/cs/subgraphs/mcp/cline.mdx
+++ b/website/src/pages/ar/ai-suite/subgraph-mcp/cline.mdx
@@ -2,7 +2,7 @@
 title: Cline
 ---
 
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Cline to interact directly with Subgraphs on The Graph Network. This integration allows you to explore Subgraph schemas, execute GraphQL queries, and find relevant Subgraphs for specific contracts—all through natural language conversations with Cline.
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data through natural language conversations with Cline.
 
 ## Prerequisites
 
diff --git a/website/src/pages/de/subgraphs/mcp/cursor.mdx b/website/src/pages/ar/ai-suite/subgraph-mcp/cursor.mdx
similarity index 88%
rename from website/src/pages/de/subgraphs/mcp/cursor.mdx
rename to website/src/pages/ar/ai-suite/subgraph-mcp/cursor.mdx
index 298f43ece048..6291caf4b06b 100644
--- a/website/src/pages/de/subgraphs/mcp/cursor.mdx
+++ b/website/src/pages/ar/ai-suite/subgraph-mcp/cursor.mdx
@@ -2,7 +2,7 @@
 title: Cursor
 ---
 
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Cursor to interact directly with Subgraphs on The Graph Network. This integration allows you to explore Subgraph schemas, execute GraphQL queries, and find relevant Subgraphs for specific contracts—all through natural language conversations with Cursor.
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data through natural language conversations with Cline.
 
 ## Prerequisites
 
diff --git a/website/src/pages/ar/ai-suite/subgraph-mcp/introduction.mdx b/website/src/pages/ar/ai-suite/subgraph-mcp/introduction.mdx
new file mode 100644
index 000000000000..da1272cf9a36
--- /dev/null
+++ b/website/src/pages/ar/ai-suite/subgraph-mcp/introduction.mdx
@@ -0,0 +1,22 @@
+---
+title: Subgraph MCP Introduction
+sidebarTitle: 'Introduction'
+---
+
+Subgraph MCP server is an open-source implementation of [Anthropic's Model Context Protocol](https://modelcontextprotocol.io/introduction).
+
+It presents The Graph's Subgraph data through a set of MCP tools that any MCP-compatible client can call. With these tools, clients can search for relevant Subgraphs, inspect GraphQL schemas, and run queries against specific deployments on The Graph Network all within a single, standardized interface.
+
+The server itself does not hold a language model. Instead, it translates incoming MCP requests into Subgraph queries and returns the structured results, allowing the client's LLM to transform a natural-language prompt into actionable blockchain data.
+
+Think of it as a USB-C hub: it standardizes the plug-and-play connection between AI agents and The Graph's Subgraph ecosystem.
+
+## What You Can Do
+
+- Access GraphQL schemas for any Subgraph on The Graph Network
+- Run GraphQL queries on any Subgraph deployment
+- Discover top Subgraph deployments by keyword or contract address
+- Retrieve 30-day query volumes for Subgraph deployments
+- Ask questions about Subgraph data without writing GraphQL manually
+
+The Subgraph MCP server allows smooth integration with [Claude](/ai-suite/subgraph-mcp/claude/), [Cline](/ai-suite/subgraph-mcp/cline/), or [Cursor](/ai-suite/subgraph-mcp/cursor/), making blockchain data queries with The Graph Network a conversational experience.
diff --git a/website/src/pages/ar/subgraphs/mcp/_meta.js b/website/src/pages/ar/ai-suite/token-api-mcp/_meta.js
similarity index 75%
rename from website/src/pages/ar/subgraphs/mcp/_meta.js
rename to website/src/pages/ar/ai-suite/token-api-mcp/_meta.js
index 8630d4da27b3..6f527b4e53e4 100644
--- a/website/src/pages/ar/subgraphs/mcp/_meta.js
+++ b/website/src/pages/ar/ai-suite/token-api-mcp/_meta.js
@@ -1,4 +1,5 @@
 export default {
+  introduction: '',
   claude: '',
   cline: '',
   cursor: '',
diff --git a/website/src/pages/ar/token-api/mcp/claude.mdx b/website/src/pages/ar/ai-suite/token-api-mcp/claude.mdx
similarity index 100%
rename from website/src/pages/ar/token-api/mcp/claude.mdx
rename to website/src/pages/ar/ai-suite/token-api-mcp/claude.mdx
diff --git a/website/src/pages/ar/token-api/mcp/cline.mdx b/website/src/pages/ar/ai-suite/token-api-mcp/cline.mdx
similarity index 100%
rename from website/src/pages/ar/token-api/mcp/cline.mdx
rename to website/src/pages/ar/ai-suite/token-api-mcp/cline.mdx
diff --git a/website/src/pages/ar/token-api/mcp/cursor.mdx b/website/src/pages/ar/ai-suite/token-api-mcp/cursor.mdx
similarity index 100%
rename from website/src/pages/ar/token-api/mcp/cursor.mdx
rename to website/src/pages/ar/ai-suite/token-api-mcp/cursor.mdx
diff --git a/website/src/pages/ar/ai-suite/token-api-mcp/introduction.mdx b/website/src/pages/ar/ai-suite/token-api-mcp/introduction.mdx
new file mode 100644
index 000000000000..b61ad0a1c485
--- /dev/null
+++ b/website/src/pages/ar/ai-suite/token-api-mcp/introduction.mdx
@@ -0,0 +1,23 @@
+---
+title: Token API MCP Introduction
+sidebarTitle: 'Introduction'
+---
+
+Token API MCP server is an open-source implementation of [Anthropic's Model Context Protocol](https://modelcontextprotocol.io/introduction).
+
+This MCP server makes on-chain token data, including metadata, balances, transfers, and holder statistics, accessible through a set of MCP tools. Any compatible client can use these tools to fetch and analyze token information through a standardized interface. It connects to The Graph's hosted Token API database, enabling AI assistants to query real-time blockchain data using natural language requests that get translated into optimized SQL queries.
+
+The server itself does not host any language model. It simply converts MCP calls into data look-ups and returns structured results, letting the client's own LLM incorporate the results.
+
+Think of it as a USB-C hub: it standardizes the plug-and-play connection between AI agents and The Graph's Token API data.
+
+## What You Can Do
+
+- Retrieve token metadata including name, symbol, decimals, total supply, and contract address
+- Get token balances for any wallet address holding a supported ERC-20 token
+- Fetch token transfer activity including sender, receiver, amount, and timestamp
+- Identify top holders and analyze token distribution
+- Ask natural language questions about token data without writing smart contract calls
+- Access historical transfer data to analyze token movement over time
+
+The Token MCP server provides [Claude](/ai-suite/token-api-mcp/claude/), [Cline](/ai-suite/token-api-mcp/cline/), and [Cursor](/ai-suite/token-api-mcp/cursor/) with direct, conversational access to onchain token data.
diff --git a/website/src/pages/ar/resources/_meta.js b/website/src/pages/ar/resources/_meta.js
index aa8e2d0ec6a8..38c56cf56c43 100644
--- a/website/src/pages/ar/resources/_meta.js
+++ b/website/src/pages/ar/resources/_meta.js
@@ -7,5 +7,4 @@ export default {
   roles: titles.roles ?? '',
   'migration-guides': titles['migration-guides'] ?? '',
   'subgraph-studio-faq': '',
-  'claude-mcp': '',
 }
diff --git a/website/src/pages/ar/resources/claude-mcp.mdx b/website/src/pages/ar/resources/claude-mcp.mdx
deleted file mode 100644
index 44ed075cffda..000000000000
--- a/website/src/pages/ar/resources/claude-mcp.mdx
+++ /dev/null
@@ -1,122 +0,0 @@
----
-title: Claude MCP
----
-
-This guide walks you through configuring Claude Desktop to use The Graph ecosystem's [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) resources: Token API and Subgraph. These integrations allow you to interact with blockchain data through natural language conversations with Claude.
-
-## What You Can Do
-
-With these integrations, you can:
-
-- **Token API**: Access token and wallet information across multiple blockchains
-- **Subgraph**: Find relevant Subgraphs for specific keywords and contracts, explore Subgraph schemas, and execute GraphQL queries
-
-## Prerequisites
-
-- [Node.js](https://nodejs.org/en/download/) installed and available in your path
-- [Claude Desktop](https://claude.ai/download) installed
-- API keys:
-  - Token API key from [The Graph Market](https://thegraph.market/)
-  - Gateway API key from [Subgraph Studio](https://thegraph.com/studio/apikeys/)
-
-## Configuration Steps
-
-### 1. Open Configuration File
-
-Navigate to your `claude_desktop_config.json` file:
-
-> **Claude Desktop** > **Settings** > **Developer** > **Edit Config**
-
-Paths by operating system:
-
-- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
-- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
-- Linux: `.config/Claude/claude_desktop_config.json`
-
-### 2. Add Configuration
-
-Replace the contents of the existing config file with:
-
-```json
-{
-  "mcpServers": {
-    "token-api": {
-      "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
-      "env": {
-        "ACCESS_TOKEN": "ACCESS_TOKEN"
-      }
-    },
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-### 3. Add Your API Keys
-
-Replace:
-
-- `ACCESS_TOKEN` with your Token API key from [The Graph Market](https://thegraph.market/)
-- `GATEWAY_API_KEY` with your Gateway API key from [Subgraph Studio](https://thegraph.com/studio/apikeys/)
-
-### 4. Save and Restart
-
-- Save the configuration file
-- Restart Claude Desktop
-
-### 5. Add The Graph Resources in Claude
-
-After configuration:
-
-1. Start a new conversation in Claude Desktop
-2. Click on the context menu (top right)
-3. Add "Subgraph Server Instructions" as a resource by entering `graphql://subgraph` for Subgraph MCP
-
-> **Important**: You must manually add The Graph resources to your chat context for each conversation where you want to use them.
-
-### 6. Run Queries
-
-Here are some example queries you can try after setting up the resources:
-
-### Subgraph Queries
-
-```
-What are the top pools in Uniswap?
-```
-
-```
-Who are the top Delegators of The Graph Protocol?
-```
-
-```
-Please make a bar chart for the number of active loans in Compound for the last 7 days
-```
-
-### Token API Queries
-
-```
-Show me the current price of ETH
-```
-
-```
-What are the top tokens by market cap on Ethereum?
-```
-
-```
-Analyze this wallet address: 0x...
-```
-
-## Troubleshooting
-
-If you encounter issues:
-
-1. **Verify Node.js Installation**: Ensure Node.js is correctly installed by running `node -v` in your terminal
-2. **Check API Keys**: Verify that your API keys are correctly entered in the configuration file
-3. **Enable Verbose Logging**: Add `--verbose true` to the args array in your configuration to see detailed logs
-4. **Restart Claude Desktop**: After making changes to the configuration, always restart Claude Desktop
diff --git a/website/src/pages/ar/subgraphs/_meta.js b/website/src/pages/ar/subgraphs/_meta.js
index 4365293ffc72..45841d5f3355 100644
--- a/website/src/pages/ar/subgraphs/_meta.js
+++ b/website/src/pages/ar/subgraphs/_meta.js
@@ -6,7 +6,6 @@ export default {
   querying: titles.querying ?? '',
   developing: titles.developing ?? '',
   billing: '',
-  mcp: titles.mcp ?? '',
   guides: titles.guides,
   'best-practices': titles['best-practices'],
   'fair-use-policy': '',
diff --git a/website/src/pages/ar/substreams/_meta.js b/website/src/pages/ar/substreams/_meta.js
index a8ee04618eae..658bb8c213c6 100644
--- a/website/src/pages/ar/substreams/_meta.js
+++ b/website/src/pages/ar/substreams/_meta.js
@@ -5,5 +5,4 @@ export default {
   introduction: '',
   developing: titles.developing ?? '',
   publishing: '',
-  sps: titles.sps ?? '',
 }
diff --git a/website/src/pages/ar/token-api/_meta-titles.json b/website/src/pages/ar/token-api/_meta-titles.json
index 7ed31e0af95d..3108ecd3ebfd 100644
--- a/website/src/pages/ar/token-api/_meta-titles.json
+++ b/website/src/pages/ar/token-api/_meta-titles.json
@@ -1,6 +1,7 @@
 {
   "mcp": "MCP",
   "evm": "EVM Endpoints",
+  "svm": "SVM Endpoints",
   "monitoring": "Monitoring Endpoints",
   "faq": "FAQ"
 }
diff --git a/website/src/pages/ar/token-api/_meta.js b/website/src/pages/ar/token-api/_meta.js
index f67576d7f612..fb7f7334ea0c 100644
--- a/website/src/pages/ar/token-api/_meta.js
+++ b/website/src/pages/ar/token-api/_meta.js
@@ -2,8 +2,8 @@ import titles from './_meta-titles.json'
 
 export default {
   'quick-start': '',
-  mcp: titles.mcp ?? '',
   evm: titles.evm ?? '',
+  svm: titles.svm ?? '',
   monitoring: titles.monitoring ?? '',
   faq: '',
 }
diff --git a/website/src/pages/ar/token-api/svm/_meta.js b/website/src/pages/ar/token-api/svm/_meta.js
new file mode 100644
index 000000000000..1a48b82fcbf1
--- /dev/null
+++ b/website/src/pages/ar/token-api/svm/_meta.js
@@ -0,0 +1,5 @@
+export default {
+  'get-balances-svm': '',
+  'get-transfers-svm': '',
+  'get-swaps-svm': '',
+}
diff --git a/website/src/pages/ar/token-api/svm/get-balances-svm.mdx b/website/src/pages/ar/token-api/svm/get-balances-svm.mdx
new file mode 100644
index 000000000000..c2946c190bf9
--- /dev/null
+++ b/website/src/pages/ar/token-api/svm/get-balances-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Balances
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getBalancesSvm
+---
+
+Provides Solana tokens balances by token account address.
diff --git a/website/src/pages/ar/token-api/svm/get-swaps-svm.mdx b/website/src/pages/ar/token-api/svm/get-swaps-svm.mdx
new file mode 100644
index 000000000000..95282a38ac9f
--- /dev/null
+++ b/website/src/pages/ar/token-api/svm/get-swaps-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Swap Events
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getSwapsSvm
+---
+
+Provides Raydium swap events.
diff --git a/website/src/pages/ar/token-api/svm/get-transfers-svm.mdx b/website/src/pages/ar/token-api/svm/get-transfers-svm.mdx
new file mode 100644
index 000000000000..5335cdddf418
--- /dev/null
+++ b/website/src/pages/ar/token-api/svm/get-transfers-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Transfers Events
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getTransfersSvm
+---
+
+Provides SVM transfer events.
diff --git a/website/src/pages/cs/ai-suite/_meta-titles.json b/website/src/pages/cs/ai-suite/_meta-titles.json
new file mode 100644
index 000000000000..5eb482a7092b
--- /dev/null
+++ b/website/src/pages/cs/ai-suite/_meta-titles.json
@@ -0,0 +1,6 @@
+{
+  "graph-assistant": "Graph Assistant",
+  "ai-introduction": "The Graph's AI",
+  "subgraph-mcp": "Subgraph MCP",
+  "token-api-mcp": "Token API MCP"
+}
diff --git a/website/src/pages/cs/ai-suite/_meta.js b/website/src/pages/cs/ai-suite/_meta.js
new file mode 100644
index 000000000000..c9e51dfd35fb
--- /dev/null
+++ b/website/src/pages/cs/ai-suite/_meta.js
@@ -0,0 +1,8 @@
+import titles from './_meta-titles.json'
+
+export default {
+  'ai-introduction': titles['ai-introduction'],
+  'graph-assistant': titles['graph-assistant'],
+  'subgraph-mcp': titles['subgraph-mcp'],
+  'token-api-mcp': titles['token-api-mcp'],
+}
diff --git a/website/src/pages/cs/ai-suite/ai-introduction.mdx b/website/src/pages/cs/ai-suite/ai-introduction.mdx
new file mode 100644
index 000000000000..d25cc9f77358
--- /dev/null
+++ b/website/src/pages/cs/ai-suite/ai-introduction.mdx
@@ -0,0 +1,58 @@
+---
+title: The Graph's AI
+---
+
+Build with speed and scale faster with The Graph's AI.
+
+## Using AI on The Graph
+
+Instead of relying on static datasets or centralized APIs, you can now access live blockchain data through our **agentic** app, [Graph Assistant](/ai-suite/graph-assistant/introduction/), and use our AI-native tooling, [Subgraph MCP](/ai-suite/subgraph-mcp/introduction/), and [Token API MCP](/ai-suite/token-api-mcp/introduction/).
+
+### Why Use Onchain Data with AI?
+
+Using onchain data with AI unlocks powerful new ways to interact with and understand blockchain ecosystems.
+
+- **AI for Non-Technical End Users**: AI can turn complex onchain data into accessible insights. Assistants powered by AI enable you to explore and analyze blockchain data without coding.
+- **AI for Developers**: You can use AI to interact directly with The Graph's data through your agents or build AI-powered applications on top of it. This streamlines development and opens up more intuitive, dynamic use cases.
+
+## AI for Non-Technical/End Users
+
+[Graph Assistant](/ai-suite/graph-assistant/introduction/) is a powerful **agentic** application that empowers users to easily interact with blockchain data. Ask questions in simple, natural language and get rich, AI powered insights. Both technical developers and non-technical product teams can move faster, make smarter decisions, and gain a clearer understanding than ever before.
+
+### Benefits of Using Graph Assistant
+
+- **Natural language Input**: You don't need to write complex queries or sift through dashboards. Simply ask your question in plain English and get clear, structured results.
+- **Multi-source support**: Works across multiple Subgraphs and Token API. The Assistant automatically determines which data source to use, so you don't have to switch tools or manage endpoints.
+- **Schema-free access**: You don't need to understand the schema. You can refer to tokens, protocols, dates, or addresses using natural language. The Assistant takes care of the rest.
+
+### Conversational Querying with Graph Assistant
+
+**Example queries:**
+
+- "List the top-5 swaps by USD value in the last 24 hours."
+- "Give me the daily volume on Uniswap."
+- "List the 20 most recently registered .eth names."
+
+[Graph Assistant](/ai-suite/graph-assistant/introduction/) will eventually be a one-stop shop for interacting with The Graph. Right now, it's an agentic AI app that uses state-of-the-art AI techniques, LLMs, and MCPs to understand and answer your questions about [Subgraphs](/subgraphs/developing/subgraphs/) and [Token API](/token-api/quick-start/) data.
+
+## AI for Developers
+
+### Enable Natural Language Access to Onchain Data
+
+[Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) servers connect to Claude, Cline, and Cursor. They enable models to understand, query, and interact with structured onchain data using natural language. MCPs remove the need to write low-level queries or interact with APIs directly.
+
+### Subgraph MCP
+
+The [Subgraph MCP](/ai-suite/subgraph-mcp/introduction/) server connects models to Subgraphs on The Graph Network. It allows language models to explore Subgraph schemas, execute GraphQL queries, find relevant Subgraphs by keyword or contract, and surface usage metrics using natural language.
+
+### Token API MCP
+
+The [Token API MCP](/ai-suite/token-api-mcp/introduction/) MCP server enables models to access onchain token data. It supports querying token metadata, wallet balances, transfer history, and top token holders through simple prompts.
+
+#### Benefits of Using Subgraph and Token API MCPs
+
+- Query Subgraphs and token data using natural language
+- Access GraphQL schemas and token metadata without manual queries
+- Find Subgraphs by keyword or contract and check 30-day usage
+- Retrieve real-time data from The Graph and onchain token sources
+- Get wallet balances, transfer history, and top token holders
diff --git a/website/src/pages/cs/ai-suite/graph-assistant/_meta.js b/website/src/pages/cs/ai-suite/graph-assistant/_meta.js
new file mode 100644
index 000000000000..74da5e0686a7
--- /dev/null
+++ b/website/src/pages/cs/ai-suite/graph-assistant/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  'quick-start': '',
+  introduction: '',
+  'how-to-guide': '',
+  faq: '',
+}
diff --git a/website/src/pages/cs/ai-suite/graph-assistant/faq.mdx b/website/src/pages/cs/ai-suite/graph-assistant/faq.mdx
new file mode 100644
index 000000000000..8addf9935524
--- /dev/null
+++ b/website/src/pages/cs/ai-suite/graph-assistant/faq.mdx
@@ -0,0 +1,26 @@
+---
+title: Graph Assistant FAQ
+sidebarTitle: 'FAQ'
+---
+
+This page summarizes some of the most common questions for developers using Graph Assistant.
+
+1. What is The Graph Assistant?
+
+The Graph Assistant is an AI-powered chat interface that lets you query blockchain data in plain English. Under the hood, it translates your questions into GraphQL calls against Subgraphs and the Token API, then returns results, no coding required.
+
+2. What is an agentic application?
+
+An agentic application combines AI-driven reasoning with external data sources or APIs to take autonomous actions on your behalf. In this case, Graph Assistant acts as an “agent” that interprets your natural-language prompts, builds and dispatches GraphQL queries, and formats the results so that you don't need to write or manage queries yourself.
+
+3. Which networks and data does Graph Assistant support?
+
+The Assistant has access to Subgraphs across multiple chains. If a Subgraph is published to The Graph Network and is being indexed, the Assistant can automatically route queries to it. The Assistant also has access to the Token API on Ethereum Mainnet, BSC, Unichain, Arbitrum-One, Optimism, and Polygon.
+
+4. Is there a usage limit or quota?
+
+Yes, 10 questions per hour.
+
+5. What if the Assistant can't interpret my question?
+
+When the Assistant fails to parse your intent (for example, ambiguous token name, missing context, or an unsupported request), it will prompt you for clarification. For instance, it might ask, “Did you mean XYZ on Ethereum or XYZ on Arbitrum?” or “Please specify a date range for this query.” If you continue to see parsing errors, check that you're using correct token symbols or specifying networks and time frames clearly.
diff --git a/website/src/pages/cs/ai-suite/graph-assistant/how-to-guide.mdx b/website/src/pages/cs/ai-suite/graph-assistant/how-to-guide.mdx
new file mode 100644
index 000000000000..463130894ad8
--- /dev/null
+++ b/website/src/pages/cs/ai-suite/graph-assistant/how-to-guide.mdx
@@ -0,0 +1,56 @@
+---
+title: How To Use The Graph Assistant
+sidebarTitle: 'How-to Guide'
+---
+
+## Overview
+
+You type a natural language question into the chat interface, such as:
+
+```yaml
+'On Uniswap, return the top-10 pools by total value locked in USD.'
+```
+
+> [!IMPORTANT] All users can process 10 free queries per user per hour.
+
+> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the underlying agents. Do not share sensitive, personal, or private information.
+
+### Behind the Scenes
+
+The Assistant:
+
+1. Interprets your intent
+2. Maps it to the correct Subgraphs or Token API endpoint
+3. Executes optimized queries
+4. Returns clean, structured results
+
+You don't need to write queries or understand a Subgraph's schema, you simply ask.
+
+### Example Use Cases
+
+**Protocol Analytics**
+
+- “Compare daily active users on Aave vs. Compound in May 2025.”
+- “Show me the total value locked (TVL) for XYZDAO over the last quarter.”
+
+**Token Insights**
+
+- “What are the top 10 tokens by market cap on Ethereum right now?”
+- “How many XYZ did I receive between May 1 and May 15?”
+
+**Historical Data Retrieval**
+
+- “Fetch the token price history of XYZ for the last six months.”
+- “What was the average gas price on Ethereum during April?”
+
+**Portfolio Monitoring**
+
+- “List my wallet’s current token balances and their USD equivalents.”
+- “Calculate profit/loss on XYZ since xyz date.”
+
+**Cross-Chain Comparison**
+
+- “Show me the 7-day trading volume of XYZ on Ethereum vs. Polygon.”
+- “How many XYZ swaps occurred on Arbitrum yesterday?”
+
+To get started follow the [quickstart](/ai-suite/graph-assistant/quick-start/) and explore its capabilities.
diff --git a/website/src/pages/cs/ai-suite/graph-assistant/introduction.mdx b/website/src/pages/cs/ai-suite/graph-assistant/introduction.mdx
new file mode 100644
index 000000000000..65fdf0f96028
--- /dev/null
+++ b/website/src/pages/cs/ai-suite/graph-assistant/introduction.mdx
@@ -0,0 +1,31 @@
+---
+title: Introduction
+---
+
+> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime.
+
+[Graph Assistant](https://thegraph.com/graph-assistant) (Beta) gives instant, code-free access to blockchain data, transforming natural language into precise, AI-powered queries without the need to code.
+
+## Overview
+
+[Graph Assistant](https://thegraph.com/graph-assistant) is an advanced, [agentic](/en/ai-suite/graph-assistant/faq/) easy-to-use chat interface for querying blockchain data using natural language. Unlike a basic chatbot, Graph Assistant can understand your intent, build complex queries, and execute them automatically. This gives you rich, AI-powered insights from onchain data without writing any code.
+
+- **Automatically** interprets user intent, generates precise queries, executes them via The Graph's Subgraphs and Token API, and presents structured, AI-powered answers without requiring any code.
+- **Removes** the technical complexity found in traditional dashboards or chatbots. It provides composable insights directly from indexed Subgraphs and Token datasets.
+
+## Core Features
+
+| Feature | Description |
+| --- | --- |
+| **Friendly Interface** | Conversational access to blockchain data via natural language. You simply ask questions, the Assistant fetches the answer, and renders results. |
+| **Backed by Subgraphs** | Uses subgraphs to index protocol-specific data like transactions, events, and protocol metrics. |
+| **Backed by Token API** | Uses Token API for token-level information like balances, transfers, and metadata. |
+| **No Setup Required** | No need to configure data sources or write queries. |
+| **Automatic Query Building** | The Assistant performs complex queries such as fetching historical token volumes, protocol analytics, or cross-chain data and handles filtering, pagination, and joins across Subgraphs automatically. |
+
+## Help Shape What's Next
+
+This is in **beta**, and community input is essential. If you have ideas, questions, or run into anything unexpected, we'd love to hear from you:
+
+- Join the community on [Discord](https://discord.com/invite/graphprotocol): Provide feedback and stay in the loop with other builders. You'll be able to join the `#graph-assistant` channel to share your experience directly.
+- Interested in going deeper? Reach out to become a dedicated beta tester so your specific use case can be better supported.
diff --git a/website/src/pages/cs/ai-suite/graph-assistant/quick-start.mdx b/website/src/pages/cs/ai-suite/graph-assistant/quick-start.mdx
new file mode 100644
index 000000000000..13f8478b8d2b
--- /dev/null
+++ b/website/src/pages/cs/ai-suite/graph-assistant/quick-start.mdx
@@ -0,0 +1,44 @@
+---
+title: Quick Start
+---
+
+> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime.
+
+This guide provides step-by-step instructions for getting started with Graph Assistant quickly.
+
+## Step-by Step
+
+### Step 1. Create an Account
+
+Go to: [Graph Assistant](https://thegraph.com/graph-assistant)
+
+- Click Sign Up (or Log In if you already have an account).
+- Use your Google, GitHub, X, email or wallet credentials to log in.
+- No additional setup is required.
+
+### Step 2. Open the Assistant Chat
+
+After logging in:
+
+- You'll see Graph Assistant's interface.
+- At the bottom of the page, you will find a chat input bar. This is where you will interact with the Assistant.
+
+### Step 3: Ask Your First Question
+
+> [!IMPORTANT] All users can process 10 free queries per user per hour.
+
+In the input bar, type a natural-language query (everyday language).
+
+Example:
+
+```yaml
+Show me the 24-hour trading volume of XYZ token on Ethereum
+```
+
+> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the AI interface. Do not share sensitive, personal, or private information.
+
+The Assistant will:
+
+- Digest your question
+- Fetch onchain data using Subgraphs or the Token API
+- Return a clean, formatted response with the data you need
diff --git a/website/src/pages/cs/subgraphs/mcp/_meta.js b/website/src/pages/cs/ai-suite/subgraph-mcp/_meta.js
similarity index 75%
rename from website/src/pages/cs/subgraphs/mcp/_meta.js
rename to website/src/pages/cs/ai-suite/subgraph-mcp/_meta.js
index 8630d4da27b3..6f527b4e53e4 100644
--- a/website/src/pages/cs/subgraphs/mcp/_meta.js
+++ b/website/src/pages/cs/ai-suite/subgraph-mcp/_meta.js
@@ -1,4 +1,5 @@
 export default {
+  introduction: '',
   claude: '',
   cline: '',
   cursor: '',
diff --git a/website/src/pages/de/subgraphs/mcp/claude.mdx b/website/src/pages/cs/ai-suite/subgraph-mcp/claude.mdx
similarity index 87%
rename from website/src/pages/de/subgraphs/mcp/claude.mdx
rename to website/src/pages/cs/ai-suite/subgraph-mcp/claude.mdx
index 027b272cb942..ff3caa4e3e7f 100644
--- a/website/src/pages/de/subgraphs/mcp/claude.mdx
+++ b/website/src/pages/cs/ai-suite/subgraph-mcp/claude.mdx
@@ -2,17 +2,7 @@
 title: Claude Desktop
 ---
 
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Claude to interact directly with Subgraphs on The Graph Network. This integration allows you to find relevant Subgraphs for specific keywords and contracts, explore Subgraph schemas, and execute GraphQL queries—all through natural language conversations with Claude.
-
-## What You Can Do
-
-The Subgraph MCP integration enables you to:
-
-- Access the GraphQL schema for any Subgraph on The Graph Network
-- Execute GraphQL queries against any Subgraph deployment
-- Find top Subgraph deployments for a given keyword or contract address
-- Get 30-day query volume for Subgraph deployments
-- Ask natural language questions about Subgraph data without writing GraphQL queries manually
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data via natural language conversations with Claude.
 
 ## Prerequisites
 
diff --git a/website/src/pages/de/subgraphs/mcp/cline.mdx b/website/src/pages/cs/ai-suite/subgraph-mcp/cline.mdx
similarity index 89%
rename from website/src/pages/de/subgraphs/mcp/cline.mdx
rename to website/src/pages/cs/ai-suite/subgraph-mcp/cline.mdx
index 156221d9a127..eb8044bfe991 100644
--- a/website/src/pages/de/subgraphs/mcp/cline.mdx
+++ b/website/src/pages/cs/ai-suite/subgraph-mcp/cline.mdx
@@ -2,7 +2,7 @@
 title: Cline
 ---
 
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Cline to interact directly with Subgraphs on The Graph Network. This integration allows you to explore Subgraph schemas, execute GraphQL queries, and find relevant Subgraphs for specific contracts—all through natural language conversations with Cline.
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data through natural language conversations with Cline.
 
 ## Prerequisites
 
diff --git a/website/src/pages/ar/subgraphs/mcp/cursor.mdx b/website/src/pages/cs/ai-suite/subgraph-mcp/cursor.mdx
similarity index 88%
rename from website/src/pages/ar/subgraphs/mcp/cursor.mdx
rename to website/src/pages/cs/ai-suite/subgraph-mcp/cursor.mdx
index 298f43ece048..6291caf4b06b 100644
--- a/website/src/pages/ar/subgraphs/mcp/cursor.mdx
+++ b/website/src/pages/cs/ai-suite/subgraph-mcp/cursor.mdx
@@ -2,7 +2,7 @@
 title: Cursor
 ---
 
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Cursor to interact directly with Subgraphs on The Graph Network. This integration allows you to explore Subgraph schemas, execute GraphQL queries, and find relevant Subgraphs for specific contracts—all through natural language conversations with Cursor.
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data through natural language conversations with Cline.
 
 ## Prerequisites
 
diff --git a/website/src/pages/cs/ai-suite/subgraph-mcp/introduction.mdx b/website/src/pages/cs/ai-suite/subgraph-mcp/introduction.mdx
new file mode 100644
index 000000000000..da1272cf9a36
--- /dev/null
+++ b/website/src/pages/cs/ai-suite/subgraph-mcp/introduction.mdx
@@ -0,0 +1,22 @@
+---
+title: Subgraph MCP Introduction
+sidebarTitle: 'Introduction'
+---
+
+Subgraph MCP server is an open-source implementation of [Anthropic's Model Context Protocol](https://modelcontextprotocol.io/introduction).
+
+It presents The Graph's Subgraph data through a set of MCP tools that any MCP-compatible client can call. With these tools, clients can search for relevant Subgraphs, inspect GraphQL schemas, and run queries against specific deployments on The Graph Network all within a single, standardized interface.
+
+The server itself does not hold a language model. Instead, it translates incoming MCP requests into Subgraph queries and returns the structured results, allowing the client's LLM to transform a natural-language prompt into actionable blockchain data.
+
+Think of it as a USB-C hub: it standardizes the plug-and-play connection between AI agents and The Graph's Subgraph ecosystem.
+
+## What You Can Do
+
+- Access GraphQL schemas for any Subgraph on The Graph Network
+- Run GraphQL queries on any Subgraph deployment
+- Discover top Subgraph deployments by keyword or contract address
+- Retrieve 30-day query volumes for Subgraph deployments
+- Ask questions about Subgraph data without writing GraphQL manually
+
+The Subgraph MCP server allows smooth integration with [Claude](/ai-suite/subgraph-mcp/claude/), [Cline](/ai-suite/subgraph-mcp/cline/), or [Cursor](/ai-suite/subgraph-mcp/cursor/), making blockchain data queries with The Graph Network a conversational experience.
diff --git a/website/src/pages/cs/token-api/mcp/_meta.js b/website/src/pages/cs/ai-suite/token-api-mcp/_meta.js
similarity index 75%
rename from website/src/pages/cs/token-api/mcp/_meta.js
rename to website/src/pages/cs/ai-suite/token-api-mcp/_meta.js
index 8630d4da27b3..6f527b4e53e4 100644
--- a/website/src/pages/cs/token-api/mcp/_meta.js
+++ b/website/src/pages/cs/ai-suite/token-api-mcp/_meta.js
@@ -1,4 +1,5 @@
 export default {
+  introduction: '',
   claude: '',
   cline: '',
   cursor: '',
diff --git a/website/src/pages/it/token-api/mcp/claude.mdx b/website/src/pages/cs/ai-suite/token-api-mcp/claude.mdx
similarity index 100%
rename from website/src/pages/it/token-api/mcp/claude.mdx
rename to website/src/pages/cs/ai-suite/token-api-mcp/claude.mdx
diff --git a/website/src/pages/it/token-api/mcp/cline.mdx b/website/src/pages/cs/ai-suite/token-api-mcp/cline.mdx
similarity index 100%
rename from website/src/pages/it/token-api/mcp/cline.mdx
rename to website/src/pages/cs/ai-suite/token-api-mcp/cline.mdx
diff --git a/website/src/pages/it/token-api/mcp/cursor.mdx b/website/src/pages/cs/ai-suite/token-api-mcp/cursor.mdx
similarity index 100%
rename from website/src/pages/it/token-api/mcp/cursor.mdx
rename to website/src/pages/cs/ai-suite/token-api-mcp/cursor.mdx
diff --git a/website/src/pages/cs/ai-suite/token-api-mcp/introduction.mdx b/website/src/pages/cs/ai-suite/token-api-mcp/introduction.mdx
new file mode 100644
index 000000000000..b61ad0a1c485
--- /dev/null
+++ b/website/src/pages/cs/ai-suite/token-api-mcp/introduction.mdx
@@ -0,0 +1,23 @@
+---
+title: Token API MCP Introduction
+sidebarTitle: 'Introduction'
+---
+
+Token API MCP server is an open-source implementation of [Anthropic's Model Context Protocol](https://modelcontextprotocol.io/introduction).
+
+This MCP server makes on-chain token data, including metadata, balances, transfers, and holder statistics, accessible through a set of MCP tools. Any compatible client can use these tools to fetch and analyze token information through a standardized interface. It connects to The Graph's hosted Token API database, enabling AI assistants to query real-time blockchain data using natural language requests that get translated into optimized SQL queries.
+
+The server itself does not host any language model. It simply converts MCP calls into data look-ups and returns structured results, letting the client's own LLM incorporate the results.
+
+Think of it as a USB-C hub: it standardizes the plug-and-play connection between AI agents and The Graph's Token API data.
+
+## What You Can Do
+
+- Retrieve token metadata including name, symbol, decimals, total supply, and contract address
+- Get token balances for any wallet address holding a supported ERC-20 token
+- Fetch token transfer activity including sender, receiver, amount, and timestamp
+- Identify top holders and analyze token distribution
+- Ask natural language questions about token data without writing smart contract calls
+- Access historical transfer data to analyze token movement over time
+
+The Token MCP server provides [Claude](/ai-suite/token-api-mcp/claude/), [Cline](/ai-suite/token-api-mcp/cline/), and [Cursor](/ai-suite/token-api-mcp/cursor/) with direct, conversational access to onchain token data.
diff --git a/website/src/pages/cs/resources/_meta.js b/website/src/pages/cs/resources/_meta.js
index aa8e2d0ec6a8..38c56cf56c43 100644
--- a/website/src/pages/cs/resources/_meta.js
+++ b/website/src/pages/cs/resources/_meta.js
@@ -7,5 +7,4 @@ export default {
   roles: titles.roles ?? '',
   'migration-guides': titles['migration-guides'] ?? '',
   'subgraph-studio-faq': '',
-  'claude-mcp': '',
 }
diff --git a/website/src/pages/cs/resources/claude-mcp.mdx b/website/src/pages/cs/resources/claude-mcp.mdx
deleted file mode 100644
index 44ed075cffda..000000000000
--- a/website/src/pages/cs/resources/claude-mcp.mdx
+++ /dev/null
@@ -1,122 +0,0 @@
----
-title: Claude MCP
----
-
-This guide walks you through configuring Claude Desktop to use The Graph ecosystem's [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) resources: Token API and Subgraph. These integrations allow you to interact with blockchain data through natural language conversations with Claude.
-
-## What You Can Do
-
-With these integrations, you can:
-
-- **Token API**: Access token and wallet information across multiple blockchains
-- **Subgraph**: Find relevant Subgraphs for specific keywords and contracts, explore Subgraph schemas, and execute GraphQL queries
-
-## Prerequisites
-
-- [Node.js](https://nodejs.org/en/download/) installed and available in your path
-- [Claude Desktop](https://claude.ai/download) installed
-- API keys:
-  - Token API key from [The Graph Market](https://thegraph.market/)
-  - Gateway API key from [Subgraph Studio](https://thegraph.com/studio/apikeys/)
-
-## Configuration Steps
-
-### 1. Open Configuration File
-
-Navigate to your `claude_desktop_config.json` file:
-
-> **Claude Desktop** > **Settings** > **Developer** > **Edit Config**
-
-Paths by operating system:
-
-- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
-- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
-- Linux: `.config/Claude/claude_desktop_config.json`
-
-### 2. Add Configuration
-
-Replace the contents of the existing config file with:
-
-```json
-{
-  "mcpServers": {
-    "token-api": {
-      "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
-      "env": {
-        "ACCESS_TOKEN": "ACCESS_TOKEN"
-      }
-    },
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-### 3. Add Your API Keys
-
-Replace:
-
-- `ACCESS_TOKEN` with your Token API key from [The Graph Market](https://thegraph.market/)
-- `GATEWAY_API_KEY` with your Gateway API key from [Subgraph Studio](https://thegraph.com/studio/apikeys/)
-
-### 4. Save and Restart
-
-- Save the configuration file
-- Restart Claude Desktop
-
-### 5. Add The Graph Resources in Claude
-
-After configuration:
-
-1. Start a new conversation in Claude Desktop
-2. Click on the context menu (top right)
-3. Add "Subgraph Server Instructions" as a resource by entering `graphql://subgraph` for Subgraph MCP
-
-> **Important**: You must manually add The Graph resources to your chat context for each conversation where you want to use them.
-
-### 6. Run Queries
-
-Here are some example queries you can try after setting up the resources:
-
-### Subgraph Queries
-
-```
-What are the top pools in Uniswap?
-```
-
-```
-Who are the top Delegators of The Graph Protocol?
-```
-
-```
-Please make a bar chart for the number of active loans in Compound for the last 7 days
-```
-
-### Token API Queries
-
-```
-Show me the current price of ETH
-```
-
-```
-What are the top tokens by market cap on Ethereum?
-```
-
-```
-Analyze this wallet address: 0x...
-```
-
-## Troubleshooting
-
-If you encounter issues:
-
-1. **Verify Node.js Installation**: Ensure Node.js is correctly installed by running `node -v` in your terminal
-2. **Check API Keys**: Verify that your API keys are correctly entered in the configuration file
-3. **Enable Verbose Logging**: Add `--verbose true` to the args array in your configuration to see detailed logs
-4. **Restart Claude Desktop**: After making changes to the configuration, always restart Claude Desktop
diff --git a/website/src/pages/cs/subgraphs/_meta.js b/website/src/pages/cs/subgraphs/_meta.js
index 4365293ffc72..45841d5f3355 100644
--- a/website/src/pages/cs/subgraphs/_meta.js
+++ b/website/src/pages/cs/subgraphs/_meta.js
@@ -6,7 +6,6 @@ export default {
   querying: titles.querying ?? '',
   developing: titles.developing ?? '',
   billing: '',
-  mcp: titles.mcp ?? '',
   guides: titles.guides,
   'best-practices': titles['best-practices'],
   'fair-use-policy': '',
diff --git a/website/src/pages/cs/substreams/_meta.js b/website/src/pages/cs/substreams/_meta.js
index a8ee04618eae..658bb8c213c6 100644
--- a/website/src/pages/cs/substreams/_meta.js
+++ b/website/src/pages/cs/substreams/_meta.js
@@ -5,5 +5,4 @@ export default {
   introduction: '',
   developing: titles.developing ?? '',
   publishing: '',
-  sps: titles.sps ?? '',
 }
diff --git a/website/src/pages/cs/token-api/_meta-titles.json b/website/src/pages/cs/token-api/_meta-titles.json
index 7ed31e0af95d..3108ecd3ebfd 100644
--- a/website/src/pages/cs/token-api/_meta-titles.json
+++ b/website/src/pages/cs/token-api/_meta-titles.json
@@ -1,6 +1,7 @@
 {
   "mcp": "MCP",
   "evm": "EVM Endpoints",
+  "svm": "SVM Endpoints",
   "monitoring": "Monitoring Endpoints",
   "faq": "FAQ"
 }
diff --git a/website/src/pages/cs/token-api/_meta.js b/website/src/pages/cs/token-api/_meta.js
index f67576d7f612..fb7f7334ea0c 100644
--- a/website/src/pages/cs/token-api/_meta.js
+++ b/website/src/pages/cs/token-api/_meta.js
@@ -2,8 +2,8 @@ import titles from './_meta-titles.json'
 
 export default {
   'quick-start': '',
-  mcp: titles.mcp ?? '',
   evm: titles.evm ?? '',
+  svm: titles.svm ?? '',
   monitoring: titles.monitoring ?? '',
   faq: '',
 }
diff --git a/website/src/pages/cs/token-api/svm/_meta.js b/website/src/pages/cs/token-api/svm/_meta.js
new file mode 100644
index 000000000000..1a48b82fcbf1
--- /dev/null
+++ b/website/src/pages/cs/token-api/svm/_meta.js
@@ -0,0 +1,5 @@
+export default {
+  'get-balances-svm': '',
+  'get-transfers-svm': '',
+  'get-swaps-svm': '',
+}
diff --git a/website/src/pages/cs/token-api/svm/get-balances-svm.mdx b/website/src/pages/cs/token-api/svm/get-balances-svm.mdx
new file mode 100644
index 000000000000..c2946c190bf9
--- /dev/null
+++ b/website/src/pages/cs/token-api/svm/get-balances-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Balances
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getBalancesSvm
+---
+
+Provides Solana tokens balances by token account address.
diff --git a/website/src/pages/cs/token-api/svm/get-swaps-svm.mdx b/website/src/pages/cs/token-api/svm/get-swaps-svm.mdx
new file mode 100644
index 000000000000..95282a38ac9f
--- /dev/null
+++ b/website/src/pages/cs/token-api/svm/get-swaps-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Swap Events
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getSwapsSvm
+---
+
+Provides Raydium swap events.
diff --git a/website/src/pages/cs/token-api/svm/get-transfers-svm.mdx b/website/src/pages/cs/token-api/svm/get-transfers-svm.mdx
new file mode 100644
index 000000000000..5335cdddf418
--- /dev/null
+++ b/website/src/pages/cs/token-api/svm/get-transfers-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Transfers Events
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getTransfersSvm
+---
+
+Provides SVM transfer events.
diff --git a/website/src/pages/de/ai-suite/_meta-titles.json b/website/src/pages/de/ai-suite/_meta-titles.json
new file mode 100644
index 000000000000..5eb482a7092b
--- /dev/null
+++ b/website/src/pages/de/ai-suite/_meta-titles.json
@@ -0,0 +1,6 @@
+{
+  "graph-assistant": "Graph Assistant",
+  "ai-introduction": "The Graph's AI",
+  "subgraph-mcp": "Subgraph MCP",
+  "token-api-mcp": "Token API MCP"
+}
diff --git a/website/src/pages/de/ai-suite/_meta.js b/website/src/pages/de/ai-suite/_meta.js
new file mode 100644
index 000000000000..c9e51dfd35fb
--- /dev/null
+++ b/website/src/pages/de/ai-suite/_meta.js
@@ -0,0 +1,8 @@
+import titles from './_meta-titles.json'
+
+export default {
+  'ai-introduction': titles['ai-introduction'],
+  'graph-assistant': titles['graph-assistant'],
+  'subgraph-mcp': titles['subgraph-mcp'],
+  'token-api-mcp': titles['token-api-mcp'],
+}
diff --git a/website/src/pages/de/ai-suite/ai-introduction.mdx b/website/src/pages/de/ai-suite/ai-introduction.mdx
new file mode 100644
index 000000000000..d25cc9f77358
--- /dev/null
+++ b/website/src/pages/de/ai-suite/ai-introduction.mdx
@@ -0,0 +1,58 @@
+---
+title: The Graph's AI
+---
+
+Build with speed and scale faster with The Graph's AI.
+
+## Using AI on The Graph
+
+Instead of relying on static datasets or centralized APIs, you can now access live blockchain data through our **agentic** app, [Graph Assistant](/ai-suite/graph-assistant/introduction/), and use our AI-native tooling, [Subgraph MCP](/ai-suite/subgraph-mcp/introduction/), and [Token API MCP](/ai-suite/token-api-mcp/introduction/).
+
+### Why Use Onchain Data with AI?
+
+Using onchain data with AI unlocks powerful new ways to interact with and understand blockchain ecosystems.
+
+- **AI for Non-Technical End Users**: AI can turn complex onchain data into accessible insights. Assistants powered by AI enable you to explore and analyze blockchain data without coding.
+- **AI for Developers**: You can use AI to interact directly with The Graph's data through your agents or build AI-powered applications on top of it. This streamlines development and opens up more intuitive, dynamic use cases.
+
+## AI for Non-Technical/End Users
+
+[Graph Assistant](/ai-suite/graph-assistant/introduction/) is a powerful **agentic** application that empowers users to easily interact with blockchain data. Ask questions in simple, natural language and get rich, AI powered insights. Both technical developers and non-technical product teams can move faster, make smarter decisions, and gain a clearer understanding than ever before.
+
+### Benefits of Using Graph Assistant
+
+- **Natural language Input**: You don't need to write complex queries or sift through dashboards. Simply ask your question in plain English and get clear, structured results.
+- **Multi-source support**: Works across multiple Subgraphs and Token API. The Assistant automatically determines which data source to use, so you don't have to switch tools or manage endpoints.
+- **Schema-free access**: You don't need to understand the schema. You can refer to tokens, protocols, dates, or addresses using natural language. The Assistant takes care of the rest.
+
+### Conversational Querying with Graph Assistant
+
+**Example queries:**
+
+- "List the top-5 swaps by USD value in the last 24 hours."
+- "Give me the daily volume on Uniswap."
+- "List the 20 most recently registered .eth names."
+
+[Graph Assistant](/ai-suite/graph-assistant/introduction/) will eventually be a one-stop shop for interacting with The Graph. Right now, it's an agentic AI app that uses state-of-the-art AI techniques, LLMs, and MCPs to understand and answer your questions about [Subgraphs](/subgraphs/developing/subgraphs/) and [Token API](/token-api/quick-start/) data.
+
+## AI for Developers
+
+### Enable Natural Language Access to Onchain Data
+
+[Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) servers connect to Claude, Cline, and Cursor. They enable models to understand, query, and interact with structured onchain data using natural language. MCPs remove the need to write low-level queries or interact with APIs directly.
+
+### Subgraph MCP
+
+The [Subgraph MCP](/ai-suite/subgraph-mcp/introduction/) server connects models to Subgraphs on The Graph Network. It allows language models to explore Subgraph schemas, execute GraphQL queries, find relevant Subgraphs by keyword or contract, and surface usage metrics using natural language.
+
+### Token API MCP
+
+The [Token API MCP](/ai-suite/token-api-mcp/introduction/) MCP server enables models to access onchain token data. It supports querying token metadata, wallet balances, transfer history, and top token holders through simple prompts.
+
+#### Benefits of Using Subgraph and Token API MCPs
+
+- Query Subgraphs and token data using natural language
+- Access GraphQL schemas and token metadata without manual queries
+- Find Subgraphs by keyword or contract and check 30-day usage
+- Retrieve real-time data from The Graph and onchain token sources
+- Get wallet balances, transfer history, and top token holders
diff --git a/website/src/pages/de/ai-suite/graph-assistant/_meta.js b/website/src/pages/de/ai-suite/graph-assistant/_meta.js
new file mode 100644
index 000000000000..74da5e0686a7
--- /dev/null
+++ b/website/src/pages/de/ai-suite/graph-assistant/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  'quick-start': '',
+  introduction: '',
+  'how-to-guide': '',
+  faq: '',
+}
diff --git a/website/src/pages/de/ai-suite/graph-assistant/faq.mdx b/website/src/pages/de/ai-suite/graph-assistant/faq.mdx
new file mode 100644
index 000000000000..8addf9935524
--- /dev/null
+++ b/website/src/pages/de/ai-suite/graph-assistant/faq.mdx
@@ -0,0 +1,26 @@
+---
+title: Graph Assistant FAQ
+sidebarTitle: 'FAQ'
+---
+
+This page summarizes some of the most common questions for developers using Graph Assistant.
+
+1. What is The Graph Assistant?
+
+The Graph Assistant is an AI-powered chat interface that lets you query blockchain data in plain English. Under the hood, it translates your questions into GraphQL calls against Subgraphs and the Token API, then returns results, no coding required.
+
+2. What is an agentic application?
+
+An agentic application combines AI-driven reasoning with external data sources or APIs to take autonomous actions on your behalf. In this case, Graph Assistant acts as an “agent” that interprets your natural-language prompts, builds and dispatches GraphQL queries, and formats the results so that you don't need to write or manage queries yourself.
+
+3. Which networks and data does Graph Assistant support?
+
+The Assistant has access to Subgraphs across multiple chains. If a Subgraph is published to The Graph Network and is being indexed, the Assistant can automatically route queries to it. The Assistant also has access to the Token API on Ethereum Mainnet, BSC, Unichain, Arbitrum-One, Optimism, and Polygon.
+
+4. Is there a usage limit or quota?
+
+Yes, 10 questions per hour.
+
+5. What if the Assistant can't interpret my question?
+
+When the Assistant fails to parse your intent (for example, ambiguous token name, missing context, or an unsupported request), it will prompt you for clarification. For instance, it might ask, “Did you mean XYZ on Ethereum or XYZ on Arbitrum?” or “Please specify a date range for this query.” If you continue to see parsing errors, check that you're using correct token symbols or specifying networks and time frames clearly.
diff --git a/website/src/pages/de/ai-suite/graph-assistant/how-to-guide.mdx b/website/src/pages/de/ai-suite/graph-assistant/how-to-guide.mdx
new file mode 100644
index 000000000000..463130894ad8
--- /dev/null
+++ b/website/src/pages/de/ai-suite/graph-assistant/how-to-guide.mdx
@@ -0,0 +1,56 @@
+---
+title: How To Use The Graph Assistant
+sidebarTitle: 'How-to Guide'
+---
+
+## Overview
+
+You type a natural language question into the chat interface, such as:
+
+```yaml
+'On Uniswap, return the top-10 pools by total value locked in USD.'
+```
+
+> [!IMPORTANT] All users can process 10 free queries per user per hour.
+
+> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the underlying agents. Do not share sensitive, personal, or private information.
+
+### Behind the Scenes
+
+The Assistant:
+
+1. Interprets your intent
+2. Maps it to the correct Subgraphs or Token API endpoint
+3. Executes optimized queries
+4. Returns clean, structured results
+
+You don't need to write queries or understand a Subgraph's schema, you simply ask.
+
+### Example Use Cases
+
+**Protocol Analytics**
+
+- “Compare daily active users on Aave vs. Compound in May 2025.”
+- “Show me the total value locked (TVL) for XYZDAO over the last quarter.”
+
+**Token Insights**
+
+- “What are the top 10 tokens by market cap on Ethereum right now?”
+- “How many XYZ did I receive between May 1 and May 15?”
+
+**Historical Data Retrieval**
+
+- “Fetch the token price history of XYZ for the last six months.”
+- “What was the average gas price on Ethereum during April?”
+
+**Portfolio Monitoring**
+
+- “List my wallet’s current token balances and their USD equivalents.”
+- “Calculate profit/loss on XYZ since xyz date.”
+
+**Cross-Chain Comparison**
+
+- “Show me the 7-day trading volume of XYZ on Ethereum vs. Polygon.”
+- “How many XYZ swaps occurred on Arbitrum yesterday?”
+
+To get started follow the [quickstart](/ai-suite/graph-assistant/quick-start/) and explore its capabilities.
diff --git a/website/src/pages/de/ai-suite/graph-assistant/introduction.mdx b/website/src/pages/de/ai-suite/graph-assistant/introduction.mdx
new file mode 100644
index 000000000000..65fdf0f96028
--- /dev/null
+++ b/website/src/pages/de/ai-suite/graph-assistant/introduction.mdx
@@ -0,0 +1,31 @@
+---
+title: Introduction
+---
+
+> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime.
+
+[Graph Assistant](https://thegraph.com/graph-assistant) (Beta) gives instant, code-free access to blockchain data, transforming natural language into precise, AI-powered queries without the need to code.
+
+## Overview
+
+[Graph Assistant](https://thegraph.com/graph-assistant) is an advanced, [agentic](/en/ai-suite/graph-assistant/faq/) easy-to-use chat interface for querying blockchain data using natural language. Unlike a basic chatbot, Graph Assistant can understand your intent, build complex queries, and execute them automatically. This gives you rich, AI-powered insights from onchain data without writing any code.
+
+- **Automatically** interprets user intent, generates precise queries, executes them via The Graph's Subgraphs and Token API, and presents structured, AI-powered answers without requiring any code.
+- **Removes** the technical complexity found in traditional dashboards or chatbots. It provides composable insights directly from indexed Subgraphs and Token datasets.
+
+## Core Features
+
+| Feature | Description |
+| --- | --- |
+| **Friendly Interface** | Conversational access to blockchain data via natural language. You simply ask questions, the Assistant fetches the answer, and renders results. |
+| **Backed by Subgraphs** | Uses subgraphs to index protocol-specific data like transactions, events, and protocol metrics. |
+| **Backed by Token API** | Uses Token API for token-level information like balances, transfers, and metadata. |
+| **No Setup Required** | No need to configure data sources or write queries. |
+| **Automatic Query Building** | The Assistant performs complex queries such as fetching historical token volumes, protocol analytics, or cross-chain data and handles filtering, pagination, and joins across Subgraphs automatically. |
+
+## Help Shape What's Next
+
+This is in **beta**, and community input is essential. If you have ideas, questions, or run into anything unexpected, we'd love to hear from you:
+
+- Join the community on [Discord](https://discord.com/invite/graphprotocol): Provide feedback and stay in the loop with other builders. You'll be able to join the `#graph-assistant` channel to share your experience directly.
+- Interested in going deeper? Reach out to become a dedicated beta tester so your specific use case can be better supported.
diff --git a/website/src/pages/de/ai-suite/graph-assistant/quick-start.mdx b/website/src/pages/de/ai-suite/graph-assistant/quick-start.mdx
new file mode 100644
index 000000000000..13f8478b8d2b
--- /dev/null
+++ b/website/src/pages/de/ai-suite/graph-assistant/quick-start.mdx
@@ -0,0 +1,44 @@
+---
+title: Quick Start
+---
+
+> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime.
+
+This guide provides step-by-step instructions for getting started with Graph Assistant quickly.
+
+## Step-by Step
+
+### Step 1. Create an Account
+
+Go to: [Graph Assistant](https://thegraph.com/graph-assistant)
+
+- Click Sign Up (or Log In if you already have an account).
+- Use your Google, GitHub, X, email or wallet credentials to log in.
+- No additional setup is required.
+
+### Step 2. Open the Assistant Chat
+
+After logging in:
+
+- You'll see Graph Assistant's interface.
+- At the bottom of the page, you will find a chat input bar. This is where you will interact with the Assistant.
+
+### Step 3: Ask Your First Question
+
+> [!IMPORTANT] All users can process 10 free queries per user per hour.
+
+In the input bar, type a natural-language query (everyday language).
+
+Example:
+
+```yaml
+Show me the 24-hour trading volume of XYZ token on Ethereum
+```
+
+> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the AI interface. Do not share sensitive, personal, or private information.
+
+The Assistant will:
+
+- Digest your question
+- Fetch onchain data using Subgraphs or the Token API
+- Return a clean, formatted response with the data you need
diff --git a/website/src/pages/de/ai-suite/subgraph-mcp/_meta.js b/website/src/pages/de/ai-suite/subgraph-mcp/_meta.js
new file mode 100644
index 000000000000..6f527b4e53e4
--- /dev/null
+++ b/website/src/pages/de/ai-suite/subgraph-mcp/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  introduction: '',
+  claude: '',
+  cline: '',
+  cursor: '',
+}
diff --git a/website/src/pages/ar/subgraphs/mcp/claude.mdx b/website/src/pages/de/ai-suite/subgraph-mcp/claude.mdx
similarity index 87%
rename from website/src/pages/ar/subgraphs/mcp/claude.mdx
rename to website/src/pages/de/ai-suite/subgraph-mcp/claude.mdx
index 027b272cb942..ff3caa4e3e7f 100644
--- a/website/src/pages/ar/subgraphs/mcp/claude.mdx
+++ b/website/src/pages/de/ai-suite/subgraph-mcp/claude.mdx
@@ -2,17 +2,7 @@
 title: Claude Desktop
 ---
 
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Claude to interact directly with Subgraphs on The Graph Network. This integration allows you to find relevant Subgraphs for specific keywords and contracts, explore Subgraph schemas, and execute GraphQL queries—all through natural language conversations with Claude.
-
-## What You Can Do
-
-The Subgraph MCP integration enables you to:
-
-- Access the GraphQL schema for any Subgraph on The Graph Network
-- Execute GraphQL queries against any Subgraph deployment
-- Find top Subgraph deployments for a given keyword or contract address
-- Get 30-day query volume for Subgraph deployments
-- Ask natural language questions about Subgraph data without writing GraphQL queries manually
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data via natural language conversations with Claude.
 
 ## Prerequisites
 
diff --git a/website/src/pages/es/subgraphs/mcp/cline.mdx b/website/src/pages/de/ai-suite/subgraph-mcp/cline.mdx
similarity index 89%
rename from website/src/pages/es/subgraphs/mcp/cline.mdx
rename to website/src/pages/de/ai-suite/subgraph-mcp/cline.mdx
index 156221d9a127..eb8044bfe991 100644
--- a/website/src/pages/es/subgraphs/mcp/cline.mdx
+++ b/website/src/pages/de/ai-suite/subgraph-mcp/cline.mdx
@@ -2,7 +2,7 @@
 title: Cline
 ---
 
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Cline to interact directly with Subgraphs on The Graph Network. This integration allows you to explore Subgraph schemas, execute GraphQL queries, and find relevant Subgraphs for specific contracts—all through natural language conversations with Cline.
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data through natural language conversations with Cline.
 
 ## Prerequisites
 
diff --git a/website/src/pages/cs/subgraphs/mcp/cursor.mdx b/website/src/pages/de/ai-suite/subgraph-mcp/cursor.mdx
similarity index 88%
rename from website/src/pages/cs/subgraphs/mcp/cursor.mdx
rename to website/src/pages/de/ai-suite/subgraph-mcp/cursor.mdx
index 298f43ece048..6291caf4b06b 100644
--- a/website/src/pages/cs/subgraphs/mcp/cursor.mdx
+++ b/website/src/pages/de/ai-suite/subgraph-mcp/cursor.mdx
@@ -2,7 +2,7 @@
 title: Cursor
 ---
 
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Cursor to interact directly with Subgraphs on The Graph Network. This integration allows you to explore Subgraph schemas, execute GraphQL queries, and find relevant Subgraphs for specific contracts—all through natural language conversations with Cursor.
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data through natural language conversations with Cline.
 
 ## Prerequisites
 
diff --git a/website/src/pages/de/ai-suite/subgraph-mcp/introduction.mdx b/website/src/pages/de/ai-suite/subgraph-mcp/introduction.mdx
new file mode 100644
index 000000000000..da1272cf9a36
--- /dev/null
+++ b/website/src/pages/de/ai-suite/subgraph-mcp/introduction.mdx
@@ -0,0 +1,22 @@
+---
+title: Subgraph MCP Introduction
+sidebarTitle: 'Introduction'
+---
+
+Subgraph MCP server is an open-source implementation of [Anthropic's Model Context Protocol](https://modelcontextprotocol.io/introduction).
+
+It presents The Graph's Subgraph data through a set of MCP tools that any MCP-compatible client can call. With these tools, clients can search for relevant Subgraphs, inspect GraphQL schemas, and run queries against specific deployments on The Graph Network all within a single, standardized interface.
+
+The server itself does not hold a language model. Instead, it translates incoming MCP requests into Subgraph queries and returns the structured results, allowing the client's LLM to transform a natural-language prompt into actionable blockchain data.
+
+Think of it as a USB-C hub: it standardizes the plug-and-play connection between AI agents and The Graph's Subgraph ecosystem.
+
+## What You Can Do
+
+- Access GraphQL schemas for any Subgraph on The Graph Network
+- Run GraphQL queries on any Subgraph deployment
+- Discover top Subgraph deployments by keyword or contract address
+- Retrieve 30-day query volumes for Subgraph deployments
+- Ask questions about Subgraph data without writing GraphQL manually
+
+The Subgraph MCP server allows smooth integration with [Claude](/ai-suite/subgraph-mcp/claude/), [Cline](/ai-suite/subgraph-mcp/cline/), or [Cursor](/ai-suite/subgraph-mcp/cursor/), making blockchain data queries with The Graph Network a conversational experience.
diff --git a/website/src/pages/de/ai-suite/token-api-mcp/_meta.js b/website/src/pages/de/ai-suite/token-api-mcp/_meta.js
new file mode 100644
index 000000000000..6f527b4e53e4
--- /dev/null
+++ b/website/src/pages/de/ai-suite/token-api-mcp/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  introduction: '',
+  claude: '',
+  cline: '',
+  cursor: '',
+}
diff --git a/website/src/pages/ko/token-api/mcp/claude.mdx b/website/src/pages/de/ai-suite/token-api-mcp/claude.mdx
similarity index 100%
rename from website/src/pages/ko/token-api/mcp/claude.mdx
rename to website/src/pages/de/ai-suite/token-api-mcp/claude.mdx
diff --git a/website/src/pages/ko/token-api/mcp/cline.mdx b/website/src/pages/de/ai-suite/token-api-mcp/cline.mdx
similarity index 100%
rename from website/src/pages/ko/token-api/mcp/cline.mdx
rename to website/src/pages/de/ai-suite/token-api-mcp/cline.mdx
diff --git a/website/src/pages/ko/token-api/mcp/cursor.mdx b/website/src/pages/de/ai-suite/token-api-mcp/cursor.mdx
similarity index 100%
rename from website/src/pages/ko/token-api/mcp/cursor.mdx
rename to website/src/pages/de/ai-suite/token-api-mcp/cursor.mdx
diff --git a/website/src/pages/de/ai-suite/token-api-mcp/introduction.mdx b/website/src/pages/de/ai-suite/token-api-mcp/introduction.mdx
new file mode 100644
index 000000000000..b61ad0a1c485
--- /dev/null
+++ b/website/src/pages/de/ai-suite/token-api-mcp/introduction.mdx
@@ -0,0 +1,23 @@
+---
+title: Token API MCP Introduction
+sidebarTitle: 'Introduction'
+---
+
+Token API MCP server is an open-source implementation of [Anthropic's Model Context Protocol](https://modelcontextprotocol.io/introduction).
+
+This MCP server makes on-chain token data, including metadata, balances, transfers, and holder statistics, accessible through a set of MCP tools. Any compatible client can use these tools to fetch and analyze token information through a standardized interface. It connects to The Graph's hosted Token API database, enabling AI assistants to query real-time blockchain data using natural language requests that get translated into optimized SQL queries.
+
+The server itself does not host any language model. It simply converts MCP calls into data look-ups and returns structured results, letting the client's own LLM incorporate the results.
+
+Think of it as a USB-C hub: it standardizes the plug-and-play connection between AI agents and The Graph's Token API data.
+
+## What You Can Do
+
+- Retrieve token metadata including name, symbol, decimals, total supply, and contract address
+- Get token balances for any wallet address holding a supported ERC-20 token
+- Fetch token transfer activity including sender, receiver, amount, and timestamp
+- Identify top holders and analyze token distribution
+- Ask natural language questions about token data without writing smart contract calls
+- Access historical transfer data to analyze token movement over time
+
+The Token MCP server provides [Claude](/ai-suite/token-api-mcp/claude/), [Cline](/ai-suite/token-api-mcp/cline/), and [Cursor](/ai-suite/token-api-mcp/cursor/) with direct, conversational access to onchain token data.
diff --git a/website/src/pages/de/resources/_meta.js b/website/src/pages/de/resources/_meta.js
index aa8e2d0ec6a8..38c56cf56c43 100644
--- a/website/src/pages/de/resources/_meta.js
+++ b/website/src/pages/de/resources/_meta.js
@@ -7,5 +7,4 @@ export default {
   roles: titles.roles ?? '',
   'migration-guides': titles['migration-guides'] ?? '',
   'subgraph-studio-faq': '',
-  'claude-mcp': '',
 }
diff --git a/website/src/pages/de/resources/claude-mcp.mdx b/website/src/pages/de/resources/claude-mcp.mdx
deleted file mode 100644
index 44ed075cffda..000000000000
--- a/website/src/pages/de/resources/claude-mcp.mdx
+++ /dev/null
@@ -1,122 +0,0 @@
----
-title: Claude MCP
----
-
-This guide walks you through configuring Claude Desktop to use The Graph ecosystem's [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) resources: Token API and Subgraph. These integrations allow you to interact with blockchain data through natural language conversations with Claude.
-
-## What You Can Do
-
-With these integrations, you can:
-
-- **Token API**: Access token and wallet information across multiple blockchains
-- **Subgraph**: Find relevant Subgraphs for specific keywords and contracts, explore Subgraph schemas, and execute GraphQL queries
-
-## Prerequisites
-
-- [Node.js](https://nodejs.org/en/download/) installed and available in your path
-- [Claude Desktop](https://claude.ai/download) installed
-- API keys:
-  - Token API key from [The Graph Market](https://thegraph.market/)
-  - Gateway API key from [Subgraph Studio](https://thegraph.com/studio/apikeys/)
-
-## Configuration Steps
-
-### 1. Open Configuration File
-
-Navigate to your `claude_desktop_config.json` file:
-
-> **Claude Desktop** > **Settings** > **Developer** > **Edit Config**
-
-Paths by operating system:
-
-- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
-- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
-- Linux: `.config/Claude/claude_desktop_config.json`
-
-### 2. Add Configuration
-
-Replace the contents of the existing config file with:
-
-```json
-{
-  "mcpServers": {
-    "token-api": {
-      "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
-      "env": {
-        "ACCESS_TOKEN": "ACCESS_TOKEN"
-      }
-    },
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-### 3. Add Your API Keys
-
-Replace:
-
-- `ACCESS_TOKEN` with your Token API key from [The Graph Market](https://thegraph.market/)
-- `GATEWAY_API_KEY` with your Gateway API key from [Subgraph Studio](https://thegraph.com/studio/apikeys/)
-
-### 4. Save and Restart
-
-- Save the configuration file
-- Restart Claude Desktop
-
-### 5. Add The Graph Resources in Claude
-
-After configuration:
-
-1. Start a new conversation in Claude Desktop
-2. Click on the context menu (top right)
-3. Add "Subgraph Server Instructions" as a resource by entering `graphql://subgraph` for Subgraph MCP
-
-> **Important**: You must manually add The Graph resources to your chat context for each conversation where you want to use them.
-
-### 6. Run Queries
-
-Here are some example queries you can try after setting up the resources:
-
-### Subgraph Queries
-
-```
-What are the top pools in Uniswap?
-```
-
-```
-Who are the top Delegators of The Graph Protocol?
-```
-
-```
-Please make a bar chart for the number of active loans in Compound for the last 7 days
-```
-
-### Token API Queries
-
-```
-Show me the current price of ETH
-```
-
-```
-What are the top tokens by market cap on Ethereum?
-```
-
-```
-Analyze this wallet address: 0x...
-```
-
-## Troubleshooting
-
-If you encounter issues:
-
-1. **Verify Node.js Installation**: Ensure Node.js is correctly installed by running `node -v` in your terminal
-2. **Check API Keys**: Verify that your API keys are correctly entered in the configuration file
-3. **Enable Verbose Logging**: Add `--verbose true` to the args array in your configuration to see detailed logs
-4. **Restart Claude Desktop**: After making changes to the configuration, always restart Claude Desktop
diff --git a/website/src/pages/de/subgraphs/_meta.js b/website/src/pages/de/subgraphs/_meta.js
index 4365293ffc72..45841d5f3355 100644
--- a/website/src/pages/de/subgraphs/_meta.js
+++ b/website/src/pages/de/subgraphs/_meta.js
@@ -6,7 +6,6 @@ export default {
   querying: titles.querying ?? '',
   developing: titles.developing ?? '',
   billing: '',
-  mcp: titles.mcp ?? '',
   guides: titles.guides,
   'best-practices': titles['best-practices'],
   'fair-use-policy': '',
diff --git a/website/src/pages/de/subgraphs/mcp/_meta.js b/website/src/pages/de/subgraphs/mcp/_meta.js
deleted file mode 100644
index 8630d4da27b3..000000000000
--- a/website/src/pages/de/subgraphs/mcp/_meta.js
+++ /dev/null
@@ -1,5 +0,0 @@
-export default {
-  claude: '',
-  cline: '',
-  cursor: '',
-}
diff --git a/website/src/pages/de/substreams/_meta.js b/website/src/pages/de/substreams/_meta.js
index a8ee04618eae..658bb8c213c6 100644
--- a/website/src/pages/de/substreams/_meta.js
+++ b/website/src/pages/de/substreams/_meta.js
@@ -5,5 +5,4 @@ export default {
   introduction: '',
   developing: titles.developing ?? '',
   publishing: '',
-  sps: titles.sps ?? '',
 }
diff --git a/website/src/pages/de/token-api/_meta-titles.json b/website/src/pages/de/token-api/_meta-titles.json
index 7ed31e0af95d..3108ecd3ebfd 100644
--- a/website/src/pages/de/token-api/_meta-titles.json
+++ b/website/src/pages/de/token-api/_meta-titles.json
@@ -1,6 +1,7 @@
 {
   "mcp": "MCP",
   "evm": "EVM Endpoints",
+  "svm": "SVM Endpoints",
   "monitoring": "Monitoring Endpoints",
   "faq": "FAQ"
 }
diff --git a/website/src/pages/de/token-api/_meta.js b/website/src/pages/de/token-api/_meta.js
index f67576d7f612..fb7f7334ea0c 100644
--- a/website/src/pages/de/token-api/_meta.js
+++ b/website/src/pages/de/token-api/_meta.js
@@ -2,8 +2,8 @@ import titles from './_meta-titles.json'
 
 export default {
   'quick-start': '',
-  mcp: titles.mcp ?? '',
   evm: titles.evm ?? '',
+  svm: titles.svm ?? '',
   monitoring: titles.monitoring ?? '',
   faq: '',
 }
diff --git a/website/src/pages/de/token-api/mcp/_meta.js b/website/src/pages/de/token-api/mcp/_meta.js
deleted file mode 100644
index 8630d4da27b3..000000000000
--- a/website/src/pages/de/token-api/mcp/_meta.js
+++ /dev/null
@@ -1,5 +0,0 @@
-export default {
-  claude: '',
-  cline: '',
-  cursor: '',
-}
diff --git a/website/src/pages/de/token-api/mcp/claude.mdx b/website/src/pages/de/token-api/mcp/claude.mdx
deleted file mode 100644
index 2e1ddca9cce7..000000000000
--- a/website/src/pages/de/token-api/mcp/claude.mdx
+++ /dev/null
@@ -1,58 +0,0 @@
----
-title: Using Claude Desktop to Access the Token API via MCP
-sidebarTitle: Claude Desktop
----
-
-## Voraussetzungen
-
-- [Claude Desktop](https://claude.ai/download) installed.
-- A [JWT token](/token-api/quick-start) from [The Graph Market](https://thegraph.market/).
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path.
-- The `@pinax/mcp` package requires Node 18+, as it relies on built-in `fetch()` / `Headers`, which are not available in Node 17 or older. You may need to specify an exact path to an up-to-date Node version, or uninstall previous versions of Node to ensure `@pinax/mcp` uses the correct version.
-
-![Screenshot of Claude Desktop's settings panel showing the MCP server configuration option.](/img/claude-preview-token-api.png)
-
-## Konfiguration
-
-Create or edit your `claude_desktop_config.json` file.
-
-> **Settings** > **Developer** > **Edit Config**
-
-- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
-- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
-- Linux: `.config/Claude/claude_desktop_config.json`
-
-```json label="claude_desktop_config.json"
-{
-  "mcpServers": {
-    "token-api": {
-      "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
-      "env": {
-        "ACCESS_TOKEN": "<https://thegraph.market JWT Access Token>"
-      }
-    }
-  }
-}
-```
-
-## Troubleshooting
-
-To enable logs for the MCP, use the `--verbose true` option.
-
-### ENOENT
-
-![Error dialog in Claude Desktop showing 'ENOENT' system error, indicating the npx/bunx command wasn't found in the system path.](/img/claude-ENOENT.png)
-
-Try to use the full path of the command instead:
-
-- Run `which npx` or `which bunx` to get the path of the command.
-- Replace `npx` or `bunx` in the configuration file with the full path (e.g. `/home/user/bin/bunx`).
-
-### Server disconnected
-
-![Connection error notification in Claude Desktop displaying 'Server disconnected' message.](/img/claude-server-disconnect.png)
-
-Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
-
-> You can always have a look at the full logs under `Claude/logs/mcp.log` and `Claude/logs/mcp-server-pinax.log` for more details.
diff --git a/website/src/pages/de/token-api/mcp/cline.mdx b/website/src/pages/de/token-api/mcp/cline.mdx
deleted file mode 100644
index 08d2f943ae4c..000000000000
--- a/website/src/pages/de/token-api/mcp/cline.mdx
+++ /dev/null
@@ -1,52 +0,0 @@
----
-title: Using Cline to Access the Token API via MCP
-sidebarTitle: Cline
----
-
-## Voraussetzungen
-
-- [Cline](https://cline.bot/) installed.
-- A [JWT token](/token-api/quick-start) from [The Graph Market](https://thegraph.market/).
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path.
-- The `@pinax/mcp` package requires Node 18+, as it relies on built-in `fetch()` / `Headers`, which are not available in Node 17 or older. You may need to specify an exact path to an up-to-date Node version, or uninstall previous versions of Node to ensure `@pinax/mcp` uses the correct version.
-
-![Screenshot of Cline's MCP server configuration interface displaying the JSON settings file with mcp-pinax server details visible.](/img/cline-preview-token-api.png)
-
-## Konfiguration
-
-Create or edit your `cline_mcp_settings.json` file.
-
-> **MCP Servers** > **Installed** > **Configure MCP Servers**
-
-```json label="cline_mcp_settings.json"
-{
-  "mcpServers": {
-    "mcp-pinax": {
-      "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
-      "env": {
-        "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
-      }
-    }
-  }
-}
-```
-
-## Troubleshooting
-
-To enable logs for the MCP, use the `--verbose true` option.
-
-### ENOENT
-
-![Cline error dialog showing 'ENOENT' system alert.](/img/cline-error.png)
-
-Try to use the full path of the command instead:
-
-- Run `which npx` or `which bunx` to get the path of the command.
-- Replace `npx` or `bunx` in the configuration file with the full path (e.g. `/home/user/bin/bunx`).
-
-### Server disconnected
-
-![Cline connection error notification displaying server disconnection warning.](/img/cline-missing-variables.png)
-
-Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/de/token-api/mcp/cursor.mdx b/website/src/pages/de/token-api/mcp/cursor.mdx
deleted file mode 100644
index 93fd886ddfbb..000000000000
--- a/website/src/pages/de/token-api/mcp/cursor.mdx
+++ /dev/null
@@ -1,50 +0,0 @@
----
-title: Using Cursor to Access the Token API via MCP
-sidebarTitle: Cursor
----
-
-## Voraussetzungen
-
-- [Cursor](https://www.cursor.com/) installed.
-- A [JWT token](/token-api/quick-start) from [The Graph Market](https://thegraph.market/).
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path.
-- The `@pinax/mcp` package requires Node 18+, as it relies on built-in `fetch()` / `Headers`, which are not available in Node 17 or older. You may need to specify an exact path to an up-to-date Node version, or uninstall previous versions of Node to ensure `@pinax/mcp` uses the correct version.
-
-![Screenshot of Cursor's MCP configuration panel.](/img/cursor-preview-token-api.png)
-
-## Konfiguration
-
-Create or edit your `~/.cursor/mcp.json` file.
-
-> **Cursor Settings** > **MCP** > **Add new global MCP Server**
-
-```json label="mcp.json"
-{
-  "mcpServers": {
-    "mcp-pinax": {
-      "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
-      "env": {
-        "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
-      }
-    }
-  }
-}
-```
-
-## Troubleshooting
-
-![Cursor IDE error notification that reads, "Failed to create client"](/img/cursor-error.png)
-
-To enable logs for the MCP, use the `--verbose true` option.
-
-### ENOENT
-
-Try to use the full path of the command instead:
-
-- Run `which npx` or `which bunx` to get the path of the command.
-- Replace `npx` or `bunx` in the configuration file with the full path (e.g. `/home/user/bin/bunx`).
-
-### Server disconnected
-
-Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/de/token-api/svm/_meta.js b/website/src/pages/de/token-api/svm/_meta.js
new file mode 100644
index 000000000000..1a48b82fcbf1
--- /dev/null
+++ b/website/src/pages/de/token-api/svm/_meta.js
@@ -0,0 +1,5 @@
+export default {
+  'get-balances-svm': '',
+  'get-transfers-svm': '',
+  'get-swaps-svm': '',
+}
diff --git a/website/src/pages/de/token-api/svm/get-balances-svm.mdx b/website/src/pages/de/token-api/svm/get-balances-svm.mdx
new file mode 100644
index 000000000000..c2946c190bf9
--- /dev/null
+++ b/website/src/pages/de/token-api/svm/get-balances-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Balances
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getBalancesSvm
+---
+
+Provides Solana tokens balances by token account address.
diff --git a/website/src/pages/de/token-api/svm/get-swaps-svm.mdx b/website/src/pages/de/token-api/svm/get-swaps-svm.mdx
new file mode 100644
index 000000000000..95282a38ac9f
--- /dev/null
+++ b/website/src/pages/de/token-api/svm/get-swaps-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Swap Events
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getSwapsSvm
+---
+
+Provides Raydium swap events.
diff --git a/website/src/pages/de/token-api/svm/get-transfers-svm.mdx b/website/src/pages/de/token-api/svm/get-transfers-svm.mdx
new file mode 100644
index 000000000000..5335cdddf418
--- /dev/null
+++ b/website/src/pages/de/token-api/svm/get-transfers-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Transfers Events
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getTransfersSvm
+---
+
+Provides SVM transfer events.
diff --git a/website/src/pages/en/token-api/_meta-titles.json b/website/src/pages/en/token-api/_meta-titles.json
index b606a87808a1..d58b9770c3e5 100644
--- a/website/src/pages/en/token-api/_meta-titles.json
+++ b/website/src/pages/en/token-api/_meta-titles.json
@@ -1,5 +1,6 @@
 {
   "evm": "EVM Endpoints",
+  "svm": "SVM Endpoints",
   "monitoring": "Monitoring Endpoints",
   "faq": "FAQ"
 }
diff --git a/website/src/pages/en/token-api/_meta.js b/website/src/pages/en/token-api/_meta.js
index 39b28f89b7b4..fb7f7334ea0c 100644
--- a/website/src/pages/en/token-api/_meta.js
+++ b/website/src/pages/en/token-api/_meta.js
@@ -3,6 +3,7 @@ import titles from './_meta-titles.json'
 export default {
   'quick-start': '',
   evm: titles.evm ?? '',
+  svm: titles.svm ?? '',
   monitoring: titles.monitoring ?? '',
   faq: '',
 }
diff --git a/website/src/pages/en/token-api/svm/_meta.js b/website/src/pages/en/token-api/svm/_meta.js
new file mode 100644
index 000000000000..1a48b82fcbf1
--- /dev/null
+++ b/website/src/pages/en/token-api/svm/_meta.js
@@ -0,0 +1,5 @@
+export default {
+  'get-balances-svm': '',
+  'get-transfers-svm': '',
+  'get-swaps-svm': '',
+}
diff --git a/website/src/pages/en/token-api/svm/get-balances-svm.mdx b/website/src/pages/en/token-api/svm/get-balances-svm.mdx
new file mode 100644
index 000000000000..c2946c190bf9
--- /dev/null
+++ b/website/src/pages/en/token-api/svm/get-balances-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Balances
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getBalancesSvm
+---
+
+Provides Solana tokens balances by token account address.
diff --git a/website/src/pages/en/token-api/svm/get-swaps-svm.mdx b/website/src/pages/en/token-api/svm/get-swaps-svm.mdx
new file mode 100644
index 000000000000..95282a38ac9f
--- /dev/null
+++ b/website/src/pages/en/token-api/svm/get-swaps-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Swap Events
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getSwapsSvm
+---
+
+Provides Raydium swap events.
diff --git a/website/src/pages/en/token-api/svm/get-transfers-svm.mdx b/website/src/pages/en/token-api/svm/get-transfers-svm.mdx
new file mode 100644
index 000000000000..5335cdddf418
--- /dev/null
+++ b/website/src/pages/en/token-api/svm/get-transfers-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Transfers Events
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getTransfersSvm
+---
+
+Provides SVM transfer events.
diff --git a/website/src/pages/es/ai-suite/_meta-titles.json b/website/src/pages/es/ai-suite/_meta-titles.json
new file mode 100644
index 000000000000..5eb482a7092b
--- /dev/null
+++ b/website/src/pages/es/ai-suite/_meta-titles.json
@@ -0,0 +1,6 @@
+{
+  "graph-assistant": "Graph Assistant",
+  "ai-introduction": "The Graph's AI",
+  "subgraph-mcp": "Subgraph MCP",
+  "token-api-mcp": "Token API MCP"
+}
diff --git a/website/src/pages/es/ai-suite/_meta.js b/website/src/pages/es/ai-suite/_meta.js
new file mode 100644
index 000000000000..c9e51dfd35fb
--- /dev/null
+++ b/website/src/pages/es/ai-suite/_meta.js
@@ -0,0 +1,8 @@
+import titles from './_meta-titles.json'
+
+export default {
+  'ai-introduction': titles['ai-introduction'],
+  'graph-assistant': titles['graph-assistant'],
+  'subgraph-mcp': titles['subgraph-mcp'],
+  'token-api-mcp': titles['token-api-mcp'],
+}
diff --git a/website/src/pages/es/ai-suite/ai-introduction.mdx b/website/src/pages/es/ai-suite/ai-introduction.mdx
new file mode 100644
index 000000000000..d25cc9f77358
--- /dev/null
+++ b/website/src/pages/es/ai-suite/ai-introduction.mdx
@@ -0,0 +1,58 @@
+---
+title: The Graph's AI
+---
+
+Build with speed and scale faster with The Graph's AI.
+
+## Using AI on The Graph
+
+Instead of relying on static datasets or centralized APIs, you can now access live blockchain data through our **agentic** app, [Graph Assistant](/ai-suite/graph-assistant/introduction/), and use our AI-native tooling, [Subgraph MCP](/ai-suite/subgraph-mcp/introduction/), and [Token API MCP](/ai-suite/token-api-mcp/introduction/).
+
+### Why Use Onchain Data with AI?
+
+Using onchain data with AI unlocks powerful new ways to interact with and understand blockchain ecosystems.
+
+- **AI for Non-Technical End Users**: AI can turn complex onchain data into accessible insights. Assistants powered by AI enable you to explore and analyze blockchain data without coding.
+- **AI for Developers**: You can use AI to interact directly with The Graph's data through your agents or build AI-powered applications on top of it. This streamlines development and opens up more intuitive, dynamic use cases.
+
+## AI for Non-Technical/End Users
+
+[Graph Assistant](/ai-suite/graph-assistant/introduction/) is a powerful **agentic** application that empowers users to easily interact with blockchain data. Ask questions in simple, natural language and get rich, AI powered insights. Both technical developers and non-technical product teams can move faster, make smarter decisions, and gain a clearer understanding than ever before.
+
+### Benefits of Using Graph Assistant
+
+- **Natural language Input**: You don't need to write complex queries or sift through dashboards. Simply ask your question in plain English and get clear, structured results.
+- **Multi-source support**: Works across multiple Subgraphs and Token API. The Assistant automatically determines which data source to use, so you don't have to switch tools or manage endpoints.
+- **Schema-free access**: You don't need to understand the schema. You can refer to tokens, protocols, dates, or addresses using natural language. The Assistant takes care of the rest.
+
+### Conversational Querying with Graph Assistant
+
+**Example queries:**
+
+- "List the top-5 swaps by USD value in the last 24 hours."
+- "Give me the daily volume on Uniswap."
+- "List the 20 most recently registered .eth names."
+
+[Graph Assistant](/ai-suite/graph-assistant/introduction/) will eventually be a one-stop shop for interacting with The Graph. Right now, it's an agentic AI app that uses state-of-the-art AI techniques, LLMs, and MCPs to understand and answer your questions about [Subgraphs](/subgraphs/developing/subgraphs/) and [Token API](/token-api/quick-start/) data.
+
+## AI for Developers
+
+### Enable Natural Language Access to Onchain Data
+
+[Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) servers connect to Claude, Cline, and Cursor. They enable models to understand, query, and interact with structured onchain data using natural language. MCPs remove the need to write low-level queries or interact with APIs directly.
+
+### Subgraph MCP
+
+The [Subgraph MCP](/ai-suite/subgraph-mcp/introduction/) server connects models to Subgraphs on The Graph Network. It allows language models to explore Subgraph schemas, execute GraphQL queries, find relevant Subgraphs by keyword or contract, and surface usage metrics using natural language.
+
+### Token API MCP
+
+The [Token API MCP](/ai-suite/token-api-mcp/introduction/) MCP server enables models to access onchain token data. It supports querying token metadata, wallet balances, transfer history, and top token holders through simple prompts.
+
+#### Benefits of Using Subgraph and Token API MCPs
+
+- Query Subgraphs and token data using natural language
+- Access GraphQL schemas and token metadata without manual queries
+- Find Subgraphs by keyword or contract and check 30-day usage
+- Retrieve real-time data from The Graph and onchain token sources
+- Get wallet balances, transfer history, and top token holders
diff --git a/website/src/pages/es/ai-suite/graph-assistant/_meta.js b/website/src/pages/es/ai-suite/graph-assistant/_meta.js
new file mode 100644
index 000000000000..74da5e0686a7
--- /dev/null
+++ b/website/src/pages/es/ai-suite/graph-assistant/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  'quick-start': '',
+  introduction: '',
+  'how-to-guide': '',
+  faq: '',
+}
diff --git a/website/src/pages/es/ai-suite/graph-assistant/faq.mdx b/website/src/pages/es/ai-suite/graph-assistant/faq.mdx
new file mode 100644
index 000000000000..8addf9935524
--- /dev/null
+++ b/website/src/pages/es/ai-suite/graph-assistant/faq.mdx
@@ -0,0 +1,26 @@
+---
+title: Graph Assistant FAQ
+sidebarTitle: 'FAQ'
+---
+
+This page summarizes some of the most common questions for developers using Graph Assistant.
+
+1. What is The Graph Assistant?
+
+The Graph Assistant is an AI-powered chat interface that lets you query blockchain data in plain English. Under the hood, it translates your questions into GraphQL calls against Subgraphs and the Token API, then returns results, no coding required.
+
+2. What is an agentic application?
+
+An agentic application combines AI-driven reasoning with external data sources or APIs to take autonomous actions on your behalf. In this case, Graph Assistant acts as an “agent” that interprets your natural-language prompts, builds and dispatches GraphQL queries, and formats the results so that you don't need to write or manage queries yourself.
+
+3. Which networks and data does Graph Assistant support?
+
+The Assistant has access to Subgraphs across multiple chains. If a Subgraph is published to The Graph Network and is being indexed, the Assistant can automatically route queries to it. The Assistant also has access to the Token API on Ethereum Mainnet, BSC, Unichain, Arbitrum-One, Optimism, and Polygon.
+
+4. Is there a usage limit or quota?
+
+Yes, 10 questions per hour.
+
+5. What if the Assistant can't interpret my question?
+
+When the Assistant fails to parse your intent (for example, ambiguous token name, missing context, or an unsupported request), it will prompt you for clarification. For instance, it might ask, “Did you mean XYZ on Ethereum or XYZ on Arbitrum?” or “Please specify a date range for this query.” If you continue to see parsing errors, check that you're using correct token symbols or specifying networks and time frames clearly.
diff --git a/website/src/pages/es/ai-suite/graph-assistant/how-to-guide.mdx b/website/src/pages/es/ai-suite/graph-assistant/how-to-guide.mdx
new file mode 100644
index 000000000000..463130894ad8
--- /dev/null
+++ b/website/src/pages/es/ai-suite/graph-assistant/how-to-guide.mdx
@@ -0,0 +1,56 @@
+---
+title: How To Use The Graph Assistant
+sidebarTitle: 'How-to Guide'
+---
+
+## Overview
+
+You type a natural language question into the chat interface, such as:
+
+```yaml
+'On Uniswap, return the top-10 pools by total value locked in USD.'
+```
+
+> [!IMPORTANT] All users can process 10 free queries per user per hour.
+
+> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the underlying agents. Do not share sensitive, personal, or private information.
+
+### Behind the Scenes
+
+The Assistant:
+
+1. Interprets your intent
+2. Maps it to the correct Subgraphs or Token API endpoint
+3. Executes optimized queries
+4. Returns clean, structured results
+
+You don't need to write queries or understand a Subgraph's schema, you simply ask.
+
+### Example Use Cases
+
+**Protocol Analytics**
+
+- “Compare daily active users on Aave vs. Compound in May 2025.”
+- “Show me the total value locked (TVL) for XYZDAO over the last quarter.”
+
+**Token Insights**
+
+- “What are the top 10 tokens by market cap on Ethereum right now?”
+- “How many XYZ did I receive between May 1 and May 15?”
+
+**Historical Data Retrieval**
+
+- “Fetch the token price history of XYZ for the last six months.”
+- “What was the average gas price on Ethereum during April?”
+
+**Portfolio Monitoring**
+
+- “List my wallet’s current token balances and their USD equivalents.”
+- “Calculate profit/loss on XYZ since xyz date.”
+
+**Cross-Chain Comparison**
+
+- “Show me the 7-day trading volume of XYZ on Ethereum vs. Polygon.”
+- “How many XYZ swaps occurred on Arbitrum yesterday?”
+
+To get started follow the [quickstart](/ai-suite/graph-assistant/quick-start/) and explore its capabilities.
diff --git a/website/src/pages/es/ai-suite/graph-assistant/introduction.mdx b/website/src/pages/es/ai-suite/graph-assistant/introduction.mdx
new file mode 100644
index 000000000000..65fdf0f96028
--- /dev/null
+++ b/website/src/pages/es/ai-suite/graph-assistant/introduction.mdx
@@ -0,0 +1,31 @@
+---
+title: Introduction
+---
+
+> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime.
+
+[Graph Assistant](https://thegraph.com/graph-assistant) (Beta) gives instant, code-free access to blockchain data, transforming natural language into precise, AI-powered queries without the need to code.
+
+## Overview
+
+[Graph Assistant](https://thegraph.com/graph-assistant) is an advanced, [agentic](/en/ai-suite/graph-assistant/faq/) easy-to-use chat interface for querying blockchain data using natural language. Unlike a basic chatbot, Graph Assistant can understand your intent, build complex queries, and execute them automatically. This gives you rich, AI-powered insights from onchain data without writing any code.
+
+- **Automatically** interprets user intent, generates precise queries, executes them via The Graph's Subgraphs and Token API, and presents structured, AI-powered answers without requiring any code.
+- **Removes** the technical complexity found in traditional dashboards or chatbots. It provides composable insights directly from indexed Subgraphs and Token datasets.
+
+## Core Features
+
+| Feature | Description |
+| --- | --- |
+| **Friendly Interface** | Conversational access to blockchain data via natural language. You simply ask questions, the Assistant fetches the answer, and renders results. |
+| **Backed by Subgraphs** | Uses subgraphs to index protocol-specific data like transactions, events, and protocol metrics. |
+| **Backed by Token API** | Uses Token API for token-level information like balances, transfers, and metadata. |
+| **No Setup Required** | No need to configure data sources or write queries. |
+| **Automatic Query Building** | The Assistant performs complex queries such as fetching historical token volumes, protocol analytics, or cross-chain data and handles filtering, pagination, and joins across Subgraphs automatically. |
+
+## Help Shape What's Next
+
+This is in **beta**, and community input is essential. If you have ideas, questions, or run into anything unexpected, we'd love to hear from you:
+
+- Join the community on [Discord](https://discord.com/invite/graphprotocol): Provide feedback and stay in the loop with other builders. You'll be able to join the `#graph-assistant` channel to share your experience directly.
+- Interested in going deeper? Reach out to become a dedicated beta tester so your specific use case can be better supported.
diff --git a/website/src/pages/es/ai-suite/graph-assistant/quick-start.mdx b/website/src/pages/es/ai-suite/graph-assistant/quick-start.mdx
new file mode 100644
index 000000000000..13f8478b8d2b
--- /dev/null
+++ b/website/src/pages/es/ai-suite/graph-assistant/quick-start.mdx
@@ -0,0 +1,44 @@
+---
+title: Quick Start
+---
+
+> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime.
+
+This guide provides step-by-step instructions for getting started with Graph Assistant quickly.
+
+## Step-by Step
+
+### Step 1. Create an Account
+
+Go to: [Graph Assistant](https://thegraph.com/graph-assistant)
+
+- Click Sign Up (or Log In if you already have an account).
+- Use your Google, GitHub, X, email or wallet credentials to log in.
+- No additional setup is required.
+
+### Step 2. Open the Assistant Chat
+
+After logging in:
+
+- You'll see Graph Assistant's interface.
+- At the bottom of the page, you will find a chat input bar. This is where you will interact with the Assistant.
+
+### Step 3: Ask Your First Question
+
+> [!IMPORTANT] All users can process 10 free queries per user per hour.
+
+In the input bar, type a natural-language query (everyday language).
+
+Example:
+
+```yaml
+Show me the 24-hour trading volume of XYZ token on Ethereum
+```
+
+> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the AI interface. Do not share sensitive, personal, or private information.
+
+The Assistant will:
+
+- Digest your question
+- Fetch onchain data using Subgraphs or the Token API
+- Return a clean, formatted response with the data you need
diff --git a/website/src/pages/es/ai-suite/subgraph-mcp/_meta.js b/website/src/pages/es/ai-suite/subgraph-mcp/_meta.js
new file mode 100644
index 000000000000..6f527b4e53e4
--- /dev/null
+++ b/website/src/pages/es/ai-suite/subgraph-mcp/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  introduction: '',
+  claude: '',
+  cline: '',
+  cursor: '',
+}
diff --git a/website/src/pages/es/subgraphs/mcp/claude.mdx b/website/src/pages/es/ai-suite/subgraph-mcp/claude.mdx
similarity index 87%
rename from website/src/pages/es/subgraphs/mcp/claude.mdx
rename to website/src/pages/es/ai-suite/subgraph-mcp/claude.mdx
index 027b272cb942..ff3caa4e3e7f 100644
--- a/website/src/pages/es/subgraphs/mcp/claude.mdx
+++ b/website/src/pages/es/ai-suite/subgraph-mcp/claude.mdx
@@ -2,17 +2,7 @@
 title: Claude Desktop
 ---
 
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Claude to interact directly with Subgraphs on The Graph Network. This integration allows you to find relevant Subgraphs for specific keywords and contracts, explore Subgraph schemas, and execute GraphQL queries—all through natural language conversations with Claude.
-
-## What You Can Do
-
-The Subgraph MCP integration enables you to:
-
-- Access the GraphQL schema for any Subgraph on The Graph Network
-- Execute GraphQL queries against any Subgraph deployment
-- Find top Subgraph deployments for a given keyword or contract address
-- Get 30-day query volume for Subgraph deployments
-- Ask natural language questions about Subgraph data without writing GraphQL queries manually
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data via natural language conversations with Claude.
 
 ## Prerequisites
 
diff --git a/website/src/pages/ar/subgraphs/mcp/cline.mdx b/website/src/pages/es/ai-suite/subgraph-mcp/cline.mdx
similarity index 89%
rename from website/src/pages/ar/subgraphs/mcp/cline.mdx
rename to website/src/pages/es/ai-suite/subgraph-mcp/cline.mdx
index 156221d9a127..eb8044bfe991 100644
--- a/website/src/pages/ar/subgraphs/mcp/cline.mdx
+++ b/website/src/pages/es/ai-suite/subgraph-mcp/cline.mdx
@@ -2,7 +2,7 @@
 title: Cline
 ---
 
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Cline to interact directly with Subgraphs on The Graph Network. This integration allows you to explore Subgraph schemas, execute GraphQL queries, and find relevant Subgraphs for specific contracts—all through natural language conversations with Cline.
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data through natural language conversations with Cline.
 
 ## Prerequisites
 
diff --git a/website/src/pages/es/subgraphs/mcp/cursor.mdx b/website/src/pages/es/ai-suite/subgraph-mcp/cursor.mdx
similarity index 88%
rename from website/src/pages/es/subgraphs/mcp/cursor.mdx
rename to website/src/pages/es/ai-suite/subgraph-mcp/cursor.mdx
index 298f43ece048..6291caf4b06b 100644
--- a/website/src/pages/es/subgraphs/mcp/cursor.mdx
+++ b/website/src/pages/es/ai-suite/subgraph-mcp/cursor.mdx
@@ -2,7 +2,7 @@
 title: Cursor
 ---
 
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Cursor to interact directly with Subgraphs on The Graph Network. This integration allows you to explore Subgraph schemas, execute GraphQL queries, and find relevant Subgraphs for specific contracts—all through natural language conversations with Cursor.
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data through natural language conversations with Cline.
 
 ## Prerequisites
 
diff --git a/website/src/pages/es/ai-suite/subgraph-mcp/introduction.mdx b/website/src/pages/es/ai-suite/subgraph-mcp/introduction.mdx
new file mode 100644
index 000000000000..da1272cf9a36
--- /dev/null
+++ b/website/src/pages/es/ai-suite/subgraph-mcp/introduction.mdx
@@ -0,0 +1,22 @@
+---
+title: Subgraph MCP Introduction
+sidebarTitle: 'Introduction'
+---
+
+Subgraph MCP server is an open-source implementation of [Anthropic's Model Context Protocol](https://modelcontextprotocol.io/introduction).
+
+It presents The Graph's Subgraph data through a set of MCP tools that any MCP-compatible client can call. With these tools, clients can search for relevant Subgraphs, inspect GraphQL schemas, and run queries against specific deployments on The Graph Network all within a single, standardized interface.
+
+The server itself does not hold a language model. Instead, it translates incoming MCP requests into Subgraph queries and returns the structured results, allowing the client's LLM to transform a natural-language prompt into actionable blockchain data.
+
+Think of it as a USB-C hub: it standardizes the plug-and-play connection between AI agents and The Graph's Subgraph ecosystem.
+
+## What You Can Do
+
+- Access GraphQL schemas for any Subgraph on The Graph Network
+- Run GraphQL queries on any Subgraph deployment
+- Discover top Subgraph deployments by keyword or contract address
+- Retrieve 30-day query volumes for Subgraph deployments
+- Ask questions about Subgraph data without writing GraphQL manually
+
+The Subgraph MCP server allows smooth integration with [Claude](/ai-suite/subgraph-mcp/claude/), [Cline](/ai-suite/subgraph-mcp/cline/), or [Cursor](/ai-suite/subgraph-mcp/cursor/), making blockchain data queries with The Graph Network a conversational experience.
diff --git a/website/src/pages/es/ai-suite/token-api-mcp/_meta.js b/website/src/pages/es/ai-suite/token-api-mcp/_meta.js
new file mode 100644
index 000000000000..6f527b4e53e4
--- /dev/null
+++ b/website/src/pages/es/ai-suite/token-api-mcp/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  introduction: '',
+  claude: '',
+  cline: '',
+  cursor: '',
+}
diff --git a/website/src/pages/nl/token-api/mcp/claude.mdx b/website/src/pages/es/ai-suite/token-api-mcp/claude.mdx
similarity index 100%
rename from website/src/pages/nl/token-api/mcp/claude.mdx
rename to website/src/pages/es/ai-suite/token-api-mcp/claude.mdx
diff --git a/website/src/pages/nl/token-api/mcp/cline.mdx b/website/src/pages/es/ai-suite/token-api-mcp/cline.mdx
similarity index 100%
rename from website/src/pages/nl/token-api/mcp/cline.mdx
rename to website/src/pages/es/ai-suite/token-api-mcp/cline.mdx
diff --git a/website/src/pages/nl/token-api/mcp/cursor.mdx b/website/src/pages/es/ai-suite/token-api-mcp/cursor.mdx
similarity index 100%
rename from website/src/pages/nl/token-api/mcp/cursor.mdx
rename to website/src/pages/es/ai-suite/token-api-mcp/cursor.mdx
diff --git a/website/src/pages/es/ai-suite/token-api-mcp/introduction.mdx b/website/src/pages/es/ai-suite/token-api-mcp/introduction.mdx
new file mode 100644
index 000000000000..b61ad0a1c485
--- /dev/null
+++ b/website/src/pages/es/ai-suite/token-api-mcp/introduction.mdx
@@ -0,0 +1,23 @@
+---
+title: Token API MCP Introduction
+sidebarTitle: 'Introduction'
+---
+
+Token API MCP server is an open-source implementation of [Anthropic's Model Context Protocol](https://modelcontextprotocol.io/introduction).
+
+This MCP server makes on-chain token data, including metadata, balances, transfers, and holder statistics, accessible through a set of MCP tools. Any compatible client can use these tools to fetch and analyze token information through a standardized interface. It connects to The Graph's hosted Token API database, enabling AI assistants to query real-time blockchain data using natural language requests that get translated into optimized SQL queries.
+
+The server itself does not host any language model. It simply converts MCP calls into data look-ups and returns structured results, letting the client's own LLM incorporate the results.
+
+Think of it as a USB-C hub: it standardizes the plug-and-play connection between AI agents and The Graph's Token API data.
+
+## What You Can Do
+
+- Retrieve token metadata including name, symbol, decimals, total supply, and contract address
+- Get token balances for any wallet address holding a supported ERC-20 token
+- Fetch token transfer activity including sender, receiver, amount, and timestamp
+- Identify top holders and analyze token distribution
+- Ask natural language questions about token data without writing smart contract calls
+- Access historical transfer data to analyze token movement over time
+
+The Token MCP server provides [Claude](/ai-suite/token-api-mcp/claude/), [Cline](/ai-suite/token-api-mcp/cline/), and [Cursor](/ai-suite/token-api-mcp/cursor/) with direct, conversational access to onchain token data.
diff --git a/website/src/pages/es/resources/_meta.js b/website/src/pages/es/resources/_meta.js
index aa8e2d0ec6a8..38c56cf56c43 100644
--- a/website/src/pages/es/resources/_meta.js
+++ b/website/src/pages/es/resources/_meta.js
@@ -7,5 +7,4 @@ export default {
   roles: titles.roles ?? '',
   'migration-guides': titles['migration-guides'] ?? '',
   'subgraph-studio-faq': '',
-  'claude-mcp': '',
 }
diff --git a/website/src/pages/es/resources/claude-mcp.mdx b/website/src/pages/es/resources/claude-mcp.mdx
deleted file mode 100644
index 44ed075cffda..000000000000
--- a/website/src/pages/es/resources/claude-mcp.mdx
+++ /dev/null
@@ -1,122 +0,0 @@
----
-title: Claude MCP
----
-
-This guide walks you through configuring Claude Desktop to use The Graph ecosystem's [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) resources: Token API and Subgraph. These integrations allow you to interact with blockchain data through natural language conversations with Claude.
-
-## What You Can Do
-
-With these integrations, you can:
-
-- **Token API**: Access token and wallet information across multiple blockchains
-- **Subgraph**: Find relevant Subgraphs for specific keywords and contracts, explore Subgraph schemas, and execute GraphQL queries
-
-## Prerequisites
-
-- [Node.js](https://nodejs.org/en/download/) installed and available in your path
-- [Claude Desktop](https://claude.ai/download) installed
-- API keys:
-  - Token API key from [The Graph Market](https://thegraph.market/)
-  - Gateway API key from [Subgraph Studio](https://thegraph.com/studio/apikeys/)
-
-## Configuration Steps
-
-### 1. Open Configuration File
-
-Navigate to your `claude_desktop_config.json` file:
-
-> **Claude Desktop** > **Settings** > **Developer** > **Edit Config**
-
-Paths by operating system:
-
-- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
-- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
-- Linux: `.config/Claude/claude_desktop_config.json`
-
-### 2. Add Configuration
-
-Replace the contents of the existing config file with:
-
-```json
-{
-  "mcpServers": {
-    "token-api": {
-      "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
-      "env": {
-        "ACCESS_TOKEN": "ACCESS_TOKEN"
-      }
-    },
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-### 3. Add Your API Keys
-
-Replace:
-
-- `ACCESS_TOKEN` with your Token API key from [The Graph Market](https://thegraph.market/)
-- `GATEWAY_API_KEY` with your Gateway API key from [Subgraph Studio](https://thegraph.com/studio/apikeys/)
-
-### 4. Save and Restart
-
-- Save the configuration file
-- Restart Claude Desktop
-
-### 5. Add The Graph Resources in Claude
-
-After configuration:
-
-1. Start a new conversation in Claude Desktop
-2. Click on the context menu (top right)
-3. Add "Subgraph Server Instructions" as a resource by entering `graphql://subgraph` for Subgraph MCP
-
-> **Important**: You must manually add The Graph resources to your chat context for each conversation where you want to use them.
-
-### 6. Run Queries
-
-Here are some example queries you can try after setting up the resources:
-
-### Subgraph Queries
-
-```
-What are the top pools in Uniswap?
-```
-
-```
-Who are the top Delegators of The Graph Protocol?
-```
-
-```
-Please make a bar chart for the number of active loans in Compound for the last 7 days
-```
-
-### Token API Queries
-
-```
-Show me the current price of ETH
-```
-
-```
-What are the top tokens by market cap on Ethereum?
-```
-
-```
-Analyze this wallet address: 0x...
-```
-
-## Troubleshooting
-
-If you encounter issues:
-
-1. **Verify Node.js Installation**: Ensure Node.js is correctly installed by running `node -v` in your terminal
-2. **Check API Keys**: Verify that your API keys are correctly entered in the configuration file
-3. **Enable Verbose Logging**: Add `--verbose true` to the args array in your configuration to see detailed logs
-4. **Restart Claude Desktop**: After making changes to the configuration, always restart Claude Desktop
diff --git a/website/src/pages/es/subgraphs/_meta.js b/website/src/pages/es/subgraphs/_meta.js
index 4365293ffc72..45841d5f3355 100644
--- a/website/src/pages/es/subgraphs/_meta.js
+++ b/website/src/pages/es/subgraphs/_meta.js
@@ -6,7 +6,6 @@ export default {
   querying: titles.querying ?? '',
   developing: titles.developing ?? '',
   billing: '',
-  mcp: titles.mcp ?? '',
   guides: titles.guides,
   'best-practices': titles['best-practices'],
   'fair-use-policy': '',
diff --git a/website/src/pages/es/subgraphs/mcp/_meta.js b/website/src/pages/es/subgraphs/mcp/_meta.js
deleted file mode 100644
index 8630d4da27b3..000000000000
--- a/website/src/pages/es/subgraphs/mcp/_meta.js
+++ /dev/null
@@ -1,5 +0,0 @@
-export default {
-  claude: '',
-  cline: '',
-  cursor: '',
-}
diff --git a/website/src/pages/es/substreams/_meta.js b/website/src/pages/es/substreams/_meta.js
index a8ee04618eae..658bb8c213c6 100644
--- a/website/src/pages/es/substreams/_meta.js
+++ b/website/src/pages/es/substreams/_meta.js
@@ -5,5 +5,4 @@ export default {
   introduction: '',
   developing: titles.developing ?? '',
   publishing: '',
-  sps: titles.sps ?? '',
 }
diff --git a/website/src/pages/es/token-api/_meta-titles.json b/website/src/pages/es/token-api/_meta-titles.json
index 7ed31e0af95d..3108ecd3ebfd 100644
--- a/website/src/pages/es/token-api/_meta-titles.json
+++ b/website/src/pages/es/token-api/_meta-titles.json
@@ -1,6 +1,7 @@
 {
   "mcp": "MCP",
   "evm": "EVM Endpoints",
+  "svm": "SVM Endpoints",
   "monitoring": "Monitoring Endpoints",
   "faq": "FAQ"
 }
diff --git a/website/src/pages/es/token-api/_meta.js b/website/src/pages/es/token-api/_meta.js
index f67576d7f612..fb7f7334ea0c 100644
--- a/website/src/pages/es/token-api/_meta.js
+++ b/website/src/pages/es/token-api/_meta.js
@@ -2,8 +2,8 @@ import titles from './_meta-titles.json'
 
 export default {
   'quick-start': '',
-  mcp: titles.mcp ?? '',
   evm: titles.evm ?? '',
+  svm: titles.svm ?? '',
   monitoring: titles.monitoring ?? '',
   faq: '',
 }
diff --git a/website/src/pages/es/token-api/mcp/_meta.js b/website/src/pages/es/token-api/mcp/_meta.js
deleted file mode 100644
index 8630d4da27b3..000000000000
--- a/website/src/pages/es/token-api/mcp/_meta.js
+++ /dev/null
@@ -1,5 +0,0 @@
-export default {
-  claude: '',
-  cline: '',
-  cursor: '',
-}
diff --git a/website/src/pages/es/token-api/svm/_meta.js b/website/src/pages/es/token-api/svm/_meta.js
new file mode 100644
index 000000000000..1a48b82fcbf1
--- /dev/null
+++ b/website/src/pages/es/token-api/svm/_meta.js
@@ -0,0 +1,5 @@
+export default {
+  'get-balances-svm': '',
+  'get-transfers-svm': '',
+  'get-swaps-svm': '',
+}
diff --git a/website/src/pages/es/token-api/svm/get-balances-svm.mdx b/website/src/pages/es/token-api/svm/get-balances-svm.mdx
new file mode 100644
index 000000000000..c2946c190bf9
--- /dev/null
+++ b/website/src/pages/es/token-api/svm/get-balances-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Balances
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getBalancesSvm
+---
+
+Provides Solana tokens balances by token account address.
diff --git a/website/src/pages/es/token-api/svm/get-swaps-svm.mdx b/website/src/pages/es/token-api/svm/get-swaps-svm.mdx
new file mode 100644
index 000000000000..95282a38ac9f
--- /dev/null
+++ b/website/src/pages/es/token-api/svm/get-swaps-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Swap Events
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getSwapsSvm
+---
+
+Provides Raydium swap events.
diff --git a/website/src/pages/es/token-api/svm/get-transfers-svm.mdx b/website/src/pages/es/token-api/svm/get-transfers-svm.mdx
new file mode 100644
index 000000000000..5335cdddf418
--- /dev/null
+++ b/website/src/pages/es/token-api/svm/get-transfers-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Transfers Events
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getTransfersSvm
+---
+
+Provides SVM transfer events.
diff --git a/website/src/pages/fr/ai-suite/_meta-titles.json b/website/src/pages/fr/ai-suite/_meta-titles.json
new file mode 100644
index 000000000000..5eb482a7092b
--- /dev/null
+++ b/website/src/pages/fr/ai-suite/_meta-titles.json
@@ -0,0 +1,6 @@
+{
+  "graph-assistant": "Graph Assistant",
+  "ai-introduction": "The Graph's AI",
+  "subgraph-mcp": "Subgraph MCP",
+  "token-api-mcp": "Token API MCP"
+}
diff --git a/website/src/pages/fr/ai-suite/_meta.js b/website/src/pages/fr/ai-suite/_meta.js
new file mode 100644
index 000000000000..c9e51dfd35fb
--- /dev/null
+++ b/website/src/pages/fr/ai-suite/_meta.js
@@ -0,0 +1,8 @@
+import titles from './_meta-titles.json'
+
+export default {
+  'ai-introduction': titles['ai-introduction'],
+  'graph-assistant': titles['graph-assistant'],
+  'subgraph-mcp': titles['subgraph-mcp'],
+  'token-api-mcp': titles['token-api-mcp'],
+}
diff --git a/website/src/pages/fr/ai-suite/ai-introduction.mdx b/website/src/pages/fr/ai-suite/ai-introduction.mdx
new file mode 100644
index 000000000000..d25cc9f77358
--- /dev/null
+++ b/website/src/pages/fr/ai-suite/ai-introduction.mdx
@@ -0,0 +1,58 @@
+---
+title: The Graph's AI
+---
+
+Build with speed and scale faster with The Graph's AI.
+
+## Using AI on The Graph
+
+Instead of relying on static datasets or centralized APIs, you can now access live blockchain data through our **agentic** app, [Graph Assistant](/ai-suite/graph-assistant/introduction/), and use our AI-native tooling, [Subgraph MCP](/ai-suite/subgraph-mcp/introduction/), and [Token API MCP](/ai-suite/token-api-mcp/introduction/).
+
+### Why Use Onchain Data with AI?
+
+Using onchain data with AI unlocks powerful new ways to interact with and understand blockchain ecosystems.
+
+- **AI for Non-Technical End Users**: AI can turn complex onchain data into accessible insights. Assistants powered by AI enable you to explore and analyze blockchain data without coding.
+- **AI for Developers**: You can use AI to interact directly with The Graph's data through your agents or build AI-powered applications on top of it. This streamlines development and opens up more intuitive, dynamic use cases.
+
+## AI for Non-Technical/End Users
+
+[Graph Assistant](/ai-suite/graph-assistant/introduction/) is a powerful **agentic** application that empowers users to easily interact with blockchain data. Ask questions in simple, natural language and get rich, AI powered insights. Both technical developers and non-technical product teams can move faster, make smarter decisions, and gain a clearer understanding than ever before.
+
+### Benefits of Using Graph Assistant
+
+- **Natural language Input**: You don't need to write complex queries or sift through dashboards. Simply ask your question in plain English and get clear, structured results.
+- **Multi-source support**: Works across multiple Subgraphs and Token API. The Assistant automatically determines which data source to use, so you don't have to switch tools or manage endpoints.
+- **Schema-free access**: You don't need to understand the schema. You can refer to tokens, protocols, dates, or addresses using natural language. The Assistant takes care of the rest.
+
+### Conversational Querying with Graph Assistant
+
+**Example queries:**
+
+- "List the top-5 swaps by USD value in the last 24 hours."
+- "Give me the daily volume on Uniswap."
+- "List the 20 most recently registered .eth names."
+
+[Graph Assistant](/ai-suite/graph-assistant/introduction/) will eventually be a one-stop shop for interacting with The Graph. Right now, it's an agentic AI app that uses state-of-the-art AI techniques, LLMs, and MCPs to understand and answer your questions about [Subgraphs](/subgraphs/developing/subgraphs/) and [Token API](/token-api/quick-start/) data.
+
+## AI for Developers
+
+### Enable Natural Language Access to Onchain Data
+
+[Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) servers connect to Claude, Cline, and Cursor. They enable models to understand, query, and interact with structured onchain data using natural language. MCPs remove the need to write low-level queries or interact with APIs directly.
+
+### Subgraph MCP
+
+The [Subgraph MCP](/ai-suite/subgraph-mcp/introduction/) server connects models to Subgraphs on The Graph Network. It allows language models to explore Subgraph schemas, execute GraphQL queries, find relevant Subgraphs by keyword or contract, and surface usage metrics using natural language.
+
+### Token API MCP
+
+The [Token API MCP](/ai-suite/token-api-mcp/introduction/) MCP server enables models to access onchain token data. It supports querying token metadata, wallet balances, transfer history, and top token holders through simple prompts.
+
+#### Benefits of Using Subgraph and Token API MCPs
+
+- Query Subgraphs and token data using natural language
+- Access GraphQL schemas and token metadata without manual queries
+- Find Subgraphs by keyword or contract and check 30-day usage
+- Retrieve real-time data from The Graph and onchain token sources
+- Get wallet balances, transfer history, and top token holders
diff --git a/website/src/pages/fr/ai-suite/graph-assistant/_meta.js b/website/src/pages/fr/ai-suite/graph-assistant/_meta.js
new file mode 100644
index 000000000000..74da5e0686a7
--- /dev/null
+++ b/website/src/pages/fr/ai-suite/graph-assistant/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  'quick-start': '',
+  introduction: '',
+  'how-to-guide': '',
+  faq: '',
+}
diff --git a/website/src/pages/fr/ai-suite/graph-assistant/faq.mdx b/website/src/pages/fr/ai-suite/graph-assistant/faq.mdx
new file mode 100644
index 000000000000..8addf9935524
--- /dev/null
+++ b/website/src/pages/fr/ai-suite/graph-assistant/faq.mdx
@@ -0,0 +1,26 @@
+---
+title: Graph Assistant FAQ
+sidebarTitle: 'FAQ'
+---
+
+This page summarizes some of the most common questions for developers using Graph Assistant.
+
+1. What is The Graph Assistant?
+
+The Graph Assistant is an AI-powered chat interface that lets you query blockchain data in plain English. Under the hood, it translates your questions into GraphQL calls against Subgraphs and the Token API, then returns results, no coding required.
+
+2. What is an agentic application?
+
+An agentic application combines AI-driven reasoning with external data sources or APIs to take autonomous actions on your behalf. In this case, Graph Assistant acts as an “agent” that interprets your natural-language prompts, builds and dispatches GraphQL queries, and formats the results so that you don't need to write or manage queries yourself.
+
+3. Which networks and data does Graph Assistant support?
+
+The Assistant has access to Subgraphs across multiple chains. If a Subgraph is published to The Graph Network and is being indexed, the Assistant can automatically route queries to it. The Assistant also has access to the Token API on Ethereum Mainnet, BSC, Unichain, Arbitrum-One, Optimism, and Polygon.
+
+4. Is there a usage limit or quota?
+
+Yes, 10 questions per hour.
+
+5. What if the Assistant can't interpret my question?
+
+When the Assistant fails to parse your intent (for example, ambiguous token name, missing context, or an unsupported request), it will prompt you for clarification. For instance, it might ask, “Did you mean XYZ on Ethereum or XYZ on Arbitrum?” or “Please specify a date range for this query.” If you continue to see parsing errors, check that you're using correct token symbols or specifying networks and time frames clearly.
diff --git a/website/src/pages/fr/ai-suite/graph-assistant/how-to-guide.mdx b/website/src/pages/fr/ai-suite/graph-assistant/how-to-guide.mdx
new file mode 100644
index 000000000000..463130894ad8
--- /dev/null
+++ b/website/src/pages/fr/ai-suite/graph-assistant/how-to-guide.mdx
@@ -0,0 +1,56 @@
+---
+title: How To Use The Graph Assistant
+sidebarTitle: 'How-to Guide'
+---
+
+## Overview
+
+You type a natural language question into the chat interface, such as:
+
+```yaml
+'On Uniswap, return the top-10 pools by total value locked in USD.'
+```
+
+> [!IMPORTANT] All users can process 10 free queries per user per hour.
+
+> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the underlying agents. Do not share sensitive, personal, or private information.
+
+### Behind the Scenes
+
+The Assistant:
+
+1. Interprets your intent
+2. Maps it to the correct Subgraphs or Token API endpoint
+3. Executes optimized queries
+4. Returns clean, structured results
+
+You don't need to write queries or understand a Subgraph's schema, you simply ask.
+
+### Example Use Cases
+
+**Protocol Analytics**
+
+- “Compare daily active users on Aave vs. Compound in May 2025.”
+- “Show me the total value locked (TVL) for XYZDAO over the last quarter.”
+
+**Token Insights**
+
+- “What are the top 10 tokens by market cap on Ethereum right now?”
+- “How many XYZ did I receive between May 1 and May 15?”
+
+**Historical Data Retrieval**
+
+- “Fetch the token price history of XYZ for the last six months.”
+- “What was the average gas price on Ethereum during April?”
+
+**Portfolio Monitoring**
+
+- “List my wallet’s current token balances and their USD equivalents.”
+- “Calculate profit/loss on XYZ since xyz date.”
+
+**Cross-Chain Comparison**
+
+- “Show me the 7-day trading volume of XYZ on Ethereum vs. Polygon.”
+- “How many XYZ swaps occurred on Arbitrum yesterday?”
+
+To get started follow the [quickstart](/ai-suite/graph-assistant/quick-start/) and explore its capabilities.
diff --git a/website/src/pages/fr/ai-suite/graph-assistant/introduction.mdx b/website/src/pages/fr/ai-suite/graph-assistant/introduction.mdx
new file mode 100644
index 000000000000..65fdf0f96028
--- /dev/null
+++ b/website/src/pages/fr/ai-suite/graph-assistant/introduction.mdx
@@ -0,0 +1,31 @@
+---
+title: Introduction
+---
+
+> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime.
+
+[Graph Assistant](https://thegraph.com/graph-assistant) (Beta) gives instant, code-free access to blockchain data, transforming natural language into precise, AI-powered queries without the need to code.
+
+## Overview
+
+[Graph Assistant](https://thegraph.com/graph-assistant) is an advanced, [agentic](/en/ai-suite/graph-assistant/faq/) easy-to-use chat interface for querying blockchain data using natural language. Unlike a basic chatbot, Graph Assistant can understand your intent, build complex queries, and execute them automatically. This gives you rich, AI-powered insights from onchain data without writing any code.
+
+- **Automatically** interprets user intent, generates precise queries, executes them via The Graph's Subgraphs and Token API, and presents structured, AI-powered answers without requiring any code.
+- **Removes** the technical complexity found in traditional dashboards or chatbots. It provides composable insights directly from indexed Subgraphs and Token datasets.
+
+## Core Features
+
+| Feature | Description |
+| --- | --- |
+| **Friendly Interface** | Conversational access to blockchain data via natural language. You simply ask questions, the Assistant fetches the answer, and renders results. |
+| **Backed by Subgraphs** | Uses subgraphs to index protocol-specific data like transactions, events, and protocol metrics. |
+| **Backed by Token API** | Uses Token API for token-level information like balances, transfers, and metadata. |
+| **No Setup Required** | No need to configure data sources or write queries. |
+| **Automatic Query Building** | The Assistant performs complex queries such as fetching historical token volumes, protocol analytics, or cross-chain data and handles filtering, pagination, and joins across Subgraphs automatically. |
+
+## Help Shape What's Next
+
+This is in **beta**, and community input is essential. If you have ideas, questions, or run into anything unexpected, we'd love to hear from you:
+
+- Join the community on [Discord](https://discord.com/invite/graphprotocol): Provide feedback and stay in the loop with other builders. You'll be able to join the `#graph-assistant` channel to share your experience directly.
+- Interested in going deeper? Reach out to become a dedicated beta tester so your specific use case can be better supported.
diff --git a/website/src/pages/fr/ai-suite/graph-assistant/quick-start.mdx b/website/src/pages/fr/ai-suite/graph-assistant/quick-start.mdx
new file mode 100644
index 000000000000..13f8478b8d2b
--- /dev/null
+++ b/website/src/pages/fr/ai-suite/graph-assistant/quick-start.mdx
@@ -0,0 +1,44 @@
+---
+title: Quick Start
+---
+
+> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime.
+
+This guide provides step-by-step instructions for getting started with Graph Assistant quickly.
+
+## Step-by Step
+
+### Step 1. Create an Account
+
+Go to: [Graph Assistant](https://thegraph.com/graph-assistant)
+
+- Click Sign Up (or Log In if you already have an account).
+- Use your Google, GitHub, X, email or wallet credentials to log in.
+- No additional setup is required.
+
+### Step 2. Open the Assistant Chat
+
+After logging in:
+
+- You'll see Graph Assistant's interface.
+- At the bottom of the page, you will find a chat input bar. This is where you will interact with the Assistant.
+
+### Step 3: Ask Your First Question
+
+> [!IMPORTANT] All users can process 10 free queries per user per hour.
+
+In the input bar, type a natural-language query (everyday language).
+
+Example:
+
+```yaml
+Show me the 24-hour trading volume of XYZ token on Ethereum
+```
+
+> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the AI interface. Do not share sensitive, personal, or private information.
+
+The Assistant will:
+
+- Digest your question
+- Fetch onchain data using Subgraphs or the Token API
+- Return a clean, formatted response with the data you need
diff --git a/website/src/pages/fr/ai-suite/subgraph-mcp/_meta.js b/website/src/pages/fr/ai-suite/subgraph-mcp/_meta.js
new file mode 100644
index 000000000000..6f527b4e53e4
--- /dev/null
+++ b/website/src/pages/fr/ai-suite/subgraph-mcp/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  introduction: '',
+  claude: '',
+  cline: '',
+  cursor: '',
+}
diff --git a/website/src/pages/fr/ai-suite/subgraph-mcp/claude.mdx b/website/src/pages/fr/ai-suite/subgraph-mcp/claude.mdx
new file mode 100644
index 000000000000..ff3caa4e3e7f
--- /dev/null
+++ b/website/src/pages/fr/ai-suite/subgraph-mcp/claude.mdx
@@ -0,0 +1,169 @@
+---
+title: Claude Desktop
+---
+
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data via natural language conversations with Claude.
+
+## Prerequisites
+
+- [Node.js](https://nodejs.org/en) installed and available in your path
+- [Claude Desktop](https://claude.ai/download) installed (latest version)
+- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
+
+## Installation Options
+
+### Option 1: Using npx (Recommended)
+
+#### Configuration Steps using npx
+
+#### 1. Open Configuration File
+
+Navigate to your `claude_desktop_config.json` file:
+
+> **Settings** > **Developer** > **Edit Config**
+
+- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
+- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
+- Linux: `.config/Claude/claude_desktop_config.json`
+
+#### 2. Add Configuration
+
+Paste the following settings into your config file:
+
+```json
+{
+  "mcpServers": {
+    "subgraph": {
+      "command": "npx",
+      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
+      "env": {
+        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
+      }
+    }
+  }
+}
+```
+
+#### 3. Add Your Gateway API Key
+
+Replace `GATEWAY_API_KEY` with your API key from [Subgraph Studio](https://thegraph.com/studio/).
+
+#### 4. Save and Restart
+
+Once you've entered your Gateway API key into your settings, save the file and restart Claude Desktop.
+
+### Option 2: Building from Source
+
+#### Requirements
+
+- Rust (latest stable version recommended: 1.75+)
+  ```bash
+  curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
+  ```
+  Follow the on-screen instructions. For other platforms, see the [official Rust installation guide](https://www.rust-lang.org/tools/install).
+
+#### Installation Steps
+
+1. **Clone and Build the Repository**
+
+   ```bash
+   git clone git@github.com:graphops/subgraph-mcp.git
+   cd subgraph-mcp
+   cargo build --release
+   ```
+
+2. **Find the Command Path**
+
+   After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory.
+   - Navigate to your `subgraph-mcp` directory in terminal
+   - Run `pwd` to get the full path
+   - Combine the output with `/target/release/subgraph-mcp`
+
+3. **Configure Claude Desktop**
+
+   Open your `claude_desktop_config.json` file as described above and add:
+
+   ```json
+   {
+     "mcpServers": {
+       "subgraph": {
+         "command": "/path/to/your/subgraph-mcp/target/release/subgraph-mcp",
+         "env": {
+           "GATEWAY_API_KEY": "your-api-key-here"
+         }
+       }
+     }
+   }
+   ```
+
+   Replace `/path/to/your/subgraph-mcp/target/release/subgraph-mcp` with the actual path to the compiled binary.
+
+## Using The Graph Resource in Claude
+
+After configuring Claude Desktop:
+
+1. Restart Claude Desktop
+2. Start a new conversation
+3. Click on the context menu (top right)
+4. Add "Subgraph Server Instructions" as a resource by adding `graphql://subgraph` to your chat context
+
+> **Important**: Claude Desktop may not automatically utilize the Subgraph MCP. You must manually add "Subgraph Server Instructions" resource to your chat context for each conversation where you want to use it.
+
+## Troubleshooting
+
+To enable logs for the MCP when using the npx option, add the `--verbose true` option to your args array.
+
+## Available Subgraph Tools and Usage
+
+The Subgraph MCP provides several tools for interacting with Subgraphs:
+
+### Schema Retrieval Tools
+
+- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
+- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
+- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
+
+### Query Execution Tools
+
+- **Execute query by deployment ID/IPFS hash**: Run GraphQL queries against specific, immutable deployments
+- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
+
+### Discovery Tools
+
+- **Search subgraphs by keyword**: Find subgraphs by keyword in their display names, ordered by signal
+- **Get deployment 30-day query counts**: Get aggregate query count over the last 30 days for multiple subgraph deployments
+- **Get top Subgraph deployments for a contract**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain, ordered by query fees
+
+## Key Identifier Types
+
+- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a subgraph. Use `execute_query_by_subgraph_id` or `get_schema_by_subgraph_id`.
+- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment. Use `execute_query_by_deployment_id` or `get_schema_by_deployment_id`.
+- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific, immutable deployment. Use `execute_query_by_deployment_id` (the gateway treats it like a deployment ID for querying) or `get_schema_by_ipfs_hash`.
+
+## Benefits of Natural Language Queries
+
+One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Claude will:
+
+1. Understand your goal (lookup, find Subgraphs, query, get schema)
+2. Find relevant deployments if needed
+3. Fetch and interpret the Subgraph schema
+4. Convert your question into an appropriate GraphQL query
+5. Execute the query and present the results in a readable format
+
+### Example Natural Language Queries
+
+```
+What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
+```
+
+```
+Which tokens have the highest market cap in this Subgraph?
+```
+
+```
+Show me the most recent 5 swaps for the USDC/ETH pair
+```
+
+```
+Find the top subgraphs for contract 0x1f98431c8ad98523631ae4a59f267346ea31f984 on arbitrum-one
+```
diff --git a/website/src/pages/fr/ai-suite/subgraph-mcp/cline.mdx b/website/src/pages/fr/ai-suite/subgraph-mcp/cline.mdx
new file mode 100644
index 000000000000..eb8044bfe991
--- /dev/null
+++ b/website/src/pages/fr/ai-suite/subgraph-mcp/cline.mdx
@@ -0,0 +1,99 @@
+---
+title: Cline
+---
+
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data through natural language conversations with Cline.
+
+## Prerequisites
+
+- [Cline](https://cline.bot/) installed (latest version)
+- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
+
+## Configuration Steps
+
+### 1. Open Configuration File
+
+Create or edit your `cline_mcp_settings.json` file.
+
+> **MCP Servers** > **Installed** > **Configure MCP Servers**
+
+### 2. Add Configuration
+
+```json
+{
+  "mcpServers": {
+    "subgraph": {
+      "command": "npx",
+      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
+      "env": {
+        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
+      }
+    }
+  }
+}
+```
+
+### 3. Add Your API Key
+
+Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
+
+## Using The Graph Resource in Cline
+
+After configuring Cline:
+
+1. Restart Cline
+2. Start a new conversation
+3. Enable the Subgraph MCP from the context menu
+4. Add "Subgraph Server Instructions" as a resource to your chat context
+
+## Available Tools and Usage
+
+The Subgraph MCP provides several tools for interacting with Subgraphs:
+
+### Schema Retrieval Tools
+
+- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
+- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
+- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
+
+### Query Execution Tools
+
+- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
+- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
+
+### Discovery Tools
+
+- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
+
+## Natural Language Queries
+
+One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cline will:
+
+1. Understand your goal (lookup, find Subgraphs, query, get schema)
+2. Find relevant deployments if needed
+3. Fetch and interpret the Subgraph schema
+4. Convert your question into an appropriate GraphQL query
+5. Execute the query and present the results in a readable format
+
+### Example Natural Language Queries
+
+```
+What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
+```
+
+```
+Which tokens have the highest market cap in this Subgraph?
+```
+
+```
+Show me the most recent 5 swaps for the USDC/ETH pair
+```
+
+## Key Identifier Types
+
+When working with Subgraphs, you'll encounter different types of identifiers:
+
+- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
+- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
+- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/fr/ai-suite/subgraph-mcp/cursor.mdx b/website/src/pages/fr/ai-suite/subgraph-mcp/cursor.mdx
new file mode 100644
index 000000000000..6291caf4b06b
--- /dev/null
+++ b/website/src/pages/fr/ai-suite/subgraph-mcp/cursor.mdx
@@ -0,0 +1,94 @@
+---
+title: Cursor
+---
+
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data through natural language conversations with Cline.
+
+## Prerequisites
+
+- [Cursor](https://www.cursor.com/) installed (latest version)
+- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
+
+## Configuration Steps
+
+### 1. Open Configuration File
+
+Create or edit your `~/.cursor/mcp.json` file.
+
+> **Cursor Settings** > **MCP** > **Add new global MCP Server**
+
+### 2. Add Configuration
+
+```json
+{
+  "mcpServers": {
+    "subgraph": {
+      "command": "npx",
+      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
+      "env": {
+        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
+      }
+    }
+  }
+}
+```
+
+### 3. Add Your API Key
+
+Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
+
+### 4. Restart Cursor
+
+Restart Cursor, and start a new chat.
+
+## Available Subgraph Tools and Usage
+
+The Subgraph MCP provides several tools for interacting with Subgraphs:
+
+### Schema Retrieval Tools
+
+- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
+- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
+- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
+
+### Query Execution Tools
+
+- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
+- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
+
+### Discovery Tools
+
+- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
+
+## Benefits of Natural Language Queries
+
+One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cursor will:
+
+1. Understand your goal (lookup, find Subgraphs, query, get schema)
+2. Find relevant deployments if needed
+3. Fetch and interpret the Subgraph schema
+4. Convert your question into an appropriate GraphQL query
+5. Execute the query and present the results in a readable format
+
+### Example Natural Language Queries
+
+```
+What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
+```
+
+```
+Which tokens have the highest market cap in this Subgraph?
+```
+
+```
+Show me the most recent 5 swaps for the USDC/ETH pair
+```
+
+## Key Identifier Types
+
+When working with Subgraphs, you'll encounter different types of identifiers:
+
+- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
+- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
+- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/fr/ai-suite/subgraph-mcp/introduction.mdx b/website/src/pages/fr/ai-suite/subgraph-mcp/introduction.mdx
new file mode 100644
index 000000000000..da1272cf9a36
--- /dev/null
+++ b/website/src/pages/fr/ai-suite/subgraph-mcp/introduction.mdx
@@ -0,0 +1,22 @@
+---
+title: Subgraph MCP Introduction
+sidebarTitle: 'Introduction'
+---
+
+Subgraph MCP server is an open-source implementation of [Anthropic's Model Context Protocol](https://modelcontextprotocol.io/introduction).
+
+It presents The Graph's Subgraph data through a set of MCP tools that any MCP-compatible client can call. With these tools, clients can search for relevant Subgraphs, inspect GraphQL schemas, and run queries against specific deployments on The Graph Network all within a single, standardized interface.
+
+The server itself does not hold a language model. Instead, it translates incoming MCP requests into Subgraph queries and returns the structured results, allowing the client's LLM to transform a natural-language prompt into actionable blockchain data.
+
+Think of it as a USB-C hub: it standardizes the plug-and-play connection between AI agents and The Graph's Subgraph ecosystem.
+
+## What You Can Do
+
+- Access GraphQL schemas for any Subgraph on The Graph Network
+- Run GraphQL queries on any Subgraph deployment
+- Discover top Subgraph deployments by keyword or contract address
+- Retrieve 30-day query volumes for Subgraph deployments
+- Ask questions about Subgraph data without writing GraphQL manually
+
+The Subgraph MCP server allows smooth integration with [Claude](/ai-suite/subgraph-mcp/claude/), [Cline](/ai-suite/subgraph-mcp/cline/), or [Cursor](/ai-suite/subgraph-mcp/cursor/), making blockchain data queries with The Graph Network a conversational experience.
diff --git a/website/src/pages/fr/ai-suite/token-api-mcp/_meta.js b/website/src/pages/fr/ai-suite/token-api-mcp/_meta.js
new file mode 100644
index 000000000000..6f527b4e53e4
--- /dev/null
+++ b/website/src/pages/fr/ai-suite/token-api-mcp/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  introduction: '',
+  claude: '',
+  cline: '',
+  cursor: '',
+}
diff --git a/website/src/pages/pl/token-api/mcp/claude.mdx b/website/src/pages/fr/ai-suite/token-api-mcp/claude.mdx
similarity index 100%
rename from website/src/pages/pl/token-api/mcp/claude.mdx
rename to website/src/pages/fr/ai-suite/token-api-mcp/claude.mdx
diff --git a/website/src/pages/pl/token-api/mcp/cline.mdx b/website/src/pages/fr/ai-suite/token-api-mcp/cline.mdx
similarity index 100%
rename from website/src/pages/pl/token-api/mcp/cline.mdx
rename to website/src/pages/fr/ai-suite/token-api-mcp/cline.mdx
diff --git a/website/src/pages/pl/token-api/mcp/cursor.mdx b/website/src/pages/fr/ai-suite/token-api-mcp/cursor.mdx
similarity index 100%
rename from website/src/pages/pl/token-api/mcp/cursor.mdx
rename to website/src/pages/fr/ai-suite/token-api-mcp/cursor.mdx
diff --git a/website/src/pages/fr/ai-suite/token-api-mcp/introduction.mdx b/website/src/pages/fr/ai-suite/token-api-mcp/introduction.mdx
new file mode 100644
index 000000000000..b61ad0a1c485
--- /dev/null
+++ b/website/src/pages/fr/ai-suite/token-api-mcp/introduction.mdx
@@ -0,0 +1,23 @@
+---
+title: Token API MCP Introduction
+sidebarTitle: 'Introduction'
+---
+
+Token API MCP server is an open-source implementation of [Anthropic's Model Context Protocol](https://modelcontextprotocol.io/introduction).
+
+This MCP server makes on-chain token data, including metadata, balances, transfers, and holder statistics, accessible through a set of MCP tools. Any compatible client can use these tools to fetch and analyze token information through a standardized interface. It connects to The Graph's hosted Token API database, enabling AI assistants to query real-time blockchain data using natural language requests that get translated into optimized SQL queries.
+
+The server itself does not host any language model. It simply converts MCP calls into data look-ups and returns structured results, letting the client's own LLM incorporate the results.
+
+Think of it as a USB-C hub: it standardizes the plug-and-play connection between AI agents and The Graph's Token API data.
+
+## What You Can Do
+
+- Retrieve token metadata including name, symbol, decimals, total supply, and contract address
+- Get token balances for any wallet address holding a supported ERC-20 token
+- Fetch token transfer activity including sender, receiver, amount, and timestamp
+- Identify top holders and analyze token distribution
+- Ask natural language questions about token data without writing smart contract calls
+- Access historical transfer data to analyze token movement over time
+
+The Token MCP server provides [Claude](/ai-suite/token-api-mcp/claude/), [Cline](/ai-suite/token-api-mcp/cline/), and [Cursor](/ai-suite/token-api-mcp/cursor/) with direct, conversational access to onchain token data.
diff --git a/website/src/pages/fr/resources/_meta.js b/website/src/pages/fr/resources/_meta.js
index aa8e2d0ec6a8..38c56cf56c43 100644
--- a/website/src/pages/fr/resources/_meta.js
+++ b/website/src/pages/fr/resources/_meta.js
@@ -7,5 +7,4 @@ export default {
   roles: titles.roles ?? '',
   'migration-guides': titles['migration-guides'] ?? '',
   'subgraph-studio-faq': '',
-  'claude-mcp': '',
 }
diff --git a/website/src/pages/fr/resources/claude-mcp.mdx b/website/src/pages/fr/resources/claude-mcp.mdx
deleted file mode 100644
index 44ed075cffda..000000000000
--- a/website/src/pages/fr/resources/claude-mcp.mdx
+++ /dev/null
@@ -1,122 +0,0 @@
----
-title: Claude MCP
----
-
-This guide walks you through configuring Claude Desktop to use The Graph ecosystem's [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) resources: Token API and Subgraph. These integrations allow you to interact with blockchain data through natural language conversations with Claude.
-
-## What You Can Do
-
-With these integrations, you can:
-
-- **Token API**: Access token and wallet information across multiple blockchains
-- **Subgraph**: Find relevant Subgraphs for specific keywords and contracts, explore Subgraph schemas, and execute GraphQL queries
-
-## Prerequisites
-
-- [Node.js](https://nodejs.org/en/download/) installed and available in your path
-- [Claude Desktop](https://claude.ai/download) installed
-- API keys:
-  - Token API key from [The Graph Market](https://thegraph.market/)
-  - Gateway API key from [Subgraph Studio](https://thegraph.com/studio/apikeys/)
-
-## Configuration Steps
-
-### 1. Open Configuration File
-
-Navigate to your `claude_desktop_config.json` file:
-
-> **Claude Desktop** > **Settings** > **Developer** > **Edit Config**
-
-Paths by operating system:
-
-- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
-- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
-- Linux: `.config/Claude/claude_desktop_config.json`
-
-### 2. Add Configuration
-
-Replace the contents of the existing config file with:
-
-```json
-{
-  "mcpServers": {
-    "token-api": {
-      "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
-      "env": {
-        "ACCESS_TOKEN": "ACCESS_TOKEN"
-      }
-    },
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-### 3. Add Your API Keys
-
-Replace:
-
-- `ACCESS_TOKEN` with your Token API key from [The Graph Market](https://thegraph.market/)
-- `GATEWAY_API_KEY` with your Gateway API key from [Subgraph Studio](https://thegraph.com/studio/apikeys/)
-
-### 4. Save and Restart
-
-- Save the configuration file
-- Restart Claude Desktop
-
-### 5. Add The Graph Resources in Claude
-
-After configuration:
-
-1. Start a new conversation in Claude Desktop
-2. Click on the context menu (top right)
-3. Add "Subgraph Server Instructions" as a resource by entering `graphql://subgraph` for Subgraph MCP
-
-> **Important**: You must manually add The Graph resources to your chat context for each conversation where you want to use them.
-
-### 6. Run Queries
-
-Here are some example queries you can try after setting up the resources:
-
-### Subgraph Queries
-
-```
-What are the top pools in Uniswap?
-```
-
-```
-Who are the top Delegators of The Graph Protocol?
-```
-
-```
-Please make a bar chart for the number of active loans in Compound for the last 7 days
-```
-
-### Token API Queries
-
-```
-Show me the current price of ETH
-```
-
-```
-What are the top tokens by market cap on Ethereum?
-```
-
-```
-Analyze this wallet address: 0x...
-```
-
-## Troubleshooting
-
-If you encounter issues:
-
-1. **Verify Node.js Installation**: Ensure Node.js is correctly installed by running `node -v` in your terminal
-2. **Check API Keys**: Verify that your API keys are correctly entered in the configuration file
-3. **Enable Verbose Logging**: Add `--verbose true` to the args array in your configuration to see detailed logs
-4. **Restart Claude Desktop**: After making changes to the configuration, always restart Claude Desktop
diff --git a/website/src/pages/fr/subgraphs/_meta.js b/website/src/pages/fr/subgraphs/_meta.js
index 4365293ffc72..45841d5f3355 100644
--- a/website/src/pages/fr/subgraphs/_meta.js
+++ b/website/src/pages/fr/subgraphs/_meta.js
@@ -6,7 +6,6 @@ export default {
   querying: titles.querying ?? '',
   developing: titles.developing ?? '',
   billing: '',
-  mcp: titles.mcp ?? '',
   guides: titles.guides,
   'best-practices': titles['best-practices'],
   'fair-use-policy': '',
diff --git a/website/src/pages/fr/subgraphs/mcp/_meta.js b/website/src/pages/fr/subgraphs/mcp/_meta.js
deleted file mode 100644
index 8630d4da27b3..000000000000
--- a/website/src/pages/fr/subgraphs/mcp/_meta.js
+++ /dev/null
@@ -1,5 +0,0 @@
-export default {
-  claude: '',
-  cline: '',
-  cursor: '',
-}
diff --git a/website/src/pages/fr/subgraphs/mcp/claude.mdx b/website/src/pages/fr/subgraphs/mcp/claude.mdx
deleted file mode 100644
index 027b272cb942..000000000000
--- a/website/src/pages/fr/subgraphs/mcp/claude.mdx
+++ /dev/null
@@ -1,179 +0,0 @@
----
-title: Claude Desktop
----
-
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Claude to interact directly with Subgraphs on The Graph Network. This integration allows you to find relevant Subgraphs for specific keywords and contracts, explore Subgraph schemas, and execute GraphQL queries—all through natural language conversations with Claude.
-
-## What You Can Do
-
-The Subgraph MCP integration enables you to:
-
-- Access the GraphQL schema for any Subgraph on The Graph Network
-- Execute GraphQL queries against any Subgraph deployment
-- Find top Subgraph deployments for a given keyword or contract address
-- Get 30-day query volume for Subgraph deployments
-- Ask natural language questions about Subgraph data without writing GraphQL queries manually
-
-## Prerequisites
-
-- [Node.js](https://nodejs.org/en) installed and available in your path
-- [Claude Desktop](https://claude.ai/download) installed (latest version)
-- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
-
-## Installation Options
-
-### Option 1: Using npx (Recommended)
-
-#### Configuration Steps using npx
-
-#### 1. Open Configuration File
-
-Navigate to your `claude_desktop_config.json` file:
-
-> **Settings** > **Developer** > **Edit Config**
-
-- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
-- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
-- Linux: `.config/Claude/claude_desktop_config.json`
-
-#### 2. Add Configuration
-
-Paste the following settings into your config file:
-
-```json
-{
-  "mcpServers": {
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-#### 3. Add Your Gateway API Key
-
-Replace `GATEWAY_API_KEY` with your API key from [Subgraph Studio](https://thegraph.com/studio/).
-
-#### 4. Save and Restart
-
-Once you've entered your Gateway API key into your settings, save the file and restart Claude Desktop.
-
-### Option 2: Building from Source
-
-#### Requirements
-
-- Rust (latest stable version recommended: 1.75+)
-  ```bash
-  curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
-  ```
-  Follow the on-screen instructions. For other platforms, see the [official Rust installation guide](https://www.rust-lang.org/tools/install).
-
-#### Installation Steps
-
-1. **Clone and Build the Repository**
-
-   ```bash
-   git clone git@github.com:graphops/subgraph-mcp.git
-   cd subgraph-mcp
-   cargo build --release
-   ```
-
-2. **Find the Command Path**
-
-   After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory.
-   - Navigate to your `subgraph-mcp` directory in terminal
-   - Run `pwd` to get the full path
-   - Combine the output with `/target/release/subgraph-mcp`
-
-3. **Configure Claude Desktop**
-
-   Open your `claude_desktop_config.json` file as described above and add:
-
-   ```json
-   {
-     "mcpServers": {
-       "subgraph": {
-         "command": "/path/to/your/subgraph-mcp/target/release/subgraph-mcp",
-         "env": {
-           "GATEWAY_API_KEY": "your-api-key-here"
-         }
-       }
-     }
-   }
-   ```
-
-   Replace `/path/to/your/subgraph-mcp/target/release/subgraph-mcp` with the actual path to the compiled binary.
-
-## Using The Graph Resource in Claude
-
-After configuring Claude Desktop:
-
-1. Restart Claude Desktop
-2. Start a new conversation
-3. Click on the context menu (top right)
-4. Add "Subgraph Server Instructions" as a resource by adding `graphql://subgraph` to your chat context
-
-> **Important**: Claude Desktop may not automatically utilize the Subgraph MCP. You must manually add "Subgraph Server Instructions" resource to your chat context for each conversation where you want to use it.
-
-## Troubleshooting
-
-To enable logs for the MCP when using the npx option, add the `--verbose true` option to your args array.
-
-## Available Subgraph Tools and Usage
-
-The Subgraph MCP provides several tools for interacting with Subgraphs:
-
-### Schema Retrieval Tools
-
-- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
-- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
-- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
-
-### Query Execution Tools
-
-- **Execute query by deployment ID/IPFS hash**: Run GraphQL queries against specific, immutable deployments
-- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
-
-### Discovery Tools
-
-- **Search subgraphs by keyword**: Find subgraphs by keyword in their display names, ordered by signal
-- **Get deployment 30-day query counts**: Get aggregate query count over the last 30 days for multiple subgraph deployments
-- **Get top Subgraph deployments for a contract**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain, ordered by query fees
-
-## Key Identifier Types
-
-- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a subgraph. Use `execute_query_by_subgraph_id` or `get_schema_by_subgraph_id`.
-- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment. Use `execute_query_by_deployment_id` or `get_schema_by_deployment_id`.
-- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific, immutable deployment. Use `execute_query_by_deployment_id` (the gateway treats it like a deployment ID for querying) or `get_schema_by_ipfs_hash`.
-
-## Benefits of Natural Language Queries
-
-One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Claude will:
-
-1. Understand your goal (lookup, find Subgraphs, query, get schema)
-2. Find relevant deployments if needed
-3. Fetch and interpret the Subgraph schema
-4. Convert your question into an appropriate GraphQL query
-5. Execute the query and present the results in a readable format
-
-### Example Natural Language Queries
-
-```
-What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
-```
-
-```
-Which tokens have the highest market cap in this Subgraph?
-```
-
-```
-Show me the most recent 5 swaps for the USDC/ETH pair
-```
-
-```
-Find the top subgraphs for contract 0x1f98431c8ad98523631ae4a59f267346ea31f984 on arbitrum-one
-```
diff --git a/website/src/pages/fr/subgraphs/mcp/cline.mdx b/website/src/pages/fr/subgraphs/mcp/cline.mdx
deleted file mode 100644
index 156221d9a127..000000000000
--- a/website/src/pages/fr/subgraphs/mcp/cline.mdx
+++ /dev/null
@@ -1,99 +0,0 @@
----
-title: Cline
----
-
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Cline to interact directly with Subgraphs on The Graph Network. This integration allows you to explore Subgraph schemas, execute GraphQL queries, and find relevant Subgraphs for specific contracts—all through natural language conversations with Cline.
-
-## Prerequisites
-
-- [Cline](https://cline.bot/) installed (latest version)
-- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
-
-## Configuration Steps
-
-### 1. Open Configuration File
-
-Create or edit your `cline_mcp_settings.json` file.
-
-> **MCP Servers** > **Installed** > **Configure MCP Servers**
-
-### 2. Add Configuration
-
-```json
-{
-  "mcpServers": {
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-### 3. Add Your API Key
-
-Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
-
-## Using The Graph Resource in Cline
-
-After configuring Cline:
-
-1. Restart Cline
-2. Start a new conversation
-3. Enable the Subgraph MCP from the context menu
-4. Add "Subgraph Server Instructions" as a resource to your chat context
-
-## Available Tools and Usage
-
-The Subgraph MCP provides several tools for interacting with Subgraphs:
-
-### Schema Retrieval Tools
-
-- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
-- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
-- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
-
-### Query Execution Tools
-
-- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
-- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
-
-### Discovery Tools
-
-- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
-
-## Natural Language Queries
-
-One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cline will:
-
-1. Understand your goal (lookup, find Subgraphs, query, get schema)
-2. Find relevant deployments if needed
-3. Fetch and interpret the Subgraph schema
-4. Convert your question into an appropriate GraphQL query
-5. Execute the query and present the results in a readable format
-
-### Example Natural Language Queries
-
-```
-What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
-```
-
-```
-Which tokens have the highest market cap in this Subgraph?
-```
-
-```
-Show me the most recent 5 swaps for the USDC/ETH pair
-```
-
-## Key Identifier Types
-
-When working with Subgraphs, you'll encounter different types of identifiers:
-
-- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
-- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
-- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/fr/subgraphs/mcp/cursor.mdx b/website/src/pages/fr/subgraphs/mcp/cursor.mdx
deleted file mode 100644
index 298f43ece048..000000000000
--- a/website/src/pages/fr/subgraphs/mcp/cursor.mdx
+++ /dev/null
@@ -1,94 +0,0 @@
----
-title: Cursor
----
-
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Cursor to interact directly with Subgraphs on The Graph Network. This integration allows you to explore Subgraph schemas, execute GraphQL queries, and find relevant Subgraphs for specific contracts—all through natural language conversations with Cursor.
-
-## Prerequisites
-
-- [Cursor](https://www.cursor.com/) installed (latest version)
-- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
-
-## Configuration Steps
-
-### 1. Open Configuration File
-
-Create or edit your `~/.cursor/mcp.json` file.
-
-> **Cursor Settings** > **MCP** > **Add new global MCP Server**
-
-### 2. Add Configuration
-
-```json
-{
-  "mcpServers": {
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-### 3. Add Your API Key
-
-Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
-
-### 4. Restart Cursor
-
-Restart Cursor, and start a new chat.
-
-## Available Subgraph Tools and Usage
-
-The Subgraph MCP provides several tools for interacting with Subgraphs:
-
-### Schema Retrieval Tools
-
-- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
-- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
-- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
-
-### Query Execution Tools
-
-- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
-- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
-
-### Discovery Tools
-
-- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
-
-## Benefits of Natural Language Queries
-
-One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cursor will:
-
-1. Understand your goal (lookup, find Subgraphs, query, get schema)
-2. Find relevant deployments if needed
-3. Fetch and interpret the Subgraph schema
-4. Convert your question into an appropriate GraphQL query
-5. Execute the query and present the results in a readable format
-
-### Example Natural Language Queries
-
-```
-What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
-```
-
-```
-Which tokens have the highest market cap in this Subgraph?
-```
-
-```
-Show me the most recent 5 swaps for the USDC/ETH pair
-```
-
-## Key Identifier Types
-
-When working with Subgraphs, you'll encounter different types of identifiers:
-
-- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
-- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
-- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/fr/substreams/_meta.js b/website/src/pages/fr/substreams/_meta.js
index a8ee04618eae..658bb8c213c6 100644
--- a/website/src/pages/fr/substreams/_meta.js
+++ b/website/src/pages/fr/substreams/_meta.js
@@ -5,5 +5,4 @@ export default {
   introduction: '',
   developing: titles.developing ?? '',
   publishing: '',
-  sps: titles.sps ?? '',
 }
diff --git a/website/src/pages/fr/token-api/_meta-titles.json b/website/src/pages/fr/token-api/_meta-titles.json
index 7ed31e0af95d..3108ecd3ebfd 100644
--- a/website/src/pages/fr/token-api/_meta-titles.json
+++ b/website/src/pages/fr/token-api/_meta-titles.json
@@ -1,6 +1,7 @@
 {
   "mcp": "MCP",
   "evm": "EVM Endpoints",
+  "svm": "SVM Endpoints",
   "monitoring": "Monitoring Endpoints",
   "faq": "FAQ"
 }
diff --git a/website/src/pages/fr/token-api/_meta.js b/website/src/pages/fr/token-api/_meta.js
index f67576d7f612..fb7f7334ea0c 100644
--- a/website/src/pages/fr/token-api/_meta.js
+++ b/website/src/pages/fr/token-api/_meta.js
@@ -2,8 +2,8 @@ import titles from './_meta-titles.json'
 
 export default {
   'quick-start': '',
-  mcp: titles.mcp ?? '',
   evm: titles.evm ?? '',
+  svm: titles.svm ?? '',
   monitoring: titles.monitoring ?? '',
   faq: '',
 }
diff --git a/website/src/pages/fr/token-api/mcp/_meta.js b/website/src/pages/fr/token-api/mcp/_meta.js
deleted file mode 100644
index 8630d4da27b3..000000000000
--- a/website/src/pages/fr/token-api/mcp/_meta.js
+++ /dev/null
@@ -1,5 +0,0 @@
-export default {
-  claude: '',
-  cline: '',
-  cursor: '',
-}
diff --git a/website/src/pages/fr/token-api/mcp/claude.mdx b/website/src/pages/fr/token-api/mcp/claude.mdx
deleted file mode 100644
index 2ee7b0330a14..000000000000
--- a/website/src/pages/fr/token-api/mcp/claude.mdx
+++ /dev/null
@@ -1,58 +0,0 @@
----
-title: Using Claude Desktop to Access the Token API via MCP
-sidebarTitle: Claude Desktop
----
-
-## Prérequis
-
-- [Claude Desktop](https://claude.ai/download) installed.
-- A [JWT token](/token-api/quick-start) from [The Graph Market](https://thegraph.market/).
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path.
-- The `@pinax/mcp` package requires Node 18+, as it relies on built-in `fetch()` / `Headers`, which are not available in Node 17 or older. You may need to specify an exact path to an up-to-date Node version, or uninstall previous versions of Node to ensure `@pinax/mcp` uses the correct version.
-
-![Screenshot of Claude Desktop's settings panel showing the MCP server configuration option.](/img/claude-preview-token-api.png)
-
-## La Configuration
-
-Create or edit your `claude_desktop_config.json` file.
-
-> **Settings** > **Developer** > **Edit Config**
-
-- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
-- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
-- Linux: `.config/Claude/claude_desktop_config.json`
-
-```json label="claude_desktop_config.json"
-{
-  "mcpServers": {
-    "token-api": {
-      "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
-      "env": {
-        "ACCESS_TOKEN": "<https://thegraph.market JWT Access Token>"
-      }
-    }
-  }
-}
-```
-
-## Troubleshooting
-
-To enable logs for the MCP, use the `--verbose true` option.
-
-### ENOENT
-
-![Error dialog in Claude Desktop showing 'ENOENT' system error, indicating the npx/bunx command wasn't found in the system path.](/img/claude-ENOENT.png)
-
-Try to use the full path of the command instead:
-
-- Run `which npx` or `which bunx` to get the path of the command.
-- Replace `npx` or `bunx` in the configuration file with the full path (e.g. `/home/user/bin/bunx`).
-
-### Server disconnected
-
-![Connection error notification in Claude Desktop displaying 'Server disconnected' message.](/img/claude-server-disconnect.png)
-
-Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
-
-> You can always have a look at the full logs under `Claude/logs/mcp.log` and `Claude/logs/mcp-server-pinax.log` for more details.
diff --git a/website/src/pages/fr/token-api/mcp/cline.mdx b/website/src/pages/fr/token-api/mcp/cline.mdx
deleted file mode 100644
index 8ded5ee70feb..000000000000
--- a/website/src/pages/fr/token-api/mcp/cline.mdx
+++ /dev/null
@@ -1,52 +0,0 @@
----
-title: Using Cline to Access the Token API via MCP
-sidebarTitle: Cline
----
-
-## Prérequis
-
-- [Cline](https://cline.bot/) installed.
-- A [JWT token](/token-api/quick-start) from [The Graph Market](https://thegraph.market/).
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path.
-- The `@pinax/mcp` package requires Node 18+, as it relies on built-in `fetch()` / `Headers`, which are not available in Node 17 or older. You may need to specify an exact path to an up-to-date Node version, or uninstall previous versions of Node to ensure `@pinax/mcp` uses the correct version.
-
-![Screenshot of Cline's MCP server configuration interface displaying the JSON settings file with mcp-pinax server details visible.](/img/cline-preview-token-api.png)
-
-## La Configuration
-
-Create or edit your `cline_mcp_settings.json` file.
-
-> **MCP Servers** > **Installed** > **Configure MCP Servers**
-
-```json label="cline_mcp_settings.json"
-{
-  "mcpServers": {
-    "mcp-pinax": {
-      "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
-      "env": {
-        "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
-      }
-    }
-  }
-}
-```
-
-## Troubleshooting
-
-To enable logs for the MCP, use the `--verbose true` option.
-
-### ENOENT
-
-![Cline error dialog showing 'ENOENT' system alert.](/img/cline-error.png)
-
-Try to use the full path of the command instead:
-
-- Run `which npx` or `which bunx` to get the path of the command.
-- Replace `npx` or `bunx` in the configuration file with the full path (e.g. `/home/user/bin/bunx`).
-
-### Server disconnected
-
-![Cline connection error notification displaying server disconnection warning.](/img/cline-missing-variables.png)
-
-Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/fr/token-api/mcp/cursor.mdx b/website/src/pages/fr/token-api/mcp/cursor.mdx
deleted file mode 100644
index 76377688bb1a..000000000000
--- a/website/src/pages/fr/token-api/mcp/cursor.mdx
+++ /dev/null
@@ -1,50 +0,0 @@
----
-title: Using Cursor to Access the Token API via MCP
-sidebarTitle: Cursor
----
-
-## Prérequis
-
-- [Cursor](https://www.cursor.com/) installed.
-- A [JWT token](/token-api/quick-start) from [The Graph Market](https://thegraph.market/).
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path.
-- The `@pinax/mcp` package requires Node 18+, as it relies on built-in `fetch()` / `Headers`, which are not available in Node 17 or older. You may need to specify an exact path to an up-to-date Node version, or uninstall previous versions of Node to ensure `@pinax/mcp` uses the correct version.
-
-![Screenshot of Cursor's MCP configuration panel.](/img/cursor-preview-token-api.png)
-
-## La Configuration
-
-Create or edit your `~/.cursor/mcp.json` file.
-
-> **Cursor Settings** > **MCP** > **Add new global MCP Server**
-
-```json label="mcp.json"
-{
-  "mcpServers": {
-    "mcp-pinax": {
-      "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
-      "env": {
-        "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
-      }
-    }
-  }
-}
-```
-
-## Troubleshooting
-
-![Cursor IDE error notification that reads, "Failed to create client"](/img/cursor-error.png)
-
-To enable logs for the MCP, use the `--verbose true` option.
-
-### ENOENT
-
-Try to use the full path of the command instead:
-
-- Run `which npx` or `which bunx` to get the path of the command.
-- Replace `npx` or `bunx` in the configuration file with the full path (e.g. `/home/user/bin/bunx`).
-
-### Server disconnected
-
-Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/fr/token-api/svm/_meta.js b/website/src/pages/fr/token-api/svm/_meta.js
new file mode 100644
index 000000000000..1a48b82fcbf1
--- /dev/null
+++ b/website/src/pages/fr/token-api/svm/_meta.js
@@ -0,0 +1,5 @@
+export default {
+  'get-balances-svm': '',
+  'get-transfers-svm': '',
+  'get-swaps-svm': '',
+}
diff --git a/website/src/pages/fr/token-api/svm/get-balances-svm.mdx b/website/src/pages/fr/token-api/svm/get-balances-svm.mdx
new file mode 100644
index 000000000000..c2946c190bf9
--- /dev/null
+++ b/website/src/pages/fr/token-api/svm/get-balances-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Balances
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getBalancesSvm
+---
+
+Provides Solana tokens balances by token account address.
diff --git a/website/src/pages/fr/token-api/svm/get-swaps-svm.mdx b/website/src/pages/fr/token-api/svm/get-swaps-svm.mdx
new file mode 100644
index 000000000000..95282a38ac9f
--- /dev/null
+++ b/website/src/pages/fr/token-api/svm/get-swaps-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Swap Events
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getSwapsSvm
+---
+
+Provides Raydium swap events.
diff --git a/website/src/pages/fr/token-api/svm/get-transfers-svm.mdx b/website/src/pages/fr/token-api/svm/get-transfers-svm.mdx
new file mode 100644
index 000000000000..5335cdddf418
--- /dev/null
+++ b/website/src/pages/fr/token-api/svm/get-transfers-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Transfers Events
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getTransfersSvm
+---
+
+Provides SVM transfer events.
diff --git a/website/src/pages/hi/ai-suite/_meta-titles.json b/website/src/pages/hi/ai-suite/_meta-titles.json
new file mode 100644
index 000000000000..5eb482a7092b
--- /dev/null
+++ b/website/src/pages/hi/ai-suite/_meta-titles.json
@@ -0,0 +1,6 @@
+{
+  "graph-assistant": "Graph Assistant",
+  "ai-introduction": "The Graph's AI",
+  "subgraph-mcp": "Subgraph MCP",
+  "token-api-mcp": "Token API MCP"
+}
diff --git a/website/src/pages/hi/ai-suite/_meta.js b/website/src/pages/hi/ai-suite/_meta.js
new file mode 100644
index 000000000000..c9e51dfd35fb
--- /dev/null
+++ b/website/src/pages/hi/ai-suite/_meta.js
@@ -0,0 +1,8 @@
+import titles from './_meta-titles.json'
+
+export default {
+  'ai-introduction': titles['ai-introduction'],
+  'graph-assistant': titles['graph-assistant'],
+  'subgraph-mcp': titles['subgraph-mcp'],
+  'token-api-mcp': titles['token-api-mcp'],
+}
diff --git a/website/src/pages/hi/ai-suite/ai-introduction.mdx b/website/src/pages/hi/ai-suite/ai-introduction.mdx
new file mode 100644
index 000000000000..d25cc9f77358
--- /dev/null
+++ b/website/src/pages/hi/ai-suite/ai-introduction.mdx
@@ -0,0 +1,58 @@
+---
+title: The Graph's AI
+---
+
+Build with speed and scale faster with The Graph's AI.
+
+## Using AI on The Graph
+
+Instead of relying on static datasets or centralized APIs, you can now access live blockchain data through our **agentic** app, [Graph Assistant](/ai-suite/graph-assistant/introduction/), and use our AI-native tooling, [Subgraph MCP](/ai-suite/subgraph-mcp/introduction/), and [Token API MCP](/ai-suite/token-api-mcp/introduction/).
+
+### Why Use Onchain Data with AI?
+
+Using onchain data with AI unlocks powerful new ways to interact with and understand blockchain ecosystems.
+
+- **AI for Non-Technical End Users**: AI can turn complex onchain data into accessible insights. Assistants powered by AI enable you to explore and analyze blockchain data without coding.
+- **AI for Developers**: You can use AI to interact directly with The Graph's data through your agents or build AI-powered applications on top of it. This streamlines development and opens up more intuitive, dynamic use cases.
+
+## AI for Non-Technical/End Users
+
+[Graph Assistant](/ai-suite/graph-assistant/introduction/) is a powerful **agentic** application that empowers users to easily interact with blockchain data. Ask questions in simple, natural language and get rich, AI powered insights. Both technical developers and non-technical product teams can move faster, make smarter decisions, and gain a clearer understanding than ever before.
+
+### Benefits of Using Graph Assistant
+
+- **Natural language Input**: You don't need to write complex queries or sift through dashboards. Simply ask your question in plain English and get clear, structured results.
+- **Multi-source support**: Works across multiple Subgraphs and Token API. The Assistant automatically determines which data source to use, so you don't have to switch tools or manage endpoints.
+- **Schema-free access**: You don't need to understand the schema. You can refer to tokens, protocols, dates, or addresses using natural language. The Assistant takes care of the rest.
+
+### Conversational Querying with Graph Assistant
+
+**Example queries:**
+
+- "List the top-5 swaps by USD value in the last 24 hours."
+- "Give me the daily volume on Uniswap."
+- "List the 20 most recently registered .eth names."
+
+[Graph Assistant](/ai-suite/graph-assistant/introduction/) will eventually be a one-stop shop for interacting with The Graph. Right now, it's an agentic AI app that uses state-of-the-art AI techniques, LLMs, and MCPs to understand and answer your questions about [Subgraphs](/subgraphs/developing/subgraphs/) and [Token API](/token-api/quick-start/) data.
+
+## AI for Developers
+
+### Enable Natural Language Access to Onchain Data
+
+[Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) servers connect to Claude, Cline, and Cursor. They enable models to understand, query, and interact with structured onchain data using natural language. MCPs remove the need to write low-level queries or interact with APIs directly.
+
+### Subgraph MCP
+
+The [Subgraph MCP](/ai-suite/subgraph-mcp/introduction/) server connects models to Subgraphs on The Graph Network. It allows language models to explore Subgraph schemas, execute GraphQL queries, find relevant Subgraphs by keyword or contract, and surface usage metrics using natural language.
+
+### Token API MCP
+
+The [Token API MCP](/ai-suite/token-api-mcp/introduction/) MCP server enables models to access onchain token data. It supports querying token metadata, wallet balances, transfer history, and top token holders through simple prompts.
+
+#### Benefits of Using Subgraph and Token API MCPs
+
+- Query Subgraphs and token data using natural language
+- Access GraphQL schemas and token metadata without manual queries
+- Find Subgraphs by keyword or contract and check 30-day usage
+- Retrieve real-time data from The Graph and onchain token sources
+- Get wallet balances, transfer history, and top token holders
diff --git a/website/src/pages/hi/ai-suite/graph-assistant/_meta.js b/website/src/pages/hi/ai-suite/graph-assistant/_meta.js
new file mode 100644
index 000000000000..74da5e0686a7
--- /dev/null
+++ b/website/src/pages/hi/ai-suite/graph-assistant/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  'quick-start': '',
+  introduction: '',
+  'how-to-guide': '',
+  faq: '',
+}
diff --git a/website/src/pages/hi/ai-suite/graph-assistant/faq.mdx b/website/src/pages/hi/ai-suite/graph-assistant/faq.mdx
new file mode 100644
index 000000000000..8addf9935524
--- /dev/null
+++ b/website/src/pages/hi/ai-suite/graph-assistant/faq.mdx
@@ -0,0 +1,26 @@
+---
+title: Graph Assistant FAQ
+sidebarTitle: 'FAQ'
+---
+
+This page summarizes some of the most common questions for developers using Graph Assistant.
+
+1. What is The Graph Assistant?
+
+The Graph Assistant is an AI-powered chat interface that lets you query blockchain data in plain English. Under the hood, it translates your questions into GraphQL calls against Subgraphs and the Token API, then returns results, no coding required.
+
+2. What is an agentic application?
+
+An agentic application combines AI-driven reasoning with external data sources or APIs to take autonomous actions on your behalf. In this case, Graph Assistant acts as an “agent” that interprets your natural-language prompts, builds and dispatches GraphQL queries, and formats the results so that you don't need to write or manage queries yourself.
+
+3. Which networks and data does Graph Assistant support?
+
+The Assistant has access to Subgraphs across multiple chains. If a Subgraph is published to The Graph Network and is being indexed, the Assistant can automatically route queries to it. The Assistant also has access to the Token API on Ethereum Mainnet, BSC, Unichain, Arbitrum-One, Optimism, and Polygon.
+
+4. Is there a usage limit or quota?
+
+Yes, 10 questions per hour.
+
+5. What if the Assistant can't interpret my question?
+
+When the Assistant fails to parse your intent (for example, ambiguous token name, missing context, or an unsupported request), it will prompt you for clarification. For instance, it might ask, “Did you mean XYZ on Ethereum or XYZ on Arbitrum?” or “Please specify a date range for this query.” If you continue to see parsing errors, check that you're using correct token symbols or specifying networks and time frames clearly.
diff --git a/website/src/pages/hi/ai-suite/graph-assistant/how-to-guide.mdx b/website/src/pages/hi/ai-suite/graph-assistant/how-to-guide.mdx
new file mode 100644
index 000000000000..463130894ad8
--- /dev/null
+++ b/website/src/pages/hi/ai-suite/graph-assistant/how-to-guide.mdx
@@ -0,0 +1,56 @@
+---
+title: How To Use The Graph Assistant
+sidebarTitle: 'How-to Guide'
+---
+
+## Overview
+
+You type a natural language question into the chat interface, such as:
+
+```yaml
+'On Uniswap, return the top-10 pools by total value locked in USD.'
+```
+
+> [!IMPORTANT] All users can process 10 free queries per user per hour.
+
+> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the underlying agents. Do not share sensitive, personal, or private information.
+
+### Behind the Scenes
+
+The Assistant:
+
+1. Interprets your intent
+2. Maps it to the correct Subgraphs or Token API endpoint
+3. Executes optimized queries
+4. Returns clean, structured results
+
+You don't need to write queries or understand a Subgraph's schema, you simply ask.
+
+### Example Use Cases
+
+**Protocol Analytics**
+
+- “Compare daily active users on Aave vs. Compound in May 2025.”
+- “Show me the total value locked (TVL) for XYZDAO over the last quarter.”
+
+**Token Insights**
+
+- “What are the top 10 tokens by market cap on Ethereum right now?”
+- “How many XYZ did I receive between May 1 and May 15?”
+
+**Historical Data Retrieval**
+
+- “Fetch the token price history of XYZ for the last six months.”
+- “What was the average gas price on Ethereum during April?”
+
+**Portfolio Monitoring**
+
+- “List my wallet’s current token balances and their USD equivalents.”
+- “Calculate profit/loss on XYZ since xyz date.”
+
+**Cross-Chain Comparison**
+
+- “Show me the 7-day trading volume of XYZ on Ethereum vs. Polygon.”
+- “How many XYZ swaps occurred on Arbitrum yesterday?”
+
+To get started follow the [quickstart](/ai-suite/graph-assistant/quick-start/) and explore its capabilities.
diff --git a/website/src/pages/hi/ai-suite/graph-assistant/introduction.mdx b/website/src/pages/hi/ai-suite/graph-assistant/introduction.mdx
new file mode 100644
index 000000000000..65fdf0f96028
--- /dev/null
+++ b/website/src/pages/hi/ai-suite/graph-assistant/introduction.mdx
@@ -0,0 +1,31 @@
+---
+title: Introduction
+---
+
+> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime.
+
+[Graph Assistant](https://thegraph.com/graph-assistant) (Beta) gives instant, code-free access to blockchain data, transforming natural language into precise, AI-powered queries without the need to code.
+
+## Overview
+
+[Graph Assistant](https://thegraph.com/graph-assistant) is an advanced, [agentic](/en/ai-suite/graph-assistant/faq/) easy-to-use chat interface for querying blockchain data using natural language. Unlike a basic chatbot, Graph Assistant can understand your intent, build complex queries, and execute them automatically. This gives you rich, AI-powered insights from onchain data without writing any code.
+
+- **Automatically** interprets user intent, generates precise queries, executes them via The Graph's Subgraphs and Token API, and presents structured, AI-powered answers without requiring any code.
+- **Removes** the technical complexity found in traditional dashboards or chatbots. It provides composable insights directly from indexed Subgraphs and Token datasets.
+
+## Core Features
+
+| Feature | Description |
+| --- | --- |
+| **Friendly Interface** | Conversational access to blockchain data via natural language. You simply ask questions, the Assistant fetches the answer, and renders results. |
+| **Backed by Subgraphs** | Uses subgraphs to index protocol-specific data like transactions, events, and protocol metrics. |
+| **Backed by Token API** | Uses Token API for token-level information like balances, transfers, and metadata. |
+| **No Setup Required** | No need to configure data sources or write queries. |
+| **Automatic Query Building** | The Assistant performs complex queries such as fetching historical token volumes, protocol analytics, or cross-chain data and handles filtering, pagination, and joins across Subgraphs automatically. |
+
+## Help Shape What's Next
+
+This is in **beta**, and community input is essential. If you have ideas, questions, or run into anything unexpected, we'd love to hear from you:
+
+- Join the community on [Discord](https://discord.com/invite/graphprotocol): Provide feedback and stay in the loop with other builders. You'll be able to join the `#graph-assistant` channel to share your experience directly.
+- Interested in going deeper? Reach out to become a dedicated beta tester so your specific use case can be better supported.
diff --git a/website/src/pages/hi/ai-suite/graph-assistant/quick-start.mdx b/website/src/pages/hi/ai-suite/graph-assistant/quick-start.mdx
new file mode 100644
index 000000000000..13f8478b8d2b
--- /dev/null
+++ b/website/src/pages/hi/ai-suite/graph-assistant/quick-start.mdx
@@ -0,0 +1,44 @@
+---
+title: Quick Start
+---
+
+> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime.
+
+This guide provides step-by-step instructions for getting started with Graph Assistant quickly.
+
+## Step-by Step
+
+### Step 1. Create an Account
+
+Go to: [Graph Assistant](https://thegraph.com/graph-assistant)
+
+- Click Sign Up (or Log In if you already have an account).
+- Use your Google, GitHub, X, email or wallet credentials to log in.
+- No additional setup is required.
+
+### Step 2. Open the Assistant Chat
+
+After logging in:
+
+- You'll see Graph Assistant's interface.
+- At the bottom of the page, you will find a chat input bar. This is where you will interact with the Assistant.
+
+### Step 3: Ask Your First Question
+
+> [!IMPORTANT] All users can process 10 free queries per user per hour.
+
+In the input bar, type a natural-language query (everyday language).
+
+Example:
+
+```yaml
+Show me the 24-hour trading volume of XYZ token on Ethereum
+```
+
+> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the AI interface. Do not share sensitive, personal, or private information.
+
+The Assistant will:
+
+- Digest your question
+- Fetch onchain data using Subgraphs or the Token API
+- Return a clean, formatted response with the data you need
diff --git a/website/src/pages/hi/ai-suite/subgraph-mcp/_meta.js b/website/src/pages/hi/ai-suite/subgraph-mcp/_meta.js
new file mode 100644
index 000000000000..6f527b4e53e4
--- /dev/null
+++ b/website/src/pages/hi/ai-suite/subgraph-mcp/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  introduction: '',
+  claude: '',
+  cline: '',
+  cursor: '',
+}
diff --git a/website/src/pages/hi/ai-suite/subgraph-mcp/claude.mdx b/website/src/pages/hi/ai-suite/subgraph-mcp/claude.mdx
new file mode 100644
index 000000000000..ff3caa4e3e7f
--- /dev/null
+++ b/website/src/pages/hi/ai-suite/subgraph-mcp/claude.mdx
@@ -0,0 +1,169 @@
+---
+title: Claude Desktop
+---
+
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data via natural language conversations with Claude.
+
+## Prerequisites
+
+- [Node.js](https://nodejs.org/en) installed and available in your path
+- [Claude Desktop](https://claude.ai/download) installed (latest version)
+- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
+
+## Installation Options
+
+### Option 1: Using npx (Recommended)
+
+#### Configuration Steps using npx
+
+#### 1. Open Configuration File
+
+Navigate to your `claude_desktop_config.json` file:
+
+> **Settings** > **Developer** > **Edit Config**
+
+- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
+- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
+- Linux: `.config/Claude/claude_desktop_config.json`
+
+#### 2. Add Configuration
+
+Paste the following settings into your config file:
+
+```json
+{
+  "mcpServers": {
+    "subgraph": {
+      "command": "npx",
+      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
+      "env": {
+        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
+      }
+    }
+  }
+}
+```
+
+#### 3. Add Your Gateway API Key
+
+Replace `GATEWAY_API_KEY` with your API key from [Subgraph Studio](https://thegraph.com/studio/).
+
+#### 4. Save and Restart
+
+Once you've entered your Gateway API key into your settings, save the file and restart Claude Desktop.
+
+### Option 2: Building from Source
+
+#### Requirements
+
+- Rust (latest stable version recommended: 1.75+)
+  ```bash
+  curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
+  ```
+  Follow the on-screen instructions. For other platforms, see the [official Rust installation guide](https://www.rust-lang.org/tools/install).
+
+#### Installation Steps
+
+1. **Clone and Build the Repository**
+
+   ```bash
+   git clone git@github.com:graphops/subgraph-mcp.git
+   cd subgraph-mcp
+   cargo build --release
+   ```
+
+2. **Find the Command Path**
+
+   After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory.
+   - Navigate to your `subgraph-mcp` directory in terminal
+   - Run `pwd` to get the full path
+   - Combine the output with `/target/release/subgraph-mcp`
+
+3. **Configure Claude Desktop**
+
+   Open your `claude_desktop_config.json` file as described above and add:
+
+   ```json
+   {
+     "mcpServers": {
+       "subgraph": {
+         "command": "/path/to/your/subgraph-mcp/target/release/subgraph-mcp",
+         "env": {
+           "GATEWAY_API_KEY": "your-api-key-here"
+         }
+       }
+     }
+   }
+   ```
+
+   Replace `/path/to/your/subgraph-mcp/target/release/subgraph-mcp` with the actual path to the compiled binary.
+
+## Using The Graph Resource in Claude
+
+After configuring Claude Desktop:
+
+1. Restart Claude Desktop
+2. Start a new conversation
+3. Click on the context menu (top right)
+4. Add "Subgraph Server Instructions" as a resource by adding `graphql://subgraph` to your chat context
+
+> **Important**: Claude Desktop may not automatically utilize the Subgraph MCP. You must manually add "Subgraph Server Instructions" resource to your chat context for each conversation where you want to use it.
+
+## Troubleshooting
+
+To enable logs for the MCP when using the npx option, add the `--verbose true` option to your args array.
+
+## Available Subgraph Tools and Usage
+
+The Subgraph MCP provides several tools for interacting with Subgraphs:
+
+### Schema Retrieval Tools
+
+- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
+- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
+- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
+
+### Query Execution Tools
+
+- **Execute query by deployment ID/IPFS hash**: Run GraphQL queries against specific, immutable deployments
+- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
+
+### Discovery Tools
+
+- **Search subgraphs by keyword**: Find subgraphs by keyword in their display names, ordered by signal
+- **Get deployment 30-day query counts**: Get aggregate query count over the last 30 days for multiple subgraph deployments
+- **Get top Subgraph deployments for a contract**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain, ordered by query fees
+
+## Key Identifier Types
+
+- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a subgraph. Use `execute_query_by_subgraph_id` or `get_schema_by_subgraph_id`.
+- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment. Use `execute_query_by_deployment_id` or `get_schema_by_deployment_id`.
+- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific, immutable deployment. Use `execute_query_by_deployment_id` (the gateway treats it like a deployment ID for querying) or `get_schema_by_ipfs_hash`.
+
+## Benefits of Natural Language Queries
+
+One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Claude will:
+
+1. Understand your goal (lookup, find Subgraphs, query, get schema)
+2. Find relevant deployments if needed
+3. Fetch and interpret the Subgraph schema
+4. Convert your question into an appropriate GraphQL query
+5. Execute the query and present the results in a readable format
+
+### Example Natural Language Queries
+
+```
+What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
+```
+
+```
+Which tokens have the highest market cap in this Subgraph?
+```
+
+```
+Show me the most recent 5 swaps for the USDC/ETH pair
+```
+
+```
+Find the top subgraphs for contract 0x1f98431c8ad98523631ae4a59f267346ea31f984 on arbitrum-one
+```
diff --git a/website/src/pages/hi/ai-suite/subgraph-mcp/cline.mdx b/website/src/pages/hi/ai-suite/subgraph-mcp/cline.mdx
new file mode 100644
index 000000000000..eb8044bfe991
--- /dev/null
+++ b/website/src/pages/hi/ai-suite/subgraph-mcp/cline.mdx
@@ -0,0 +1,99 @@
+---
+title: Cline
+---
+
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data through natural language conversations with Cline.
+
+## Prerequisites
+
+- [Cline](https://cline.bot/) installed (latest version)
+- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
+
+## Configuration Steps
+
+### 1. Open Configuration File
+
+Create or edit your `cline_mcp_settings.json` file.
+
+> **MCP Servers** > **Installed** > **Configure MCP Servers**
+
+### 2. Add Configuration
+
+```json
+{
+  "mcpServers": {
+    "subgraph": {
+      "command": "npx",
+      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
+      "env": {
+        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
+      }
+    }
+  }
+}
+```
+
+### 3. Add Your API Key
+
+Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
+
+## Using The Graph Resource in Cline
+
+After configuring Cline:
+
+1. Restart Cline
+2. Start a new conversation
+3. Enable the Subgraph MCP from the context menu
+4. Add "Subgraph Server Instructions" as a resource to your chat context
+
+## Available Tools and Usage
+
+The Subgraph MCP provides several tools for interacting with Subgraphs:
+
+### Schema Retrieval Tools
+
+- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
+- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
+- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
+
+### Query Execution Tools
+
+- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
+- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
+
+### Discovery Tools
+
+- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
+
+## Natural Language Queries
+
+One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cline will:
+
+1. Understand your goal (lookup, find Subgraphs, query, get schema)
+2. Find relevant deployments if needed
+3. Fetch and interpret the Subgraph schema
+4. Convert your question into an appropriate GraphQL query
+5. Execute the query and present the results in a readable format
+
+### Example Natural Language Queries
+
+```
+What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
+```
+
+```
+Which tokens have the highest market cap in this Subgraph?
+```
+
+```
+Show me the most recent 5 swaps for the USDC/ETH pair
+```
+
+## Key Identifier Types
+
+When working with Subgraphs, you'll encounter different types of identifiers:
+
+- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
+- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
+- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/hi/ai-suite/subgraph-mcp/cursor.mdx b/website/src/pages/hi/ai-suite/subgraph-mcp/cursor.mdx
new file mode 100644
index 000000000000..6291caf4b06b
--- /dev/null
+++ b/website/src/pages/hi/ai-suite/subgraph-mcp/cursor.mdx
@@ -0,0 +1,94 @@
+---
+title: Cursor
+---
+
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data through natural language conversations with Cline.
+
+## Prerequisites
+
+- [Cursor](https://www.cursor.com/) installed (latest version)
+- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
+
+## Configuration Steps
+
+### 1. Open Configuration File
+
+Create or edit your `~/.cursor/mcp.json` file.
+
+> **Cursor Settings** > **MCP** > **Add new global MCP Server**
+
+### 2. Add Configuration
+
+```json
+{
+  "mcpServers": {
+    "subgraph": {
+      "command": "npx",
+      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
+      "env": {
+        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
+      }
+    }
+  }
+}
+```
+
+### 3. Add Your API Key
+
+Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
+
+### 4. Restart Cursor
+
+Restart Cursor, and start a new chat.
+
+## Available Subgraph Tools and Usage
+
+The Subgraph MCP provides several tools for interacting with Subgraphs:
+
+### Schema Retrieval Tools
+
+- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
+- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
+- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
+
+### Query Execution Tools
+
+- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
+- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
+
+### Discovery Tools
+
+- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
+
+## Benefits of Natural Language Queries
+
+One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cursor will:
+
+1. Understand your goal (lookup, find Subgraphs, query, get schema)
+2. Find relevant deployments if needed
+3. Fetch and interpret the Subgraph schema
+4. Convert your question into an appropriate GraphQL query
+5. Execute the query and present the results in a readable format
+
+### Example Natural Language Queries
+
+```
+What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
+```
+
+```
+Which tokens have the highest market cap in this Subgraph?
+```
+
+```
+Show me the most recent 5 swaps for the USDC/ETH pair
+```
+
+## Key Identifier Types
+
+When working with Subgraphs, you'll encounter different types of identifiers:
+
+- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
+- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
+- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/hi/ai-suite/subgraph-mcp/introduction.mdx b/website/src/pages/hi/ai-suite/subgraph-mcp/introduction.mdx
new file mode 100644
index 000000000000..da1272cf9a36
--- /dev/null
+++ b/website/src/pages/hi/ai-suite/subgraph-mcp/introduction.mdx
@@ -0,0 +1,22 @@
+---
+title: Subgraph MCP Introduction
+sidebarTitle: 'Introduction'
+---
+
+Subgraph MCP server is an open-source implementation of [Anthropic's Model Context Protocol](https://modelcontextprotocol.io/introduction).
+
+It presents The Graph's Subgraph data through a set of MCP tools that any MCP-compatible client can call. With these tools, clients can search for relevant Subgraphs, inspect GraphQL schemas, and run queries against specific deployments on The Graph Network all within a single, standardized interface.
+
+The server itself does not hold a language model. Instead, it translates incoming MCP requests into Subgraph queries and returns the structured results, allowing the client's LLM to transform a natural-language prompt into actionable blockchain data.
+
+Think of it as a USB-C hub: it standardizes the plug-and-play connection between AI agents and The Graph's Subgraph ecosystem.
+
+## What You Can Do
+
+- Access GraphQL schemas for any Subgraph on The Graph Network
+- Run GraphQL queries on any Subgraph deployment
+- Discover top Subgraph deployments by keyword or contract address
+- Retrieve 30-day query volumes for Subgraph deployments
+- Ask questions about Subgraph data without writing GraphQL manually
+
+The Subgraph MCP server allows smooth integration with [Claude](/ai-suite/subgraph-mcp/claude/), [Cline](/ai-suite/subgraph-mcp/cline/), or [Cursor](/ai-suite/subgraph-mcp/cursor/), making blockchain data queries with The Graph Network a conversational experience.
diff --git a/website/src/pages/hi/ai-suite/token-api-mcp/_meta.js b/website/src/pages/hi/ai-suite/token-api-mcp/_meta.js
new file mode 100644
index 000000000000..6f527b4e53e4
--- /dev/null
+++ b/website/src/pages/hi/ai-suite/token-api-mcp/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  introduction: '',
+  claude: '',
+  cline: '',
+  cursor: '',
+}
diff --git a/website/src/pages/ro/token-api/mcp/claude.mdx b/website/src/pages/hi/ai-suite/token-api-mcp/claude.mdx
similarity index 100%
rename from website/src/pages/ro/token-api/mcp/claude.mdx
rename to website/src/pages/hi/ai-suite/token-api-mcp/claude.mdx
diff --git a/website/src/pages/ro/token-api/mcp/cline.mdx b/website/src/pages/hi/ai-suite/token-api-mcp/cline.mdx
similarity index 100%
rename from website/src/pages/ro/token-api/mcp/cline.mdx
rename to website/src/pages/hi/ai-suite/token-api-mcp/cline.mdx
diff --git a/website/src/pages/ro/token-api/mcp/cursor.mdx b/website/src/pages/hi/ai-suite/token-api-mcp/cursor.mdx
similarity index 100%
rename from website/src/pages/ro/token-api/mcp/cursor.mdx
rename to website/src/pages/hi/ai-suite/token-api-mcp/cursor.mdx
diff --git a/website/src/pages/hi/ai-suite/token-api-mcp/introduction.mdx b/website/src/pages/hi/ai-suite/token-api-mcp/introduction.mdx
new file mode 100644
index 000000000000..b61ad0a1c485
--- /dev/null
+++ b/website/src/pages/hi/ai-suite/token-api-mcp/introduction.mdx
@@ -0,0 +1,23 @@
+---
+title: Token API MCP Introduction
+sidebarTitle: 'Introduction'
+---
+
+Token API MCP server is an open-source implementation of [Anthropic's Model Context Protocol](https://modelcontextprotocol.io/introduction).
+
+This MCP server makes on-chain token data, including metadata, balances, transfers, and holder statistics, accessible through a set of MCP tools. Any compatible client can use these tools to fetch and analyze token information through a standardized interface. It connects to The Graph's hosted Token API database, enabling AI assistants to query real-time blockchain data using natural language requests that get translated into optimized SQL queries.
+
+The server itself does not host any language model. It simply converts MCP calls into data look-ups and returns structured results, letting the client's own LLM incorporate the results.
+
+Think of it as a USB-C hub: it standardizes the plug-and-play connection between AI agents and The Graph's Token API data.
+
+## What You Can Do
+
+- Retrieve token metadata including name, symbol, decimals, total supply, and contract address
+- Get token balances for any wallet address holding a supported ERC-20 token
+- Fetch token transfer activity including sender, receiver, amount, and timestamp
+- Identify top holders and analyze token distribution
+- Ask natural language questions about token data without writing smart contract calls
+- Access historical transfer data to analyze token movement over time
+
+The Token MCP server provides [Claude](/ai-suite/token-api-mcp/claude/), [Cline](/ai-suite/token-api-mcp/cline/), and [Cursor](/ai-suite/token-api-mcp/cursor/) with direct, conversational access to onchain token data.
diff --git a/website/src/pages/hi/resources/_meta.js b/website/src/pages/hi/resources/_meta.js
index aa8e2d0ec6a8..38c56cf56c43 100644
--- a/website/src/pages/hi/resources/_meta.js
+++ b/website/src/pages/hi/resources/_meta.js
@@ -7,5 +7,4 @@ export default {
   roles: titles.roles ?? '',
   'migration-guides': titles['migration-guides'] ?? '',
   'subgraph-studio-faq': '',
-  'claude-mcp': '',
 }
diff --git a/website/src/pages/hi/resources/claude-mcp.mdx b/website/src/pages/hi/resources/claude-mcp.mdx
deleted file mode 100644
index 44ed075cffda..000000000000
--- a/website/src/pages/hi/resources/claude-mcp.mdx
+++ /dev/null
@@ -1,122 +0,0 @@
----
-title: Claude MCP
----
-
-This guide walks you through configuring Claude Desktop to use The Graph ecosystem's [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) resources: Token API and Subgraph. These integrations allow you to interact with blockchain data through natural language conversations with Claude.
-
-## What You Can Do
-
-With these integrations, you can:
-
-- **Token API**: Access token and wallet information across multiple blockchains
-- **Subgraph**: Find relevant Subgraphs for specific keywords and contracts, explore Subgraph schemas, and execute GraphQL queries
-
-## Prerequisites
-
-- [Node.js](https://nodejs.org/en/download/) installed and available in your path
-- [Claude Desktop](https://claude.ai/download) installed
-- API keys:
-  - Token API key from [The Graph Market](https://thegraph.market/)
-  - Gateway API key from [Subgraph Studio](https://thegraph.com/studio/apikeys/)
-
-## Configuration Steps
-
-### 1. Open Configuration File
-
-Navigate to your `claude_desktop_config.json` file:
-
-> **Claude Desktop** > **Settings** > **Developer** > **Edit Config**
-
-Paths by operating system:
-
-- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
-- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
-- Linux: `.config/Claude/claude_desktop_config.json`
-
-### 2. Add Configuration
-
-Replace the contents of the existing config file with:
-
-```json
-{
-  "mcpServers": {
-    "token-api": {
-      "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
-      "env": {
-        "ACCESS_TOKEN": "ACCESS_TOKEN"
-      }
-    },
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-### 3. Add Your API Keys
-
-Replace:
-
-- `ACCESS_TOKEN` with your Token API key from [The Graph Market](https://thegraph.market/)
-- `GATEWAY_API_KEY` with your Gateway API key from [Subgraph Studio](https://thegraph.com/studio/apikeys/)
-
-### 4. Save and Restart
-
-- Save the configuration file
-- Restart Claude Desktop
-
-### 5. Add The Graph Resources in Claude
-
-After configuration:
-
-1. Start a new conversation in Claude Desktop
-2. Click on the context menu (top right)
-3. Add "Subgraph Server Instructions" as a resource by entering `graphql://subgraph` for Subgraph MCP
-
-> **Important**: You must manually add The Graph resources to your chat context for each conversation where you want to use them.
-
-### 6. Run Queries
-
-Here are some example queries you can try after setting up the resources:
-
-### Subgraph Queries
-
-```
-What are the top pools in Uniswap?
-```
-
-```
-Who are the top Delegators of The Graph Protocol?
-```
-
-```
-Please make a bar chart for the number of active loans in Compound for the last 7 days
-```
-
-### Token API Queries
-
-```
-Show me the current price of ETH
-```
-
-```
-What are the top tokens by market cap on Ethereum?
-```
-
-```
-Analyze this wallet address: 0x...
-```
-
-## Troubleshooting
-
-If you encounter issues:
-
-1. **Verify Node.js Installation**: Ensure Node.js is correctly installed by running `node -v` in your terminal
-2. **Check API Keys**: Verify that your API keys are correctly entered in the configuration file
-3. **Enable Verbose Logging**: Add `--verbose true` to the args array in your configuration to see detailed logs
-4. **Restart Claude Desktop**: After making changes to the configuration, always restart Claude Desktop
diff --git a/website/src/pages/hi/subgraphs/_meta.js b/website/src/pages/hi/subgraphs/_meta.js
index 4365293ffc72..45841d5f3355 100644
--- a/website/src/pages/hi/subgraphs/_meta.js
+++ b/website/src/pages/hi/subgraphs/_meta.js
@@ -6,7 +6,6 @@ export default {
   querying: titles.querying ?? '',
   developing: titles.developing ?? '',
   billing: '',
-  mcp: titles.mcp ?? '',
   guides: titles.guides,
   'best-practices': titles['best-practices'],
   'fair-use-policy': '',
diff --git a/website/src/pages/hi/subgraphs/mcp/_meta.js b/website/src/pages/hi/subgraphs/mcp/_meta.js
deleted file mode 100644
index 8630d4da27b3..000000000000
--- a/website/src/pages/hi/subgraphs/mcp/_meta.js
+++ /dev/null
@@ -1,5 +0,0 @@
-export default {
-  claude: '',
-  cline: '',
-  cursor: '',
-}
diff --git a/website/src/pages/hi/subgraphs/mcp/claude.mdx b/website/src/pages/hi/subgraphs/mcp/claude.mdx
deleted file mode 100644
index 027b272cb942..000000000000
--- a/website/src/pages/hi/subgraphs/mcp/claude.mdx
+++ /dev/null
@@ -1,179 +0,0 @@
----
-title: Claude Desktop
----
-
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Claude to interact directly with Subgraphs on The Graph Network. This integration allows you to find relevant Subgraphs for specific keywords and contracts, explore Subgraph schemas, and execute GraphQL queries—all through natural language conversations with Claude.
-
-## What You Can Do
-
-The Subgraph MCP integration enables you to:
-
-- Access the GraphQL schema for any Subgraph on The Graph Network
-- Execute GraphQL queries against any Subgraph deployment
-- Find top Subgraph deployments for a given keyword or contract address
-- Get 30-day query volume for Subgraph deployments
-- Ask natural language questions about Subgraph data without writing GraphQL queries manually
-
-## Prerequisites
-
-- [Node.js](https://nodejs.org/en) installed and available in your path
-- [Claude Desktop](https://claude.ai/download) installed (latest version)
-- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
-
-## Installation Options
-
-### Option 1: Using npx (Recommended)
-
-#### Configuration Steps using npx
-
-#### 1. Open Configuration File
-
-Navigate to your `claude_desktop_config.json` file:
-
-> **Settings** > **Developer** > **Edit Config**
-
-- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
-- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
-- Linux: `.config/Claude/claude_desktop_config.json`
-
-#### 2. Add Configuration
-
-Paste the following settings into your config file:
-
-```json
-{
-  "mcpServers": {
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-#### 3. Add Your Gateway API Key
-
-Replace `GATEWAY_API_KEY` with your API key from [Subgraph Studio](https://thegraph.com/studio/).
-
-#### 4. Save and Restart
-
-Once you've entered your Gateway API key into your settings, save the file and restart Claude Desktop.
-
-### Option 2: Building from Source
-
-#### Requirements
-
-- Rust (latest stable version recommended: 1.75+)
-  ```bash
-  curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
-  ```
-  Follow the on-screen instructions. For other platforms, see the [official Rust installation guide](https://www.rust-lang.org/tools/install).
-
-#### Installation Steps
-
-1. **Clone and Build the Repository**
-
-   ```bash
-   git clone git@github.com:graphops/subgraph-mcp.git
-   cd subgraph-mcp
-   cargo build --release
-   ```
-
-2. **Find the Command Path**
-
-   After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory.
-   - Navigate to your `subgraph-mcp` directory in terminal
-   - Run `pwd` to get the full path
-   - Combine the output with `/target/release/subgraph-mcp`
-
-3. **Configure Claude Desktop**
-
-   Open your `claude_desktop_config.json` file as described above and add:
-
-   ```json
-   {
-     "mcpServers": {
-       "subgraph": {
-         "command": "/path/to/your/subgraph-mcp/target/release/subgraph-mcp",
-         "env": {
-           "GATEWAY_API_KEY": "your-api-key-here"
-         }
-       }
-     }
-   }
-   ```
-
-   Replace `/path/to/your/subgraph-mcp/target/release/subgraph-mcp` with the actual path to the compiled binary.
-
-## Using The Graph Resource in Claude
-
-After configuring Claude Desktop:
-
-1. Restart Claude Desktop
-2. Start a new conversation
-3. Click on the context menu (top right)
-4. Add "Subgraph Server Instructions" as a resource by adding `graphql://subgraph` to your chat context
-
-> **Important**: Claude Desktop may not automatically utilize the Subgraph MCP. You must manually add "Subgraph Server Instructions" resource to your chat context for each conversation where you want to use it.
-
-## Troubleshooting
-
-To enable logs for the MCP when using the npx option, add the `--verbose true` option to your args array.
-
-## Available Subgraph Tools and Usage
-
-The Subgraph MCP provides several tools for interacting with Subgraphs:
-
-### Schema Retrieval Tools
-
-- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
-- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
-- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
-
-### Query Execution Tools
-
-- **Execute query by deployment ID/IPFS hash**: Run GraphQL queries against specific, immutable deployments
-- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
-
-### Discovery Tools
-
-- **Search subgraphs by keyword**: Find subgraphs by keyword in their display names, ordered by signal
-- **Get deployment 30-day query counts**: Get aggregate query count over the last 30 days for multiple subgraph deployments
-- **Get top Subgraph deployments for a contract**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain, ordered by query fees
-
-## Key Identifier Types
-
-- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a subgraph. Use `execute_query_by_subgraph_id` or `get_schema_by_subgraph_id`.
-- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment. Use `execute_query_by_deployment_id` or `get_schema_by_deployment_id`.
-- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific, immutable deployment. Use `execute_query_by_deployment_id` (the gateway treats it like a deployment ID for querying) or `get_schema_by_ipfs_hash`.
-
-## Benefits of Natural Language Queries
-
-One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Claude will:
-
-1. Understand your goal (lookup, find Subgraphs, query, get schema)
-2. Find relevant deployments if needed
-3. Fetch and interpret the Subgraph schema
-4. Convert your question into an appropriate GraphQL query
-5. Execute the query and present the results in a readable format
-
-### Example Natural Language Queries
-
-```
-What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
-```
-
-```
-Which tokens have the highest market cap in this Subgraph?
-```
-
-```
-Show me the most recent 5 swaps for the USDC/ETH pair
-```
-
-```
-Find the top subgraphs for contract 0x1f98431c8ad98523631ae4a59f267346ea31f984 on arbitrum-one
-```
diff --git a/website/src/pages/hi/subgraphs/mcp/cline.mdx b/website/src/pages/hi/subgraphs/mcp/cline.mdx
deleted file mode 100644
index 156221d9a127..000000000000
--- a/website/src/pages/hi/subgraphs/mcp/cline.mdx
+++ /dev/null
@@ -1,99 +0,0 @@
----
-title: Cline
----
-
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Cline to interact directly with Subgraphs on The Graph Network. This integration allows you to explore Subgraph schemas, execute GraphQL queries, and find relevant Subgraphs for specific contracts—all through natural language conversations with Cline.
-
-## Prerequisites
-
-- [Cline](https://cline.bot/) installed (latest version)
-- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
-
-## Configuration Steps
-
-### 1. Open Configuration File
-
-Create or edit your `cline_mcp_settings.json` file.
-
-> **MCP Servers** > **Installed** > **Configure MCP Servers**
-
-### 2. Add Configuration
-
-```json
-{
-  "mcpServers": {
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-### 3. Add Your API Key
-
-Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
-
-## Using The Graph Resource in Cline
-
-After configuring Cline:
-
-1. Restart Cline
-2. Start a new conversation
-3. Enable the Subgraph MCP from the context menu
-4. Add "Subgraph Server Instructions" as a resource to your chat context
-
-## Available Tools and Usage
-
-The Subgraph MCP provides several tools for interacting with Subgraphs:
-
-### Schema Retrieval Tools
-
-- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
-- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
-- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
-
-### Query Execution Tools
-
-- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
-- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
-
-### Discovery Tools
-
-- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
-
-## Natural Language Queries
-
-One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cline will:
-
-1. Understand your goal (lookup, find Subgraphs, query, get schema)
-2. Find relevant deployments if needed
-3. Fetch and interpret the Subgraph schema
-4. Convert your question into an appropriate GraphQL query
-5. Execute the query and present the results in a readable format
-
-### Example Natural Language Queries
-
-```
-What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
-```
-
-```
-Which tokens have the highest market cap in this Subgraph?
-```
-
-```
-Show me the most recent 5 swaps for the USDC/ETH pair
-```
-
-## Key Identifier Types
-
-When working with Subgraphs, you'll encounter different types of identifiers:
-
-- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
-- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
-- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/hi/subgraphs/mcp/cursor.mdx b/website/src/pages/hi/subgraphs/mcp/cursor.mdx
deleted file mode 100644
index 298f43ece048..000000000000
--- a/website/src/pages/hi/subgraphs/mcp/cursor.mdx
+++ /dev/null
@@ -1,94 +0,0 @@
----
-title: Cursor
----
-
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Cursor to interact directly with Subgraphs on The Graph Network. This integration allows you to explore Subgraph schemas, execute GraphQL queries, and find relevant Subgraphs for specific contracts—all through natural language conversations with Cursor.
-
-## Prerequisites
-
-- [Cursor](https://www.cursor.com/) installed (latest version)
-- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
-
-## Configuration Steps
-
-### 1. Open Configuration File
-
-Create or edit your `~/.cursor/mcp.json` file.
-
-> **Cursor Settings** > **MCP** > **Add new global MCP Server**
-
-### 2. Add Configuration
-
-```json
-{
-  "mcpServers": {
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-### 3. Add Your API Key
-
-Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
-
-### 4. Restart Cursor
-
-Restart Cursor, and start a new chat.
-
-## Available Subgraph Tools and Usage
-
-The Subgraph MCP provides several tools for interacting with Subgraphs:
-
-### Schema Retrieval Tools
-
-- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
-- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
-- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
-
-### Query Execution Tools
-
-- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
-- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
-
-### Discovery Tools
-
-- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
-
-## Benefits of Natural Language Queries
-
-One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cursor will:
-
-1. Understand your goal (lookup, find Subgraphs, query, get schema)
-2. Find relevant deployments if needed
-3. Fetch and interpret the Subgraph schema
-4. Convert your question into an appropriate GraphQL query
-5. Execute the query and present the results in a readable format
-
-### Example Natural Language Queries
-
-```
-What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
-```
-
-```
-Which tokens have the highest market cap in this Subgraph?
-```
-
-```
-Show me the most recent 5 swaps for the USDC/ETH pair
-```
-
-## Key Identifier Types
-
-When working with Subgraphs, you'll encounter different types of identifiers:
-
-- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
-- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
-- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/hi/substreams/_meta.js b/website/src/pages/hi/substreams/_meta.js
index a8ee04618eae..658bb8c213c6 100644
--- a/website/src/pages/hi/substreams/_meta.js
+++ b/website/src/pages/hi/substreams/_meta.js
@@ -5,5 +5,4 @@ export default {
   introduction: '',
   developing: titles.developing ?? '',
   publishing: '',
-  sps: titles.sps ?? '',
 }
diff --git a/website/src/pages/hi/token-api/_meta-titles.json b/website/src/pages/hi/token-api/_meta-titles.json
index 7ed31e0af95d..3108ecd3ebfd 100644
--- a/website/src/pages/hi/token-api/_meta-titles.json
+++ b/website/src/pages/hi/token-api/_meta-titles.json
@@ -1,6 +1,7 @@
 {
   "mcp": "MCP",
   "evm": "EVM Endpoints",
+  "svm": "SVM Endpoints",
   "monitoring": "Monitoring Endpoints",
   "faq": "FAQ"
 }
diff --git a/website/src/pages/hi/token-api/_meta.js b/website/src/pages/hi/token-api/_meta.js
index f67576d7f612..fb7f7334ea0c 100644
--- a/website/src/pages/hi/token-api/_meta.js
+++ b/website/src/pages/hi/token-api/_meta.js
@@ -2,8 +2,8 @@ import titles from './_meta-titles.json'
 
 export default {
   'quick-start': '',
-  mcp: titles.mcp ?? '',
   evm: titles.evm ?? '',
+  svm: titles.svm ?? '',
   monitoring: titles.monitoring ?? '',
   faq: '',
 }
diff --git a/website/src/pages/hi/token-api/mcp/_meta.js b/website/src/pages/hi/token-api/mcp/_meta.js
deleted file mode 100644
index 8630d4da27b3..000000000000
--- a/website/src/pages/hi/token-api/mcp/_meta.js
+++ /dev/null
@@ -1,5 +0,0 @@
-export default {
-  claude: '',
-  cline: '',
-  cursor: '',
-}
diff --git a/website/src/pages/hi/token-api/mcp/claude.mdx b/website/src/pages/hi/token-api/mcp/claude.mdx
deleted file mode 100644
index 43cdf594ab75..000000000000
--- a/website/src/pages/hi/token-api/mcp/claude.mdx
+++ /dev/null
@@ -1,58 +0,0 @@
----
-title: Using Claude Desktop to Access the Token API via MCP
-sidebarTitle: Claude Desktop
----
-
-## आवश्यक शर्तें
-
-- [Claude Desktop](https://claude.ai/download) installed.
-- A [JWT token](/token-api/quick-start) from [The Graph Market](https://thegraph.market/).
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path.
-- The `@pinax/mcp` package requires Node 18+, as it relies on built-in `fetch()` / `Headers`, which are not available in Node 17 or older. You may need to specify an exact path to an up-to-date Node version, or uninstall previous versions of Node to ensure `@pinax/mcp` uses the correct version.
-
-![Screenshot of Claude Desktop's settings panel showing the MCP server configuration option.](/img/claude-preview-token-api.png)
-
-## विन्यास
-
-Create or edit your `claude_desktop_config.json` file.
-
-> **Settings** > **Developer** > **Edit Config**
-
-- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
-- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
-- Linux: `.config/Claude/claude_desktop_config.json`
-
-```json label="claude_desktop_config.json"
-{
-  "mcpServers": {
-    "token-api": {
-      "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
-      "env": {
-        "ACCESS_TOKEN": "<https://thegraph.market JWT Access Token>"
-      }
-    }
-  }
-}
-```
-
-## Troubleshooting
-
-To enable logs for the MCP, use the `--verbose true` option.
-
-### ENOENT
-
-![Error dialog in Claude Desktop showing 'ENOENT' system error, indicating the npx/bunx command wasn't found in the system path.](/img/claude-ENOENT.png)
-
-Try to use the full path of the command instead:
-
-- Run `which npx` or `which bunx` to get the path of the command.
-- Replace `npx` or `bunx` in the configuration file with the full path (e.g. `/home/user/bin/bunx`).
-
-### Server disconnected
-
-![Connection error notification in Claude Desktop displaying 'Server disconnected' message.](/img/claude-server-disconnect.png)
-
-Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
-
-> You can always have a look at the full logs under `Claude/logs/mcp.log` and `Claude/logs/mcp-server-pinax.log` for more details.
diff --git a/website/src/pages/hi/token-api/mcp/cline.mdx b/website/src/pages/hi/token-api/mcp/cline.mdx
deleted file mode 100644
index c52404b0c7a6..000000000000
--- a/website/src/pages/hi/token-api/mcp/cline.mdx
+++ /dev/null
@@ -1,52 +0,0 @@
----
-title: Using Cline to Access the Token API via MCP
-sidebarTitle: Cline
----
-
-## आवश्यक शर्तें
-
-- [Cline](https://cline.bot/) installed.
-- A [JWT token](/token-api/quick-start) from [The Graph Market](https://thegraph.market/).
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path.
-- The `@pinax/mcp` package requires Node 18+, as it relies on built-in `fetch()` / `Headers`, which are not available in Node 17 or older. You may need to specify an exact path to an up-to-date Node version, or uninstall previous versions of Node to ensure `@pinax/mcp` uses the correct version.
-
-![Screenshot of Cline's MCP server configuration interface displaying the JSON settings file with mcp-pinax server details visible.](/img/cline-preview-token-api.png)
-
-## विन्यास
-
-Create or edit your `cline_mcp_settings.json` file.
-
-> **MCP Servers** > **Installed** > **Configure MCP Servers**
-
-```json label="cline_mcp_settings.json"
-{
-  "mcpServers": {
-    "mcp-pinax": {
-      "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
-      "env": {
-        "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
-      }
-    }
-  }
-}
-```
-
-## Troubleshooting
-
-To enable logs for the MCP, use the `--verbose true` option.
-
-### ENOENT
-
-![Cline error dialog showing 'ENOENT' system alert.](/img/cline-error.png)
-
-Try to use the full path of the command instead:
-
-- Run `which npx` or `which bunx` to get the path of the command.
-- Replace `npx` or `bunx` in the configuration file with the full path (e.g. `/home/user/bin/bunx`).
-
-### Server disconnected
-
-![Cline connection error notification displaying server disconnection warning.](/img/cline-missing-variables.png)
-
-Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/hi/token-api/mcp/cursor.mdx b/website/src/pages/hi/token-api/mcp/cursor.mdx
deleted file mode 100644
index a77bda66e5e5..000000000000
--- a/website/src/pages/hi/token-api/mcp/cursor.mdx
+++ /dev/null
@@ -1,50 +0,0 @@
----
-title: Using Cursor to Access the Token API via MCP
-sidebarTitle: Cursor
----
-
-## आवश्यक शर्तें
-
-- [Cursor](https://www.cursor.com/) installed.
-- A [JWT token](/token-api/quick-start) from [The Graph Market](https://thegraph.market/).
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path.
-- The `@pinax/mcp` package requires Node 18+, as it relies on built-in `fetch()` / `Headers`, which are not available in Node 17 or older. You may need to specify an exact path to an up-to-date Node version, or uninstall previous versions of Node to ensure `@pinax/mcp` uses the correct version.
-
-![Screenshot of Cursor's MCP configuration panel.](/img/cursor-preview-token-api.png)
-
-## विन्यास
-
-Create or edit your `~/.cursor/mcp.json` file.
-
-> **Cursor Settings** > **MCP** > **Add new global MCP Server**
-
-```json label="mcp.json"
-{
-  "mcpServers": {
-    "mcp-pinax": {
-      "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
-      "env": {
-        "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
-      }
-    }
-  }
-}
-```
-
-## Troubleshooting
-
-![Cursor IDE error notification that reads, "Failed to create client"](/img/cursor-error.png)
-
-To enable logs for the MCP, use the `--verbose true` option.
-
-### ENOENT
-
-Try to use the full path of the command instead:
-
-- Run `which npx` or `which bunx` to get the path of the command.
-- Replace `npx` or `bunx` in the configuration file with the full path (e.g. `/home/user/bin/bunx`).
-
-### Server disconnected
-
-Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/hi/token-api/svm/_meta.js b/website/src/pages/hi/token-api/svm/_meta.js
new file mode 100644
index 000000000000..1a48b82fcbf1
--- /dev/null
+++ b/website/src/pages/hi/token-api/svm/_meta.js
@@ -0,0 +1,5 @@
+export default {
+  'get-balances-svm': '',
+  'get-transfers-svm': '',
+  'get-swaps-svm': '',
+}
diff --git a/website/src/pages/hi/token-api/svm/get-balances-svm.mdx b/website/src/pages/hi/token-api/svm/get-balances-svm.mdx
new file mode 100644
index 000000000000..c2946c190bf9
--- /dev/null
+++ b/website/src/pages/hi/token-api/svm/get-balances-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Balances
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getBalancesSvm
+---
+
+Provides Solana tokens balances by token account address.
diff --git a/website/src/pages/hi/token-api/svm/get-swaps-svm.mdx b/website/src/pages/hi/token-api/svm/get-swaps-svm.mdx
new file mode 100644
index 000000000000..95282a38ac9f
--- /dev/null
+++ b/website/src/pages/hi/token-api/svm/get-swaps-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Swap Events
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getSwapsSvm
+---
+
+Provides Raydium swap events.
diff --git a/website/src/pages/hi/token-api/svm/get-transfers-svm.mdx b/website/src/pages/hi/token-api/svm/get-transfers-svm.mdx
new file mode 100644
index 000000000000..5335cdddf418
--- /dev/null
+++ b/website/src/pages/hi/token-api/svm/get-transfers-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Transfers Events
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getTransfersSvm
+---
+
+Provides SVM transfer events.
diff --git a/website/src/pages/it/ai-suite/_meta-titles.json b/website/src/pages/it/ai-suite/_meta-titles.json
new file mode 100644
index 000000000000..5eb482a7092b
--- /dev/null
+++ b/website/src/pages/it/ai-suite/_meta-titles.json
@@ -0,0 +1,6 @@
+{
+  "graph-assistant": "Graph Assistant",
+  "ai-introduction": "The Graph's AI",
+  "subgraph-mcp": "Subgraph MCP",
+  "token-api-mcp": "Token API MCP"
+}
diff --git a/website/src/pages/it/ai-suite/_meta.js b/website/src/pages/it/ai-suite/_meta.js
new file mode 100644
index 000000000000..c9e51dfd35fb
--- /dev/null
+++ b/website/src/pages/it/ai-suite/_meta.js
@@ -0,0 +1,8 @@
+import titles from './_meta-titles.json'
+
+export default {
+  'ai-introduction': titles['ai-introduction'],
+  'graph-assistant': titles['graph-assistant'],
+  'subgraph-mcp': titles['subgraph-mcp'],
+  'token-api-mcp': titles['token-api-mcp'],
+}
diff --git a/website/src/pages/it/ai-suite/ai-introduction.mdx b/website/src/pages/it/ai-suite/ai-introduction.mdx
new file mode 100644
index 000000000000..d25cc9f77358
--- /dev/null
+++ b/website/src/pages/it/ai-suite/ai-introduction.mdx
@@ -0,0 +1,58 @@
+---
+title: The Graph's AI
+---
+
+Build with speed and scale faster with The Graph's AI.
+
+## Using AI on The Graph
+
+Instead of relying on static datasets or centralized APIs, you can now access live blockchain data through our **agentic** app, [Graph Assistant](/ai-suite/graph-assistant/introduction/), and use our AI-native tooling, [Subgraph MCP](/ai-suite/subgraph-mcp/introduction/), and [Token API MCP](/ai-suite/token-api-mcp/introduction/).
+
+### Why Use Onchain Data with AI?
+
+Using onchain data with AI unlocks powerful new ways to interact with and understand blockchain ecosystems.
+
+- **AI for Non-Technical End Users**: AI can turn complex onchain data into accessible insights. Assistants powered by AI enable you to explore and analyze blockchain data without coding.
+- **AI for Developers**: You can use AI to interact directly with The Graph's data through your agents or build AI-powered applications on top of it. This streamlines development and opens up more intuitive, dynamic use cases.
+
+## AI for Non-Technical/End Users
+
+[Graph Assistant](/ai-suite/graph-assistant/introduction/) is a powerful **agentic** application that empowers users to easily interact with blockchain data. Ask questions in simple, natural language and get rich, AI powered insights. Both technical developers and non-technical product teams can move faster, make smarter decisions, and gain a clearer understanding than ever before.
+
+### Benefits of Using Graph Assistant
+
+- **Natural language Input**: You don't need to write complex queries or sift through dashboards. Simply ask your question in plain English and get clear, structured results.
+- **Multi-source support**: Works across multiple Subgraphs and Token API. The Assistant automatically determines which data source to use, so you don't have to switch tools or manage endpoints.
+- **Schema-free access**: You don't need to understand the schema. You can refer to tokens, protocols, dates, or addresses using natural language. The Assistant takes care of the rest.
+
+### Conversational Querying with Graph Assistant
+
+**Example queries:**
+
+- "List the top-5 swaps by USD value in the last 24 hours."
+- "Give me the daily volume on Uniswap."
+- "List the 20 most recently registered .eth names."
+
+[Graph Assistant](/ai-suite/graph-assistant/introduction/) will eventually be a one-stop shop for interacting with The Graph. Right now, it's an agentic AI app that uses state-of-the-art AI techniques, LLMs, and MCPs to understand and answer your questions about [Subgraphs](/subgraphs/developing/subgraphs/) and [Token API](/token-api/quick-start/) data.
+
+## AI for Developers
+
+### Enable Natural Language Access to Onchain Data
+
+[Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) servers connect to Claude, Cline, and Cursor. They enable models to understand, query, and interact with structured onchain data using natural language. MCPs remove the need to write low-level queries or interact with APIs directly.
+
+### Subgraph MCP
+
+The [Subgraph MCP](/ai-suite/subgraph-mcp/introduction/) server connects models to Subgraphs on The Graph Network. It allows language models to explore Subgraph schemas, execute GraphQL queries, find relevant Subgraphs by keyword or contract, and surface usage metrics using natural language.
+
+### Token API MCP
+
+The [Token API MCP](/ai-suite/token-api-mcp/introduction/) MCP server enables models to access onchain token data. It supports querying token metadata, wallet balances, transfer history, and top token holders through simple prompts.
+
+#### Benefits of Using Subgraph and Token API MCPs
+
+- Query Subgraphs and token data using natural language
+- Access GraphQL schemas and token metadata without manual queries
+- Find Subgraphs by keyword or contract and check 30-day usage
+- Retrieve real-time data from The Graph and onchain token sources
+- Get wallet balances, transfer history, and top token holders
diff --git a/website/src/pages/it/ai-suite/graph-assistant/_meta.js b/website/src/pages/it/ai-suite/graph-assistant/_meta.js
new file mode 100644
index 000000000000..74da5e0686a7
--- /dev/null
+++ b/website/src/pages/it/ai-suite/graph-assistant/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  'quick-start': '',
+  introduction: '',
+  'how-to-guide': '',
+  faq: '',
+}
diff --git a/website/src/pages/it/ai-suite/graph-assistant/faq.mdx b/website/src/pages/it/ai-suite/graph-assistant/faq.mdx
new file mode 100644
index 000000000000..8addf9935524
--- /dev/null
+++ b/website/src/pages/it/ai-suite/graph-assistant/faq.mdx
@@ -0,0 +1,26 @@
+---
+title: Graph Assistant FAQ
+sidebarTitle: 'FAQ'
+---
+
+This page summarizes some of the most common questions for developers using Graph Assistant.
+
+1. What is The Graph Assistant?
+
+The Graph Assistant is an AI-powered chat interface that lets you query blockchain data in plain English. Under the hood, it translates your questions into GraphQL calls against Subgraphs and the Token API, then returns results, no coding required.
+
+2. What is an agentic application?
+
+An agentic application combines AI-driven reasoning with external data sources or APIs to take autonomous actions on your behalf. In this case, Graph Assistant acts as an “agent” that interprets your natural-language prompts, builds and dispatches GraphQL queries, and formats the results so that you don't need to write or manage queries yourself.
+
+3. Which networks and data does Graph Assistant support?
+
+The Assistant has access to Subgraphs across multiple chains. If a Subgraph is published to The Graph Network and is being indexed, the Assistant can automatically route queries to it. The Assistant also has access to the Token API on Ethereum Mainnet, BSC, Unichain, Arbitrum-One, Optimism, and Polygon.
+
+4. Is there a usage limit or quota?
+
+Yes, 10 questions per hour.
+
+5. What if the Assistant can't interpret my question?
+
+When the Assistant fails to parse your intent (for example, ambiguous token name, missing context, or an unsupported request), it will prompt you for clarification. For instance, it might ask, “Did you mean XYZ on Ethereum or XYZ on Arbitrum?” or “Please specify a date range for this query.” If you continue to see parsing errors, check that you're using correct token symbols or specifying networks and time frames clearly.
diff --git a/website/src/pages/it/ai-suite/graph-assistant/how-to-guide.mdx b/website/src/pages/it/ai-suite/graph-assistant/how-to-guide.mdx
new file mode 100644
index 000000000000..463130894ad8
--- /dev/null
+++ b/website/src/pages/it/ai-suite/graph-assistant/how-to-guide.mdx
@@ -0,0 +1,56 @@
+---
+title: How To Use The Graph Assistant
+sidebarTitle: 'How-to Guide'
+---
+
+## Overview
+
+You type a natural language question into the chat interface, such as:
+
+```yaml
+'On Uniswap, return the top-10 pools by total value locked in USD.'
+```
+
+> [!IMPORTANT] All users can process 10 free queries per user per hour.
+
+> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the underlying agents. Do not share sensitive, personal, or private information.
+
+### Behind the Scenes
+
+The Assistant:
+
+1. Interprets your intent
+2. Maps it to the correct Subgraphs or Token API endpoint
+3. Executes optimized queries
+4. Returns clean, structured results
+
+You don't need to write queries or understand a Subgraph's schema, you simply ask.
+
+### Example Use Cases
+
+**Protocol Analytics**
+
+- “Compare daily active users on Aave vs. Compound in May 2025.”
+- “Show me the total value locked (TVL) for XYZDAO over the last quarter.”
+
+**Token Insights**
+
+- “What are the top 10 tokens by market cap on Ethereum right now?”
+- “How many XYZ did I receive between May 1 and May 15?”
+
+**Historical Data Retrieval**
+
+- “Fetch the token price history of XYZ for the last six months.”
+- “What was the average gas price on Ethereum during April?”
+
+**Portfolio Monitoring**
+
+- “List my wallet’s current token balances and their USD equivalents.”
+- “Calculate profit/loss on XYZ since xyz date.”
+
+**Cross-Chain Comparison**
+
+- “Show me the 7-day trading volume of XYZ on Ethereum vs. Polygon.”
+- “How many XYZ swaps occurred on Arbitrum yesterday?”
+
+To get started follow the [quickstart](/ai-suite/graph-assistant/quick-start/) and explore its capabilities.
diff --git a/website/src/pages/it/ai-suite/graph-assistant/introduction.mdx b/website/src/pages/it/ai-suite/graph-assistant/introduction.mdx
new file mode 100644
index 000000000000..65fdf0f96028
--- /dev/null
+++ b/website/src/pages/it/ai-suite/graph-assistant/introduction.mdx
@@ -0,0 +1,31 @@
+---
+title: Introduction
+---
+
+> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime.
+
+[Graph Assistant](https://thegraph.com/graph-assistant) (Beta) gives instant, code-free access to blockchain data, transforming natural language into precise, AI-powered queries without the need to code.
+
+## Overview
+
+[Graph Assistant](https://thegraph.com/graph-assistant) is an advanced, [agentic](/en/ai-suite/graph-assistant/faq/) easy-to-use chat interface for querying blockchain data using natural language. Unlike a basic chatbot, Graph Assistant can understand your intent, build complex queries, and execute them automatically. This gives you rich, AI-powered insights from onchain data without writing any code.
+
+- **Automatically** interprets user intent, generates precise queries, executes them via The Graph's Subgraphs and Token API, and presents structured, AI-powered answers without requiring any code.
+- **Removes** the technical complexity found in traditional dashboards or chatbots. It provides composable insights directly from indexed Subgraphs and Token datasets.
+
+## Core Features
+
+| Feature | Description |
+| --- | --- |
+| **Friendly Interface** | Conversational access to blockchain data via natural language. You simply ask questions, the Assistant fetches the answer, and renders results. |
+| **Backed by Subgraphs** | Uses subgraphs to index protocol-specific data like transactions, events, and protocol metrics. |
+| **Backed by Token API** | Uses Token API for token-level information like balances, transfers, and metadata. |
+| **No Setup Required** | No need to configure data sources or write queries. |
+| **Automatic Query Building** | The Assistant performs complex queries such as fetching historical token volumes, protocol analytics, or cross-chain data and handles filtering, pagination, and joins across Subgraphs automatically. |
+
+## Help Shape What's Next
+
+This is in **beta**, and community input is essential. If you have ideas, questions, or run into anything unexpected, we'd love to hear from you:
+
+- Join the community on [Discord](https://discord.com/invite/graphprotocol): Provide feedback and stay in the loop with other builders. You'll be able to join the `#graph-assistant` channel to share your experience directly.
+- Interested in going deeper? Reach out to become a dedicated beta tester so your specific use case can be better supported.
diff --git a/website/src/pages/it/ai-suite/graph-assistant/quick-start.mdx b/website/src/pages/it/ai-suite/graph-assistant/quick-start.mdx
new file mode 100644
index 000000000000..13f8478b8d2b
--- /dev/null
+++ b/website/src/pages/it/ai-suite/graph-assistant/quick-start.mdx
@@ -0,0 +1,44 @@
+---
+title: Quick Start
+---
+
+> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime.
+
+This guide provides step-by-step instructions for getting started with Graph Assistant quickly.
+
+## Step-by Step
+
+### Step 1. Create an Account
+
+Go to: [Graph Assistant](https://thegraph.com/graph-assistant)
+
+- Click Sign Up (or Log In if you already have an account).
+- Use your Google, GitHub, X, email or wallet credentials to log in.
+- No additional setup is required.
+
+### Step 2. Open the Assistant Chat
+
+After logging in:
+
+- You'll see Graph Assistant's interface.
+- At the bottom of the page, you will find a chat input bar. This is where you will interact with the Assistant.
+
+### Step 3: Ask Your First Question
+
+> [!IMPORTANT] All users can process 10 free queries per user per hour.
+
+In the input bar, type a natural-language query (everyday language).
+
+Example:
+
+```yaml
+Show me the 24-hour trading volume of XYZ token on Ethereum
+```
+
+> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the AI interface. Do not share sensitive, personal, or private information.
+
+The Assistant will:
+
+- Digest your question
+- Fetch onchain data using Subgraphs or the Token API
+- Return a clean, formatted response with the data you need
diff --git a/website/src/pages/it/ai-suite/subgraph-mcp/_meta.js b/website/src/pages/it/ai-suite/subgraph-mcp/_meta.js
new file mode 100644
index 000000000000..6f527b4e53e4
--- /dev/null
+++ b/website/src/pages/it/ai-suite/subgraph-mcp/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  introduction: '',
+  claude: '',
+  cline: '',
+  cursor: '',
+}
diff --git a/website/src/pages/it/ai-suite/subgraph-mcp/claude.mdx b/website/src/pages/it/ai-suite/subgraph-mcp/claude.mdx
new file mode 100644
index 000000000000..ff3caa4e3e7f
--- /dev/null
+++ b/website/src/pages/it/ai-suite/subgraph-mcp/claude.mdx
@@ -0,0 +1,169 @@
+---
+title: Claude Desktop
+---
+
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data via natural language conversations with Claude.
+
+## Prerequisites
+
+- [Node.js](https://nodejs.org/en) installed and available in your path
+- [Claude Desktop](https://claude.ai/download) installed (latest version)
+- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
+
+## Installation Options
+
+### Option 1: Using npx (Recommended)
+
+#### Configuration Steps using npx
+
+#### 1. Open Configuration File
+
+Navigate to your `claude_desktop_config.json` file:
+
+> **Settings** > **Developer** > **Edit Config**
+
+- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
+- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
+- Linux: `.config/Claude/claude_desktop_config.json`
+
+#### 2. Add Configuration
+
+Paste the following settings into your config file:
+
+```json
+{
+  "mcpServers": {
+    "subgraph": {
+      "command": "npx",
+      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
+      "env": {
+        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
+      }
+    }
+  }
+}
+```
+
+#### 3. Add Your Gateway API Key
+
+Replace `GATEWAY_API_KEY` with your API key from [Subgraph Studio](https://thegraph.com/studio/).
+
+#### 4. Save and Restart
+
+Once you've entered your Gateway API key into your settings, save the file and restart Claude Desktop.
+
+### Option 2: Building from Source
+
+#### Requirements
+
+- Rust (latest stable version recommended: 1.75+)
+  ```bash
+  curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
+  ```
+  Follow the on-screen instructions. For other platforms, see the [official Rust installation guide](https://www.rust-lang.org/tools/install).
+
+#### Installation Steps
+
+1. **Clone and Build the Repository**
+
+   ```bash
+   git clone git@github.com:graphops/subgraph-mcp.git
+   cd subgraph-mcp
+   cargo build --release
+   ```
+
+2. **Find the Command Path**
+
+   After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory.
+   - Navigate to your `subgraph-mcp` directory in terminal
+   - Run `pwd` to get the full path
+   - Combine the output with `/target/release/subgraph-mcp`
+
+3. **Configure Claude Desktop**
+
+   Open your `claude_desktop_config.json` file as described above and add:
+
+   ```json
+   {
+     "mcpServers": {
+       "subgraph": {
+         "command": "/path/to/your/subgraph-mcp/target/release/subgraph-mcp",
+         "env": {
+           "GATEWAY_API_KEY": "your-api-key-here"
+         }
+       }
+     }
+   }
+   ```
+
+   Replace `/path/to/your/subgraph-mcp/target/release/subgraph-mcp` with the actual path to the compiled binary.
+
+## Using The Graph Resource in Claude
+
+After configuring Claude Desktop:
+
+1. Restart Claude Desktop
+2. Start a new conversation
+3. Click on the context menu (top right)
+4. Add "Subgraph Server Instructions" as a resource by adding `graphql://subgraph` to your chat context
+
+> **Important**: Claude Desktop may not automatically utilize the Subgraph MCP. You must manually add "Subgraph Server Instructions" resource to your chat context for each conversation where you want to use it.
+
+## Troubleshooting
+
+To enable logs for the MCP when using the npx option, add the `--verbose true` option to your args array.
+
+## Available Subgraph Tools and Usage
+
+The Subgraph MCP provides several tools for interacting with Subgraphs:
+
+### Schema Retrieval Tools
+
+- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
+- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
+- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
+
+### Query Execution Tools
+
+- **Execute query by deployment ID/IPFS hash**: Run GraphQL queries against specific, immutable deployments
+- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
+
+### Discovery Tools
+
+- **Search subgraphs by keyword**: Find subgraphs by keyword in their display names, ordered by signal
+- **Get deployment 30-day query counts**: Get aggregate query count over the last 30 days for multiple subgraph deployments
+- **Get top Subgraph deployments for a contract**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain, ordered by query fees
+
+## Key Identifier Types
+
+- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a subgraph. Use `execute_query_by_subgraph_id` or `get_schema_by_subgraph_id`.
+- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment. Use `execute_query_by_deployment_id` or `get_schema_by_deployment_id`.
+- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific, immutable deployment. Use `execute_query_by_deployment_id` (the gateway treats it like a deployment ID for querying) or `get_schema_by_ipfs_hash`.
+
+## Benefits of Natural Language Queries
+
+One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Claude will:
+
+1. Understand your goal (lookup, find Subgraphs, query, get schema)
+2. Find relevant deployments if needed
+3. Fetch and interpret the Subgraph schema
+4. Convert your question into an appropriate GraphQL query
+5. Execute the query and present the results in a readable format
+
+### Example Natural Language Queries
+
+```
+What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
+```
+
+```
+Which tokens have the highest market cap in this Subgraph?
+```
+
+```
+Show me the most recent 5 swaps for the USDC/ETH pair
+```
+
+```
+Find the top subgraphs for contract 0x1f98431c8ad98523631ae4a59f267346ea31f984 on arbitrum-one
+```
diff --git a/website/src/pages/it/ai-suite/subgraph-mcp/cline.mdx b/website/src/pages/it/ai-suite/subgraph-mcp/cline.mdx
new file mode 100644
index 000000000000..eb8044bfe991
--- /dev/null
+++ b/website/src/pages/it/ai-suite/subgraph-mcp/cline.mdx
@@ -0,0 +1,99 @@
+---
+title: Cline
+---
+
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data through natural language conversations with Cline.
+
+## Prerequisites
+
+- [Cline](https://cline.bot/) installed (latest version)
+- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
+
+## Configuration Steps
+
+### 1. Open Configuration File
+
+Create or edit your `cline_mcp_settings.json` file.
+
+> **MCP Servers** > **Installed** > **Configure MCP Servers**
+
+### 2. Add Configuration
+
+```json
+{
+  "mcpServers": {
+    "subgraph": {
+      "command": "npx",
+      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
+      "env": {
+        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
+      }
+    }
+  }
+}
+```
+
+### 3. Add Your API Key
+
+Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
+
+## Using The Graph Resource in Cline
+
+After configuring Cline:
+
+1. Restart Cline
+2. Start a new conversation
+3. Enable the Subgraph MCP from the context menu
+4. Add "Subgraph Server Instructions" as a resource to your chat context
+
+## Available Tools and Usage
+
+The Subgraph MCP provides several tools for interacting with Subgraphs:
+
+### Schema Retrieval Tools
+
+- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
+- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
+- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
+
+### Query Execution Tools
+
+- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
+- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
+
+### Discovery Tools
+
+- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
+
+## Natural Language Queries
+
+One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cline will:
+
+1. Understand your goal (lookup, find Subgraphs, query, get schema)
+2. Find relevant deployments if needed
+3. Fetch and interpret the Subgraph schema
+4. Convert your question into an appropriate GraphQL query
+5. Execute the query and present the results in a readable format
+
+### Example Natural Language Queries
+
+```
+What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
+```
+
+```
+Which tokens have the highest market cap in this Subgraph?
+```
+
+```
+Show me the most recent 5 swaps for the USDC/ETH pair
+```
+
+## Key Identifier Types
+
+When working with Subgraphs, you'll encounter different types of identifiers:
+
+- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
+- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
+- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/it/ai-suite/subgraph-mcp/cursor.mdx b/website/src/pages/it/ai-suite/subgraph-mcp/cursor.mdx
new file mode 100644
index 000000000000..6291caf4b06b
--- /dev/null
+++ b/website/src/pages/it/ai-suite/subgraph-mcp/cursor.mdx
@@ -0,0 +1,94 @@
+---
+title: Cursor
+---
+
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data through natural language conversations with Cline.
+
+## Prerequisites
+
+- [Cursor](https://www.cursor.com/) installed (latest version)
+- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
+
+## Configuration Steps
+
+### 1. Open Configuration File
+
+Create or edit your `~/.cursor/mcp.json` file.
+
+> **Cursor Settings** > **MCP** > **Add new global MCP Server**
+
+### 2. Add Configuration
+
+```json
+{
+  "mcpServers": {
+    "subgraph": {
+      "command": "npx",
+      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
+      "env": {
+        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
+      }
+    }
+  }
+}
+```
+
+### 3. Add Your API Key
+
+Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
+
+### 4. Restart Cursor
+
+Restart Cursor, and start a new chat.
+
+## Available Subgraph Tools and Usage
+
+The Subgraph MCP provides several tools for interacting with Subgraphs:
+
+### Schema Retrieval Tools
+
+- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
+- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
+- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
+
+### Query Execution Tools
+
+- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
+- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
+
+### Discovery Tools
+
+- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
+
+## Benefits of Natural Language Queries
+
+One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cursor will:
+
+1. Understand your goal (lookup, find Subgraphs, query, get schema)
+2. Find relevant deployments if needed
+3. Fetch and interpret the Subgraph schema
+4. Convert your question into an appropriate GraphQL query
+5. Execute the query and present the results in a readable format
+
+### Example Natural Language Queries
+
+```
+What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
+```
+
+```
+Which tokens have the highest market cap in this Subgraph?
+```
+
+```
+Show me the most recent 5 swaps for the USDC/ETH pair
+```
+
+## Key Identifier Types
+
+When working with Subgraphs, you'll encounter different types of identifiers:
+
+- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
+- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
+- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/it/ai-suite/subgraph-mcp/introduction.mdx b/website/src/pages/it/ai-suite/subgraph-mcp/introduction.mdx
new file mode 100644
index 000000000000..da1272cf9a36
--- /dev/null
+++ b/website/src/pages/it/ai-suite/subgraph-mcp/introduction.mdx
@@ -0,0 +1,22 @@
+---
+title: Subgraph MCP Introduction
+sidebarTitle: 'Introduction'
+---
+
+Subgraph MCP server is an open-source implementation of [Anthropic's Model Context Protocol](https://modelcontextprotocol.io/introduction).
+
+It presents The Graph's Subgraph data through a set of MCP tools that any MCP-compatible client can call. With these tools, clients can search for relevant Subgraphs, inspect GraphQL schemas, and run queries against specific deployments on The Graph Network all within a single, standardized interface.
+
+The server itself does not hold a language model. Instead, it translates incoming MCP requests into Subgraph queries and returns the structured results, allowing the client's LLM to transform a natural-language prompt into actionable blockchain data.
+
+Think of it as a USB-C hub: it standardizes the plug-and-play connection between AI agents and The Graph's Subgraph ecosystem.
+
+## What You Can Do
+
+- Access GraphQL schemas for any Subgraph on The Graph Network
+- Run GraphQL queries on any Subgraph deployment
+- Discover top Subgraph deployments by keyword or contract address
+- Retrieve 30-day query volumes for Subgraph deployments
+- Ask questions about Subgraph data without writing GraphQL manually
+
+The Subgraph MCP server allows smooth integration with [Claude](/ai-suite/subgraph-mcp/claude/), [Cline](/ai-suite/subgraph-mcp/cline/), or [Cursor](/ai-suite/subgraph-mcp/cursor/), making blockchain data queries with The Graph Network a conversational experience.
diff --git a/website/src/pages/it/ai-suite/token-api-mcp/_meta.js b/website/src/pages/it/ai-suite/token-api-mcp/_meta.js
new file mode 100644
index 000000000000..6f527b4e53e4
--- /dev/null
+++ b/website/src/pages/it/ai-suite/token-api-mcp/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  introduction: '',
+  claude: '',
+  cline: '',
+  cursor: '',
+}
diff --git a/website/src/pages/uk/token-api/mcp/claude.mdx b/website/src/pages/it/ai-suite/token-api-mcp/claude.mdx
similarity index 100%
rename from website/src/pages/uk/token-api/mcp/claude.mdx
rename to website/src/pages/it/ai-suite/token-api-mcp/claude.mdx
diff --git a/website/src/pages/uk/token-api/mcp/cline.mdx b/website/src/pages/it/ai-suite/token-api-mcp/cline.mdx
similarity index 100%
rename from website/src/pages/uk/token-api/mcp/cline.mdx
rename to website/src/pages/it/ai-suite/token-api-mcp/cline.mdx
diff --git a/website/src/pages/uk/token-api/mcp/cursor.mdx b/website/src/pages/it/ai-suite/token-api-mcp/cursor.mdx
similarity index 100%
rename from website/src/pages/uk/token-api/mcp/cursor.mdx
rename to website/src/pages/it/ai-suite/token-api-mcp/cursor.mdx
diff --git a/website/src/pages/it/ai-suite/token-api-mcp/introduction.mdx b/website/src/pages/it/ai-suite/token-api-mcp/introduction.mdx
new file mode 100644
index 000000000000..b61ad0a1c485
--- /dev/null
+++ b/website/src/pages/it/ai-suite/token-api-mcp/introduction.mdx
@@ -0,0 +1,23 @@
+---
+title: Token API MCP Introduction
+sidebarTitle: 'Introduction'
+---
+
+Token API MCP server is an open-source implementation of [Anthropic's Model Context Protocol](https://modelcontextprotocol.io/introduction).
+
+This MCP server makes on-chain token data, including metadata, balances, transfers, and holder statistics, accessible through a set of MCP tools. Any compatible client can use these tools to fetch and analyze token information through a standardized interface. It connects to The Graph's hosted Token API database, enabling AI assistants to query real-time blockchain data using natural language requests that get translated into optimized SQL queries.
+
+The server itself does not host any language model. It simply converts MCP calls into data look-ups and returns structured results, letting the client's own LLM incorporate the results.
+
+Think of it as a USB-C hub: it standardizes the plug-and-play connection between AI agents and The Graph's Token API data.
+
+## What You Can Do
+
+- Retrieve token metadata including name, symbol, decimals, total supply, and contract address
+- Get token balances for any wallet address holding a supported ERC-20 token
+- Fetch token transfer activity including sender, receiver, amount, and timestamp
+- Identify top holders and analyze token distribution
+- Ask natural language questions about token data without writing smart contract calls
+- Access historical transfer data to analyze token movement over time
+
+The Token MCP server provides [Claude](/ai-suite/token-api-mcp/claude/), [Cline](/ai-suite/token-api-mcp/cline/), and [Cursor](/ai-suite/token-api-mcp/cursor/) with direct, conversational access to onchain token data.
diff --git a/website/src/pages/it/resources/_meta.js b/website/src/pages/it/resources/_meta.js
index aa8e2d0ec6a8..38c56cf56c43 100644
--- a/website/src/pages/it/resources/_meta.js
+++ b/website/src/pages/it/resources/_meta.js
@@ -7,5 +7,4 @@ export default {
   roles: titles.roles ?? '',
   'migration-guides': titles['migration-guides'] ?? '',
   'subgraph-studio-faq': '',
-  'claude-mcp': '',
 }
diff --git a/website/src/pages/it/resources/claude-mcp.mdx b/website/src/pages/it/resources/claude-mcp.mdx
deleted file mode 100644
index 44ed075cffda..000000000000
--- a/website/src/pages/it/resources/claude-mcp.mdx
+++ /dev/null
@@ -1,122 +0,0 @@
----
-title: Claude MCP
----
-
-This guide walks you through configuring Claude Desktop to use The Graph ecosystem's [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) resources: Token API and Subgraph. These integrations allow you to interact with blockchain data through natural language conversations with Claude.
-
-## What You Can Do
-
-With these integrations, you can:
-
-- **Token API**: Access token and wallet information across multiple blockchains
-- **Subgraph**: Find relevant Subgraphs for specific keywords and contracts, explore Subgraph schemas, and execute GraphQL queries
-
-## Prerequisites
-
-- [Node.js](https://nodejs.org/en/download/) installed and available in your path
-- [Claude Desktop](https://claude.ai/download) installed
-- API keys:
-  - Token API key from [The Graph Market](https://thegraph.market/)
-  - Gateway API key from [Subgraph Studio](https://thegraph.com/studio/apikeys/)
-
-## Configuration Steps
-
-### 1. Open Configuration File
-
-Navigate to your `claude_desktop_config.json` file:
-
-> **Claude Desktop** > **Settings** > **Developer** > **Edit Config**
-
-Paths by operating system:
-
-- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
-- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
-- Linux: `.config/Claude/claude_desktop_config.json`
-
-### 2. Add Configuration
-
-Replace the contents of the existing config file with:
-
-```json
-{
-  "mcpServers": {
-    "token-api": {
-      "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
-      "env": {
-        "ACCESS_TOKEN": "ACCESS_TOKEN"
-      }
-    },
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-### 3. Add Your API Keys
-
-Replace:
-
-- `ACCESS_TOKEN` with your Token API key from [The Graph Market](https://thegraph.market/)
-- `GATEWAY_API_KEY` with your Gateway API key from [Subgraph Studio](https://thegraph.com/studio/apikeys/)
-
-### 4. Save and Restart
-
-- Save the configuration file
-- Restart Claude Desktop
-
-### 5. Add The Graph Resources in Claude
-
-After configuration:
-
-1. Start a new conversation in Claude Desktop
-2. Click on the context menu (top right)
-3. Add "Subgraph Server Instructions" as a resource by entering `graphql://subgraph` for Subgraph MCP
-
-> **Important**: You must manually add The Graph resources to your chat context for each conversation where you want to use them.
-
-### 6. Run Queries
-
-Here are some example queries you can try after setting up the resources:
-
-### Subgraph Queries
-
-```
-What are the top pools in Uniswap?
-```
-
-```
-Who are the top Delegators of The Graph Protocol?
-```
-
-```
-Please make a bar chart for the number of active loans in Compound for the last 7 days
-```
-
-### Token API Queries
-
-```
-Show me the current price of ETH
-```
-
-```
-What are the top tokens by market cap on Ethereum?
-```
-
-```
-Analyze this wallet address: 0x...
-```
-
-## Troubleshooting
-
-If you encounter issues:
-
-1. **Verify Node.js Installation**: Ensure Node.js is correctly installed by running `node -v` in your terminal
-2. **Check API Keys**: Verify that your API keys are correctly entered in the configuration file
-3. **Enable Verbose Logging**: Add `--verbose true` to the args array in your configuration to see detailed logs
-4. **Restart Claude Desktop**: After making changes to the configuration, always restart Claude Desktop
diff --git a/website/src/pages/it/subgraphs/_meta.js b/website/src/pages/it/subgraphs/_meta.js
index 4365293ffc72..45841d5f3355 100644
--- a/website/src/pages/it/subgraphs/_meta.js
+++ b/website/src/pages/it/subgraphs/_meta.js
@@ -6,7 +6,6 @@ export default {
   querying: titles.querying ?? '',
   developing: titles.developing ?? '',
   billing: '',
-  mcp: titles.mcp ?? '',
   guides: titles.guides,
   'best-practices': titles['best-practices'],
   'fair-use-policy': '',
diff --git a/website/src/pages/it/subgraphs/mcp/_meta.js b/website/src/pages/it/subgraphs/mcp/_meta.js
deleted file mode 100644
index 8630d4da27b3..000000000000
--- a/website/src/pages/it/subgraphs/mcp/_meta.js
+++ /dev/null
@@ -1,5 +0,0 @@
-export default {
-  claude: '',
-  cline: '',
-  cursor: '',
-}
diff --git a/website/src/pages/it/subgraphs/mcp/claude.mdx b/website/src/pages/it/subgraphs/mcp/claude.mdx
deleted file mode 100644
index 027b272cb942..000000000000
--- a/website/src/pages/it/subgraphs/mcp/claude.mdx
+++ /dev/null
@@ -1,179 +0,0 @@
----
-title: Claude Desktop
----
-
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Claude to interact directly with Subgraphs on The Graph Network. This integration allows you to find relevant Subgraphs for specific keywords and contracts, explore Subgraph schemas, and execute GraphQL queries—all through natural language conversations with Claude.
-
-## What You Can Do
-
-The Subgraph MCP integration enables you to:
-
-- Access the GraphQL schema for any Subgraph on The Graph Network
-- Execute GraphQL queries against any Subgraph deployment
-- Find top Subgraph deployments for a given keyword or contract address
-- Get 30-day query volume for Subgraph deployments
-- Ask natural language questions about Subgraph data without writing GraphQL queries manually
-
-## Prerequisites
-
-- [Node.js](https://nodejs.org/en) installed and available in your path
-- [Claude Desktop](https://claude.ai/download) installed (latest version)
-- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
-
-## Installation Options
-
-### Option 1: Using npx (Recommended)
-
-#### Configuration Steps using npx
-
-#### 1. Open Configuration File
-
-Navigate to your `claude_desktop_config.json` file:
-
-> **Settings** > **Developer** > **Edit Config**
-
-- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
-- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
-- Linux: `.config/Claude/claude_desktop_config.json`
-
-#### 2. Add Configuration
-
-Paste the following settings into your config file:
-
-```json
-{
-  "mcpServers": {
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-#### 3. Add Your Gateway API Key
-
-Replace `GATEWAY_API_KEY` with your API key from [Subgraph Studio](https://thegraph.com/studio/).
-
-#### 4. Save and Restart
-
-Once you've entered your Gateway API key into your settings, save the file and restart Claude Desktop.
-
-### Option 2: Building from Source
-
-#### Requirements
-
-- Rust (latest stable version recommended: 1.75+)
-  ```bash
-  curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
-  ```
-  Follow the on-screen instructions. For other platforms, see the [official Rust installation guide](https://www.rust-lang.org/tools/install).
-
-#### Installation Steps
-
-1. **Clone and Build the Repository**
-
-   ```bash
-   git clone git@github.com:graphops/subgraph-mcp.git
-   cd subgraph-mcp
-   cargo build --release
-   ```
-
-2. **Find the Command Path**
-
-   After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory.
-   - Navigate to your `subgraph-mcp` directory in terminal
-   - Run `pwd` to get the full path
-   - Combine the output with `/target/release/subgraph-mcp`
-
-3. **Configure Claude Desktop**
-
-   Open your `claude_desktop_config.json` file as described above and add:
-
-   ```json
-   {
-     "mcpServers": {
-       "subgraph": {
-         "command": "/path/to/your/subgraph-mcp/target/release/subgraph-mcp",
-         "env": {
-           "GATEWAY_API_KEY": "your-api-key-here"
-         }
-       }
-     }
-   }
-   ```
-
-   Replace `/path/to/your/subgraph-mcp/target/release/subgraph-mcp` with the actual path to the compiled binary.
-
-## Using The Graph Resource in Claude
-
-After configuring Claude Desktop:
-
-1. Restart Claude Desktop
-2. Start a new conversation
-3. Click on the context menu (top right)
-4. Add "Subgraph Server Instructions" as a resource by adding `graphql://subgraph` to your chat context
-
-> **Important**: Claude Desktop may not automatically utilize the Subgraph MCP. You must manually add "Subgraph Server Instructions" resource to your chat context for each conversation where you want to use it.
-
-## Troubleshooting
-
-To enable logs for the MCP when using the npx option, add the `--verbose true` option to your args array.
-
-## Available Subgraph Tools and Usage
-
-The Subgraph MCP provides several tools for interacting with Subgraphs:
-
-### Schema Retrieval Tools
-
-- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
-- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
-- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
-
-### Query Execution Tools
-
-- **Execute query by deployment ID/IPFS hash**: Run GraphQL queries against specific, immutable deployments
-- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
-
-### Discovery Tools
-
-- **Search subgraphs by keyword**: Find subgraphs by keyword in their display names, ordered by signal
-- **Get deployment 30-day query counts**: Get aggregate query count over the last 30 days for multiple subgraph deployments
-- **Get top Subgraph deployments for a contract**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain, ordered by query fees
-
-## Key Identifier Types
-
-- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a subgraph. Use `execute_query_by_subgraph_id` or `get_schema_by_subgraph_id`.
-- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment. Use `execute_query_by_deployment_id` or `get_schema_by_deployment_id`.
-- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific, immutable deployment. Use `execute_query_by_deployment_id` (the gateway treats it like a deployment ID for querying) or `get_schema_by_ipfs_hash`.
-
-## Benefits of Natural Language Queries
-
-One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Claude will:
-
-1. Understand your goal (lookup, find Subgraphs, query, get schema)
-2. Find relevant deployments if needed
-3. Fetch and interpret the Subgraph schema
-4. Convert your question into an appropriate GraphQL query
-5. Execute the query and present the results in a readable format
-
-### Example Natural Language Queries
-
-```
-What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
-```
-
-```
-Which tokens have the highest market cap in this Subgraph?
-```
-
-```
-Show me the most recent 5 swaps for the USDC/ETH pair
-```
-
-```
-Find the top subgraphs for contract 0x1f98431c8ad98523631ae4a59f267346ea31f984 on arbitrum-one
-```
diff --git a/website/src/pages/it/subgraphs/mcp/cline.mdx b/website/src/pages/it/subgraphs/mcp/cline.mdx
deleted file mode 100644
index 156221d9a127..000000000000
--- a/website/src/pages/it/subgraphs/mcp/cline.mdx
+++ /dev/null
@@ -1,99 +0,0 @@
----
-title: Cline
----
-
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Cline to interact directly with Subgraphs on The Graph Network. This integration allows you to explore Subgraph schemas, execute GraphQL queries, and find relevant Subgraphs for specific contracts—all through natural language conversations with Cline.
-
-## Prerequisites
-
-- [Cline](https://cline.bot/) installed (latest version)
-- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
-
-## Configuration Steps
-
-### 1. Open Configuration File
-
-Create or edit your `cline_mcp_settings.json` file.
-
-> **MCP Servers** > **Installed** > **Configure MCP Servers**
-
-### 2. Add Configuration
-
-```json
-{
-  "mcpServers": {
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-### 3. Add Your API Key
-
-Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
-
-## Using The Graph Resource in Cline
-
-After configuring Cline:
-
-1. Restart Cline
-2. Start a new conversation
-3. Enable the Subgraph MCP from the context menu
-4. Add "Subgraph Server Instructions" as a resource to your chat context
-
-## Available Tools and Usage
-
-The Subgraph MCP provides several tools for interacting with Subgraphs:
-
-### Schema Retrieval Tools
-
-- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
-- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
-- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
-
-### Query Execution Tools
-
-- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
-- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
-
-### Discovery Tools
-
-- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
-
-## Natural Language Queries
-
-One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cline will:
-
-1. Understand your goal (lookup, find Subgraphs, query, get schema)
-2. Find relevant deployments if needed
-3. Fetch and interpret the Subgraph schema
-4. Convert your question into an appropriate GraphQL query
-5. Execute the query and present the results in a readable format
-
-### Example Natural Language Queries
-
-```
-What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
-```
-
-```
-Which tokens have the highest market cap in this Subgraph?
-```
-
-```
-Show me the most recent 5 swaps for the USDC/ETH pair
-```
-
-## Key Identifier Types
-
-When working with Subgraphs, you'll encounter different types of identifiers:
-
-- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
-- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
-- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/it/subgraphs/mcp/cursor.mdx b/website/src/pages/it/subgraphs/mcp/cursor.mdx
deleted file mode 100644
index 298f43ece048..000000000000
--- a/website/src/pages/it/subgraphs/mcp/cursor.mdx
+++ /dev/null
@@ -1,94 +0,0 @@
----
-title: Cursor
----
-
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Cursor to interact directly with Subgraphs on The Graph Network. This integration allows you to explore Subgraph schemas, execute GraphQL queries, and find relevant Subgraphs for specific contracts—all through natural language conversations with Cursor.
-
-## Prerequisites
-
-- [Cursor](https://www.cursor.com/) installed (latest version)
-- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
-
-## Configuration Steps
-
-### 1. Open Configuration File
-
-Create or edit your `~/.cursor/mcp.json` file.
-
-> **Cursor Settings** > **MCP** > **Add new global MCP Server**
-
-### 2. Add Configuration
-
-```json
-{
-  "mcpServers": {
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-### 3. Add Your API Key
-
-Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
-
-### 4. Restart Cursor
-
-Restart Cursor, and start a new chat.
-
-## Available Subgraph Tools and Usage
-
-The Subgraph MCP provides several tools for interacting with Subgraphs:
-
-### Schema Retrieval Tools
-
-- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
-- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
-- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
-
-### Query Execution Tools
-
-- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
-- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
-
-### Discovery Tools
-
-- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
-
-## Benefits of Natural Language Queries
-
-One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cursor will:
-
-1. Understand your goal (lookup, find Subgraphs, query, get schema)
-2. Find relevant deployments if needed
-3. Fetch and interpret the Subgraph schema
-4. Convert your question into an appropriate GraphQL query
-5. Execute the query and present the results in a readable format
-
-### Example Natural Language Queries
-
-```
-What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
-```
-
-```
-Which tokens have the highest market cap in this Subgraph?
-```
-
-```
-Show me the most recent 5 swaps for the USDC/ETH pair
-```
-
-## Key Identifier Types
-
-When working with Subgraphs, you'll encounter different types of identifiers:
-
-- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
-- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
-- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/it/substreams/_meta.js b/website/src/pages/it/substreams/_meta.js
index a8ee04618eae..658bb8c213c6 100644
--- a/website/src/pages/it/substreams/_meta.js
+++ b/website/src/pages/it/substreams/_meta.js
@@ -5,5 +5,4 @@ export default {
   introduction: '',
   developing: titles.developing ?? '',
   publishing: '',
-  sps: titles.sps ?? '',
 }
diff --git a/website/src/pages/it/token-api/_meta-titles.json b/website/src/pages/it/token-api/_meta-titles.json
index 7ed31e0af95d..3108ecd3ebfd 100644
--- a/website/src/pages/it/token-api/_meta-titles.json
+++ b/website/src/pages/it/token-api/_meta-titles.json
@@ -1,6 +1,7 @@
 {
   "mcp": "MCP",
   "evm": "EVM Endpoints",
+  "svm": "SVM Endpoints",
   "monitoring": "Monitoring Endpoints",
   "faq": "FAQ"
 }
diff --git a/website/src/pages/it/token-api/_meta.js b/website/src/pages/it/token-api/_meta.js
index f67576d7f612..fb7f7334ea0c 100644
--- a/website/src/pages/it/token-api/_meta.js
+++ b/website/src/pages/it/token-api/_meta.js
@@ -2,8 +2,8 @@ import titles from './_meta-titles.json'
 
 export default {
   'quick-start': '',
-  mcp: titles.mcp ?? '',
   evm: titles.evm ?? '',
+  svm: titles.svm ?? '',
   monitoring: titles.monitoring ?? '',
   faq: '',
 }
diff --git a/website/src/pages/it/token-api/mcp/_meta.js b/website/src/pages/it/token-api/mcp/_meta.js
deleted file mode 100644
index 8630d4da27b3..000000000000
--- a/website/src/pages/it/token-api/mcp/_meta.js
+++ /dev/null
@@ -1,5 +0,0 @@
-export default {
-  claude: '',
-  cline: '',
-  cursor: '',
-}
diff --git a/website/src/pages/it/token-api/svm/_meta.js b/website/src/pages/it/token-api/svm/_meta.js
new file mode 100644
index 000000000000..1a48b82fcbf1
--- /dev/null
+++ b/website/src/pages/it/token-api/svm/_meta.js
@@ -0,0 +1,5 @@
+export default {
+  'get-balances-svm': '',
+  'get-transfers-svm': '',
+  'get-swaps-svm': '',
+}
diff --git a/website/src/pages/it/token-api/svm/get-balances-svm.mdx b/website/src/pages/it/token-api/svm/get-balances-svm.mdx
new file mode 100644
index 000000000000..c2946c190bf9
--- /dev/null
+++ b/website/src/pages/it/token-api/svm/get-balances-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Balances
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getBalancesSvm
+---
+
+Provides Solana tokens balances by token account address.
diff --git a/website/src/pages/it/token-api/svm/get-swaps-svm.mdx b/website/src/pages/it/token-api/svm/get-swaps-svm.mdx
new file mode 100644
index 000000000000..95282a38ac9f
--- /dev/null
+++ b/website/src/pages/it/token-api/svm/get-swaps-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Swap Events
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getSwapsSvm
+---
+
+Provides Raydium swap events.
diff --git a/website/src/pages/it/token-api/svm/get-transfers-svm.mdx b/website/src/pages/it/token-api/svm/get-transfers-svm.mdx
new file mode 100644
index 000000000000..5335cdddf418
--- /dev/null
+++ b/website/src/pages/it/token-api/svm/get-transfers-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Transfers Events
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getTransfersSvm
+---
+
+Provides SVM transfer events.
diff --git a/website/src/pages/ja/ai-suite/_meta-titles.json b/website/src/pages/ja/ai-suite/_meta-titles.json
new file mode 100644
index 000000000000..5eb482a7092b
--- /dev/null
+++ b/website/src/pages/ja/ai-suite/_meta-titles.json
@@ -0,0 +1,6 @@
+{
+  "graph-assistant": "Graph Assistant",
+  "ai-introduction": "The Graph's AI",
+  "subgraph-mcp": "Subgraph MCP",
+  "token-api-mcp": "Token API MCP"
+}
diff --git a/website/src/pages/ja/ai-suite/_meta.js b/website/src/pages/ja/ai-suite/_meta.js
new file mode 100644
index 000000000000..c9e51dfd35fb
--- /dev/null
+++ b/website/src/pages/ja/ai-suite/_meta.js
@@ -0,0 +1,8 @@
+import titles from './_meta-titles.json'
+
+export default {
+  'ai-introduction': titles['ai-introduction'],
+  'graph-assistant': titles['graph-assistant'],
+  'subgraph-mcp': titles['subgraph-mcp'],
+  'token-api-mcp': titles['token-api-mcp'],
+}
diff --git a/website/src/pages/ja/ai-suite/ai-introduction.mdx b/website/src/pages/ja/ai-suite/ai-introduction.mdx
new file mode 100644
index 000000000000..d25cc9f77358
--- /dev/null
+++ b/website/src/pages/ja/ai-suite/ai-introduction.mdx
@@ -0,0 +1,58 @@
+---
+title: The Graph's AI
+---
+
+Build with speed and scale faster with The Graph's AI.
+
+## Using AI on The Graph
+
+Instead of relying on static datasets or centralized APIs, you can now access live blockchain data through our **agentic** app, [Graph Assistant](/ai-suite/graph-assistant/introduction/), and use our AI-native tooling, [Subgraph MCP](/ai-suite/subgraph-mcp/introduction/), and [Token API MCP](/ai-suite/token-api-mcp/introduction/).
+
+### Why Use Onchain Data with AI?
+
+Using onchain data with AI unlocks powerful new ways to interact with and understand blockchain ecosystems.
+
+- **AI for Non-Technical End Users**: AI can turn complex onchain data into accessible insights. Assistants powered by AI enable you to explore and analyze blockchain data without coding.
+- **AI for Developers**: You can use AI to interact directly with The Graph's data through your agents or build AI-powered applications on top of it. This streamlines development and opens up more intuitive, dynamic use cases.
+
+## AI for Non-Technical/End Users
+
+[Graph Assistant](/ai-suite/graph-assistant/introduction/) is a powerful **agentic** application that empowers users to easily interact with blockchain data. Ask questions in simple, natural language and get rich, AI powered insights. Both technical developers and non-technical product teams can move faster, make smarter decisions, and gain a clearer understanding than ever before.
+
+### Benefits of Using Graph Assistant
+
+- **Natural language Input**: You don't need to write complex queries or sift through dashboards. Simply ask your question in plain English and get clear, structured results.
+- **Multi-source support**: Works across multiple Subgraphs and Token API. The Assistant automatically determines which data source to use, so you don't have to switch tools or manage endpoints.
+- **Schema-free access**: You don't need to understand the schema. You can refer to tokens, protocols, dates, or addresses using natural language. The Assistant takes care of the rest.
+
+### Conversational Querying with Graph Assistant
+
+**Example queries:**
+
+- "List the top-5 swaps by USD value in the last 24 hours."
+- "Give me the daily volume on Uniswap."
+- "List the 20 most recently registered .eth names."
+
+[Graph Assistant](/ai-suite/graph-assistant/introduction/) will eventually be a one-stop shop for interacting with The Graph. Right now, it's an agentic AI app that uses state-of-the-art AI techniques, LLMs, and MCPs to understand and answer your questions about [Subgraphs](/subgraphs/developing/subgraphs/) and [Token API](/token-api/quick-start/) data.
+
+## AI for Developers
+
+### Enable Natural Language Access to Onchain Data
+
+[Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) servers connect to Claude, Cline, and Cursor. They enable models to understand, query, and interact with structured onchain data using natural language. MCPs remove the need to write low-level queries or interact with APIs directly.
+
+### Subgraph MCP
+
+The [Subgraph MCP](/ai-suite/subgraph-mcp/introduction/) server connects models to Subgraphs on The Graph Network. It allows language models to explore Subgraph schemas, execute GraphQL queries, find relevant Subgraphs by keyword or contract, and surface usage metrics using natural language.
+
+### Token API MCP
+
+The [Token API MCP](/ai-suite/token-api-mcp/introduction/) MCP server enables models to access onchain token data. It supports querying token metadata, wallet balances, transfer history, and top token holders through simple prompts.
+
+#### Benefits of Using Subgraph and Token API MCPs
+
+- Query Subgraphs and token data using natural language
+- Access GraphQL schemas and token metadata without manual queries
+- Find Subgraphs by keyword or contract and check 30-day usage
+- Retrieve real-time data from The Graph and onchain token sources
+- Get wallet balances, transfer history, and top token holders
diff --git a/website/src/pages/ja/ai-suite/graph-assistant/_meta.js b/website/src/pages/ja/ai-suite/graph-assistant/_meta.js
new file mode 100644
index 000000000000..74da5e0686a7
--- /dev/null
+++ b/website/src/pages/ja/ai-suite/graph-assistant/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  'quick-start': '',
+  introduction: '',
+  'how-to-guide': '',
+  faq: '',
+}
diff --git a/website/src/pages/ja/ai-suite/graph-assistant/faq.mdx b/website/src/pages/ja/ai-suite/graph-assistant/faq.mdx
new file mode 100644
index 000000000000..8addf9935524
--- /dev/null
+++ b/website/src/pages/ja/ai-suite/graph-assistant/faq.mdx
@@ -0,0 +1,26 @@
+---
+title: Graph Assistant FAQ
+sidebarTitle: 'FAQ'
+---
+
+This page summarizes some of the most common questions for developers using Graph Assistant.
+
+1. What is The Graph Assistant?
+
+The Graph Assistant is an AI-powered chat interface that lets you query blockchain data in plain English. Under the hood, it translates your questions into GraphQL calls against Subgraphs and the Token API, then returns results, no coding required.
+
+2. What is an agentic application?
+
+An agentic application combines AI-driven reasoning with external data sources or APIs to take autonomous actions on your behalf. In this case, Graph Assistant acts as an “agent” that interprets your natural-language prompts, builds and dispatches GraphQL queries, and formats the results so that you don't need to write or manage queries yourself.
+
+3. Which networks and data does Graph Assistant support?
+
+The Assistant has access to Subgraphs across multiple chains. If a Subgraph is published to The Graph Network and is being indexed, the Assistant can automatically route queries to it. The Assistant also has access to the Token API on Ethereum Mainnet, BSC, Unichain, Arbitrum-One, Optimism, and Polygon.
+
+4. Is there a usage limit or quota?
+
+Yes, 10 questions per hour.
+
+5. What if the Assistant can't interpret my question?
+
+When the Assistant fails to parse your intent (for example, ambiguous token name, missing context, or an unsupported request), it will prompt you for clarification. For instance, it might ask, “Did you mean XYZ on Ethereum or XYZ on Arbitrum?” or “Please specify a date range for this query.” If you continue to see parsing errors, check that you're using correct token symbols or specifying networks and time frames clearly.
diff --git a/website/src/pages/ja/ai-suite/graph-assistant/how-to-guide.mdx b/website/src/pages/ja/ai-suite/graph-assistant/how-to-guide.mdx
new file mode 100644
index 000000000000..463130894ad8
--- /dev/null
+++ b/website/src/pages/ja/ai-suite/graph-assistant/how-to-guide.mdx
@@ -0,0 +1,56 @@
+---
+title: How To Use The Graph Assistant
+sidebarTitle: 'How-to Guide'
+---
+
+## Overview
+
+You type a natural language question into the chat interface, such as:
+
+```yaml
+'On Uniswap, return the top-10 pools by total value locked in USD.'
+```
+
+> [!IMPORTANT] All users can process 10 free queries per user per hour.
+
+> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the underlying agents. Do not share sensitive, personal, or private information.
+
+### Behind the Scenes
+
+The Assistant:
+
+1. Interprets your intent
+2. Maps it to the correct Subgraphs or Token API endpoint
+3. Executes optimized queries
+4. Returns clean, structured results
+
+You don't need to write queries or understand a Subgraph's schema, you simply ask.
+
+### Example Use Cases
+
+**Protocol Analytics**
+
+- “Compare daily active users on Aave vs. Compound in May 2025.”
+- “Show me the total value locked (TVL) for XYZDAO over the last quarter.”
+
+**Token Insights**
+
+- “What are the top 10 tokens by market cap on Ethereum right now?”
+- “How many XYZ did I receive between May 1 and May 15?”
+
+**Historical Data Retrieval**
+
+- “Fetch the token price history of XYZ for the last six months.”
+- “What was the average gas price on Ethereum during April?”
+
+**Portfolio Monitoring**
+
+- “List my wallet’s current token balances and their USD equivalents.”
+- “Calculate profit/loss on XYZ since xyz date.”
+
+**Cross-Chain Comparison**
+
+- “Show me the 7-day trading volume of XYZ on Ethereum vs. Polygon.”
+- “How many XYZ swaps occurred on Arbitrum yesterday?”
+
+To get started follow the [quickstart](/ai-suite/graph-assistant/quick-start/) and explore its capabilities.
diff --git a/website/src/pages/ja/ai-suite/graph-assistant/introduction.mdx b/website/src/pages/ja/ai-suite/graph-assistant/introduction.mdx
new file mode 100644
index 000000000000..65fdf0f96028
--- /dev/null
+++ b/website/src/pages/ja/ai-suite/graph-assistant/introduction.mdx
@@ -0,0 +1,31 @@
+---
+title: Introduction
+---
+
+> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime.
+
+[Graph Assistant](https://thegraph.com/graph-assistant) (Beta) gives instant, code-free access to blockchain data, transforming natural language into precise, AI-powered queries without the need to code.
+
+## Overview
+
+[Graph Assistant](https://thegraph.com/graph-assistant) is an advanced, [agentic](/en/ai-suite/graph-assistant/faq/) easy-to-use chat interface for querying blockchain data using natural language. Unlike a basic chatbot, Graph Assistant can understand your intent, build complex queries, and execute them automatically. This gives you rich, AI-powered insights from onchain data without writing any code.
+
+- **Automatically** interprets user intent, generates precise queries, executes them via The Graph's Subgraphs and Token API, and presents structured, AI-powered answers without requiring any code.
+- **Removes** the technical complexity found in traditional dashboards or chatbots. It provides composable insights directly from indexed Subgraphs and Token datasets.
+
+## Core Features
+
+| Feature | Description |
+| --- | --- |
+| **Friendly Interface** | Conversational access to blockchain data via natural language. You simply ask questions, the Assistant fetches the answer, and renders results. |
+| **Backed by Subgraphs** | Uses subgraphs to index protocol-specific data like transactions, events, and protocol metrics. |
+| **Backed by Token API** | Uses Token API for token-level information like balances, transfers, and metadata. |
+| **No Setup Required** | No need to configure data sources or write queries. |
+| **Automatic Query Building** | The Assistant performs complex queries such as fetching historical token volumes, protocol analytics, or cross-chain data and handles filtering, pagination, and joins across Subgraphs automatically. |
+
+## Help Shape What's Next
+
+This is in **beta**, and community input is essential. If you have ideas, questions, or run into anything unexpected, we'd love to hear from you:
+
+- Join the community on [Discord](https://discord.com/invite/graphprotocol): Provide feedback and stay in the loop with other builders. You'll be able to join the `#graph-assistant` channel to share your experience directly.
+- Interested in going deeper? Reach out to become a dedicated beta tester so your specific use case can be better supported.
diff --git a/website/src/pages/ja/ai-suite/graph-assistant/quick-start.mdx b/website/src/pages/ja/ai-suite/graph-assistant/quick-start.mdx
new file mode 100644
index 000000000000..13f8478b8d2b
--- /dev/null
+++ b/website/src/pages/ja/ai-suite/graph-assistant/quick-start.mdx
@@ -0,0 +1,44 @@
+---
+title: Quick Start
+---
+
+> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime.
+
+This guide provides step-by-step instructions for getting started with Graph Assistant quickly.
+
+## Step-by Step
+
+### Step 1. Create an Account
+
+Go to: [Graph Assistant](https://thegraph.com/graph-assistant)
+
+- Click Sign Up (or Log In if you already have an account).
+- Use your Google, GitHub, X, email or wallet credentials to log in.
+- No additional setup is required.
+
+### Step 2. Open the Assistant Chat
+
+After logging in:
+
+- You'll see Graph Assistant's interface.
+- At the bottom of the page, you will find a chat input bar. This is where you will interact with the Assistant.
+
+### Step 3: Ask Your First Question
+
+> [!IMPORTANT] All users can process 10 free queries per user per hour.
+
+In the input bar, type a natural-language query (everyday language).
+
+Example:
+
+```yaml
+Show me the 24-hour trading volume of XYZ token on Ethereum
+```
+
+> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the AI interface. Do not share sensitive, personal, or private information.
+
+The Assistant will:
+
+- Digest your question
+- Fetch onchain data using Subgraphs or the Token API
+- Return a clean, formatted response with the data you need
diff --git a/website/src/pages/ja/ai-suite/subgraph-mcp/_meta.js b/website/src/pages/ja/ai-suite/subgraph-mcp/_meta.js
new file mode 100644
index 000000000000..6f527b4e53e4
--- /dev/null
+++ b/website/src/pages/ja/ai-suite/subgraph-mcp/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  introduction: '',
+  claude: '',
+  cline: '',
+  cursor: '',
+}
diff --git a/website/src/pages/ja/ai-suite/subgraph-mcp/claude.mdx b/website/src/pages/ja/ai-suite/subgraph-mcp/claude.mdx
new file mode 100644
index 000000000000..ff3caa4e3e7f
--- /dev/null
+++ b/website/src/pages/ja/ai-suite/subgraph-mcp/claude.mdx
@@ -0,0 +1,169 @@
+---
+title: Claude Desktop
+---
+
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data via natural language conversations with Claude.
+
+## Prerequisites
+
+- [Node.js](https://nodejs.org/en) installed and available in your path
+- [Claude Desktop](https://claude.ai/download) installed (latest version)
+- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
+
+## Installation Options
+
+### Option 1: Using npx (Recommended)
+
+#### Configuration Steps using npx
+
+#### 1. Open Configuration File
+
+Navigate to your `claude_desktop_config.json` file:
+
+> **Settings** > **Developer** > **Edit Config**
+
+- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
+- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
+- Linux: `.config/Claude/claude_desktop_config.json`
+
+#### 2. Add Configuration
+
+Paste the following settings into your config file:
+
+```json
+{
+  "mcpServers": {
+    "subgraph": {
+      "command": "npx",
+      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
+      "env": {
+        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
+      }
+    }
+  }
+}
+```
+
+#### 3. Add Your Gateway API Key
+
+Replace `GATEWAY_API_KEY` with your API key from [Subgraph Studio](https://thegraph.com/studio/).
+
+#### 4. Save and Restart
+
+Once you've entered your Gateway API key into your settings, save the file and restart Claude Desktop.
+
+### Option 2: Building from Source
+
+#### Requirements
+
+- Rust (latest stable version recommended: 1.75+)
+  ```bash
+  curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
+  ```
+  Follow the on-screen instructions. For other platforms, see the [official Rust installation guide](https://www.rust-lang.org/tools/install).
+
+#### Installation Steps
+
+1. **Clone and Build the Repository**
+
+   ```bash
+   git clone git@github.com:graphops/subgraph-mcp.git
+   cd subgraph-mcp
+   cargo build --release
+   ```
+
+2. **Find the Command Path**
+
+   After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory.
+   - Navigate to your `subgraph-mcp` directory in terminal
+   - Run `pwd` to get the full path
+   - Combine the output with `/target/release/subgraph-mcp`
+
+3. **Configure Claude Desktop**
+
+   Open your `claude_desktop_config.json` file as described above and add:
+
+   ```json
+   {
+     "mcpServers": {
+       "subgraph": {
+         "command": "/path/to/your/subgraph-mcp/target/release/subgraph-mcp",
+         "env": {
+           "GATEWAY_API_KEY": "your-api-key-here"
+         }
+       }
+     }
+   }
+   ```
+
+   Replace `/path/to/your/subgraph-mcp/target/release/subgraph-mcp` with the actual path to the compiled binary.
+
+## Using The Graph Resource in Claude
+
+After configuring Claude Desktop:
+
+1. Restart Claude Desktop
+2. Start a new conversation
+3. Click on the context menu (top right)
+4. Add "Subgraph Server Instructions" as a resource by adding `graphql://subgraph` to your chat context
+
+> **Important**: Claude Desktop may not automatically utilize the Subgraph MCP. You must manually add "Subgraph Server Instructions" resource to your chat context for each conversation where you want to use it.
+
+## Troubleshooting
+
+To enable logs for the MCP when using the npx option, add the `--verbose true` option to your args array.
+
+## Available Subgraph Tools and Usage
+
+The Subgraph MCP provides several tools for interacting with Subgraphs:
+
+### Schema Retrieval Tools
+
+- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
+- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
+- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
+
+### Query Execution Tools
+
+- **Execute query by deployment ID/IPFS hash**: Run GraphQL queries against specific, immutable deployments
+- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
+
+### Discovery Tools
+
+- **Search subgraphs by keyword**: Find subgraphs by keyword in their display names, ordered by signal
+- **Get deployment 30-day query counts**: Get aggregate query count over the last 30 days for multiple subgraph deployments
+- **Get top Subgraph deployments for a contract**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain, ordered by query fees
+
+## Key Identifier Types
+
+- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a subgraph. Use `execute_query_by_subgraph_id` or `get_schema_by_subgraph_id`.
+- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment. Use `execute_query_by_deployment_id` or `get_schema_by_deployment_id`.
+- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific, immutable deployment. Use `execute_query_by_deployment_id` (the gateway treats it like a deployment ID for querying) or `get_schema_by_ipfs_hash`.
+
+## Benefits of Natural Language Queries
+
+One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Claude will:
+
+1. Understand your goal (lookup, find Subgraphs, query, get schema)
+2. Find relevant deployments if needed
+3. Fetch and interpret the Subgraph schema
+4. Convert your question into an appropriate GraphQL query
+5. Execute the query and present the results in a readable format
+
+### Example Natural Language Queries
+
+```
+What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
+```
+
+```
+Which tokens have the highest market cap in this Subgraph?
+```
+
+```
+Show me the most recent 5 swaps for the USDC/ETH pair
+```
+
+```
+Find the top subgraphs for contract 0x1f98431c8ad98523631ae4a59f267346ea31f984 on arbitrum-one
+```
diff --git a/website/src/pages/ja/ai-suite/subgraph-mcp/cline.mdx b/website/src/pages/ja/ai-suite/subgraph-mcp/cline.mdx
new file mode 100644
index 000000000000..eb8044bfe991
--- /dev/null
+++ b/website/src/pages/ja/ai-suite/subgraph-mcp/cline.mdx
@@ -0,0 +1,99 @@
+---
+title: Cline
+---
+
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data through natural language conversations with Cline.
+
+## Prerequisites
+
+- [Cline](https://cline.bot/) installed (latest version)
+- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
+
+## Configuration Steps
+
+### 1. Open Configuration File
+
+Create or edit your `cline_mcp_settings.json` file.
+
+> **MCP Servers** > **Installed** > **Configure MCP Servers**
+
+### 2. Add Configuration
+
+```json
+{
+  "mcpServers": {
+    "subgraph": {
+      "command": "npx",
+      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
+      "env": {
+        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
+      }
+    }
+  }
+}
+```
+
+### 3. Add Your API Key
+
+Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
+
+## Using The Graph Resource in Cline
+
+After configuring Cline:
+
+1. Restart Cline
+2. Start a new conversation
+3. Enable the Subgraph MCP from the context menu
+4. Add "Subgraph Server Instructions" as a resource to your chat context
+
+## Available Tools and Usage
+
+The Subgraph MCP provides several tools for interacting with Subgraphs:
+
+### Schema Retrieval Tools
+
+- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
+- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
+- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
+
+### Query Execution Tools
+
+- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
+- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
+
+### Discovery Tools
+
+- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
+
+## Natural Language Queries
+
+One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cline will:
+
+1. Understand your goal (lookup, find Subgraphs, query, get schema)
+2. Find relevant deployments if needed
+3. Fetch and interpret the Subgraph schema
+4. Convert your question into an appropriate GraphQL query
+5. Execute the query and present the results in a readable format
+
+### Example Natural Language Queries
+
+```
+What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
+```
+
+```
+Which tokens have the highest market cap in this Subgraph?
+```
+
+```
+Show me the most recent 5 swaps for the USDC/ETH pair
+```
+
+## Key Identifier Types
+
+When working with Subgraphs, you'll encounter different types of identifiers:
+
+- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
+- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
+- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/ja/ai-suite/subgraph-mcp/cursor.mdx b/website/src/pages/ja/ai-suite/subgraph-mcp/cursor.mdx
new file mode 100644
index 000000000000..6291caf4b06b
--- /dev/null
+++ b/website/src/pages/ja/ai-suite/subgraph-mcp/cursor.mdx
@@ -0,0 +1,94 @@
+---
+title: Cursor
+---
+
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data through natural language conversations with Cline.
+
+## Prerequisites
+
+- [Cursor](https://www.cursor.com/) installed (latest version)
+- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
+
+## Configuration Steps
+
+### 1. Open Configuration File
+
+Create or edit your `~/.cursor/mcp.json` file.
+
+> **Cursor Settings** > **MCP** > **Add new global MCP Server**
+
+### 2. Add Configuration
+
+```json
+{
+  "mcpServers": {
+    "subgraph": {
+      "command": "npx",
+      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
+      "env": {
+        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
+      }
+    }
+  }
+}
+```
+
+### 3. Add Your API Key
+
+Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
+
+### 4. Restart Cursor
+
+Restart Cursor, and start a new chat.
+
+## Available Subgraph Tools and Usage
+
+The Subgraph MCP provides several tools for interacting with Subgraphs:
+
+### Schema Retrieval Tools
+
+- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
+- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
+- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
+
+### Query Execution Tools
+
+- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
+- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
+
+### Discovery Tools
+
+- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
+
+## Benefits of Natural Language Queries
+
+One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cursor will:
+
+1. Understand your goal (lookup, find Subgraphs, query, get schema)
+2. Find relevant deployments if needed
+3. Fetch and interpret the Subgraph schema
+4. Convert your question into an appropriate GraphQL query
+5. Execute the query and present the results in a readable format
+
+### Example Natural Language Queries
+
+```
+What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
+```
+
+```
+Which tokens have the highest market cap in this Subgraph?
+```
+
+```
+Show me the most recent 5 swaps for the USDC/ETH pair
+```
+
+## Key Identifier Types
+
+When working with Subgraphs, you'll encounter different types of identifiers:
+
+- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
+- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
+- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/ja/ai-suite/subgraph-mcp/introduction.mdx b/website/src/pages/ja/ai-suite/subgraph-mcp/introduction.mdx
new file mode 100644
index 000000000000..da1272cf9a36
--- /dev/null
+++ b/website/src/pages/ja/ai-suite/subgraph-mcp/introduction.mdx
@@ -0,0 +1,22 @@
+---
+title: Subgraph MCP Introduction
+sidebarTitle: 'Introduction'
+---
+
+Subgraph MCP server is an open-source implementation of [Anthropic's Model Context Protocol](https://modelcontextprotocol.io/introduction).
+
+It presents The Graph's Subgraph data through a set of MCP tools that any MCP-compatible client can call. With these tools, clients can search for relevant Subgraphs, inspect GraphQL schemas, and run queries against specific deployments on The Graph Network all within a single, standardized interface.
+
+The server itself does not hold a language model. Instead, it translates incoming MCP requests into Subgraph queries and returns the structured results, allowing the client's LLM to transform a natural-language prompt into actionable blockchain data.
+
+Think of it as a USB-C hub: it standardizes the plug-and-play connection between AI agents and The Graph's Subgraph ecosystem.
+
+## What You Can Do
+
+- Access GraphQL schemas for any Subgraph on The Graph Network
+- Run GraphQL queries on any Subgraph deployment
+- Discover top Subgraph deployments by keyword or contract address
+- Retrieve 30-day query volumes for Subgraph deployments
+- Ask questions about Subgraph data without writing GraphQL manually
+
+The Subgraph MCP server allows smooth integration with [Claude](/ai-suite/subgraph-mcp/claude/), [Cline](/ai-suite/subgraph-mcp/cline/), or [Cursor](/ai-suite/subgraph-mcp/cursor/), making blockchain data queries with The Graph Network a conversational experience.
diff --git a/website/src/pages/ja/ai-suite/token-api-mcp/_meta.js b/website/src/pages/ja/ai-suite/token-api-mcp/_meta.js
new file mode 100644
index 000000000000..6f527b4e53e4
--- /dev/null
+++ b/website/src/pages/ja/ai-suite/token-api-mcp/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  introduction: '',
+  claude: '',
+  cline: '',
+  cursor: '',
+}
diff --git a/website/src/pages/vi/token-api/mcp/claude.mdx b/website/src/pages/ja/ai-suite/token-api-mcp/claude.mdx
similarity index 100%
rename from website/src/pages/vi/token-api/mcp/claude.mdx
rename to website/src/pages/ja/ai-suite/token-api-mcp/claude.mdx
diff --git a/website/src/pages/vi/token-api/mcp/cline.mdx b/website/src/pages/ja/ai-suite/token-api-mcp/cline.mdx
similarity index 100%
rename from website/src/pages/vi/token-api/mcp/cline.mdx
rename to website/src/pages/ja/ai-suite/token-api-mcp/cline.mdx
diff --git a/website/src/pages/vi/token-api/mcp/cursor.mdx b/website/src/pages/ja/ai-suite/token-api-mcp/cursor.mdx
similarity index 100%
rename from website/src/pages/vi/token-api/mcp/cursor.mdx
rename to website/src/pages/ja/ai-suite/token-api-mcp/cursor.mdx
diff --git a/website/src/pages/ja/ai-suite/token-api-mcp/introduction.mdx b/website/src/pages/ja/ai-suite/token-api-mcp/introduction.mdx
new file mode 100644
index 000000000000..b61ad0a1c485
--- /dev/null
+++ b/website/src/pages/ja/ai-suite/token-api-mcp/introduction.mdx
@@ -0,0 +1,23 @@
+---
+title: Token API MCP Introduction
+sidebarTitle: 'Introduction'
+---
+
+Token API MCP server is an open-source implementation of [Anthropic's Model Context Protocol](https://modelcontextprotocol.io/introduction).
+
+This MCP server makes on-chain token data, including metadata, balances, transfers, and holder statistics, accessible through a set of MCP tools. Any compatible client can use these tools to fetch and analyze token information through a standardized interface. It connects to The Graph's hosted Token API database, enabling AI assistants to query real-time blockchain data using natural language requests that get translated into optimized SQL queries.
+
+The server itself does not host any language model. It simply converts MCP calls into data look-ups and returns structured results, letting the client's own LLM incorporate the results.
+
+Think of it as a USB-C hub: it standardizes the plug-and-play connection between AI agents and The Graph's Token API data.
+
+## What You Can Do
+
+- Retrieve token metadata including name, symbol, decimals, total supply, and contract address
+- Get token balances for any wallet address holding a supported ERC-20 token
+- Fetch token transfer activity including sender, receiver, amount, and timestamp
+- Identify top holders and analyze token distribution
+- Ask natural language questions about token data without writing smart contract calls
+- Access historical transfer data to analyze token movement over time
+
+The Token MCP server provides [Claude](/ai-suite/token-api-mcp/claude/), [Cline](/ai-suite/token-api-mcp/cline/), and [Cursor](/ai-suite/token-api-mcp/cursor/) with direct, conversational access to onchain token data.
diff --git a/website/src/pages/ja/resources/_meta.js b/website/src/pages/ja/resources/_meta.js
index aa8e2d0ec6a8..38c56cf56c43 100644
--- a/website/src/pages/ja/resources/_meta.js
+++ b/website/src/pages/ja/resources/_meta.js
@@ -7,5 +7,4 @@ export default {
   roles: titles.roles ?? '',
   'migration-guides': titles['migration-guides'] ?? '',
   'subgraph-studio-faq': '',
-  'claude-mcp': '',
 }
diff --git a/website/src/pages/ja/resources/claude-mcp.mdx b/website/src/pages/ja/resources/claude-mcp.mdx
deleted file mode 100644
index 44ed075cffda..000000000000
--- a/website/src/pages/ja/resources/claude-mcp.mdx
+++ /dev/null
@@ -1,122 +0,0 @@
----
-title: Claude MCP
----
-
-This guide walks you through configuring Claude Desktop to use The Graph ecosystem's [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) resources: Token API and Subgraph. These integrations allow you to interact with blockchain data through natural language conversations with Claude.
-
-## What You Can Do
-
-With these integrations, you can:
-
-- **Token API**: Access token and wallet information across multiple blockchains
-- **Subgraph**: Find relevant Subgraphs for specific keywords and contracts, explore Subgraph schemas, and execute GraphQL queries
-
-## Prerequisites
-
-- [Node.js](https://nodejs.org/en/download/) installed and available in your path
-- [Claude Desktop](https://claude.ai/download) installed
-- API keys:
-  - Token API key from [The Graph Market](https://thegraph.market/)
-  - Gateway API key from [Subgraph Studio](https://thegraph.com/studio/apikeys/)
-
-## Configuration Steps
-
-### 1. Open Configuration File
-
-Navigate to your `claude_desktop_config.json` file:
-
-> **Claude Desktop** > **Settings** > **Developer** > **Edit Config**
-
-Paths by operating system:
-
-- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
-- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
-- Linux: `.config/Claude/claude_desktop_config.json`
-
-### 2. Add Configuration
-
-Replace the contents of the existing config file with:
-
-```json
-{
-  "mcpServers": {
-    "token-api": {
-      "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
-      "env": {
-        "ACCESS_TOKEN": "ACCESS_TOKEN"
-      }
-    },
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-### 3. Add Your API Keys
-
-Replace:
-
-- `ACCESS_TOKEN` with your Token API key from [The Graph Market](https://thegraph.market/)
-- `GATEWAY_API_KEY` with your Gateway API key from [Subgraph Studio](https://thegraph.com/studio/apikeys/)
-
-### 4. Save and Restart
-
-- Save the configuration file
-- Restart Claude Desktop
-
-### 5. Add The Graph Resources in Claude
-
-After configuration:
-
-1. Start a new conversation in Claude Desktop
-2. Click on the context menu (top right)
-3. Add "Subgraph Server Instructions" as a resource by entering `graphql://subgraph` for Subgraph MCP
-
-> **Important**: You must manually add The Graph resources to your chat context for each conversation where you want to use them.
-
-### 6. Run Queries
-
-Here are some example queries you can try after setting up the resources:
-
-### Subgraph Queries
-
-```
-What are the top pools in Uniswap?
-```
-
-```
-Who are the top Delegators of The Graph Protocol?
-```
-
-```
-Please make a bar chart for the number of active loans in Compound for the last 7 days
-```
-
-### Token API Queries
-
-```
-Show me the current price of ETH
-```
-
-```
-What are the top tokens by market cap on Ethereum?
-```
-
-```
-Analyze this wallet address: 0x...
-```
-
-## Troubleshooting
-
-If you encounter issues:
-
-1. **Verify Node.js Installation**: Ensure Node.js is correctly installed by running `node -v` in your terminal
-2. **Check API Keys**: Verify that your API keys are correctly entered in the configuration file
-3. **Enable Verbose Logging**: Add `--verbose true` to the args array in your configuration to see detailed logs
-4. **Restart Claude Desktop**: After making changes to the configuration, always restart Claude Desktop
diff --git a/website/src/pages/ja/subgraphs/_meta.js b/website/src/pages/ja/subgraphs/_meta.js
index 4365293ffc72..45841d5f3355 100644
--- a/website/src/pages/ja/subgraphs/_meta.js
+++ b/website/src/pages/ja/subgraphs/_meta.js
@@ -6,7 +6,6 @@ export default {
   querying: titles.querying ?? '',
   developing: titles.developing ?? '',
   billing: '',
-  mcp: titles.mcp ?? '',
   guides: titles.guides,
   'best-practices': titles['best-practices'],
   'fair-use-policy': '',
diff --git a/website/src/pages/ja/subgraphs/mcp/_meta.js b/website/src/pages/ja/subgraphs/mcp/_meta.js
deleted file mode 100644
index 8630d4da27b3..000000000000
--- a/website/src/pages/ja/subgraphs/mcp/_meta.js
+++ /dev/null
@@ -1,5 +0,0 @@
-export default {
-  claude: '',
-  cline: '',
-  cursor: '',
-}
diff --git a/website/src/pages/ja/subgraphs/mcp/claude.mdx b/website/src/pages/ja/subgraphs/mcp/claude.mdx
deleted file mode 100644
index 027b272cb942..000000000000
--- a/website/src/pages/ja/subgraphs/mcp/claude.mdx
+++ /dev/null
@@ -1,179 +0,0 @@
----
-title: Claude Desktop
----
-
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Claude to interact directly with Subgraphs on The Graph Network. This integration allows you to find relevant Subgraphs for specific keywords and contracts, explore Subgraph schemas, and execute GraphQL queries—all through natural language conversations with Claude.
-
-## What You Can Do
-
-The Subgraph MCP integration enables you to:
-
-- Access the GraphQL schema for any Subgraph on The Graph Network
-- Execute GraphQL queries against any Subgraph deployment
-- Find top Subgraph deployments for a given keyword or contract address
-- Get 30-day query volume for Subgraph deployments
-- Ask natural language questions about Subgraph data without writing GraphQL queries manually
-
-## Prerequisites
-
-- [Node.js](https://nodejs.org/en) installed and available in your path
-- [Claude Desktop](https://claude.ai/download) installed (latest version)
-- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
-
-## Installation Options
-
-### Option 1: Using npx (Recommended)
-
-#### Configuration Steps using npx
-
-#### 1. Open Configuration File
-
-Navigate to your `claude_desktop_config.json` file:
-
-> **Settings** > **Developer** > **Edit Config**
-
-- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
-- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
-- Linux: `.config/Claude/claude_desktop_config.json`
-
-#### 2. Add Configuration
-
-Paste the following settings into your config file:
-
-```json
-{
-  "mcpServers": {
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-#### 3. Add Your Gateway API Key
-
-Replace `GATEWAY_API_KEY` with your API key from [Subgraph Studio](https://thegraph.com/studio/).
-
-#### 4. Save and Restart
-
-Once you've entered your Gateway API key into your settings, save the file and restart Claude Desktop.
-
-### Option 2: Building from Source
-
-#### Requirements
-
-- Rust (latest stable version recommended: 1.75+)
-  ```bash
-  curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
-  ```
-  Follow the on-screen instructions. For other platforms, see the [official Rust installation guide](https://www.rust-lang.org/tools/install).
-
-#### Installation Steps
-
-1. **Clone and Build the Repository**
-
-   ```bash
-   git clone git@github.com:graphops/subgraph-mcp.git
-   cd subgraph-mcp
-   cargo build --release
-   ```
-
-2. **Find the Command Path**
-
-   After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory.
-   - Navigate to your `subgraph-mcp` directory in terminal
-   - Run `pwd` to get the full path
-   - Combine the output with `/target/release/subgraph-mcp`
-
-3. **Configure Claude Desktop**
-
-   Open your `claude_desktop_config.json` file as described above and add:
-
-   ```json
-   {
-     "mcpServers": {
-       "subgraph": {
-         "command": "/path/to/your/subgraph-mcp/target/release/subgraph-mcp",
-         "env": {
-           "GATEWAY_API_KEY": "your-api-key-here"
-         }
-       }
-     }
-   }
-   ```
-
-   Replace `/path/to/your/subgraph-mcp/target/release/subgraph-mcp` with the actual path to the compiled binary.
-
-## Using The Graph Resource in Claude
-
-After configuring Claude Desktop:
-
-1. Restart Claude Desktop
-2. Start a new conversation
-3. Click on the context menu (top right)
-4. Add "Subgraph Server Instructions" as a resource by adding `graphql://subgraph` to your chat context
-
-> **Important**: Claude Desktop may not automatically utilize the Subgraph MCP. You must manually add "Subgraph Server Instructions" resource to your chat context for each conversation where you want to use it.
-
-## Troubleshooting
-
-To enable logs for the MCP when using the npx option, add the `--verbose true` option to your args array.
-
-## Available Subgraph Tools and Usage
-
-The Subgraph MCP provides several tools for interacting with Subgraphs:
-
-### Schema Retrieval Tools
-
-- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
-- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
-- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
-
-### Query Execution Tools
-
-- **Execute query by deployment ID/IPFS hash**: Run GraphQL queries against specific, immutable deployments
-- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
-
-### Discovery Tools
-
-- **Search subgraphs by keyword**: Find subgraphs by keyword in their display names, ordered by signal
-- **Get deployment 30-day query counts**: Get aggregate query count over the last 30 days for multiple subgraph deployments
-- **Get top Subgraph deployments for a contract**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain, ordered by query fees
-
-## Key Identifier Types
-
-- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a subgraph. Use `execute_query_by_subgraph_id` or `get_schema_by_subgraph_id`.
-- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment. Use `execute_query_by_deployment_id` or `get_schema_by_deployment_id`.
-- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific, immutable deployment. Use `execute_query_by_deployment_id` (the gateway treats it like a deployment ID for querying) or `get_schema_by_ipfs_hash`.
-
-## Benefits of Natural Language Queries
-
-One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Claude will:
-
-1. Understand your goal (lookup, find Subgraphs, query, get schema)
-2. Find relevant deployments if needed
-3. Fetch and interpret the Subgraph schema
-4. Convert your question into an appropriate GraphQL query
-5. Execute the query and present the results in a readable format
-
-### Example Natural Language Queries
-
-```
-What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
-```
-
-```
-Which tokens have the highest market cap in this Subgraph?
-```
-
-```
-Show me the most recent 5 swaps for the USDC/ETH pair
-```
-
-```
-Find the top subgraphs for contract 0x1f98431c8ad98523631ae4a59f267346ea31f984 on arbitrum-one
-```
diff --git a/website/src/pages/ja/subgraphs/mcp/cline.mdx b/website/src/pages/ja/subgraphs/mcp/cline.mdx
deleted file mode 100644
index 156221d9a127..000000000000
--- a/website/src/pages/ja/subgraphs/mcp/cline.mdx
+++ /dev/null
@@ -1,99 +0,0 @@
----
-title: Cline
----
-
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Cline to interact directly with Subgraphs on The Graph Network. This integration allows you to explore Subgraph schemas, execute GraphQL queries, and find relevant Subgraphs for specific contracts—all through natural language conversations with Cline.
-
-## Prerequisites
-
-- [Cline](https://cline.bot/) installed (latest version)
-- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
-
-## Configuration Steps
-
-### 1. Open Configuration File
-
-Create or edit your `cline_mcp_settings.json` file.
-
-> **MCP Servers** > **Installed** > **Configure MCP Servers**
-
-### 2. Add Configuration
-
-```json
-{
-  "mcpServers": {
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-### 3. Add Your API Key
-
-Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
-
-## Using The Graph Resource in Cline
-
-After configuring Cline:
-
-1. Restart Cline
-2. Start a new conversation
-3. Enable the Subgraph MCP from the context menu
-4. Add "Subgraph Server Instructions" as a resource to your chat context
-
-## Available Tools and Usage
-
-The Subgraph MCP provides several tools for interacting with Subgraphs:
-
-### Schema Retrieval Tools
-
-- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
-- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
-- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
-
-### Query Execution Tools
-
-- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
-- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
-
-### Discovery Tools
-
-- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
-
-## Natural Language Queries
-
-One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cline will:
-
-1. Understand your goal (lookup, find Subgraphs, query, get schema)
-2. Find relevant deployments if needed
-3. Fetch and interpret the Subgraph schema
-4. Convert your question into an appropriate GraphQL query
-5. Execute the query and present the results in a readable format
-
-### Example Natural Language Queries
-
-```
-What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
-```
-
-```
-Which tokens have the highest market cap in this Subgraph?
-```
-
-```
-Show me the most recent 5 swaps for the USDC/ETH pair
-```
-
-## Key Identifier Types
-
-When working with Subgraphs, you'll encounter different types of identifiers:
-
-- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
-- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
-- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/ja/subgraphs/mcp/cursor.mdx b/website/src/pages/ja/subgraphs/mcp/cursor.mdx
deleted file mode 100644
index 298f43ece048..000000000000
--- a/website/src/pages/ja/subgraphs/mcp/cursor.mdx
+++ /dev/null
@@ -1,94 +0,0 @@
----
-title: Cursor
----
-
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Cursor to interact directly with Subgraphs on The Graph Network. This integration allows you to explore Subgraph schemas, execute GraphQL queries, and find relevant Subgraphs for specific contracts—all through natural language conversations with Cursor.
-
-## Prerequisites
-
-- [Cursor](https://www.cursor.com/) installed (latest version)
-- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
-
-## Configuration Steps
-
-### 1. Open Configuration File
-
-Create or edit your `~/.cursor/mcp.json` file.
-
-> **Cursor Settings** > **MCP** > **Add new global MCP Server**
-
-### 2. Add Configuration
-
-```json
-{
-  "mcpServers": {
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-### 3. Add Your API Key
-
-Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
-
-### 4. Restart Cursor
-
-Restart Cursor, and start a new chat.
-
-## Available Subgraph Tools and Usage
-
-The Subgraph MCP provides several tools for interacting with Subgraphs:
-
-### Schema Retrieval Tools
-
-- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
-- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
-- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
-
-### Query Execution Tools
-
-- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
-- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
-
-### Discovery Tools
-
-- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
-
-## Benefits of Natural Language Queries
-
-One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cursor will:
-
-1. Understand your goal (lookup, find Subgraphs, query, get schema)
-2. Find relevant deployments if needed
-3. Fetch and interpret the Subgraph schema
-4. Convert your question into an appropriate GraphQL query
-5. Execute the query and present the results in a readable format
-
-### Example Natural Language Queries
-
-```
-What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
-```
-
-```
-Which tokens have the highest market cap in this Subgraph?
-```
-
-```
-Show me the most recent 5 swaps for the USDC/ETH pair
-```
-
-## Key Identifier Types
-
-When working with Subgraphs, you'll encounter different types of identifiers:
-
-- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
-- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
-- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/ja/substreams/_meta.js b/website/src/pages/ja/substreams/_meta.js
index a8ee04618eae..658bb8c213c6 100644
--- a/website/src/pages/ja/substreams/_meta.js
+++ b/website/src/pages/ja/substreams/_meta.js
@@ -5,5 +5,4 @@ export default {
   introduction: '',
   developing: titles.developing ?? '',
   publishing: '',
-  sps: titles.sps ?? '',
 }
diff --git a/website/src/pages/ja/token-api/_meta-titles.json b/website/src/pages/ja/token-api/_meta-titles.json
index 7ed31e0af95d..3108ecd3ebfd 100644
--- a/website/src/pages/ja/token-api/_meta-titles.json
+++ b/website/src/pages/ja/token-api/_meta-titles.json
@@ -1,6 +1,7 @@
 {
   "mcp": "MCP",
   "evm": "EVM Endpoints",
+  "svm": "SVM Endpoints",
   "monitoring": "Monitoring Endpoints",
   "faq": "FAQ"
 }
diff --git a/website/src/pages/ja/token-api/_meta.js b/website/src/pages/ja/token-api/_meta.js
index f67576d7f612..fb7f7334ea0c 100644
--- a/website/src/pages/ja/token-api/_meta.js
+++ b/website/src/pages/ja/token-api/_meta.js
@@ -2,8 +2,8 @@ import titles from './_meta-titles.json'
 
 export default {
   'quick-start': '',
-  mcp: titles.mcp ?? '',
   evm: titles.evm ?? '',
+  svm: titles.svm ?? '',
   monitoring: titles.monitoring ?? '',
   faq: '',
 }
diff --git a/website/src/pages/ja/token-api/mcp/_meta.js b/website/src/pages/ja/token-api/mcp/_meta.js
deleted file mode 100644
index 8630d4da27b3..000000000000
--- a/website/src/pages/ja/token-api/mcp/_meta.js
+++ /dev/null
@@ -1,5 +0,0 @@
-export default {
-  claude: '',
-  cline: '',
-  cursor: '',
-}
diff --git a/website/src/pages/ja/token-api/mcp/claude.mdx b/website/src/pages/ja/token-api/mcp/claude.mdx
deleted file mode 100644
index 85f766b41550..000000000000
--- a/website/src/pages/ja/token-api/mcp/claude.mdx
+++ /dev/null
@@ -1,58 +0,0 @@
----
-title: Using Claude Desktop to Access the Token API via MCP
-sidebarTitle: Claude Desktop
----
-
-## Prerequisites
-
-- [Claude Desktop](https://claude.ai/download) installed.
-- A [JWT token](/token-api/quick-start) from [The Graph Market](https://thegraph.market/).
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path.
-- The `@pinax/mcp` package requires Node 18+, as it relies on built-in `fetch()` / `Headers`, which are not available in Node 17 or older. You may need to specify an exact path to an up-to-date Node version, or uninstall previous versions of Node to ensure `@pinax/mcp` uses the correct version.
-
-![Screenshot of Claude Desktop's settings panel showing the MCP server configuration option.](/img/claude-preview-token-api.png)
-
-## コンフィギュレーション
-
-Create or edit your `claude_desktop_config.json` file.
-
-> **Settings** > **Developer** > **Edit Config**
-
-- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
-- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
-- Linux: `.config/Claude/claude_desktop_config.json`
-
-```json label="claude_desktop_config.json"
-{
-  "mcpServers": {
-    "token-api": {
-      "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
-      "env": {
-        "ACCESS_TOKEN": "<https://thegraph.market JWT Access Token>"
-      }
-    }
-  }
-}
-```
-
-## Troubleshooting
-
-To enable logs for the MCP, use the `--verbose true` option.
-
-### ENOENT
-
-![Error dialog in Claude Desktop showing 'ENOENT' system error, indicating the npx/bunx command wasn't found in the system path.](/img/claude-ENOENT.png)
-
-Try to use the full path of the command instead:
-
-- Run `which npx` or `which bunx` to get the path of the command.
-- Replace `npx` or `bunx` in the configuration file with the full path (e.g. `/home/user/bin/bunx`).
-
-### Server disconnected
-
-![Connection error notification in Claude Desktop displaying 'Server disconnected' message.](/img/claude-server-disconnect.png)
-
-Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
-
-> You can always have a look at the full logs under `Claude/logs/mcp.log` and `Claude/logs/mcp-server-pinax.log` for more details.
diff --git a/website/src/pages/ja/token-api/mcp/cline.mdx b/website/src/pages/ja/token-api/mcp/cline.mdx
deleted file mode 100644
index 1ab2d75261e0..000000000000
--- a/website/src/pages/ja/token-api/mcp/cline.mdx
+++ /dev/null
@@ -1,52 +0,0 @@
----
-title: Using Cline to Access the Token API via MCP
-sidebarTitle: Cline
----
-
-## Prerequisites
-
-- [Cline](https://cline.bot/) installed.
-- A [JWT token](/token-api/quick-start) from [The Graph Market](https://thegraph.market/).
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path.
-- The `@pinax/mcp` package requires Node 18+, as it relies on built-in `fetch()` / `Headers`, which are not available in Node 17 or older. You may need to specify an exact path to an up-to-date Node version, or uninstall previous versions of Node to ensure `@pinax/mcp` uses the correct version.
-
-![Screenshot of Cline's MCP server configuration interface displaying the JSON settings file with mcp-pinax server details visible.](/img/cline-preview-token-api.png)
-
-## コンフィギュレーション
-
-Create or edit your `cline_mcp_settings.json` file.
-
-> **MCP Servers** > **Installed** > **Configure MCP Servers**
-
-```json label="cline_mcp_settings.json"
-{
-  "mcpServers": {
-    "mcp-pinax": {
-      "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
-      "env": {
-        "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
-      }
-    }
-  }
-}
-```
-
-## Troubleshooting
-
-To enable logs for the MCP, use the `--verbose true` option.
-
-### ENOENT
-
-![Cline error dialog showing 'ENOENT' system alert.](/img/cline-error.png)
-
-Try to use the full path of the command instead:
-
-- Run `which npx` or `which bunx` to get the path of the command.
-- Replace `npx` or `bunx` in the configuration file with the full path (e.g. `/home/user/bin/bunx`).
-
-### Server disconnected
-
-![Cline connection error notification displaying server disconnection warning.](/img/cline-missing-variables.png)
-
-Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/ja/token-api/mcp/cursor.mdx b/website/src/pages/ja/token-api/mcp/cursor.mdx
deleted file mode 100644
index 5ecf8867b84c..000000000000
--- a/website/src/pages/ja/token-api/mcp/cursor.mdx
+++ /dev/null
@@ -1,50 +0,0 @@
----
-title: Using Cursor to Access the Token API via MCP
-sidebarTitle: Cursor
----
-
-## Prerequisites
-
-- [Cursor](https://www.cursor.com/) installed.
-- A [JWT token](/token-api/quick-start) from [The Graph Market](https://thegraph.market/).
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path.
-- The `@pinax/mcp` package requires Node 18+, as it relies on built-in `fetch()` / `Headers`, which are not available in Node 17 or older. You may need to specify an exact path to an up-to-date Node version, or uninstall previous versions of Node to ensure `@pinax/mcp` uses the correct version.
-
-![Screenshot of Cursor's MCP configuration panel.](/img/cursor-preview-token-api.png)
-
-## コンフィギュレーション
-
-Create or edit your `~/.cursor/mcp.json` file.
-
-> **Cursor Settings** > **MCP** > **Add new global MCP Server**
-
-```json label="mcp.json"
-{
-  "mcpServers": {
-    "mcp-pinax": {
-      "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
-      "env": {
-        "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
-      }
-    }
-  }
-}
-```
-
-## Troubleshooting
-
-![Cursor IDE error notification that reads, "Failed to create client"](/img/cursor-error.png)
-
-To enable logs for the MCP, use the `--verbose true` option.
-
-### ENOENT
-
-Try to use the full path of the command instead:
-
-- Run `which npx` or `which bunx` to get the path of the command.
-- Replace `npx` or `bunx` in the configuration file with the full path (e.g. `/home/user/bin/bunx`).
-
-### Server disconnected
-
-Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/ja/token-api/svm/_meta.js b/website/src/pages/ja/token-api/svm/_meta.js
new file mode 100644
index 000000000000..1a48b82fcbf1
--- /dev/null
+++ b/website/src/pages/ja/token-api/svm/_meta.js
@@ -0,0 +1,5 @@
+export default {
+  'get-balances-svm': '',
+  'get-transfers-svm': '',
+  'get-swaps-svm': '',
+}
diff --git a/website/src/pages/ja/token-api/svm/get-balances-svm.mdx b/website/src/pages/ja/token-api/svm/get-balances-svm.mdx
new file mode 100644
index 000000000000..c2946c190bf9
--- /dev/null
+++ b/website/src/pages/ja/token-api/svm/get-balances-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Balances
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getBalancesSvm
+---
+
+Provides Solana tokens balances by token account address.
diff --git a/website/src/pages/ja/token-api/svm/get-swaps-svm.mdx b/website/src/pages/ja/token-api/svm/get-swaps-svm.mdx
new file mode 100644
index 000000000000..95282a38ac9f
--- /dev/null
+++ b/website/src/pages/ja/token-api/svm/get-swaps-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Swap Events
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getSwapsSvm
+---
+
+Provides Raydium swap events.
diff --git a/website/src/pages/ja/token-api/svm/get-transfers-svm.mdx b/website/src/pages/ja/token-api/svm/get-transfers-svm.mdx
new file mode 100644
index 000000000000..5335cdddf418
--- /dev/null
+++ b/website/src/pages/ja/token-api/svm/get-transfers-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Transfers Events
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getTransfersSvm
+---
+
+Provides SVM transfer events.
diff --git a/website/src/pages/ko/ai-suite/_meta-titles.json b/website/src/pages/ko/ai-suite/_meta-titles.json
new file mode 100644
index 000000000000..5eb482a7092b
--- /dev/null
+++ b/website/src/pages/ko/ai-suite/_meta-titles.json
@@ -0,0 +1,6 @@
+{
+  "graph-assistant": "Graph Assistant",
+  "ai-introduction": "The Graph's AI",
+  "subgraph-mcp": "Subgraph MCP",
+  "token-api-mcp": "Token API MCP"
+}
diff --git a/website/src/pages/ko/ai-suite/_meta.js b/website/src/pages/ko/ai-suite/_meta.js
new file mode 100644
index 000000000000..c9e51dfd35fb
--- /dev/null
+++ b/website/src/pages/ko/ai-suite/_meta.js
@@ -0,0 +1,8 @@
+import titles from './_meta-titles.json'
+
+export default {
+  'ai-introduction': titles['ai-introduction'],
+  'graph-assistant': titles['graph-assistant'],
+  'subgraph-mcp': titles['subgraph-mcp'],
+  'token-api-mcp': titles['token-api-mcp'],
+}
diff --git a/website/src/pages/ko/ai-suite/ai-introduction.mdx b/website/src/pages/ko/ai-suite/ai-introduction.mdx
new file mode 100644
index 000000000000..d25cc9f77358
--- /dev/null
+++ b/website/src/pages/ko/ai-suite/ai-introduction.mdx
@@ -0,0 +1,58 @@
+---
+title: The Graph's AI
+---
+
+Build with speed and scale faster with The Graph's AI.
+
+## Using AI on The Graph
+
+Instead of relying on static datasets or centralized APIs, you can now access live blockchain data through our **agentic** app, [Graph Assistant](/ai-suite/graph-assistant/introduction/), and use our AI-native tooling, [Subgraph MCP](/ai-suite/subgraph-mcp/introduction/), and [Token API MCP](/ai-suite/token-api-mcp/introduction/).
+
+### Why Use Onchain Data with AI?
+
+Using onchain data with AI unlocks powerful new ways to interact with and understand blockchain ecosystems.
+
+- **AI for Non-Technical End Users**: AI can turn complex onchain data into accessible insights. Assistants powered by AI enable you to explore and analyze blockchain data without coding.
+- **AI for Developers**: You can use AI to interact directly with The Graph's data through your agents or build AI-powered applications on top of it. This streamlines development and opens up more intuitive, dynamic use cases.
+
+## AI for Non-Technical/End Users
+
+[Graph Assistant](/ai-suite/graph-assistant/introduction/) is a powerful **agentic** application that empowers users to easily interact with blockchain data. Ask questions in simple, natural language and get rich, AI powered insights. Both technical developers and non-technical product teams can move faster, make smarter decisions, and gain a clearer understanding than ever before.
+
+### Benefits of Using Graph Assistant
+
+- **Natural language Input**: You don't need to write complex queries or sift through dashboards. Simply ask your question in plain English and get clear, structured results.
+- **Multi-source support**: Works across multiple Subgraphs and Token API. The Assistant automatically determines which data source to use, so you don't have to switch tools or manage endpoints.
+- **Schema-free access**: You don't need to understand the schema. You can refer to tokens, protocols, dates, or addresses using natural language. The Assistant takes care of the rest.
+
+### Conversational Querying with Graph Assistant
+
+**Example queries:**
+
+- "List the top-5 swaps by USD value in the last 24 hours."
+- "Give me the daily volume on Uniswap."
+- "List the 20 most recently registered .eth names."
+
+[Graph Assistant](/ai-suite/graph-assistant/introduction/) will eventually be a one-stop shop for interacting with The Graph. Right now, it's an agentic AI app that uses state-of-the-art AI techniques, LLMs, and MCPs to understand and answer your questions about [Subgraphs](/subgraphs/developing/subgraphs/) and [Token API](/token-api/quick-start/) data.
+
+## AI for Developers
+
+### Enable Natural Language Access to Onchain Data
+
+[Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) servers connect to Claude, Cline, and Cursor. They enable models to understand, query, and interact with structured onchain data using natural language. MCPs remove the need to write low-level queries or interact with APIs directly.
+
+### Subgraph MCP
+
+The [Subgraph MCP](/ai-suite/subgraph-mcp/introduction/) server connects models to Subgraphs on The Graph Network. It allows language models to explore Subgraph schemas, execute GraphQL queries, find relevant Subgraphs by keyword or contract, and surface usage metrics using natural language.
+
+### Token API MCP
+
+The [Token API MCP](/ai-suite/token-api-mcp/introduction/) MCP server enables models to access onchain token data. It supports querying token metadata, wallet balances, transfer history, and top token holders through simple prompts.
+
+#### Benefits of Using Subgraph and Token API MCPs
+
+- Query Subgraphs and token data using natural language
+- Access GraphQL schemas and token metadata without manual queries
+- Find Subgraphs by keyword or contract and check 30-day usage
+- Retrieve real-time data from The Graph and onchain token sources
+- Get wallet balances, transfer history, and top token holders
diff --git a/website/src/pages/ko/ai-suite/graph-assistant/_meta.js b/website/src/pages/ko/ai-suite/graph-assistant/_meta.js
new file mode 100644
index 000000000000..74da5e0686a7
--- /dev/null
+++ b/website/src/pages/ko/ai-suite/graph-assistant/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  'quick-start': '',
+  introduction: '',
+  'how-to-guide': '',
+  faq: '',
+}
diff --git a/website/src/pages/ko/ai-suite/graph-assistant/faq.mdx b/website/src/pages/ko/ai-suite/graph-assistant/faq.mdx
new file mode 100644
index 000000000000..8addf9935524
--- /dev/null
+++ b/website/src/pages/ko/ai-suite/graph-assistant/faq.mdx
@@ -0,0 +1,26 @@
+---
+title: Graph Assistant FAQ
+sidebarTitle: 'FAQ'
+---
+
+This page summarizes some of the most common questions for developers using Graph Assistant.
+
+1. What is The Graph Assistant?
+
+The Graph Assistant is an AI-powered chat interface that lets you query blockchain data in plain English. Under the hood, it translates your questions into GraphQL calls against Subgraphs and the Token API, then returns results, no coding required.
+
+2. What is an agentic application?
+
+An agentic application combines AI-driven reasoning with external data sources or APIs to take autonomous actions on your behalf. In this case, Graph Assistant acts as an “agent” that interprets your natural-language prompts, builds and dispatches GraphQL queries, and formats the results so that you don't need to write or manage queries yourself.
+
+3. Which networks and data does Graph Assistant support?
+
+The Assistant has access to Subgraphs across multiple chains. If a Subgraph is published to The Graph Network and is being indexed, the Assistant can automatically route queries to it. The Assistant also has access to the Token API on Ethereum Mainnet, BSC, Unichain, Arbitrum-One, Optimism, and Polygon.
+
+4. Is there a usage limit or quota?
+
+Yes, 10 questions per hour.
+
+5. What if the Assistant can't interpret my question?
+
+When the Assistant fails to parse your intent (for example, ambiguous token name, missing context, or an unsupported request), it will prompt you for clarification. For instance, it might ask, “Did you mean XYZ on Ethereum or XYZ on Arbitrum?” or “Please specify a date range for this query.” If you continue to see parsing errors, check that you're using correct token symbols or specifying networks and time frames clearly.
diff --git a/website/src/pages/ko/ai-suite/graph-assistant/how-to-guide.mdx b/website/src/pages/ko/ai-suite/graph-assistant/how-to-guide.mdx
new file mode 100644
index 000000000000..463130894ad8
--- /dev/null
+++ b/website/src/pages/ko/ai-suite/graph-assistant/how-to-guide.mdx
@@ -0,0 +1,56 @@
+---
+title: How To Use The Graph Assistant
+sidebarTitle: 'How-to Guide'
+---
+
+## Overview
+
+You type a natural language question into the chat interface, such as:
+
+```yaml
+'On Uniswap, return the top-10 pools by total value locked in USD.'
+```
+
+> [!IMPORTANT] All users can process 10 free queries per user per hour.
+
+> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the underlying agents. Do not share sensitive, personal, or private information.
+
+### Behind the Scenes
+
+The Assistant:
+
+1. Interprets your intent
+2. Maps it to the correct Subgraphs or Token API endpoint
+3. Executes optimized queries
+4. Returns clean, structured results
+
+You don't need to write queries or understand a Subgraph's schema, you simply ask.
+
+### Example Use Cases
+
+**Protocol Analytics**
+
+- “Compare daily active users on Aave vs. Compound in May 2025.”
+- “Show me the total value locked (TVL) for XYZDAO over the last quarter.”
+
+**Token Insights**
+
+- “What are the top 10 tokens by market cap on Ethereum right now?”
+- “How many XYZ did I receive between May 1 and May 15?”
+
+**Historical Data Retrieval**
+
+- “Fetch the token price history of XYZ for the last six months.”
+- “What was the average gas price on Ethereum during April?”
+
+**Portfolio Monitoring**
+
+- “List my wallet’s current token balances and their USD equivalents.”
+- “Calculate profit/loss on XYZ since xyz date.”
+
+**Cross-Chain Comparison**
+
+- “Show me the 7-day trading volume of XYZ on Ethereum vs. Polygon.”
+- “How many XYZ swaps occurred on Arbitrum yesterday?”
+
+To get started follow the [quickstart](/ai-suite/graph-assistant/quick-start/) and explore its capabilities.
diff --git a/website/src/pages/ko/ai-suite/graph-assistant/introduction.mdx b/website/src/pages/ko/ai-suite/graph-assistant/introduction.mdx
new file mode 100644
index 000000000000..65fdf0f96028
--- /dev/null
+++ b/website/src/pages/ko/ai-suite/graph-assistant/introduction.mdx
@@ -0,0 +1,31 @@
+---
+title: Introduction
+---
+
+> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime.
+
+[Graph Assistant](https://thegraph.com/graph-assistant) (Beta) gives instant, code-free access to blockchain data, transforming natural language into precise, AI-powered queries without the need to code.
+
+## Overview
+
+[Graph Assistant](https://thegraph.com/graph-assistant) is an advanced, [agentic](/en/ai-suite/graph-assistant/faq/) easy-to-use chat interface for querying blockchain data using natural language. Unlike a basic chatbot, Graph Assistant can understand your intent, build complex queries, and execute them automatically. This gives you rich, AI-powered insights from onchain data without writing any code.
+
+- **Automatically** interprets user intent, generates precise queries, executes them via The Graph's Subgraphs and Token API, and presents structured, AI-powered answers without requiring any code.
+- **Removes** the technical complexity found in traditional dashboards or chatbots. It provides composable insights directly from indexed Subgraphs and Token datasets.
+
+## Core Features
+
+| Feature | Description |
+| --- | --- |
+| **Friendly Interface** | Conversational access to blockchain data via natural language. You simply ask questions, the Assistant fetches the answer, and renders results. |
+| **Backed by Subgraphs** | Uses subgraphs to index protocol-specific data like transactions, events, and protocol metrics. |
+| **Backed by Token API** | Uses Token API for token-level information like balances, transfers, and metadata. |
+| **No Setup Required** | No need to configure data sources or write queries. |
+| **Automatic Query Building** | The Assistant performs complex queries such as fetching historical token volumes, protocol analytics, or cross-chain data and handles filtering, pagination, and joins across Subgraphs automatically. |
+
+## Help Shape What's Next
+
+This is in **beta**, and community input is essential. If you have ideas, questions, or run into anything unexpected, we'd love to hear from you:
+
+- Join the community on [Discord](https://discord.com/invite/graphprotocol): Provide feedback and stay in the loop with other builders. You'll be able to join the `#graph-assistant` channel to share your experience directly.
+- Interested in going deeper? Reach out to become a dedicated beta tester so your specific use case can be better supported.
diff --git a/website/src/pages/ko/ai-suite/graph-assistant/quick-start.mdx b/website/src/pages/ko/ai-suite/graph-assistant/quick-start.mdx
new file mode 100644
index 000000000000..13f8478b8d2b
--- /dev/null
+++ b/website/src/pages/ko/ai-suite/graph-assistant/quick-start.mdx
@@ -0,0 +1,44 @@
+---
+title: Quick Start
+---
+
+> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime.
+
+This guide provides step-by-step instructions for getting started with Graph Assistant quickly.
+
+## Step-by Step
+
+### Step 1. Create an Account
+
+Go to: [Graph Assistant](https://thegraph.com/graph-assistant)
+
+- Click Sign Up (or Log In if you already have an account).
+- Use your Google, GitHub, X, email or wallet credentials to log in.
+- No additional setup is required.
+
+### Step 2. Open the Assistant Chat
+
+After logging in:
+
+- You'll see Graph Assistant's interface.
+- At the bottom of the page, you will find a chat input bar. This is where you will interact with the Assistant.
+
+### Step 3: Ask Your First Question
+
+> [!IMPORTANT] All users can process 10 free queries per user per hour.
+
+In the input bar, type a natural-language query (everyday language).
+
+Example:
+
+```yaml
+Show me the 24-hour trading volume of XYZ token on Ethereum
+```
+
+> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the AI interface. Do not share sensitive, personal, or private information.
+
+The Assistant will:
+
+- Digest your question
+- Fetch onchain data using Subgraphs or the Token API
+- Return a clean, formatted response with the data you need
diff --git a/website/src/pages/ko/ai-suite/subgraph-mcp/_meta.js b/website/src/pages/ko/ai-suite/subgraph-mcp/_meta.js
new file mode 100644
index 000000000000..6f527b4e53e4
--- /dev/null
+++ b/website/src/pages/ko/ai-suite/subgraph-mcp/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  introduction: '',
+  claude: '',
+  cline: '',
+  cursor: '',
+}
diff --git a/website/src/pages/ko/ai-suite/subgraph-mcp/claude.mdx b/website/src/pages/ko/ai-suite/subgraph-mcp/claude.mdx
new file mode 100644
index 000000000000..ff3caa4e3e7f
--- /dev/null
+++ b/website/src/pages/ko/ai-suite/subgraph-mcp/claude.mdx
@@ -0,0 +1,169 @@
+---
+title: Claude Desktop
+---
+
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data via natural language conversations with Claude.
+
+## Prerequisites
+
+- [Node.js](https://nodejs.org/en) installed and available in your path
+- [Claude Desktop](https://claude.ai/download) installed (latest version)
+- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
+
+## Installation Options
+
+### Option 1: Using npx (Recommended)
+
+#### Configuration Steps using npx
+
+#### 1. Open Configuration File
+
+Navigate to your `claude_desktop_config.json` file:
+
+> **Settings** > **Developer** > **Edit Config**
+
+- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
+- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
+- Linux: `.config/Claude/claude_desktop_config.json`
+
+#### 2. Add Configuration
+
+Paste the following settings into your config file:
+
+```json
+{
+  "mcpServers": {
+    "subgraph": {
+      "command": "npx",
+      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
+      "env": {
+        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
+      }
+    }
+  }
+}
+```
+
+#### 3. Add Your Gateway API Key
+
+Replace `GATEWAY_API_KEY` with your API key from [Subgraph Studio](https://thegraph.com/studio/).
+
+#### 4. Save and Restart
+
+Once you've entered your Gateway API key into your settings, save the file and restart Claude Desktop.
+
+### Option 2: Building from Source
+
+#### Requirements
+
+- Rust (latest stable version recommended: 1.75+)
+  ```bash
+  curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
+  ```
+  Follow the on-screen instructions. For other platforms, see the [official Rust installation guide](https://www.rust-lang.org/tools/install).
+
+#### Installation Steps
+
+1. **Clone and Build the Repository**
+
+   ```bash
+   git clone git@github.com:graphops/subgraph-mcp.git
+   cd subgraph-mcp
+   cargo build --release
+   ```
+
+2. **Find the Command Path**
+
+   After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory.
+   - Navigate to your `subgraph-mcp` directory in terminal
+   - Run `pwd` to get the full path
+   - Combine the output with `/target/release/subgraph-mcp`
+
+3. **Configure Claude Desktop**
+
+   Open your `claude_desktop_config.json` file as described above and add:
+
+   ```json
+   {
+     "mcpServers": {
+       "subgraph": {
+         "command": "/path/to/your/subgraph-mcp/target/release/subgraph-mcp",
+         "env": {
+           "GATEWAY_API_KEY": "your-api-key-here"
+         }
+       }
+     }
+   }
+   ```
+
+   Replace `/path/to/your/subgraph-mcp/target/release/subgraph-mcp` with the actual path to the compiled binary.
+
+## Using The Graph Resource in Claude
+
+After configuring Claude Desktop:
+
+1. Restart Claude Desktop
+2. Start a new conversation
+3. Click on the context menu (top right)
+4. Add "Subgraph Server Instructions" as a resource by adding `graphql://subgraph` to your chat context
+
+> **Important**: Claude Desktop may not automatically utilize the Subgraph MCP. You must manually add "Subgraph Server Instructions" resource to your chat context for each conversation where you want to use it.
+
+## Troubleshooting
+
+To enable logs for the MCP when using the npx option, add the `--verbose true` option to your args array.
+
+## Available Subgraph Tools and Usage
+
+The Subgraph MCP provides several tools for interacting with Subgraphs:
+
+### Schema Retrieval Tools
+
+- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
+- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
+- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
+
+### Query Execution Tools
+
+- **Execute query by deployment ID/IPFS hash**: Run GraphQL queries against specific, immutable deployments
+- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
+
+### Discovery Tools
+
+- **Search subgraphs by keyword**: Find subgraphs by keyword in their display names, ordered by signal
+- **Get deployment 30-day query counts**: Get aggregate query count over the last 30 days for multiple subgraph deployments
+- **Get top Subgraph deployments for a contract**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain, ordered by query fees
+
+## Key Identifier Types
+
+- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a subgraph. Use `execute_query_by_subgraph_id` or `get_schema_by_subgraph_id`.
+- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment. Use `execute_query_by_deployment_id` or `get_schema_by_deployment_id`.
+- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific, immutable deployment. Use `execute_query_by_deployment_id` (the gateway treats it like a deployment ID for querying) or `get_schema_by_ipfs_hash`.
+
+## Benefits of Natural Language Queries
+
+One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Claude will:
+
+1. Understand your goal (lookup, find Subgraphs, query, get schema)
+2. Find relevant deployments if needed
+3. Fetch and interpret the Subgraph schema
+4. Convert your question into an appropriate GraphQL query
+5. Execute the query and present the results in a readable format
+
+### Example Natural Language Queries
+
+```
+What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
+```
+
+```
+Which tokens have the highest market cap in this Subgraph?
+```
+
+```
+Show me the most recent 5 swaps for the USDC/ETH pair
+```
+
+```
+Find the top subgraphs for contract 0x1f98431c8ad98523631ae4a59f267346ea31f984 on arbitrum-one
+```
diff --git a/website/src/pages/ko/ai-suite/subgraph-mcp/cline.mdx b/website/src/pages/ko/ai-suite/subgraph-mcp/cline.mdx
new file mode 100644
index 000000000000..eb8044bfe991
--- /dev/null
+++ b/website/src/pages/ko/ai-suite/subgraph-mcp/cline.mdx
@@ -0,0 +1,99 @@
+---
+title: Cline
+---
+
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data through natural language conversations with Cline.
+
+## Prerequisites
+
+- [Cline](https://cline.bot/) installed (latest version)
+- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
+
+## Configuration Steps
+
+### 1. Open Configuration File
+
+Create or edit your `cline_mcp_settings.json` file.
+
+> **MCP Servers** > **Installed** > **Configure MCP Servers**
+
+### 2. Add Configuration
+
+```json
+{
+  "mcpServers": {
+    "subgraph": {
+      "command": "npx",
+      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
+      "env": {
+        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
+      }
+    }
+  }
+}
+```
+
+### 3. Add Your API Key
+
+Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
+
+## Using The Graph Resource in Cline
+
+After configuring Cline:
+
+1. Restart Cline
+2. Start a new conversation
+3. Enable the Subgraph MCP from the context menu
+4. Add "Subgraph Server Instructions" as a resource to your chat context
+
+## Available Tools and Usage
+
+The Subgraph MCP provides several tools for interacting with Subgraphs:
+
+### Schema Retrieval Tools
+
+- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
+- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
+- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
+
+### Query Execution Tools
+
+- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
+- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
+
+### Discovery Tools
+
+- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
+
+## Natural Language Queries
+
+One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cline will:
+
+1. Understand your goal (lookup, find Subgraphs, query, get schema)
+2. Find relevant deployments if needed
+3. Fetch and interpret the Subgraph schema
+4. Convert your question into an appropriate GraphQL query
+5. Execute the query and present the results in a readable format
+
+### Example Natural Language Queries
+
+```
+What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
+```
+
+```
+Which tokens have the highest market cap in this Subgraph?
+```
+
+```
+Show me the most recent 5 swaps for the USDC/ETH pair
+```
+
+## Key Identifier Types
+
+When working with Subgraphs, you'll encounter different types of identifiers:
+
+- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
+- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
+- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/ko/ai-suite/subgraph-mcp/cursor.mdx b/website/src/pages/ko/ai-suite/subgraph-mcp/cursor.mdx
new file mode 100644
index 000000000000..6291caf4b06b
--- /dev/null
+++ b/website/src/pages/ko/ai-suite/subgraph-mcp/cursor.mdx
@@ -0,0 +1,94 @@
+---
+title: Cursor
+---
+
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data through natural language conversations with Cline.
+
+## Prerequisites
+
+- [Cursor](https://www.cursor.com/) installed (latest version)
+- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
+
+## Configuration Steps
+
+### 1. Open Configuration File
+
+Create or edit your `~/.cursor/mcp.json` file.
+
+> **Cursor Settings** > **MCP** > **Add new global MCP Server**
+
+### 2. Add Configuration
+
+```json
+{
+  "mcpServers": {
+    "subgraph": {
+      "command": "npx",
+      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
+      "env": {
+        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
+      }
+    }
+  }
+}
+```
+
+### 3. Add Your API Key
+
+Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
+
+### 4. Restart Cursor
+
+Restart Cursor, and start a new chat.
+
+## Available Subgraph Tools and Usage
+
+The Subgraph MCP provides several tools for interacting with Subgraphs:
+
+### Schema Retrieval Tools
+
+- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
+- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
+- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
+
+### Query Execution Tools
+
+- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
+- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
+
+### Discovery Tools
+
+- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
+
+## Benefits of Natural Language Queries
+
+One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cursor will:
+
+1. Understand your goal (lookup, find Subgraphs, query, get schema)
+2. Find relevant deployments if needed
+3. Fetch and interpret the Subgraph schema
+4. Convert your question into an appropriate GraphQL query
+5. Execute the query and present the results in a readable format
+
+### Example Natural Language Queries
+
+```
+What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
+```
+
+```
+Which tokens have the highest market cap in this Subgraph?
+```
+
+```
+Show me the most recent 5 swaps for the USDC/ETH pair
+```
+
+## Key Identifier Types
+
+When working with Subgraphs, you'll encounter different types of identifiers:
+
+- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
+- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
+- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/ko/ai-suite/subgraph-mcp/introduction.mdx b/website/src/pages/ko/ai-suite/subgraph-mcp/introduction.mdx
new file mode 100644
index 000000000000..da1272cf9a36
--- /dev/null
+++ b/website/src/pages/ko/ai-suite/subgraph-mcp/introduction.mdx
@@ -0,0 +1,22 @@
+---
+title: Subgraph MCP Introduction
+sidebarTitle: 'Introduction'
+---
+
+Subgraph MCP server is an open-source implementation of [Anthropic's Model Context Protocol](https://modelcontextprotocol.io/introduction).
+
+It presents The Graph's Subgraph data through a set of MCP tools that any MCP-compatible client can call. With these tools, clients can search for relevant Subgraphs, inspect GraphQL schemas, and run queries against specific deployments on The Graph Network all within a single, standardized interface.
+
+The server itself does not hold a language model. Instead, it translates incoming MCP requests into Subgraph queries and returns the structured results, allowing the client's LLM to transform a natural-language prompt into actionable blockchain data.
+
+Think of it as a USB-C hub: it standardizes the plug-and-play connection between AI agents and The Graph's Subgraph ecosystem.
+
+## What You Can Do
+
+- Access GraphQL schemas for any Subgraph on The Graph Network
+- Run GraphQL queries on any Subgraph deployment
+- Discover top Subgraph deployments by keyword or contract address
+- Retrieve 30-day query volumes for Subgraph deployments
+- Ask questions about Subgraph data without writing GraphQL manually
+
+The Subgraph MCP server allows smooth integration with [Claude](/ai-suite/subgraph-mcp/claude/), [Cline](/ai-suite/subgraph-mcp/cline/), or [Cursor](/ai-suite/subgraph-mcp/cursor/), making blockchain data queries with The Graph Network a conversational experience.
diff --git a/website/src/pages/ko/ai-suite/token-api-mcp/_meta.js b/website/src/pages/ko/ai-suite/token-api-mcp/_meta.js
new file mode 100644
index 000000000000..6f527b4e53e4
--- /dev/null
+++ b/website/src/pages/ko/ai-suite/token-api-mcp/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  introduction: '',
+  claude: '',
+  cline: '',
+  cursor: '',
+}
diff --git a/website/src/pages/cs/token-api/mcp/claude.mdx b/website/src/pages/ko/ai-suite/token-api-mcp/claude.mdx
similarity index 99%
rename from website/src/pages/cs/token-api/mcp/claude.mdx
rename to website/src/pages/ko/ai-suite/token-api-mcp/claude.mdx
index 17f93a9bbb39..3e21f4d7e165 100644
--- a/website/src/pages/cs/token-api/mcp/claude.mdx
+++ b/website/src/pages/ko/ai-suite/token-api-mcp/claude.mdx
@@ -12,7 +12,7 @@ sidebarTitle: Claude Desktop
 
 ![Screenshot of Claude Desktop's settings panel showing the MCP server configuration option.](/img/claude-preview-token-api.png)
 
-## Konfigurace
+## Configuration
 
 Create or edit your `claude_desktop_config.json` file.
 
diff --git a/website/src/pages/cs/token-api/mcp/cline.mdx b/website/src/pages/ko/ai-suite/token-api-mcp/cline.mdx
similarity index 99%
rename from website/src/pages/cs/token-api/mcp/cline.mdx
rename to website/src/pages/ko/ai-suite/token-api-mcp/cline.mdx
index 7d98c8650c2d..e885d21366cd 100644
--- a/website/src/pages/cs/token-api/mcp/cline.mdx
+++ b/website/src/pages/ko/ai-suite/token-api-mcp/cline.mdx
@@ -12,7 +12,7 @@ sidebarTitle: Cline
 
 ![Screenshot of Cline's MCP server configuration interface displaying the JSON settings file with mcp-pinax server details visible.](/img/cline-preview-token-api.png)
 
-## Konfigurace
+## Configuration
 
 Create or edit your `cline_mcp_settings.json` file.
 
diff --git a/website/src/pages/cs/token-api/mcp/cursor.mdx b/website/src/pages/ko/ai-suite/token-api-mcp/cursor.mdx
similarity index 99%
rename from website/src/pages/cs/token-api/mcp/cursor.mdx
rename to website/src/pages/ko/ai-suite/token-api-mcp/cursor.mdx
index 35cd7d044430..68fe2fdb201c 100644
--- a/website/src/pages/cs/token-api/mcp/cursor.mdx
+++ b/website/src/pages/ko/ai-suite/token-api-mcp/cursor.mdx
@@ -12,7 +12,7 @@ sidebarTitle: Cursor
 
 ![Screenshot of Cursor's MCP configuration panel.](/img/cursor-preview-token-api.png)
 
-## Konfigurace
+## Configuration
 
 Create or edit your `~/.cursor/mcp.json` file.
 
diff --git a/website/src/pages/ko/ai-suite/token-api-mcp/introduction.mdx b/website/src/pages/ko/ai-suite/token-api-mcp/introduction.mdx
new file mode 100644
index 000000000000..b61ad0a1c485
--- /dev/null
+++ b/website/src/pages/ko/ai-suite/token-api-mcp/introduction.mdx
@@ -0,0 +1,23 @@
+---
+title: Token API MCP Introduction
+sidebarTitle: 'Introduction'
+---
+
+Token API MCP server is an open-source implementation of [Anthropic's Model Context Protocol](https://modelcontextprotocol.io/introduction).
+
+This MCP server makes on-chain token data, including metadata, balances, transfers, and holder statistics, accessible through a set of MCP tools. Any compatible client can use these tools to fetch and analyze token information through a standardized interface. It connects to The Graph's hosted Token API database, enabling AI assistants to query real-time blockchain data using natural language requests that get translated into optimized SQL queries.
+
+The server itself does not host any language model. It simply converts MCP calls into data look-ups and returns structured results, letting the client's own LLM incorporate the results.
+
+Think of it as a USB-C hub: it standardizes the plug-and-play connection between AI agents and The Graph's Token API data.
+
+## What You Can Do
+
+- Retrieve token metadata including name, symbol, decimals, total supply, and contract address
+- Get token balances for any wallet address holding a supported ERC-20 token
+- Fetch token transfer activity including sender, receiver, amount, and timestamp
+- Identify top holders and analyze token distribution
+- Ask natural language questions about token data without writing smart contract calls
+- Access historical transfer data to analyze token movement over time
+
+The Token MCP server provides [Claude](/ai-suite/token-api-mcp/claude/), [Cline](/ai-suite/token-api-mcp/cline/), and [Cursor](/ai-suite/token-api-mcp/cursor/) with direct, conversational access to onchain token data.
diff --git a/website/src/pages/ko/resources/_meta.js b/website/src/pages/ko/resources/_meta.js
index aa8e2d0ec6a8..38c56cf56c43 100644
--- a/website/src/pages/ko/resources/_meta.js
+++ b/website/src/pages/ko/resources/_meta.js
@@ -7,5 +7,4 @@ export default {
   roles: titles.roles ?? '',
   'migration-guides': titles['migration-guides'] ?? '',
   'subgraph-studio-faq': '',
-  'claude-mcp': '',
 }
diff --git a/website/src/pages/ko/resources/claude-mcp.mdx b/website/src/pages/ko/resources/claude-mcp.mdx
deleted file mode 100644
index 44ed075cffda..000000000000
--- a/website/src/pages/ko/resources/claude-mcp.mdx
+++ /dev/null
@@ -1,122 +0,0 @@
----
-title: Claude MCP
----
-
-This guide walks you through configuring Claude Desktop to use The Graph ecosystem's [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) resources: Token API and Subgraph. These integrations allow you to interact with blockchain data through natural language conversations with Claude.
-
-## What You Can Do
-
-With these integrations, you can:
-
-- **Token API**: Access token and wallet information across multiple blockchains
-- **Subgraph**: Find relevant Subgraphs for specific keywords and contracts, explore Subgraph schemas, and execute GraphQL queries
-
-## Prerequisites
-
-- [Node.js](https://nodejs.org/en/download/) installed and available in your path
-- [Claude Desktop](https://claude.ai/download) installed
-- API keys:
-  - Token API key from [The Graph Market](https://thegraph.market/)
-  - Gateway API key from [Subgraph Studio](https://thegraph.com/studio/apikeys/)
-
-## Configuration Steps
-
-### 1. Open Configuration File
-
-Navigate to your `claude_desktop_config.json` file:
-
-> **Claude Desktop** > **Settings** > **Developer** > **Edit Config**
-
-Paths by operating system:
-
-- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
-- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
-- Linux: `.config/Claude/claude_desktop_config.json`
-
-### 2. Add Configuration
-
-Replace the contents of the existing config file with:
-
-```json
-{
-  "mcpServers": {
-    "token-api": {
-      "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
-      "env": {
-        "ACCESS_TOKEN": "ACCESS_TOKEN"
-      }
-    },
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-### 3. Add Your API Keys
-
-Replace:
-
-- `ACCESS_TOKEN` with your Token API key from [The Graph Market](https://thegraph.market/)
-- `GATEWAY_API_KEY` with your Gateway API key from [Subgraph Studio](https://thegraph.com/studio/apikeys/)
-
-### 4. Save and Restart
-
-- Save the configuration file
-- Restart Claude Desktop
-
-### 5. Add The Graph Resources in Claude
-
-After configuration:
-
-1. Start a new conversation in Claude Desktop
-2. Click on the context menu (top right)
-3. Add "Subgraph Server Instructions" as a resource by entering `graphql://subgraph` for Subgraph MCP
-
-> **Important**: You must manually add The Graph resources to your chat context for each conversation where you want to use them.
-
-### 6. Run Queries
-
-Here are some example queries you can try after setting up the resources:
-
-### Subgraph Queries
-
-```
-What are the top pools in Uniswap?
-```
-
-```
-Who are the top Delegators of The Graph Protocol?
-```
-
-```
-Please make a bar chart for the number of active loans in Compound for the last 7 days
-```
-
-### Token API Queries
-
-```
-Show me the current price of ETH
-```
-
-```
-What are the top tokens by market cap on Ethereum?
-```
-
-```
-Analyze this wallet address: 0x...
-```
-
-## Troubleshooting
-
-If you encounter issues:
-
-1. **Verify Node.js Installation**: Ensure Node.js is correctly installed by running `node -v` in your terminal
-2. **Check API Keys**: Verify that your API keys are correctly entered in the configuration file
-3. **Enable Verbose Logging**: Add `--verbose true` to the args array in your configuration to see detailed logs
-4. **Restart Claude Desktop**: After making changes to the configuration, always restart Claude Desktop
diff --git a/website/src/pages/ko/subgraphs/_meta.js b/website/src/pages/ko/subgraphs/_meta.js
index 4365293ffc72..45841d5f3355 100644
--- a/website/src/pages/ko/subgraphs/_meta.js
+++ b/website/src/pages/ko/subgraphs/_meta.js
@@ -6,7 +6,6 @@ export default {
   querying: titles.querying ?? '',
   developing: titles.developing ?? '',
   billing: '',
-  mcp: titles.mcp ?? '',
   guides: titles.guides,
   'best-practices': titles['best-practices'],
   'fair-use-policy': '',
diff --git a/website/src/pages/ko/subgraphs/mcp/_meta.js b/website/src/pages/ko/subgraphs/mcp/_meta.js
deleted file mode 100644
index 8630d4da27b3..000000000000
--- a/website/src/pages/ko/subgraphs/mcp/_meta.js
+++ /dev/null
@@ -1,5 +0,0 @@
-export default {
-  claude: '',
-  cline: '',
-  cursor: '',
-}
diff --git a/website/src/pages/ko/subgraphs/mcp/claude.mdx b/website/src/pages/ko/subgraphs/mcp/claude.mdx
deleted file mode 100644
index 027b272cb942..000000000000
--- a/website/src/pages/ko/subgraphs/mcp/claude.mdx
+++ /dev/null
@@ -1,179 +0,0 @@
----
-title: Claude Desktop
----
-
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Claude to interact directly with Subgraphs on The Graph Network. This integration allows you to find relevant Subgraphs for specific keywords and contracts, explore Subgraph schemas, and execute GraphQL queries—all through natural language conversations with Claude.
-
-## What You Can Do
-
-The Subgraph MCP integration enables you to:
-
-- Access the GraphQL schema for any Subgraph on The Graph Network
-- Execute GraphQL queries against any Subgraph deployment
-- Find top Subgraph deployments for a given keyword or contract address
-- Get 30-day query volume for Subgraph deployments
-- Ask natural language questions about Subgraph data without writing GraphQL queries manually
-
-## Prerequisites
-
-- [Node.js](https://nodejs.org/en) installed and available in your path
-- [Claude Desktop](https://claude.ai/download) installed (latest version)
-- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
-
-## Installation Options
-
-### Option 1: Using npx (Recommended)
-
-#### Configuration Steps using npx
-
-#### 1. Open Configuration File
-
-Navigate to your `claude_desktop_config.json` file:
-
-> **Settings** > **Developer** > **Edit Config**
-
-- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
-- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
-- Linux: `.config/Claude/claude_desktop_config.json`
-
-#### 2. Add Configuration
-
-Paste the following settings into your config file:
-
-```json
-{
-  "mcpServers": {
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-#### 3. Add Your Gateway API Key
-
-Replace `GATEWAY_API_KEY` with your API key from [Subgraph Studio](https://thegraph.com/studio/).
-
-#### 4. Save and Restart
-
-Once you've entered your Gateway API key into your settings, save the file and restart Claude Desktop.
-
-### Option 2: Building from Source
-
-#### Requirements
-
-- Rust (latest stable version recommended: 1.75+)
-  ```bash
-  curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
-  ```
-  Follow the on-screen instructions. For other platforms, see the [official Rust installation guide](https://www.rust-lang.org/tools/install).
-
-#### Installation Steps
-
-1. **Clone and Build the Repository**
-
-   ```bash
-   git clone git@github.com:graphops/subgraph-mcp.git
-   cd subgraph-mcp
-   cargo build --release
-   ```
-
-2. **Find the Command Path**
-
-   After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory.
-   - Navigate to your `subgraph-mcp` directory in terminal
-   - Run `pwd` to get the full path
-   - Combine the output with `/target/release/subgraph-mcp`
-
-3. **Configure Claude Desktop**
-
-   Open your `claude_desktop_config.json` file as described above and add:
-
-   ```json
-   {
-     "mcpServers": {
-       "subgraph": {
-         "command": "/path/to/your/subgraph-mcp/target/release/subgraph-mcp",
-         "env": {
-           "GATEWAY_API_KEY": "your-api-key-here"
-         }
-       }
-     }
-   }
-   ```
-
-   Replace `/path/to/your/subgraph-mcp/target/release/subgraph-mcp` with the actual path to the compiled binary.
-
-## Using The Graph Resource in Claude
-
-After configuring Claude Desktop:
-
-1. Restart Claude Desktop
-2. Start a new conversation
-3. Click on the context menu (top right)
-4. Add "Subgraph Server Instructions" as a resource by adding `graphql://subgraph` to your chat context
-
-> **Important**: Claude Desktop may not automatically utilize the Subgraph MCP. You must manually add "Subgraph Server Instructions" resource to your chat context for each conversation where you want to use it.
-
-## Troubleshooting
-
-To enable logs for the MCP when using the npx option, add the `--verbose true` option to your args array.
-
-## Available Subgraph Tools and Usage
-
-The Subgraph MCP provides several tools for interacting with Subgraphs:
-
-### Schema Retrieval Tools
-
-- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
-- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
-- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
-
-### Query Execution Tools
-
-- **Execute query by deployment ID/IPFS hash**: Run GraphQL queries against specific, immutable deployments
-- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
-
-### Discovery Tools
-
-- **Search subgraphs by keyword**: Find subgraphs by keyword in their display names, ordered by signal
-- **Get deployment 30-day query counts**: Get aggregate query count over the last 30 days for multiple subgraph deployments
-- **Get top Subgraph deployments for a contract**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain, ordered by query fees
-
-## Key Identifier Types
-
-- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a subgraph. Use `execute_query_by_subgraph_id` or `get_schema_by_subgraph_id`.
-- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment. Use `execute_query_by_deployment_id` or `get_schema_by_deployment_id`.
-- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific, immutable deployment. Use `execute_query_by_deployment_id` (the gateway treats it like a deployment ID for querying) or `get_schema_by_ipfs_hash`.
-
-## Benefits of Natural Language Queries
-
-One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Claude will:
-
-1. Understand your goal (lookup, find Subgraphs, query, get schema)
-2. Find relevant deployments if needed
-3. Fetch and interpret the Subgraph schema
-4. Convert your question into an appropriate GraphQL query
-5. Execute the query and present the results in a readable format
-
-### Example Natural Language Queries
-
-```
-What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
-```
-
-```
-Which tokens have the highest market cap in this Subgraph?
-```
-
-```
-Show me the most recent 5 swaps for the USDC/ETH pair
-```
-
-```
-Find the top subgraphs for contract 0x1f98431c8ad98523631ae4a59f267346ea31f984 on arbitrum-one
-```
diff --git a/website/src/pages/ko/subgraphs/mcp/cline.mdx b/website/src/pages/ko/subgraphs/mcp/cline.mdx
deleted file mode 100644
index 156221d9a127..000000000000
--- a/website/src/pages/ko/subgraphs/mcp/cline.mdx
+++ /dev/null
@@ -1,99 +0,0 @@
----
-title: Cline
----
-
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Cline to interact directly with Subgraphs on The Graph Network. This integration allows you to explore Subgraph schemas, execute GraphQL queries, and find relevant Subgraphs for specific contracts—all through natural language conversations with Cline.
-
-## Prerequisites
-
-- [Cline](https://cline.bot/) installed (latest version)
-- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
-
-## Configuration Steps
-
-### 1. Open Configuration File
-
-Create or edit your `cline_mcp_settings.json` file.
-
-> **MCP Servers** > **Installed** > **Configure MCP Servers**
-
-### 2. Add Configuration
-
-```json
-{
-  "mcpServers": {
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-### 3. Add Your API Key
-
-Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
-
-## Using The Graph Resource in Cline
-
-After configuring Cline:
-
-1. Restart Cline
-2. Start a new conversation
-3. Enable the Subgraph MCP from the context menu
-4. Add "Subgraph Server Instructions" as a resource to your chat context
-
-## Available Tools and Usage
-
-The Subgraph MCP provides several tools for interacting with Subgraphs:
-
-### Schema Retrieval Tools
-
-- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
-- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
-- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
-
-### Query Execution Tools
-
-- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
-- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
-
-### Discovery Tools
-
-- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
-
-## Natural Language Queries
-
-One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cline will:
-
-1. Understand your goal (lookup, find Subgraphs, query, get schema)
-2. Find relevant deployments if needed
-3. Fetch and interpret the Subgraph schema
-4. Convert your question into an appropriate GraphQL query
-5. Execute the query and present the results in a readable format
-
-### Example Natural Language Queries
-
-```
-What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
-```
-
-```
-Which tokens have the highest market cap in this Subgraph?
-```
-
-```
-Show me the most recent 5 swaps for the USDC/ETH pair
-```
-
-## Key Identifier Types
-
-When working with Subgraphs, you'll encounter different types of identifiers:
-
-- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
-- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
-- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/ko/subgraphs/mcp/cursor.mdx b/website/src/pages/ko/subgraphs/mcp/cursor.mdx
deleted file mode 100644
index 298f43ece048..000000000000
--- a/website/src/pages/ko/subgraphs/mcp/cursor.mdx
+++ /dev/null
@@ -1,94 +0,0 @@
----
-title: Cursor
----
-
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Cursor to interact directly with Subgraphs on The Graph Network. This integration allows you to explore Subgraph schemas, execute GraphQL queries, and find relevant Subgraphs for specific contracts—all through natural language conversations with Cursor.
-
-## Prerequisites
-
-- [Cursor](https://www.cursor.com/) installed (latest version)
-- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
-
-## Configuration Steps
-
-### 1. Open Configuration File
-
-Create or edit your `~/.cursor/mcp.json` file.
-
-> **Cursor Settings** > **MCP** > **Add new global MCP Server**
-
-### 2. Add Configuration
-
-```json
-{
-  "mcpServers": {
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-### 3. Add Your API Key
-
-Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
-
-### 4. Restart Cursor
-
-Restart Cursor, and start a new chat.
-
-## Available Subgraph Tools and Usage
-
-The Subgraph MCP provides several tools for interacting with Subgraphs:
-
-### Schema Retrieval Tools
-
-- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
-- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
-- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
-
-### Query Execution Tools
-
-- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
-- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
-
-### Discovery Tools
-
-- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
-
-## Benefits of Natural Language Queries
-
-One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cursor will:
-
-1. Understand your goal (lookup, find Subgraphs, query, get schema)
-2. Find relevant deployments if needed
-3. Fetch and interpret the Subgraph schema
-4. Convert your question into an appropriate GraphQL query
-5. Execute the query and present the results in a readable format
-
-### Example Natural Language Queries
-
-```
-What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
-```
-
-```
-Which tokens have the highest market cap in this Subgraph?
-```
-
-```
-Show me the most recent 5 swaps for the USDC/ETH pair
-```
-
-## Key Identifier Types
-
-When working with Subgraphs, you'll encounter different types of identifiers:
-
-- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
-- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
-- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/ko/substreams/_meta.js b/website/src/pages/ko/substreams/_meta.js
index a8ee04618eae..658bb8c213c6 100644
--- a/website/src/pages/ko/substreams/_meta.js
+++ b/website/src/pages/ko/substreams/_meta.js
@@ -5,5 +5,4 @@ export default {
   introduction: '',
   developing: titles.developing ?? '',
   publishing: '',
-  sps: titles.sps ?? '',
 }
diff --git a/website/src/pages/ko/token-api/_meta-titles.json b/website/src/pages/ko/token-api/_meta-titles.json
index 7ed31e0af95d..3108ecd3ebfd 100644
--- a/website/src/pages/ko/token-api/_meta-titles.json
+++ b/website/src/pages/ko/token-api/_meta-titles.json
@@ -1,6 +1,7 @@
 {
   "mcp": "MCP",
   "evm": "EVM Endpoints",
+  "svm": "SVM Endpoints",
   "monitoring": "Monitoring Endpoints",
   "faq": "FAQ"
 }
diff --git a/website/src/pages/ko/token-api/_meta.js b/website/src/pages/ko/token-api/_meta.js
index f67576d7f612..fb7f7334ea0c 100644
--- a/website/src/pages/ko/token-api/_meta.js
+++ b/website/src/pages/ko/token-api/_meta.js
@@ -2,8 +2,8 @@ import titles from './_meta-titles.json'
 
 export default {
   'quick-start': '',
-  mcp: titles.mcp ?? '',
   evm: titles.evm ?? '',
+  svm: titles.svm ?? '',
   monitoring: titles.monitoring ?? '',
   faq: '',
 }
diff --git a/website/src/pages/ko/token-api/mcp/_meta.js b/website/src/pages/ko/token-api/mcp/_meta.js
deleted file mode 100644
index 8630d4da27b3..000000000000
--- a/website/src/pages/ko/token-api/mcp/_meta.js
+++ /dev/null
@@ -1,5 +0,0 @@
-export default {
-  claude: '',
-  cline: '',
-  cursor: '',
-}
diff --git a/website/src/pages/ko/token-api/svm/_meta.js b/website/src/pages/ko/token-api/svm/_meta.js
new file mode 100644
index 000000000000..1a48b82fcbf1
--- /dev/null
+++ b/website/src/pages/ko/token-api/svm/_meta.js
@@ -0,0 +1,5 @@
+export default {
+  'get-balances-svm': '',
+  'get-transfers-svm': '',
+  'get-swaps-svm': '',
+}
diff --git a/website/src/pages/ko/token-api/svm/get-balances-svm.mdx b/website/src/pages/ko/token-api/svm/get-balances-svm.mdx
new file mode 100644
index 000000000000..c2946c190bf9
--- /dev/null
+++ b/website/src/pages/ko/token-api/svm/get-balances-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Balances
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getBalancesSvm
+---
+
+Provides Solana tokens balances by token account address.
diff --git a/website/src/pages/ko/token-api/svm/get-swaps-svm.mdx b/website/src/pages/ko/token-api/svm/get-swaps-svm.mdx
new file mode 100644
index 000000000000..95282a38ac9f
--- /dev/null
+++ b/website/src/pages/ko/token-api/svm/get-swaps-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Swap Events
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getSwapsSvm
+---
+
+Provides Raydium swap events.
diff --git a/website/src/pages/ko/token-api/svm/get-transfers-svm.mdx b/website/src/pages/ko/token-api/svm/get-transfers-svm.mdx
new file mode 100644
index 000000000000..5335cdddf418
--- /dev/null
+++ b/website/src/pages/ko/token-api/svm/get-transfers-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Transfers Events
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getTransfersSvm
+---
+
+Provides SVM transfer events.
diff --git a/website/src/pages/mr/ai-suite/_meta-titles.json b/website/src/pages/mr/ai-suite/_meta-titles.json
new file mode 100644
index 000000000000..5eb482a7092b
--- /dev/null
+++ b/website/src/pages/mr/ai-suite/_meta-titles.json
@@ -0,0 +1,6 @@
+{
+  "graph-assistant": "Graph Assistant",
+  "ai-introduction": "The Graph's AI",
+  "subgraph-mcp": "Subgraph MCP",
+  "token-api-mcp": "Token API MCP"
+}
diff --git a/website/src/pages/mr/ai-suite/_meta.js b/website/src/pages/mr/ai-suite/_meta.js
new file mode 100644
index 000000000000..c9e51dfd35fb
--- /dev/null
+++ b/website/src/pages/mr/ai-suite/_meta.js
@@ -0,0 +1,8 @@
+import titles from './_meta-titles.json'
+
+export default {
+  'ai-introduction': titles['ai-introduction'],
+  'graph-assistant': titles['graph-assistant'],
+  'subgraph-mcp': titles['subgraph-mcp'],
+  'token-api-mcp': titles['token-api-mcp'],
+}
diff --git a/website/src/pages/mr/ai-suite/ai-introduction.mdx b/website/src/pages/mr/ai-suite/ai-introduction.mdx
new file mode 100644
index 000000000000..d25cc9f77358
--- /dev/null
+++ b/website/src/pages/mr/ai-suite/ai-introduction.mdx
@@ -0,0 +1,58 @@
+---
+title: The Graph's AI
+---
+
+Build with speed and scale faster with The Graph's AI.
+
+## Using AI on The Graph
+
+Instead of relying on static datasets or centralized APIs, you can now access live blockchain data through our **agentic** app, [Graph Assistant](/ai-suite/graph-assistant/introduction/), and use our AI-native tooling, [Subgraph MCP](/ai-suite/subgraph-mcp/introduction/), and [Token API MCP](/ai-suite/token-api-mcp/introduction/).
+
+### Why Use Onchain Data with AI?
+
+Using onchain data with AI unlocks powerful new ways to interact with and understand blockchain ecosystems.
+
+- **AI for Non-Technical End Users**: AI can turn complex onchain data into accessible insights. Assistants powered by AI enable you to explore and analyze blockchain data without coding.
+- **AI for Developers**: You can use AI to interact directly with The Graph's data through your agents or build AI-powered applications on top of it. This streamlines development and opens up more intuitive, dynamic use cases.
+
+## AI for Non-Technical/End Users
+
+[Graph Assistant](/ai-suite/graph-assistant/introduction/) is a powerful **agentic** application that empowers users to easily interact with blockchain data. Ask questions in simple, natural language and get rich, AI powered insights. Both technical developers and non-technical product teams can move faster, make smarter decisions, and gain a clearer understanding than ever before.
+
+### Benefits of Using Graph Assistant
+
+- **Natural language Input**: You don't need to write complex queries or sift through dashboards. Simply ask your question in plain English and get clear, structured results.
+- **Multi-source support**: Works across multiple Subgraphs and Token API. The Assistant automatically determines which data source to use, so you don't have to switch tools or manage endpoints.
+- **Schema-free access**: You don't need to understand the schema. You can refer to tokens, protocols, dates, or addresses using natural language. The Assistant takes care of the rest.
+
+### Conversational Querying with Graph Assistant
+
+**Example queries:**
+
+- "List the top-5 swaps by USD value in the last 24 hours."
+- "Give me the daily volume on Uniswap."
+- "List the 20 most recently registered .eth names."
+
+[Graph Assistant](/ai-suite/graph-assistant/introduction/) will eventually be a one-stop shop for interacting with The Graph. Right now, it's an agentic AI app that uses state-of-the-art AI techniques, LLMs, and MCPs to understand and answer your questions about [Subgraphs](/subgraphs/developing/subgraphs/) and [Token API](/token-api/quick-start/) data.
+
+## AI for Developers
+
+### Enable Natural Language Access to Onchain Data
+
+[Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) servers connect to Claude, Cline, and Cursor. They enable models to understand, query, and interact with structured onchain data using natural language. MCPs remove the need to write low-level queries or interact with APIs directly.
+
+### Subgraph MCP
+
+The [Subgraph MCP](/ai-suite/subgraph-mcp/introduction/) server connects models to Subgraphs on The Graph Network. It allows language models to explore Subgraph schemas, execute GraphQL queries, find relevant Subgraphs by keyword or contract, and surface usage metrics using natural language.
+
+### Token API MCP
+
+The [Token API MCP](/ai-suite/token-api-mcp/introduction/) MCP server enables models to access onchain token data. It supports querying token metadata, wallet balances, transfer history, and top token holders through simple prompts.
+
+#### Benefits of Using Subgraph and Token API MCPs
+
+- Query Subgraphs and token data using natural language
+- Access GraphQL schemas and token metadata without manual queries
+- Find Subgraphs by keyword or contract and check 30-day usage
+- Retrieve real-time data from The Graph and onchain token sources
+- Get wallet balances, transfer history, and top token holders
diff --git a/website/src/pages/mr/ai-suite/graph-assistant/_meta.js b/website/src/pages/mr/ai-suite/graph-assistant/_meta.js
new file mode 100644
index 000000000000..74da5e0686a7
--- /dev/null
+++ b/website/src/pages/mr/ai-suite/graph-assistant/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  'quick-start': '',
+  introduction: '',
+  'how-to-guide': '',
+  faq: '',
+}
diff --git a/website/src/pages/mr/ai-suite/graph-assistant/faq.mdx b/website/src/pages/mr/ai-suite/graph-assistant/faq.mdx
new file mode 100644
index 000000000000..8addf9935524
--- /dev/null
+++ b/website/src/pages/mr/ai-suite/graph-assistant/faq.mdx
@@ -0,0 +1,26 @@
+---
+title: Graph Assistant FAQ
+sidebarTitle: 'FAQ'
+---
+
+This page summarizes some of the most common questions for developers using Graph Assistant.
+
+1. What is The Graph Assistant?
+
+The Graph Assistant is an AI-powered chat interface that lets you query blockchain data in plain English. Under the hood, it translates your questions into GraphQL calls against Subgraphs and the Token API, then returns results, no coding required.
+
+2. What is an agentic application?
+
+An agentic application combines AI-driven reasoning with external data sources or APIs to take autonomous actions on your behalf. In this case, Graph Assistant acts as an “agent” that interprets your natural-language prompts, builds and dispatches GraphQL queries, and formats the results so that you don't need to write or manage queries yourself.
+
+3. Which networks and data does Graph Assistant support?
+
+The Assistant has access to Subgraphs across multiple chains. If a Subgraph is published to The Graph Network and is being indexed, the Assistant can automatically route queries to it. The Assistant also has access to the Token API on Ethereum Mainnet, BSC, Unichain, Arbitrum-One, Optimism, and Polygon.
+
+4. Is there a usage limit or quota?
+
+Yes, 10 questions per hour.
+
+5. What if the Assistant can't interpret my question?
+
+When the Assistant fails to parse your intent (for example, ambiguous token name, missing context, or an unsupported request), it will prompt you for clarification. For instance, it might ask, “Did you mean XYZ on Ethereum or XYZ on Arbitrum?” or “Please specify a date range for this query.” If you continue to see parsing errors, check that you're using correct token symbols or specifying networks and time frames clearly.
diff --git a/website/src/pages/mr/ai-suite/graph-assistant/how-to-guide.mdx b/website/src/pages/mr/ai-suite/graph-assistant/how-to-guide.mdx
new file mode 100644
index 000000000000..463130894ad8
--- /dev/null
+++ b/website/src/pages/mr/ai-suite/graph-assistant/how-to-guide.mdx
@@ -0,0 +1,56 @@
+---
+title: How To Use The Graph Assistant
+sidebarTitle: 'How-to Guide'
+---
+
+## Overview
+
+You type a natural language question into the chat interface, such as:
+
+```yaml
+'On Uniswap, return the top-10 pools by total value locked in USD.'
+```
+
+> [!IMPORTANT] All users can process 10 free queries per user per hour.
+
+> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the underlying agents. Do not share sensitive, personal, or private information.
+
+### Behind the Scenes
+
+The Assistant:
+
+1. Interprets your intent
+2. Maps it to the correct Subgraphs or Token API endpoint
+3. Executes optimized queries
+4. Returns clean, structured results
+
+You don't need to write queries or understand a Subgraph's schema, you simply ask.
+
+### Example Use Cases
+
+**Protocol Analytics**
+
+- “Compare daily active users on Aave vs. Compound in May 2025.”
+- “Show me the total value locked (TVL) for XYZDAO over the last quarter.”
+
+**Token Insights**
+
+- “What are the top 10 tokens by market cap on Ethereum right now?”
+- “How many XYZ did I receive between May 1 and May 15?”
+
+**Historical Data Retrieval**
+
+- “Fetch the token price history of XYZ for the last six months.”
+- “What was the average gas price on Ethereum during April?”
+
+**Portfolio Monitoring**
+
+- “List my wallet’s current token balances and their USD equivalents.”
+- “Calculate profit/loss on XYZ since xyz date.”
+
+**Cross-Chain Comparison**
+
+- “Show me the 7-day trading volume of XYZ on Ethereum vs. Polygon.”
+- “How many XYZ swaps occurred on Arbitrum yesterday?”
+
+To get started follow the [quickstart](/ai-suite/graph-assistant/quick-start/) and explore its capabilities.
diff --git a/website/src/pages/mr/ai-suite/graph-assistant/introduction.mdx b/website/src/pages/mr/ai-suite/graph-assistant/introduction.mdx
new file mode 100644
index 000000000000..65fdf0f96028
--- /dev/null
+++ b/website/src/pages/mr/ai-suite/graph-assistant/introduction.mdx
@@ -0,0 +1,31 @@
+---
+title: Introduction
+---
+
+> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime.
+
+[Graph Assistant](https://thegraph.com/graph-assistant) (Beta) gives instant, code-free access to blockchain data, transforming natural language into precise, AI-powered queries without the need to code.
+
+## Overview
+
+[Graph Assistant](https://thegraph.com/graph-assistant) is an advanced, [agentic](/en/ai-suite/graph-assistant/faq/) easy-to-use chat interface for querying blockchain data using natural language. Unlike a basic chatbot, Graph Assistant can understand your intent, build complex queries, and execute them automatically. This gives you rich, AI-powered insights from onchain data without writing any code.
+
+- **Automatically** interprets user intent, generates precise queries, executes them via The Graph's Subgraphs and Token API, and presents structured, AI-powered answers without requiring any code.
+- **Removes** the technical complexity found in traditional dashboards or chatbots. It provides composable insights directly from indexed Subgraphs and Token datasets.
+
+## Core Features
+
+| Feature | Description |
+| --- | --- |
+| **Friendly Interface** | Conversational access to blockchain data via natural language. You simply ask questions, the Assistant fetches the answer, and renders results. |
+| **Backed by Subgraphs** | Uses subgraphs to index protocol-specific data like transactions, events, and protocol metrics. |
+| **Backed by Token API** | Uses Token API for token-level information like balances, transfers, and metadata. |
+| **No Setup Required** | No need to configure data sources or write queries. |
+| **Automatic Query Building** | The Assistant performs complex queries such as fetching historical token volumes, protocol analytics, or cross-chain data and handles filtering, pagination, and joins across Subgraphs automatically. |
+
+## Help Shape What's Next
+
+This is in **beta**, and community input is essential. If you have ideas, questions, or run into anything unexpected, we'd love to hear from you:
+
+- Join the community on [Discord](https://discord.com/invite/graphprotocol): Provide feedback and stay in the loop with other builders. You'll be able to join the `#graph-assistant` channel to share your experience directly.
+- Interested in going deeper? Reach out to become a dedicated beta tester so your specific use case can be better supported.
diff --git a/website/src/pages/mr/ai-suite/graph-assistant/quick-start.mdx b/website/src/pages/mr/ai-suite/graph-assistant/quick-start.mdx
new file mode 100644
index 000000000000..13f8478b8d2b
--- /dev/null
+++ b/website/src/pages/mr/ai-suite/graph-assistant/quick-start.mdx
@@ -0,0 +1,44 @@
+---
+title: Quick Start
+---
+
+> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime.
+
+This guide provides step-by-step instructions for getting started with Graph Assistant quickly.
+
+## Step-by Step
+
+### Step 1. Create an Account
+
+Go to: [Graph Assistant](https://thegraph.com/graph-assistant)
+
+- Click Sign Up (or Log In if you already have an account).
+- Use your Google, GitHub, X, email or wallet credentials to log in.
+- No additional setup is required.
+
+### Step 2. Open the Assistant Chat
+
+After logging in:
+
+- You'll see Graph Assistant's interface.
+- At the bottom of the page, you will find a chat input bar. This is where you will interact with the Assistant.
+
+### Step 3: Ask Your First Question
+
+> [!IMPORTANT] All users can process 10 free queries per user per hour.
+
+In the input bar, type a natural-language query (everyday language).
+
+Example:
+
+```yaml
+Show me the 24-hour trading volume of XYZ token on Ethereum
+```
+
+> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the AI interface. Do not share sensitive, personal, or private information.
+
+The Assistant will:
+
+- Digest your question
+- Fetch onchain data using Subgraphs or the Token API
+- Return a clean, formatted response with the data you need
diff --git a/website/src/pages/mr/ai-suite/subgraph-mcp/_meta.js b/website/src/pages/mr/ai-suite/subgraph-mcp/_meta.js
new file mode 100644
index 000000000000..6f527b4e53e4
--- /dev/null
+++ b/website/src/pages/mr/ai-suite/subgraph-mcp/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  introduction: '',
+  claude: '',
+  cline: '',
+  cursor: '',
+}
diff --git a/website/src/pages/mr/ai-suite/subgraph-mcp/claude.mdx b/website/src/pages/mr/ai-suite/subgraph-mcp/claude.mdx
new file mode 100644
index 000000000000..ff3caa4e3e7f
--- /dev/null
+++ b/website/src/pages/mr/ai-suite/subgraph-mcp/claude.mdx
@@ -0,0 +1,169 @@
+---
+title: Claude Desktop
+---
+
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data via natural language conversations with Claude.
+
+## Prerequisites
+
+- [Node.js](https://nodejs.org/en) installed and available in your path
+- [Claude Desktop](https://claude.ai/download) installed (latest version)
+- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
+
+## Installation Options
+
+### Option 1: Using npx (Recommended)
+
+#### Configuration Steps using npx
+
+#### 1. Open Configuration File
+
+Navigate to your `claude_desktop_config.json` file:
+
+> **Settings** > **Developer** > **Edit Config**
+
+- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
+- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
+- Linux: `.config/Claude/claude_desktop_config.json`
+
+#### 2. Add Configuration
+
+Paste the following settings into your config file:
+
+```json
+{
+  "mcpServers": {
+    "subgraph": {
+      "command": "npx",
+      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
+      "env": {
+        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
+      }
+    }
+  }
+}
+```
+
+#### 3. Add Your Gateway API Key
+
+Replace `GATEWAY_API_KEY` with your API key from [Subgraph Studio](https://thegraph.com/studio/).
+
+#### 4. Save and Restart
+
+Once you've entered your Gateway API key into your settings, save the file and restart Claude Desktop.
+
+### Option 2: Building from Source
+
+#### Requirements
+
+- Rust (latest stable version recommended: 1.75+)
+  ```bash
+  curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
+  ```
+  Follow the on-screen instructions. For other platforms, see the [official Rust installation guide](https://www.rust-lang.org/tools/install).
+
+#### Installation Steps
+
+1. **Clone and Build the Repository**
+
+   ```bash
+   git clone git@github.com:graphops/subgraph-mcp.git
+   cd subgraph-mcp
+   cargo build --release
+   ```
+
+2. **Find the Command Path**
+
+   After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory.
+   - Navigate to your `subgraph-mcp` directory in terminal
+   - Run `pwd` to get the full path
+   - Combine the output with `/target/release/subgraph-mcp`
+
+3. **Configure Claude Desktop**
+
+   Open your `claude_desktop_config.json` file as described above and add:
+
+   ```json
+   {
+     "mcpServers": {
+       "subgraph": {
+         "command": "/path/to/your/subgraph-mcp/target/release/subgraph-mcp",
+         "env": {
+           "GATEWAY_API_KEY": "your-api-key-here"
+         }
+       }
+     }
+   }
+   ```
+
+   Replace `/path/to/your/subgraph-mcp/target/release/subgraph-mcp` with the actual path to the compiled binary.
+
+## Using The Graph Resource in Claude
+
+After configuring Claude Desktop:
+
+1. Restart Claude Desktop
+2. Start a new conversation
+3. Click on the context menu (top right)
+4. Add "Subgraph Server Instructions" as a resource by adding `graphql://subgraph` to your chat context
+
+> **Important**: Claude Desktop may not automatically utilize the Subgraph MCP. You must manually add "Subgraph Server Instructions" resource to your chat context for each conversation where you want to use it.
+
+## Troubleshooting
+
+To enable logs for the MCP when using the npx option, add the `--verbose true` option to your args array.
+
+## Available Subgraph Tools and Usage
+
+The Subgraph MCP provides several tools for interacting with Subgraphs:
+
+### Schema Retrieval Tools
+
+- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
+- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
+- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
+
+### Query Execution Tools
+
+- **Execute query by deployment ID/IPFS hash**: Run GraphQL queries against specific, immutable deployments
+- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
+
+### Discovery Tools
+
+- **Search subgraphs by keyword**: Find subgraphs by keyword in their display names, ordered by signal
+- **Get deployment 30-day query counts**: Get aggregate query count over the last 30 days for multiple subgraph deployments
+- **Get top Subgraph deployments for a contract**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain, ordered by query fees
+
+## Key Identifier Types
+
+- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a subgraph. Use `execute_query_by_subgraph_id` or `get_schema_by_subgraph_id`.
+- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment. Use `execute_query_by_deployment_id` or `get_schema_by_deployment_id`.
+- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific, immutable deployment. Use `execute_query_by_deployment_id` (the gateway treats it like a deployment ID for querying) or `get_schema_by_ipfs_hash`.
+
+## Benefits of Natural Language Queries
+
+One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Claude will:
+
+1. Understand your goal (lookup, find Subgraphs, query, get schema)
+2. Find relevant deployments if needed
+3. Fetch and interpret the Subgraph schema
+4. Convert your question into an appropriate GraphQL query
+5. Execute the query and present the results in a readable format
+
+### Example Natural Language Queries
+
+```
+What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
+```
+
+```
+Which tokens have the highest market cap in this Subgraph?
+```
+
+```
+Show me the most recent 5 swaps for the USDC/ETH pair
+```
+
+```
+Find the top subgraphs for contract 0x1f98431c8ad98523631ae4a59f267346ea31f984 on arbitrum-one
+```
diff --git a/website/src/pages/mr/ai-suite/subgraph-mcp/cline.mdx b/website/src/pages/mr/ai-suite/subgraph-mcp/cline.mdx
new file mode 100644
index 000000000000..eb8044bfe991
--- /dev/null
+++ b/website/src/pages/mr/ai-suite/subgraph-mcp/cline.mdx
@@ -0,0 +1,99 @@
+---
+title: Cline
+---
+
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data through natural language conversations with Cline.
+
+## Prerequisites
+
+- [Cline](https://cline.bot/) installed (latest version)
+- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
+
+## Configuration Steps
+
+### 1. Open Configuration File
+
+Create or edit your `cline_mcp_settings.json` file.
+
+> **MCP Servers** > **Installed** > **Configure MCP Servers**
+
+### 2. Add Configuration
+
+```json
+{
+  "mcpServers": {
+    "subgraph": {
+      "command": "npx",
+      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
+      "env": {
+        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
+      }
+    }
+  }
+}
+```
+
+### 3. Add Your API Key
+
+Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
+
+## Using The Graph Resource in Cline
+
+After configuring Cline:
+
+1. Restart Cline
+2. Start a new conversation
+3. Enable the Subgraph MCP from the context menu
+4. Add "Subgraph Server Instructions" as a resource to your chat context
+
+## Available Tools and Usage
+
+The Subgraph MCP provides several tools for interacting with Subgraphs:
+
+### Schema Retrieval Tools
+
+- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
+- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
+- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
+
+### Query Execution Tools
+
+- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
+- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
+
+### Discovery Tools
+
+- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
+
+## Natural Language Queries
+
+One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cline will:
+
+1. Understand your goal (lookup, find Subgraphs, query, get schema)
+2. Find relevant deployments if needed
+3. Fetch and interpret the Subgraph schema
+4. Convert your question into an appropriate GraphQL query
+5. Execute the query and present the results in a readable format
+
+### Example Natural Language Queries
+
+```
+What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
+```
+
+```
+Which tokens have the highest market cap in this Subgraph?
+```
+
+```
+Show me the most recent 5 swaps for the USDC/ETH pair
+```
+
+## Key Identifier Types
+
+When working with Subgraphs, you'll encounter different types of identifiers:
+
+- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
+- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
+- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/mr/ai-suite/subgraph-mcp/cursor.mdx b/website/src/pages/mr/ai-suite/subgraph-mcp/cursor.mdx
new file mode 100644
index 000000000000..6291caf4b06b
--- /dev/null
+++ b/website/src/pages/mr/ai-suite/subgraph-mcp/cursor.mdx
@@ -0,0 +1,94 @@
+---
+title: Cursor
+---
+
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data through natural language conversations with Cline.
+
+## Prerequisites
+
+- [Cursor](https://www.cursor.com/) installed (latest version)
+- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
+
+## Configuration Steps
+
+### 1. Open Configuration File
+
+Create or edit your `~/.cursor/mcp.json` file.
+
+> **Cursor Settings** > **MCP** > **Add new global MCP Server**
+
+### 2. Add Configuration
+
+```json
+{
+  "mcpServers": {
+    "subgraph": {
+      "command": "npx",
+      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
+      "env": {
+        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
+      }
+    }
+  }
+}
+```
+
+### 3. Add Your API Key
+
+Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
+
+### 4. Restart Cursor
+
+Restart Cursor, and start a new chat.
+
+## Available Subgraph Tools and Usage
+
+The Subgraph MCP provides several tools for interacting with Subgraphs:
+
+### Schema Retrieval Tools
+
+- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
+- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
+- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
+
+### Query Execution Tools
+
+- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
+- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
+
+### Discovery Tools
+
+- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
+
+## Benefits of Natural Language Queries
+
+One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cursor will:
+
+1. Understand your goal (lookup, find Subgraphs, query, get schema)
+2. Find relevant deployments if needed
+3. Fetch and interpret the Subgraph schema
+4. Convert your question into an appropriate GraphQL query
+5. Execute the query and present the results in a readable format
+
+### Example Natural Language Queries
+
+```
+What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
+```
+
+```
+Which tokens have the highest market cap in this Subgraph?
+```
+
+```
+Show me the most recent 5 swaps for the USDC/ETH pair
+```
+
+## Key Identifier Types
+
+When working with Subgraphs, you'll encounter different types of identifiers:
+
+- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
+- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
+- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/mr/ai-suite/subgraph-mcp/introduction.mdx b/website/src/pages/mr/ai-suite/subgraph-mcp/introduction.mdx
new file mode 100644
index 000000000000..da1272cf9a36
--- /dev/null
+++ b/website/src/pages/mr/ai-suite/subgraph-mcp/introduction.mdx
@@ -0,0 +1,22 @@
+---
+title: Subgraph MCP Introduction
+sidebarTitle: 'Introduction'
+---
+
+Subgraph MCP server is an open-source implementation of [Anthropic's Model Context Protocol](https://modelcontextprotocol.io/introduction).
+
+It presents The Graph's Subgraph data through a set of MCP tools that any MCP-compatible client can call. With these tools, clients can search for relevant Subgraphs, inspect GraphQL schemas, and run queries against specific deployments on The Graph Network all within a single, standardized interface.
+
+The server itself does not hold a language model. Instead, it translates incoming MCP requests into Subgraph queries and returns the structured results, allowing the client's LLM to transform a natural-language prompt into actionable blockchain data.
+
+Think of it as a USB-C hub: it standardizes the plug-and-play connection between AI agents and The Graph's Subgraph ecosystem.
+
+## What You Can Do
+
+- Access GraphQL schemas for any Subgraph on The Graph Network
+- Run GraphQL queries on any Subgraph deployment
+- Discover top Subgraph deployments by keyword or contract address
+- Retrieve 30-day query volumes for Subgraph deployments
+- Ask questions about Subgraph data without writing GraphQL manually
+
+The Subgraph MCP server allows smooth integration with [Claude](/ai-suite/subgraph-mcp/claude/), [Cline](/ai-suite/subgraph-mcp/cline/), or [Cursor](/ai-suite/subgraph-mcp/cursor/), making blockchain data queries with The Graph Network a conversational experience.
diff --git a/website/src/pages/mr/ai-suite/token-api-mcp/_meta.js b/website/src/pages/mr/ai-suite/token-api-mcp/_meta.js
new file mode 100644
index 000000000000..6f527b4e53e4
--- /dev/null
+++ b/website/src/pages/mr/ai-suite/token-api-mcp/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  introduction: '',
+  claude: '',
+  cline: '',
+  cursor: '',
+}
diff --git a/website/src/pages/sv/token-api/mcp/claude.mdx b/website/src/pages/mr/ai-suite/token-api-mcp/claude.mdx
similarity index 99%
rename from website/src/pages/sv/token-api/mcp/claude.mdx
rename to website/src/pages/mr/ai-suite/token-api-mcp/claude.mdx
index 47a477b1511e..3e21f4d7e165 100644
--- a/website/src/pages/sv/token-api/mcp/claude.mdx
+++ b/website/src/pages/mr/ai-suite/token-api-mcp/claude.mdx
@@ -12,7 +12,7 @@ sidebarTitle: Claude Desktop
 
 ![Screenshot of Claude Desktop's settings panel showing the MCP server configuration option.](/img/claude-preview-token-api.png)
 
-## Konfiguration
+## Configuration
 
 Create or edit your `claude_desktop_config.json` file.
 
diff --git a/website/src/pages/sv/token-api/mcp/cline.mdx b/website/src/pages/mr/ai-suite/token-api-mcp/cline.mdx
similarity index 99%
rename from website/src/pages/sv/token-api/mcp/cline.mdx
rename to website/src/pages/mr/ai-suite/token-api-mcp/cline.mdx
index dbd4cf5f7b90..e885d21366cd 100644
--- a/website/src/pages/sv/token-api/mcp/cline.mdx
+++ b/website/src/pages/mr/ai-suite/token-api-mcp/cline.mdx
@@ -12,7 +12,7 @@ sidebarTitle: Cline
 
 ![Screenshot of Cline's MCP server configuration interface displaying the JSON settings file with mcp-pinax server details visible.](/img/cline-preview-token-api.png)
 
-## Konfiguration
+## Configuration
 
 Create or edit your `cline_mcp_settings.json` file.
 
diff --git a/website/src/pages/sv/token-api/mcp/cursor.mdx b/website/src/pages/mr/ai-suite/token-api-mcp/cursor.mdx
similarity index 99%
rename from website/src/pages/sv/token-api/mcp/cursor.mdx
rename to website/src/pages/mr/ai-suite/token-api-mcp/cursor.mdx
index 01e75bf7e400..68fe2fdb201c 100644
--- a/website/src/pages/sv/token-api/mcp/cursor.mdx
+++ b/website/src/pages/mr/ai-suite/token-api-mcp/cursor.mdx
@@ -12,7 +12,7 @@ sidebarTitle: Cursor
 
 ![Screenshot of Cursor's MCP configuration panel.](/img/cursor-preview-token-api.png)
 
-## Konfiguration
+## Configuration
 
 Create or edit your `~/.cursor/mcp.json` file.
 
diff --git a/website/src/pages/mr/ai-suite/token-api-mcp/introduction.mdx b/website/src/pages/mr/ai-suite/token-api-mcp/introduction.mdx
new file mode 100644
index 000000000000..b61ad0a1c485
--- /dev/null
+++ b/website/src/pages/mr/ai-suite/token-api-mcp/introduction.mdx
@@ -0,0 +1,23 @@
+---
+title: Token API MCP Introduction
+sidebarTitle: 'Introduction'
+---
+
+Token API MCP server is an open-source implementation of [Anthropic's Model Context Protocol](https://modelcontextprotocol.io/introduction).
+
+This MCP server makes on-chain token data, including metadata, balances, transfers, and holder statistics, accessible through a set of MCP tools. Any compatible client can use these tools to fetch and analyze token information through a standardized interface. It connects to The Graph's hosted Token API database, enabling AI assistants to query real-time blockchain data using natural language requests that get translated into optimized SQL queries.
+
+The server itself does not host any language model. It simply converts MCP calls into data look-ups and returns structured results, letting the client's own LLM incorporate the results.
+
+Think of it as a USB-C hub: it standardizes the plug-and-play connection between AI agents and The Graph's Token API data.
+
+## What You Can Do
+
+- Retrieve token metadata including name, symbol, decimals, total supply, and contract address
+- Get token balances for any wallet address holding a supported ERC-20 token
+- Fetch token transfer activity including sender, receiver, amount, and timestamp
+- Identify top holders and analyze token distribution
+- Ask natural language questions about token data without writing smart contract calls
+- Access historical transfer data to analyze token movement over time
+
+The Token MCP server provides [Claude](/ai-suite/token-api-mcp/claude/), [Cline](/ai-suite/token-api-mcp/cline/), and [Cursor](/ai-suite/token-api-mcp/cursor/) with direct, conversational access to onchain token data.
diff --git a/website/src/pages/mr/resources/_meta.js b/website/src/pages/mr/resources/_meta.js
index aa8e2d0ec6a8..38c56cf56c43 100644
--- a/website/src/pages/mr/resources/_meta.js
+++ b/website/src/pages/mr/resources/_meta.js
@@ -7,5 +7,4 @@ export default {
   roles: titles.roles ?? '',
   'migration-guides': titles['migration-guides'] ?? '',
   'subgraph-studio-faq': '',
-  'claude-mcp': '',
 }
diff --git a/website/src/pages/mr/resources/claude-mcp.mdx b/website/src/pages/mr/resources/claude-mcp.mdx
deleted file mode 100644
index 44ed075cffda..000000000000
--- a/website/src/pages/mr/resources/claude-mcp.mdx
+++ /dev/null
@@ -1,122 +0,0 @@
----
-title: Claude MCP
----
-
-This guide walks you through configuring Claude Desktop to use The Graph ecosystem's [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) resources: Token API and Subgraph. These integrations allow you to interact with blockchain data through natural language conversations with Claude.
-
-## What You Can Do
-
-With these integrations, you can:
-
-- **Token API**: Access token and wallet information across multiple blockchains
-- **Subgraph**: Find relevant Subgraphs for specific keywords and contracts, explore Subgraph schemas, and execute GraphQL queries
-
-## Prerequisites
-
-- [Node.js](https://nodejs.org/en/download/) installed and available in your path
-- [Claude Desktop](https://claude.ai/download) installed
-- API keys:
-  - Token API key from [The Graph Market](https://thegraph.market/)
-  - Gateway API key from [Subgraph Studio](https://thegraph.com/studio/apikeys/)
-
-## Configuration Steps
-
-### 1. Open Configuration File
-
-Navigate to your `claude_desktop_config.json` file:
-
-> **Claude Desktop** > **Settings** > **Developer** > **Edit Config**
-
-Paths by operating system:
-
-- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
-- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
-- Linux: `.config/Claude/claude_desktop_config.json`
-
-### 2. Add Configuration
-
-Replace the contents of the existing config file with:
-
-```json
-{
-  "mcpServers": {
-    "token-api": {
-      "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
-      "env": {
-        "ACCESS_TOKEN": "ACCESS_TOKEN"
-      }
-    },
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-### 3. Add Your API Keys
-
-Replace:
-
-- `ACCESS_TOKEN` with your Token API key from [The Graph Market](https://thegraph.market/)
-- `GATEWAY_API_KEY` with your Gateway API key from [Subgraph Studio](https://thegraph.com/studio/apikeys/)
-
-### 4. Save and Restart
-
-- Save the configuration file
-- Restart Claude Desktop
-
-### 5. Add The Graph Resources in Claude
-
-After configuration:
-
-1. Start a new conversation in Claude Desktop
-2. Click on the context menu (top right)
-3. Add "Subgraph Server Instructions" as a resource by entering `graphql://subgraph` for Subgraph MCP
-
-> **Important**: You must manually add The Graph resources to your chat context for each conversation where you want to use them.
-
-### 6. Run Queries
-
-Here are some example queries you can try after setting up the resources:
-
-### Subgraph Queries
-
-```
-What are the top pools in Uniswap?
-```
-
-```
-Who are the top Delegators of The Graph Protocol?
-```
-
-```
-Please make a bar chart for the number of active loans in Compound for the last 7 days
-```
-
-### Token API Queries
-
-```
-Show me the current price of ETH
-```
-
-```
-What are the top tokens by market cap on Ethereum?
-```
-
-```
-Analyze this wallet address: 0x...
-```
-
-## Troubleshooting
-
-If you encounter issues:
-
-1. **Verify Node.js Installation**: Ensure Node.js is correctly installed by running `node -v` in your terminal
-2. **Check API Keys**: Verify that your API keys are correctly entered in the configuration file
-3. **Enable Verbose Logging**: Add `--verbose true` to the args array in your configuration to see detailed logs
-4. **Restart Claude Desktop**: After making changes to the configuration, always restart Claude Desktop
diff --git a/website/src/pages/mr/subgraphs/_meta.js b/website/src/pages/mr/subgraphs/_meta.js
index 4365293ffc72..45841d5f3355 100644
--- a/website/src/pages/mr/subgraphs/_meta.js
+++ b/website/src/pages/mr/subgraphs/_meta.js
@@ -6,7 +6,6 @@ export default {
   querying: titles.querying ?? '',
   developing: titles.developing ?? '',
   billing: '',
-  mcp: titles.mcp ?? '',
   guides: titles.guides,
   'best-practices': titles['best-practices'],
   'fair-use-policy': '',
diff --git a/website/src/pages/mr/subgraphs/mcp/_meta.js b/website/src/pages/mr/subgraphs/mcp/_meta.js
deleted file mode 100644
index 8630d4da27b3..000000000000
--- a/website/src/pages/mr/subgraphs/mcp/_meta.js
+++ /dev/null
@@ -1,5 +0,0 @@
-export default {
-  claude: '',
-  cline: '',
-  cursor: '',
-}
diff --git a/website/src/pages/mr/subgraphs/mcp/claude.mdx b/website/src/pages/mr/subgraphs/mcp/claude.mdx
deleted file mode 100644
index 027b272cb942..000000000000
--- a/website/src/pages/mr/subgraphs/mcp/claude.mdx
+++ /dev/null
@@ -1,179 +0,0 @@
----
-title: Claude Desktop
----
-
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Claude to interact directly with Subgraphs on The Graph Network. This integration allows you to find relevant Subgraphs for specific keywords and contracts, explore Subgraph schemas, and execute GraphQL queries—all through natural language conversations with Claude.
-
-## What You Can Do
-
-The Subgraph MCP integration enables you to:
-
-- Access the GraphQL schema for any Subgraph on The Graph Network
-- Execute GraphQL queries against any Subgraph deployment
-- Find top Subgraph deployments for a given keyword or contract address
-- Get 30-day query volume for Subgraph deployments
-- Ask natural language questions about Subgraph data without writing GraphQL queries manually
-
-## Prerequisites
-
-- [Node.js](https://nodejs.org/en) installed and available in your path
-- [Claude Desktop](https://claude.ai/download) installed (latest version)
-- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
-
-## Installation Options
-
-### Option 1: Using npx (Recommended)
-
-#### Configuration Steps using npx
-
-#### 1. Open Configuration File
-
-Navigate to your `claude_desktop_config.json` file:
-
-> **Settings** > **Developer** > **Edit Config**
-
-- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
-- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
-- Linux: `.config/Claude/claude_desktop_config.json`
-
-#### 2. Add Configuration
-
-Paste the following settings into your config file:
-
-```json
-{
-  "mcpServers": {
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-#### 3. Add Your Gateway API Key
-
-Replace `GATEWAY_API_KEY` with your API key from [Subgraph Studio](https://thegraph.com/studio/).
-
-#### 4. Save and Restart
-
-Once you've entered your Gateway API key into your settings, save the file and restart Claude Desktop.
-
-### Option 2: Building from Source
-
-#### Requirements
-
-- Rust (latest stable version recommended: 1.75+)
-  ```bash
-  curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
-  ```
-  Follow the on-screen instructions. For other platforms, see the [official Rust installation guide](https://www.rust-lang.org/tools/install).
-
-#### Installation Steps
-
-1. **Clone and Build the Repository**
-
-   ```bash
-   git clone git@github.com:graphops/subgraph-mcp.git
-   cd subgraph-mcp
-   cargo build --release
-   ```
-
-2. **Find the Command Path**
-
-   After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory.
-   - Navigate to your `subgraph-mcp` directory in terminal
-   - Run `pwd` to get the full path
-   - Combine the output with `/target/release/subgraph-mcp`
-
-3. **Configure Claude Desktop**
-
-   Open your `claude_desktop_config.json` file as described above and add:
-
-   ```json
-   {
-     "mcpServers": {
-       "subgraph": {
-         "command": "/path/to/your/subgraph-mcp/target/release/subgraph-mcp",
-         "env": {
-           "GATEWAY_API_KEY": "your-api-key-here"
-         }
-       }
-     }
-   }
-   ```
-
-   Replace `/path/to/your/subgraph-mcp/target/release/subgraph-mcp` with the actual path to the compiled binary.
-
-## Using The Graph Resource in Claude
-
-After configuring Claude Desktop:
-
-1. Restart Claude Desktop
-2. Start a new conversation
-3. Click on the context menu (top right)
-4. Add "Subgraph Server Instructions" as a resource by adding `graphql://subgraph` to your chat context
-
-> **Important**: Claude Desktop may not automatically utilize the Subgraph MCP. You must manually add "Subgraph Server Instructions" resource to your chat context for each conversation where you want to use it.
-
-## Troubleshooting
-
-To enable logs for the MCP when using the npx option, add the `--verbose true` option to your args array.
-
-## Available Subgraph Tools and Usage
-
-The Subgraph MCP provides several tools for interacting with Subgraphs:
-
-### Schema Retrieval Tools
-
-- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
-- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
-- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
-
-### Query Execution Tools
-
-- **Execute query by deployment ID/IPFS hash**: Run GraphQL queries against specific, immutable deployments
-- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
-
-### Discovery Tools
-
-- **Search subgraphs by keyword**: Find subgraphs by keyword in their display names, ordered by signal
-- **Get deployment 30-day query counts**: Get aggregate query count over the last 30 days for multiple subgraph deployments
-- **Get top Subgraph deployments for a contract**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain, ordered by query fees
-
-## Key Identifier Types
-
-- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a subgraph. Use `execute_query_by_subgraph_id` or `get_schema_by_subgraph_id`.
-- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment. Use `execute_query_by_deployment_id` or `get_schema_by_deployment_id`.
-- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific, immutable deployment. Use `execute_query_by_deployment_id` (the gateway treats it like a deployment ID for querying) or `get_schema_by_ipfs_hash`.
-
-## Benefits of Natural Language Queries
-
-One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Claude will:
-
-1. Understand your goal (lookup, find Subgraphs, query, get schema)
-2. Find relevant deployments if needed
-3. Fetch and interpret the Subgraph schema
-4. Convert your question into an appropriate GraphQL query
-5. Execute the query and present the results in a readable format
-
-### Example Natural Language Queries
-
-```
-What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
-```
-
-```
-Which tokens have the highest market cap in this Subgraph?
-```
-
-```
-Show me the most recent 5 swaps for the USDC/ETH pair
-```
-
-```
-Find the top subgraphs for contract 0x1f98431c8ad98523631ae4a59f267346ea31f984 on arbitrum-one
-```
diff --git a/website/src/pages/mr/subgraphs/mcp/cline.mdx b/website/src/pages/mr/subgraphs/mcp/cline.mdx
deleted file mode 100644
index 156221d9a127..000000000000
--- a/website/src/pages/mr/subgraphs/mcp/cline.mdx
+++ /dev/null
@@ -1,99 +0,0 @@
----
-title: Cline
----
-
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Cline to interact directly with Subgraphs on The Graph Network. This integration allows you to explore Subgraph schemas, execute GraphQL queries, and find relevant Subgraphs for specific contracts—all through natural language conversations with Cline.
-
-## Prerequisites
-
-- [Cline](https://cline.bot/) installed (latest version)
-- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
-
-## Configuration Steps
-
-### 1. Open Configuration File
-
-Create or edit your `cline_mcp_settings.json` file.
-
-> **MCP Servers** > **Installed** > **Configure MCP Servers**
-
-### 2. Add Configuration
-
-```json
-{
-  "mcpServers": {
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-### 3. Add Your API Key
-
-Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
-
-## Using The Graph Resource in Cline
-
-After configuring Cline:
-
-1. Restart Cline
-2. Start a new conversation
-3. Enable the Subgraph MCP from the context menu
-4. Add "Subgraph Server Instructions" as a resource to your chat context
-
-## Available Tools and Usage
-
-The Subgraph MCP provides several tools for interacting with Subgraphs:
-
-### Schema Retrieval Tools
-
-- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
-- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
-- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
-
-### Query Execution Tools
-
-- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
-- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
-
-### Discovery Tools
-
-- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
-
-## Natural Language Queries
-
-One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cline will:
-
-1. Understand your goal (lookup, find Subgraphs, query, get schema)
-2. Find relevant deployments if needed
-3. Fetch and interpret the Subgraph schema
-4. Convert your question into an appropriate GraphQL query
-5. Execute the query and present the results in a readable format
-
-### Example Natural Language Queries
-
-```
-What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
-```
-
-```
-Which tokens have the highest market cap in this Subgraph?
-```
-
-```
-Show me the most recent 5 swaps for the USDC/ETH pair
-```
-
-## Key Identifier Types
-
-When working with Subgraphs, you'll encounter different types of identifiers:
-
-- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
-- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
-- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/mr/subgraphs/mcp/cursor.mdx b/website/src/pages/mr/subgraphs/mcp/cursor.mdx
deleted file mode 100644
index 298f43ece048..000000000000
--- a/website/src/pages/mr/subgraphs/mcp/cursor.mdx
+++ /dev/null
@@ -1,94 +0,0 @@
----
-title: Cursor
----
-
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Cursor to interact directly with Subgraphs on The Graph Network. This integration allows you to explore Subgraph schemas, execute GraphQL queries, and find relevant Subgraphs for specific contracts—all through natural language conversations with Cursor.
-
-## Prerequisites
-
-- [Cursor](https://www.cursor.com/) installed (latest version)
-- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
-
-## Configuration Steps
-
-### 1. Open Configuration File
-
-Create or edit your `~/.cursor/mcp.json` file.
-
-> **Cursor Settings** > **MCP** > **Add new global MCP Server**
-
-### 2. Add Configuration
-
-```json
-{
-  "mcpServers": {
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-### 3. Add Your API Key
-
-Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
-
-### 4. Restart Cursor
-
-Restart Cursor, and start a new chat.
-
-## Available Subgraph Tools and Usage
-
-The Subgraph MCP provides several tools for interacting with Subgraphs:
-
-### Schema Retrieval Tools
-
-- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
-- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
-- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
-
-### Query Execution Tools
-
-- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
-- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
-
-### Discovery Tools
-
-- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
-
-## Benefits of Natural Language Queries
-
-One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cursor will:
-
-1. Understand your goal (lookup, find Subgraphs, query, get schema)
-2. Find relevant deployments if needed
-3. Fetch and interpret the Subgraph schema
-4. Convert your question into an appropriate GraphQL query
-5. Execute the query and present the results in a readable format
-
-### Example Natural Language Queries
-
-```
-What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
-```
-
-```
-Which tokens have the highest market cap in this Subgraph?
-```
-
-```
-Show me the most recent 5 swaps for the USDC/ETH pair
-```
-
-## Key Identifier Types
-
-When working with Subgraphs, you'll encounter different types of identifiers:
-
-- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
-- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
-- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/mr/substreams/_meta.js b/website/src/pages/mr/substreams/_meta.js
index a8ee04618eae..658bb8c213c6 100644
--- a/website/src/pages/mr/substreams/_meta.js
+++ b/website/src/pages/mr/substreams/_meta.js
@@ -5,5 +5,4 @@ export default {
   introduction: '',
   developing: titles.developing ?? '',
   publishing: '',
-  sps: titles.sps ?? '',
 }
diff --git a/website/src/pages/mr/token-api/_meta-titles.json b/website/src/pages/mr/token-api/_meta-titles.json
index 7ed31e0af95d..3108ecd3ebfd 100644
--- a/website/src/pages/mr/token-api/_meta-titles.json
+++ b/website/src/pages/mr/token-api/_meta-titles.json
@@ -1,6 +1,7 @@
 {
   "mcp": "MCP",
   "evm": "EVM Endpoints",
+  "svm": "SVM Endpoints",
   "monitoring": "Monitoring Endpoints",
   "faq": "FAQ"
 }
diff --git a/website/src/pages/mr/token-api/_meta.js b/website/src/pages/mr/token-api/_meta.js
index f67576d7f612..fb7f7334ea0c 100644
--- a/website/src/pages/mr/token-api/_meta.js
+++ b/website/src/pages/mr/token-api/_meta.js
@@ -2,8 +2,8 @@ import titles from './_meta-titles.json'
 
 export default {
   'quick-start': '',
-  mcp: titles.mcp ?? '',
   evm: titles.evm ?? '',
+  svm: titles.svm ?? '',
   monitoring: titles.monitoring ?? '',
   faq: '',
 }
diff --git a/website/src/pages/mr/token-api/mcp/_meta.js b/website/src/pages/mr/token-api/mcp/_meta.js
deleted file mode 100644
index 8630d4da27b3..000000000000
--- a/website/src/pages/mr/token-api/mcp/_meta.js
+++ /dev/null
@@ -1,5 +0,0 @@
-export default {
-  claude: '',
-  cline: '',
-  cursor: '',
-}
diff --git a/website/src/pages/mr/token-api/mcp/claude.mdx b/website/src/pages/mr/token-api/mcp/claude.mdx
deleted file mode 100644
index fc064a528787..000000000000
--- a/website/src/pages/mr/token-api/mcp/claude.mdx
+++ /dev/null
@@ -1,58 +0,0 @@
----
-title: Using Claude Desktop to Access the Token API via MCP
-sidebarTitle: Claude Desktop
----
-
-## Prerequisites
-
-- [Claude Desktop](https://claude.ai/download) installed.
-- A [JWT token](/token-api/quick-start) from [The Graph Market](https://thegraph.market/).
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path.
-- The `@pinax/mcp` package requires Node 18+, as it relies on built-in `fetch()` / `Headers`, which are not available in Node 17 or older. You may need to specify an exact path to an up-to-date Node version, or uninstall previous versions of Node to ensure `@pinax/mcp` uses the correct version.
-
-![Screenshot of Claude Desktop's settings panel showing the MCP server configuration option.](/img/claude-preview-token-api.png)
-
-## कॉन्फिगरेशन
-
-Create or edit your `claude_desktop_config.json` file.
-
-> **Settings** > **Developer** > **Edit Config**
-
-- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
-- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
-- Linux: `.config/Claude/claude_desktop_config.json`
-
-```json label="claude_desktop_config.json"
-{
-  "mcpServers": {
-    "token-api": {
-      "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
-      "env": {
-        "ACCESS_TOKEN": "<https://thegraph.market JWT Access Token>"
-      }
-    }
-  }
-}
-```
-
-## Troubleshooting
-
-To enable logs for the MCP, use the `--verbose true` option.
-
-### ENOENT
-
-![Error dialog in Claude Desktop showing 'ENOENT' system error, indicating the npx/bunx command wasn't found in the system path.](/img/claude-ENOENT.png)
-
-Try to use the full path of the command instead:
-
-- Run `which npx` or `which bunx` to get the path of the command.
-- Replace `npx` or `bunx` in the configuration file with the full path (e.g. `/home/user/bin/bunx`).
-
-### Server disconnected
-
-![Connection error notification in Claude Desktop displaying 'Server disconnected' message.](/img/claude-server-disconnect.png)
-
-Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
-
-> You can always have a look at the full logs under `Claude/logs/mcp.log` and `Claude/logs/mcp-server-pinax.log` for more details.
diff --git a/website/src/pages/mr/token-api/mcp/cline.mdx b/website/src/pages/mr/token-api/mcp/cline.mdx
deleted file mode 100644
index 730efa8a99de..000000000000
--- a/website/src/pages/mr/token-api/mcp/cline.mdx
+++ /dev/null
@@ -1,52 +0,0 @@
----
-title: Using Cline to Access the Token API via MCP
-sidebarTitle: Cline
----
-
-## Prerequisites
-
-- [Cline](https://cline.bot/) installed.
-- A [JWT token](/token-api/quick-start) from [The Graph Market](https://thegraph.market/).
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path.
-- The `@pinax/mcp` package requires Node 18+, as it relies on built-in `fetch()` / `Headers`, which are not available in Node 17 or older. You may need to specify an exact path to an up-to-date Node version, or uninstall previous versions of Node to ensure `@pinax/mcp` uses the correct version.
-
-![Screenshot of Cline's MCP server configuration interface displaying the JSON settings file with mcp-pinax server details visible.](/img/cline-preview-token-api.png)
-
-## कॉन्फिगरेशन
-
-Create or edit your `cline_mcp_settings.json` file.
-
-> **MCP Servers** > **Installed** > **Configure MCP Servers**
-
-```json label="cline_mcp_settings.json"
-{
-  "mcpServers": {
-    "mcp-pinax": {
-      "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
-      "env": {
-        "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
-      }
-    }
-  }
-}
-```
-
-## Troubleshooting
-
-To enable logs for the MCP, use the `--verbose true` option.
-
-### ENOENT
-
-![Cline error dialog showing 'ENOENT' system alert.](/img/cline-error.png)
-
-Try to use the full path of the command instead:
-
-- Run `which npx` or `which bunx` to get the path of the command.
-- Replace `npx` or `bunx` in the configuration file with the full path (e.g. `/home/user/bin/bunx`).
-
-### Server disconnected
-
-![Cline connection error notification displaying server disconnection warning.](/img/cline-missing-variables.png)
-
-Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/mr/token-api/mcp/cursor.mdx b/website/src/pages/mr/token-api/mcp/cursor.mdx
deleted file mode 100644
index 2b9b400d3e13..000000000000
--- a/website/src/pages/mr/token-api/mcp/cursor.mdx
+++ /dev/null
@@ -1,50 +0,0 @@
----
-title: Using Cursor to Access the Token API via MCP
-sidebarTitle: Cursor
----
-
-## Prerequisites
-
-- [Cursor](https://www.cursor.com/) installed.
-- A [JWT token](/token-api/quick-start) from [The Graph Market](https://thegraph.market/).
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path.
-- The `@pinax/mcp` package requires Node 18+, as it relies on built-in `fetch()` / `Headers`, which are not available in Node 17 or older. You may need to specify an exact path to an up-to-date Node version, or uninstall previous versions of Node to ensure `@pinax/mcp` uses the correct version.
-
-![Screenshot of Cursor's MCP configuration panel.](/img/cursor-preview-token-api.png)
-
-## कॉन्फिगरेशन
-
-Create or edit your `~/.cursor/mcp.json` file.
-
-> **Cursor Settings** > **MCP** > **Add new global MCP Server**
-
-```json label="mcp.json"
-{
-  "mcpServers": {
-    "mcp-pinax": {
-      "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
-      "env": {
-        "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
-      }
-    }
-  }
-}
-```
-
-## Troubleshooting
-
-![Cursor IDE error notification that reads, "Failed to create client"](/img/cursor-error.png)
-
-To enable logs for the MCP, use the `--verbose true` option.
-
-### ENOENT
-
-Try to use the full path of the command instead:
-
-- Run `which npx` or `which bunx` to get the path of the command.
-- Replace `npx` or `bunx` in the configuration file with the full path (e.g. `/home/user/bin/bunx`).
-
-### Server disconnected
-
-Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/mr/token-api/svm/_meta.js b/website/src/pages/mr/token-api/svm/_meta.js
new file mode 100644
index 000000000000..1a48b82fcbf1
--- /dev/null
+++ b/website/src/pages/mr/token-api/svm/_meta.js
@@ -0,0 +1,5 @@
+export default {
+  'get-balances-svm': '',
+  'get-transfers-svm': '',
+  'get-swaps-svm': '',
+}
diff --git a/website/src/pages/mr/token-api/svm/get-balances-svm.mdx b/website/src/pages/mr/token-api/svm/get-balances-svm.mdx
new file mode 100644
index 000000000000..c2946c190bf9
--- /dev/null
+++ b/website/src/pages/mr/token-api/svm/get-balances-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Balances
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getBalancesSvm
+---
+
+Provides Solana tokens balances by token account address.
diff --git a/website/src/pages/mr/token-api/svm/get-swaps-svm.mdx b/website/src/pages/mr/token-api/svm/get-swaps-svm.mdx
new file mode 100644
index 000000000000..95282a38ac9f
--- /dev/null
+++ b/website/src/pages/mr/token-api/svm/get-swaps-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Swap Events
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getSwapsSvm
+---
+
+Provides Raydium swap events.
diff --git a/website/src/pages/mr/token-api/svm/get-transfers-svm.mdx b/website/src/pages/mr/token-api/svm/get-transfers-svm.mdx
new file mode 100644
index 000000000000..5335cdddf418
--- /dev/null
+++ b/website/src/pages/mr/token-api/svm/get-transfers-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Transfers Events
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getTransfersSvm
+---
+
+Provides SVM transfer events.
diff --git a/website/src/pages/nl/ai-suite/_meta-titles.json b/website/src/pages/nl/ai-suite/_meta-titles.json
new file mode 100644
index 000000000000..5eb482a7092b
--- /dev/null
+++ b/website/src/pages/nl/ai-suite/_meta-titles.json
@@ -0,0 +1,6 @@
+{
+  "graph-assistant": "Graph Assistant",
+  "ai-introduction": "The Graph's AI",
+  "subgraph-mcp": "Subgraph MCP",
+  "token-api-mcp": "Token API MCP"
+}
diff --git a/website/src/pages/nl/ai-suite/_meta.js b/website/src/pages/nl/ai-suite/_meta.js
new file mode 100644
index 000000000000..c9e51dfd35fb
--- /dev/null
+++ b/website/src/pages/nl/ai-suite/_meta.js
@@ -0,0 +1,8 @@
+import titles from './_meta-titles.json'
+
+export default {
+  'ai-introduction': titles['ai-introduction'],
+  'graph-assistant': titles['graph-assistant'],
+  'subgraph-mcp': titles['subgraph-mcp'],
+  'token-api-mcp': titles['token-api-mcp'],
+}
diff --git a/website/src/pages/nl/ai-suite/ai-introduction.mdx b/website/src/pages/nl/ai-suite/ai-introduction.mdx
new file mode 100644
index 000000000000..d25cc9f77358
--- /dev/null
+++ b/website/src/pages/nl/ai-suite/ai-introduction.mdx
@@ -0,0 +1,58 @@
+---
+title: The Graph's AI
+---
+
+Build with speed and scale faster with The Graph's AI.
+
+## Using AI on The Graph
+
+Instead of relying on static datasets or centralized APIs, you can now access live blockchain data through our **agentic** app, [Graph Assistant](/ai-suite/graph-assistant/introduction/), and use our AI-native tooling, [Subgraph MCP](/ai-suite/subgraph-mcp/introduction/), and [Token API MCP](/ai-suite/token-api-mcp/introduction/).
+
+### Why Use Onchain Data with AI?
+
+Using onchain data with AI unlocks powerful new ways to interact with and understand blockchain ecosystems.
+
+- **AI for Non-Technical End Users**: AI can turn complex onchain data into accessible insights. Assistants powered by AI enable you to explore and analyze blockchain data without coding.
+- **AI for Developers**: You can use AI to interact directly with The Graph's data through your agents or build AI-powered applications on top of it. This streamlines development and opens up more intuitive, dynamic use cases.
+
+## AI for Non-Technical/End Users
+
+[Graph Assistant](/ai-suite/graph-assistant/introduction/) is a powerful **agentic** application that empowers users to easily interact with blockchain data. Ask questions in simple, natural language and get rich, AI powered insights. Both technical developers and non-technical product teams can move faster, make smarter decisions, and gain a clearer understanding than ever before.
+
+### Benefits of Using Graph Assistant
+
+- **Natural language Input**: You don't need to write complex queries or sift through dashboards. Simply ask your question in plain English and get clear, structured results.
+- **Multi-source support**: Works across multiple Subgraphs and Token API. The Assistant automatically determines which data source to use, so you don't have to switch tools or manage endpoints.
+- **Schema-free access**: You don't need to understand the schema. You can refer to tokens, protocols, dates, or addresses using natural language. The Assistant takes care of the rest.
+
+### Conversational Querying with Graph Assistant
+
+**Example queries:**
+
+- "List the top-5 swaps by USD value in the last 24 hours."
+- "Give me the daily volume on Uniswap."
+- "List the 20 most recently registered .eth names."
+
+[Graph Assistant](/ai-suite/graph-assistant/introduction/) will eventually be a one-stop shop for interacting with The Graph. Right now, it's an agentic AI app that uses state-of-the-art AI techniques, LLMs, and MCPs to understand and answer your questions about [Subgraphs](/subgraphs/developing/subgraphs/) and [Token API](/token-api/quick-start/) data.
+
+## AI for Developers
+
+### Enable Natural Language Access to Onchain Data
+
+[Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) servers connect to Claude, Cline, and Cursor. They enable models to understand, query, and interact with structured onchain data using natural language. MCPs remove the need to write low-level queries or interact with APIs directly.
+
+### Subgraph MCP
+
+The [Subgraph MCP](/ai-suite/subgraph-mcp/introduction/) server connects models to Subgraphs on The Graph Network. It allows language models to explore Subgraph schemas, execute GraphQL queries, find relevant Subgraphs by keyword or contract, and surface usage metrics using natural language.
+
+### Token API MCP
+
+The [Token API MCP](/ai-suite/token-api-mcp/introduction/) MCP server enables models to access onchain token data. It supports querying token metadata, wallet balances, transfer history, and top token holders through simple prompts.
+
+#### Benefits of Using Subgraph and Token API MCPs
+
+- Query Subgraphs and token data using natural language
+- Access GraphQL schemas and token metadata without manual queries
+- Find Subgraphs by keyword or contract and check 30-day usage
+- Retrieve real-time data from The Graph and onchain token sources
+- Get wallet balances, transfer history, and top token holders
diff --git a/website/src/pages/nl/ai-suite/graph-assistant/_meta.js b/website/src/pages/nl/ai-suite/graph-assistant/_meta.js
new file mode 100644
index 000000000000..74da5e0686a7
--- /dev/null
+++ b/website/src/pages/nl/ai-suite/graph-assistant/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  'quick-start': '',
+  introduction: '',
+  'how-to-guide': '',
+  faq: '',
+}
diff --git a/website/src/pages/nl/ai-suite/graph-assistant/faq.mdx b/website/src/pages/nl/ai-suite/graph-assistant/faq.mdx
new file mode 100644
index 000000000000..8addf9935524
--- /dev/null
+++ b/website/src/pages/nl/ai-suite/graph-assistant/faq.mdx
@@ -0,0 +1,26 @@
+---
+title: Graph Assistant FAQ
+sidebarTitle: 'FAQ'
+---
+
+This page summarizes some of the most common questions for developers using Graph Assistant.
+
+1. What is The Graph Assistant?
+
+The Graph Assistant is an AI-powered chat interface that lets you query blockchain data in plain English. Under the hood, it translates your questions into GraphQL calls against Subgraphs and the Token API, then returns results, no coding required.
+
+2. What is an agentic application?
+
+An agentic application combines AI-driven reasoning with external data sources or APIs to take autonomous actions on your behalf. In this case, Graph Assistant acts as an “agent” that interprets your natural-language prompts, builds and dispatches GraphQL queries, and formats the results so that you don't need to write or manage queries yourself.
+
+3. Which networks and data does Graph Assistant support?
+
+The Assistant has access to Subgraphs across multiple chains. If a Subgraph is published to The Graph Network and is being indexed, the Assistant can automatically route queries to it. The Assistant also has access to the Token API on Ethereum Mainnet, BSC, Unichain, Arbitrum-One, Optimism, and Polygon.
+
+4. Is there a usage limit or quota?
+
+Yes, 10 questions per hour.
+
+5. What if the Assistant can't interpret my question?
+
+When the Assistant fails to parse your intent (for example, ambiguous token name, missing context, or an unsupported request), it will prompt you for clarification. For instance, it might ask, “Did you mean XYZ on Ethereum or XYZ on Arbitrum?” or “Please specify a date range for this query.” If you continue to see parsing errors, check that you're using correct token symbols or specifying networks and time frames clearly.
diff --git a/website/src/pages/nl/ai-suite/graph-assistant/how-to-guide.mdx b/website/src/pages/nl/ai-suite/graph-assistant/how-to-guide.mdx
new file mode 100644
index 000000000000..463130894ad8
--- /dev/null
+++ b/website/src/pages/nl/ai-suite/graph-assistant/how-to-guide.mdx
@@ -0,0 +1,56 @@
+---
+title: How To Use The Graph Assistant
+sidebarTitle: 'How-to Guide'
+---
+
+## Overview
+
+You type a natural language question into the chat interface, such as:
+
+```yaml
+'On Uniswap, return the top-10 pools by total value locked in USD.'
+```
+
+> [!IMPORTANT] All users can process 10 free queries per user per hour.
+
+> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the underlying agents. Do not share sensitive, personal, or private information.
+
+### Behind the Scenes
+
+The Assistant:
+
+1. Interprets your intent
+2. Maps it to the correct Subgraphs or Token API endpoint
+3. Executes optimized queries
+4. Returns clean, structured results
+
+You don't need to write queries or understand a Subgraph's schema, you simply ask.
+
+### Example Use Cases
+
+**Protocol Analytics**
+
+- “Compare daily active users on Aave vs. Compound in May 2025.”
+- “Show me the total value locked (TVL) for XYZDAO over the last quarter.”
+
+**Token Insights**
+
+- “What are the top 10 tokens by market cap on Ethereum right now?”
+- “How many XYZ did I receive between May 1 and May 15?”
+
+**Historical Data Retrieval**
+
+- “Fetch the token price history of XYZ for the last six months.”
+- “What was the average gas price on Ethereum during April?”
+
+**Portfolio Monitoring**
+
+- “List my wallet’s current token balances and their USD equivalents.”
+- “Calculate profit/loss on XYZ since xyz date.”
+
+**Cross-Chain Comparison**
+
+- “Show me the 7-day trading volume of XYZ on Ethereum vs. Polygon.”
+- “How many XYZ swaps occurred on Arbitrum yesterday?”
+
+To get started follow the [quickstart](/ai-suite/graph-assistant/quick-start/) and explore its capabilities.
diff --git a/website/src/pages/nl/ai-suite/graph-assistant/introduction.mdx b/website/src/pages/nl/ai-suite/graph-assistant/introduction.mdx
new file mode 100644
index 000000000000..65fdf0f96028
--- /dev/null
+++ b/website/src/pages/nl/ai-suite/graph-assistant/introduction.mdx
@@ -0,0 +1,31 @@
+---
+title: Introduction
+---
+
+> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime.
+
+[Graph Assistant](https://thegraph.com/graph-assistant) (Beta) gives instant, code-free access to blockchain data, transforming natural language into precise, AI-powered queries without the need to code.
+
+## Overview
+
+[Graph Assistant](https://thegraph.com/graph-assistant) is an advanced, [agentic](/en/ai-suite/graph-assistant/faq/) easy-to-use chat interface for querying blockchain data using natural language. Unlike a basic chatbot, Graph Assistant can understand your intent, build complex queries, and execute them automatically. This gives you rich, AI-powered insights from onchain data without writing any code.
+
+- **Automatically** interprets user intent, generates precise queries, executes them via The Graph's Subgraphs and Token API, and presents structured, AI-powered answers without requiring any code.
+- **Removes** the technical complexity found in traditional dashboards or chatbots. It provides composable insights directly from indexed Subgraphs and Token datasets.
+
+## Core Features
+
+| Feature | Description |
+| --- | --- |
+| **Friendly Interface** | Conversational access to blockchain data via natural language. You simply ask questions, the Assistant fetches the answer, and renders results. |
+| **Backed by Subgraphs** | Uses subgraphs to index protocol-specific data like transactions, events, and protocol metrics. |
+| **Backed by Token API** | Uses Token API for token-level information like balances, transfers, and metadata. |
+| **No Setup Required** | No need to configure data sources or write queries. |
+| **Automatic Query Building** | The Assistant performs complex queries such as fetching historical token volumes, protocol analytics, or cross-chain data and handles filtering, pagination, and joins across Subgraphs automatically. |
+
+## Help Shape What's Next
+
+This is in **beta**, and community input is essential. If you have ideas, questions, or run into anything unexpected, we'd love to hear from you:
+
+- Join the community on [Discord](https://discord.com/invite/graphprotocol): Provide feedback and stay in the loop with other builders. You'll be able to join the `#graph-assistant` channel to share your experience directly.
+- Interested in going deeper? Reach out to become a dedicated beta tester so your specific use case can be better supported.
diff --git a/website/src/pages/nl/ai-suite/graph-assistant/quick-start.mdx b/website/src/pages/nl/ai-suite/graph-assistant/quick-start.mdx
new file mode 100644
index 000000000000..13f8478b8d2b
--- /dev/null
+++ b/website/src/pages/nl/ai-suite/graph-assistant/quick-start.mdx
@@ -0,0 +1,44 @@
+---
+title: Quick Start
+---
+
+> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime.
+
+This guide provides step-by-step instructions for getting started with Graph Assistant quickly.
+
+## Step-by Step
+
+### Step 1. Create an Account
+
+Go to: [Graph Assistant](https://thegraph.com/graph-assistant)
+
+- Click Sign Up (or Log In if you already have an account).
+- Use your Google, GitHub, X, email or wallet credentials to log in.
+- No additional setup is required.
+
+### Step 2. Open the Assistant Chat
+
+After logging in:
+
+- You'll see Graph Assistant's interface.
+- At the bottom of the page, you will find a chat input bar. This is where you will interact with the Assistant.
+
+### Step 3: Ask Your First Question
+
+> [!IMPORTANT] All users can process 10 free queries per user per hour.
+
+In the input bar, type a natural-language query (everyday language).
+
+Example:
+
+```yaml
+Show me the 24-hour trading volume of XYZ token on Ethereum
+```
+
+> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the AI interface. Do not share sensitive, personal, or private information.
+
+The Assistant will:
+
+- Digest your question
+- Fetch onchain data using Subgraphs or the Token API
+- Return a clean, formatted response with the data you need
diff --git a/website/src/pages/nl/ai-suite/subgraph-mcp/_meta.js b/website/src/pages/nl/ai-suite/subgraph-mcp/_meta.js
new file mode 100644
index 000000000000..6f527b4e53e4
--- /dev/null
+++ b/website/src/pages/nl/ai-suite/subgraph-mcp/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  introduction: '',
+  claude: '',
+  cline: '',
+  cursor: '',
+}
diff --git a/website/src/pages/nl/ai-suite/subgraph-mcp/claude.mdx b/website/src/pages/nl/ai-suite/subgraph-mcp/claude.mdx
new file mode 100644
index 000000000000..ff3caa4e3e7f
--- /dev/null
+++ b/website/src/pages/nl/ai-suite/subgraph-mcp/claude.mdx
@@ -0,0 +1,169 @@
+---
+title: Claude Desktop
+---
+
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data via natural language conversations with Claude.
+
+## Prerequisites
+
+- [Node.js](https://nodejs.org/en) installed and available in your path
+- [Claude Desktop](https://claude.ai/download) installed (latest version)
+- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
+
+## Installation Options
+
+### Option 1: Using npx (Recommended)
+
+#### Configuration Steps using npx
+
+#### 1. Open Configuration File
+
+Navigate to your `claude_desktop_config.json` file:
+
+> **Settings** > **Developer** > **Edit Config**
+
+- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
+- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
+- Linux: `.config/Claude/claude_desktop_config.json`
+
+#### 2. Add Configuration
+
+Paste the following settings into your config file:
+
+```json
+{
+  "mcpServers": {
+    "subgraph": {
+      "command": "npx",
+      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
+      "env": {
+        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
+      }
+    }
+  }
+}
+```
+
+#### 3. Add Your Gateway API Key
+
+Replace `GATEWAY_API_KEY` with your API key from [Subgraph Studio](https://thegraph.com/studio/).
+
+#### 4. Save and Restart
+
+Once you've entered your Gateway API key into your settings, save the file and restart Claude Desktop.
+
+### Option 2: Building from Source
+
+#### Requirements
+
+- Rust (latest stable version recommended: 1.75+)
+  ```bash
+  curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
+  ```
+  Follow the on-screen instructions. For other platforms, see the [official Rust installation guide](https://www.rust-lang.org/tools/install).
+
+#### Installation Steps
+
+1. **Clone and Build the Repository**
+
+   ```bash
+   git clone git@github.com:graphops/subgraph-mcp.git
+   cd subgraph-mcp
+   cargo build --release
+   ```
+
+2. **Find the Command Path**
+
+   After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory.
+   - Navigate to your `subgraph-mcp` directory in terminal
+   - Run `pwd` to get the full path
+   - Combine the output with `/target/release/subgraph-mcp`
+
+3. **Configure Claude Desktop**
+
+   Open your `claude_desktop_config.json` file as described above and add:
+
+   ```json
+   {
+     "mcpServers": {
+       "subgraph": {
+         "command": "/path/to/your/subgraph-mcp/target/release/subgraph-mcp",
+         "env": {
+           "GATEWAY_API_KEY": "your-api-key-here"
+         }
+       }
+     }
+   }
+   ```
+
+   Replace `/path/to/your/subgraph-mcp/target/release/subgraph-mcp` with the actual path to the compiled binary.
+
+## Using The Graph Resource in Claude
+
+After configuring Claude Desktop:
+
+1. Restart Claude Desktop
+2. Start a new conversation
+3. Click on the context menu (top right)
+4. Add "Subgraph Server Instructions" as a resource by adding `graphql://subgraph` to your chat context
+
+> **Important**: Claude Desktop may not automatically utilize the Subgraph MCP. You must manually add "Subgraph Server Instructions" resource to your chat context for each conversation where you want to use it.
+
+## Troubleshooting
+
+To enable logs for the MCP when using the npx option, add the `--verbose true` option to your args array.
+
+## Available Subgraph Tools and Usage
+
+The Subgraph MCP provides several tools for interacting with Subgraphs:
+
+### Schema Retrieval Tools
+
+- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
+- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
+- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
+
+### Query Execution Tools
+
+- **Execute query by deployment ID/IPFS hash**: Run GraphQL queries against specific, immutable deployments
+- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
+
+### Discovery Tools
+
+- **Search subgraphs by keyword**: Find subgraphs by keyword in their display names, ordered by signal
+- **Get deployment 30-day query counts**: Get aggregate query count over the last 30 days for multiple subgraph deployments
+- **Get top Subgraph deployments for a contract**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain, ordered by query fees
+
+## Key Identifier Types
+
+- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a subgraph. Use `execute_query_by_subgraph_id` or `get_schema_by_subgraph_id`.
+- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment. Use `execute_query_by_deployment_id` or `get_schema_by_deployment_id`.
+- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific, immutable deployment. Use `execute_query_by_deployment_id` (the gateway treats it like a deployment ID for querying) or `get_schema_by_ipfs_hash`.
+
+## Benefits of Natural Language Queries
+
+One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Claude will:
+
+1. Understand your goal (lookup, find Subgraphs, query, get schema)
+2. Find relevant deployments if needed
+3. Fetch and interpret the Subgraph schema
+4. Convert your question into an appropriate GraphQL query
+5. Execute the query and present the results in a readable format
+
+### Example Natural Language Queries
+
+```
+What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
+```
+
+```
+Which tokens have the highest market cap in this Subgraph?
+```
+
+```
+Show me the most recent 5 swaps for the USDC/ETH pair
+```
+
+```
+Find the top subgraphs for contract 0x1f98431c8ad98523631ae4a59f267346ea31f984 on arbitrum-one
+```
diff --git a/website/src/pages/nl/ai-suite/subgraph-mcp/cline.mdx b/website/src/pages/nl/ai-suite/subgraph-mcp/cline.mdx
new file mode 100644
index 000000000000..eb8044bfe991
--- /dev/null
+++ b/website/src/pages/nl/ai-suite/subgraph-mcp/cline.mdx
@@ -0,0 +1,99 @@
+---
+title: Cline
+---
+
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data through natural language conversations with Cline.
+
+## Prerequisites
+
+- [Cline](https://cline.bot/) installed (latest version)
+- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
+
+## Configuration Steps
+
+### 1. Open Configuration File
+
+Create or edit your `cline_mcp_settings.json` file.
+
+> **MCP Servers** > **Installed** > **Configure MCP Servers**
+
+### 2. Add Configuration
+
+```json
+{
+  "mcpServers": {
+    "subgraph": {
+      "command": "npx",
+      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
+      "env": {
+        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
+      }
+    }
+  }
+}
+```
+
+### 3. Add Your API Key
+
+Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
+
+## Using The Graph Resource in Cline
+
+After configuring Cline:
+
+1. Restart Cline
+2. Start a new conversation
+3. Enable the Subgraph MCP from the context menu
+4. Add "Subgraph Server Instructions" as a resource to your chat context
+
+## Available Tools and Usage
+
+The Subgraph MCP provides several tools for interacting with Subgraphs:
+
+### Schema Retrieval Tools
+
+- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
+- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
+- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
+
+### Query Execution Tools
+
+- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
+- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
+
+### Discovery Tools
+
+- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
+
+## Natural Language Queries
+
+One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cline will:
+
+1. Understand your goal (lookup, find Subgraphs, query, get schema)
+2. Find relevant deployments if needed
+3. Fetch and interpret the Subgraph schema
+4. Convert your question into an appropriate GraphQL query
+5. Execute the query and present the results in a readable format
+
+### Example Natural Language Queries
+
+```
+What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
+```
+
+```
+Which tokens have the highest market cap in this Subgraph?
+```
+
+```
+Show me the most recent 5 swaps for the USDC/ETH pair
+```
+
+## Key Identifier Types
+
+When working with Subgraphs, you'll encounter different types of identifiers:
+
+- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
+- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
+- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/nl/ai-suite/subgraph-mcp/cursor.mdx b/website/src/pages/nl/ai-suite/subgraph-mcp/cursor.mdx
new file mode 100644
index 000000000000..6291caf4b06b
--- /dev/null
+++ b/website/src/pages/nl/ai-suite/subgraph-mcp/cursor.mdx
@@ -0,0 +1,94 @@
+---
+title: Cursor
+---
+
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data through natural language conversations with Cline.
+
+## Prerequisites
+
+- [Cursor](https://www.cursor.com/) installed (latest version)
+- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
+
+## Configuration Steps
+
+### 1. Open Configuration File
+
+Create or edit your `~/.cursor/mcp.json` file.
+
+> **Cursor Settings** > **MCP** > **Add new global MCP Server**
+
+### 2. Add Configuration
+
+```json
+{
+  "mcpServers": {
+    "subgraph": {
+      "command": "npx",
+      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
+      "env": {
+        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
+      }
+    }
+  }
+}
+```
+
+### 3. Add Your API Key
+
+Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
+
+### 4. Restart Cursor
+
+Restart Cursor, and start a new chat.
+
+## Available Subgraph Tools and Usage
+
+The Subgraph MCP provides several tools for interacting with Subgraphs:
+
+### Schema Retrieval Tools
+
+- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
+- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
+- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
+
+### Query Execution Tools
+
+- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
+- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
+
+### Discovery Tools
+
+- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
+
+## Benefits of Natural Language Queries
+
+One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cursor will:
+
+1. Understand your goal (lookup, find Subgraphs, query, get schema)
+2. Find relevant deployments if needed
+3. Fetch and interpret the Subgraph schema
+4. Convert your question into an appropriate GraphQL query
+5. Execute the query and present the results in a readable format
+
+### Example Natural Language Queries
+
+```
+What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
+```
+
+```
+Which tokens have the highest market cap in this Subgraph?
+```
+
+```
+Show me the most recent 5 swaps for the USDC/ETH pair
+```
+
+## Key Identifier Types
+
+When working with Subgraphs, you'll encounter different types of identifiers:
+
+- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
+- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
+- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/nl/ai-suite/subgraph-mcp/introduction.mdx b/website/src/pages/nl/ai-suite/subgraph-mcp/introduction.mdx
new file mode 100644
index 000000000000..da1272cf9a36
--- /dev/null
+++ b/website/src/pages/nl/ai-suite/subgraph-mcp/introduction.mdx
@@ -0,0 +1,22 @@
+---
+title: Subgraph MCP Introduction
+sidebarTitle: 'Introduction'
+---
+
+Subgraph MCP server is an open-source implementation of [Anthropic's Model Context Protocol](https://modelcontextprotocol.io/introduction).
+
+It presents The Graph's Subgraph data through a set of MCP tools that any MCP-compatible client can call. With these tools, clients can search for relevant Subgraphs, inspect GraphQL schemas, and run queries against specific deployments on The Graph Network all within a single, standardized interface.
+
+The server itself does not hold a language model. Instead, it translates incoming MCP requests into Subgraph queries and returns the structured results, allowing the client's LLM to transform a natural-language prompt into actionable blockchain data.
+
+Think of it as a USB-C hub: it standardizes the plug-and-play connection between AI agents and The Graph's Subgraph ecosystem.
+
+## What You Can Do
+
+- Access GraphQL schemas for any Subgraph on The Graph Network
+- Run GraphQL queries on any Subgraph deployment
+- Discover top Subgraph deployments by keyword or contract address
+- Retrieve 30-day query volumes for Subgraph deployments
+- Ask questions about Subgraph data without writing GraphQL manually
+
+The Subgraph MCP server allows smooth integration with [Claude](/ai-suite/subgraph-mcp/claude/), [Cline](/ai-suite/subgraph-mcp/cline/), or [Cursor](/ai-suite/subgraph-mcp/cursor/), making blockchain data queries with The Graph Network a conversational experience.
diff --git a/website/src/pages/nl/ai-suite/token-api-mcp/_meta.js b/website/src/pages/nl/ai-suite/token-api-mcp/_meta.js
new file mode 100644
index 000000000000..6f527b4e53e4
--- /dev/null
+++ b/website/src/pages/nl/ai-suite/token-api-mcp/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  introduction: '',
+  claude: '',
+  cline: '',
+  cursor: '',
+}
diff --git a/website/src/pages/es/token-api/mcp/claude.mdx b/website/src/pages/nl/ai-suite/token-api-mcp/claude.mdx
similarity index 99%
rename from website/src/pages/es/token-api/mcp/claude.mdx
rename to website/src/pages/nl/ai-suite/token-api-mcp/claude.mdx
index 78a48fa92844..3e21f4d7e165 100644
--- a/website/src/pages/es/token-api/mcp/claude.mdx
+++ b/website/src/pages/nl/ai-suite/token-api-mcp/claude.mdx
@@ -12,7 +12,7 @@ sidebarTitle: Claude Desktop
 
 ![Screenshot of Claude Desktop's settings panel showing the MCP server configuration option.](/img/claude-preview-token-api.png)
 
-## Configuración
+## Configuration
 
 Create or edit your `claude_desktop_config.json` file.
 
diff --git a/website/src/pages/tr/token-api/mcp/cline.mdx b/website/src/pages/nl/ai-suite/token-api-mcp/cline.mdx
similarity index 99%
rename from website/src/pages/tr/token-api/mcp/cline.mdx
rename to website/src/pages/nl/ai-suite/token-api-mcp/cline.mdx
index b7dfca87fbdd..e885d21366cd 100644
--- a/website/src/pages/tr/token-api/mcp/cline.mdx
+++ b/website/src/pages/nl/ai-suite/token-api-mcp/cline.mdx
@@ -12,7 +12,7 @@ sidebarTitle: Cline
 
 ![Screenshot of Cline's MCP server configuration interface displaying the JSON settings file with mcp-pinax server details visible.](/img/cline-preview-token-api.png)
 
-## Yapılandırma
+## Configuration
 
 Create or edit your `cline_mcp_settings.json` file.
 
diff --git a/website/src/pages/es/token-api/mcp/cursor.mdx b/website/src/pages/nl/ai-suite/token-api-mcp/cursor.mdx
similarity index 98%
rename from website/src/pages/es/token-api/mcp/cursor.mdx
rename to website/src/pages/nl/ai-suite/token-api-mcp/cursor.mdx
index 34f990fac24d..68fe2fdb201c 100644
--- a/website/src/pages/es/token-api/mcp/cursor.mdx
+++ b/website/src/pages/nl/ai-suite/token-api-mcp/cursor.mdx
@@ -12,7 +12,7 @@ sidebarTitle: Cursor
 
 ![Screenshot of Cursor's MCP configuration panel.](/img/cursor-preview-token-api.png)
 
-## Configuración
+## Configuration
 
 Create or edit your `~/.cursor/mcp.json` file.
 
diff --git a/website/src/pages/nl/ai-suite/token-api-mcp/introduction.mdx b/website/src/pages/nl/ai-suite/token-api-mcp/introduction.mdx
new file mode 100644
index 000000000000..b61ad0a1c485
--- /dev/null
+++ b/website/src/pages/nl/ai-suite/token-api-mcp/introduction.mdx
@@ -0,0 +1,23 @@
+---
+title: Token API MCP Introduction
+sidebarTitle: 'Introduction'
+---
+
+Token API MCP server is an open-source implementation of [Anthropic's Model Context Protocol](https://modelcontextprotocol.io/introduction).
+
+This MCP server makes on-chain token data, including metadata, balances, transfers, and holder statistics, accessible through a set of MCP tools. Any compatible client can use these tools to fetch and analyze token information through a standardized interface. It connects to The Graph's hosted Token API database, enabling AI assistants to query real-time blockchain data using natural language requests that get translated into optimized SQL queries.
+
+The server itself does not host any language model. It simply converts MCP calls into data look-ups and returns structured results, letting the client's own LLM incorporate the results.
+
+Think of it as a USB-C hub: it standardizes the plug-and-play connection between AI agents and The Graph's Token API data.
+
+## What You Can Do
+
+- Retrieve token metadata including name, symbol, decimals, total supply, and contract address
+- Get token balances for any wallet address holding a supported ERC-20 token
+- Fetch token transfer activity including sender, receiver, amount, and timestamp
+- Identify top holders and analyze token distribution
+- Ask natural language questions about token data without writing smart contract calls
+- Access historical transfer data to analyze token movement over time
+
+The Token MCP server provides [Claude](/ai-suite/token-api-mcp/claude/), [Cline](/ai-suite/token-api-mcp/cline/), and [Cursor](/ai-suite/token-api-mcp/cursor/) with direct, conversational access to onchain token data.
diff --git a/website/src/pages/nl/resources/_meta.js b/website/src/pages/nl/resources/_meta.js
index aa8e2d0ec6a8..38c56cf56c43 100644
--- a/website/src/pages/nl/resources/_meta.js
+++ b/website/src/pages/nl/resources/_meta.js
@@ -7,5 +7,4 @@ export default {
   roles: titles.roles ?? '',
   'migration-guides': titles['migration-guides'] ?? '',
   'subgraph-studio-faq': '',
-  'claude-mcp': '',
 }
diff --git a/website/src/pages/nl/resources/claude-mcp.mdx b/website/src/pages/nl/resources/claude-mcp.mdx
deleted file mode 100644
index 44ed075cffda..000000000000
--- a/website/src/pages/nl/resources/claude-mcp.mdx
+++ /dev/null
@@ -1,122 +0,0 @@
----
-title: Claude MCP
----
-
-This guide walks you through configuring Claude Desktop to use The Graph ecosystem's [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) resources: Token API and Subgraph. These integrations allow you to interact with blockchain data through natural language conversations with Claude.
-
-## What You Can Do
-
-With these integrations, you can:
-
-- **Token API**: Access token and wallet information across multiple blockchains
-- **Subgraph**: Find relevant Subgraphs for specific keywords and contracts, explore Subgraph schemas, and execute GraphQL queries
-
-## Prerequisites
-
-- [Node.js](https://nodejs.org/en/download/) installed and available in your path
-- [Claude Desktop](https://claude.ai/download) installed
-- API keys:
-  - Token API key from [The Graph Market](https://thegraph.market/)
-  - Gateway API key from [Subgraph Studio](https://thegraph.com/studio/apikeys/)
-
-## Configuration Steps
-
-### 1. Open Configuration File
-
-Navigate to your `claude_desktop_config.json` file:
-
-> **Claude Desktop** > **Settings** > **Developer** > **Edit Config**
-
-Paths by operating system:
-
-- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
-- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
-- Linux: `.config/Claude/claude_desktop_config.json`
-
-### 2. Add Configuration
-
-Replace the contents of the existing config file with:
-
-```json
-{
-  "mcpServers": {
-    "token-api": {
-      "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
-      "env": {
-        "ACCESS_TOKEN": "ACCESS_TOKEN"
-      }
-    },
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-### 3. Add Your API Keys
-
-Replace:
-
-- `ACCESS_TOKEN` with your Token API key from [The Graph Market](https://thegraph.market/)
-- `GATEWAY_API_KEY` with your Gateway API key from [Subgraph Studio](https://thegraph.com/studio/apikeys/)
-
-### 4. Save and Restart
-
-- Save the configuration file
-- Restart Claude Desktop
-
-### 5. Add The Graph Resources in Claude
-
-After configuration:
-
-1. Start a new conversation in Claude Desktop
-2. Click on the context menu (top right)
-3. Add "Subgraph Server Instructions" as a resource by entering `graphql://subgraph` for Subgraph MCP
-
-> **Important**: You must manually add The Graph resources to your chat context for each conversation where you want to use them.
-
-### 6. Run Queries
-
-Here are some example queries you can try after setting up the resources:
-
-### Subgraph Queries
-
-```
-What are the top pools in Uniswap?
-```
-
-```
-Who are the top Delegators of The Graph Protocol?
-```
-
-```
-Please make a bar chart for the number of active loans in Compound for the last 7 days
-```
-
-### Token API Queries
-
-```
-Show me the current price of ETH
-```
-
-```
-What are the top tokens by market cap on Ethereum?
-```
-
-```
-Analyze this wallet address: 0x...
-```
-
-## Troubleshooting
-
-If you encounter issues:
-
-1. **Verify Node.js Installation**: Ensure Node.js is correctly installed by running `node -v` in your terminal
-2. **Check API Keys**: Verify that your API keys are correctly entered in the configuration file
-3. **Enable Verbose Logging**: Add `--verbose true` to the args array in your configuration to see detailed logs
-4. **Restart Claude Desktop**: After making changes to the configuration, always restart Claude Desktop
diff --git a/website/src/pages/nl/subgraphs/_meta.js b/website/src/pages/nl/subgraphs/_meta.js
index 4365293ffc72..45841d5f3355 100644
--- a/website/src/pages/nl/subgraphs/_meta.js
+++ b/website/src/pages/nl/subgraphs/_meta.js
@@ -6,7 +6,6 @@ export default {
   querying: titles.querying ?? '',
   developing: titles.developing ?? '',
   billing: '',
-  mcp: titles.mcp ?? '',
   guides: titles.guides,
   'best-practices': titles['best-practices'],
   'fair-use-policy': '',
diff --git a/website/src/pages/nl/subgraphs/mcp/_meta.js b/website/src/pages/nl/subgraphs/mcp/_meta.js
deleted file mode 100644
index 8630d4da27b3..000000000000
--- a/website/src/pages/nl/subgraphs/mcp/_meta.js
+++ /dev/null
@@ -1,5 +0,0 @@
-export default {
-  claude: '',
-  cline: '',
-  cursor: '',
-}
diff --git a/website/src/pages/nl/subgraphs/mcp/claude.mdx b/website/src/pages/nl/subgraphs/mcp/claude.mdx
deleted file mode 100644
index 027b272cb942..000000000000
--- a/website/src/pages/nl/subgraphs/mcp/claude.mdx
+++ /dev/null
@@ -1,179 +0,0 @@
----
-title: Claude Desktop
----
-
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Claude to interact directly with Subgraphs on The Graph Network. This integration allows you to find relevant Subgraphs for specific keywords and contracts, explore Subgraph schemas, and execute GraphQL queries—all through natural language conversations with Claude.
-
-## What You Can Do
-
-The Subgraph MCP integration enables you to:
-
-- Access the GraphQL schema for any Subgraph on The Graph Network
-- Execute GraphQL queries against any Subgraph deployment
-- Find top Subgraph deployments for a given keyword or contract address
-- Get 30-day query volume for Subgraph deployments
-- Ask natural language questions about Subgraph data without writing GraphQL queries manually
-
-## Prerequisites
-
-- [Node.js](https://nodejs.org/en) installed and available in your path
-- [Claude Desktop](https://claude.ai/download) installed (latest version)
-- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
-
-## Installation Options
-
-### Option 1: Using npx (Recommended)
-
-#### Configuration Steps using npx
-
-#### 1. Open Configuration File
-
-Navigate to your `claude_desktop_config.json` file:
-
-> **Settings** > **Developer** > **Edit Config**
-
-- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
-- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
-- Linux: `.config/Claude/claude_desktop_config.json`
-
-#### 2. Add Configuration
-
-Paste the following settings into your config file:
-
-```json
-{
-  "mcpServers": {
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-#### 3. Add Your Gateway API Key
-
-Replace `GATEWAY_API_KEY` with your API key from [Subgraph Studio](https://thegraph.com/studio/).
-
-#### 4. Save and Restart
-
-Once you've entered your Gateway API key into your settings, save the file and restart Claude Desktop.
-
-### Option 2: Building from Source
-
-#### Requirements
-
-- Rust (latest stable version recommended: 1.75+)
-  ```bash
-  curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
-  ```
-  Follow the on-screen instructions. For other platforms, see the [official Rust installation guide](https://www.rust-lang.org/tools/install).
-
-#### Installation Steps
-
-1. **Clone and Build the Repository**
-
-   ```bash
-   git clone git@github.com:graphops/subgraph-mcp.git
-   cd subgraph-mcp
-   cargo build --release
-   ```
-
-2. **Find the Command Path**
-
-   After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory.
-   - Navigate to your `subgraph-mcp` directory in terminal
-   - Run `pwd` to get the full path
-   - Combine the output with `/target/release/subgraph-mcp`
-
-3. **Configure Claude Desktop**
-
-   Open your `claude_desktop_config.json` file as described above and add:
-
-   ```json
-   {
-     "mcpServers": {
-       "subgraph": {
-         "command": "/path/to/your/subgraph-mcp/target/release/subgraph-mcp",
-         "env": {
-           "GATEWAY_API_KEY": "your-api-key-here"
-         }
-       }
-     }
-   }
-   ```
-
-   Replace `/path/to/your/subgraph-mcp/target/release/subgraph-mcp` with the actual path to the compiled binary.
-
-## Using The Graph Resource in Claude
-
-After configuring Claude Desktop:
-
-1. Restart Claude Desktop
-2. Start a new conversation
-3. Click on the context menu (top right)
-4. Add "Subgraph Server Instructions" as a resource by adding `graphql://subgraph` to your chat context
-
-> **Important**: Claude Desktop may not automatically utilize the Subgraph MCP. You must manually add "Subgraph Server Instructions" resource to your chat context for each conversation where you want to use it.
-
-## Troubleshooting
-
-To enable logs for the MCP when using the npx option, add the `--verbose true` option to your args array.
-
-## Available Subgraph Tools and Usage
-
-The Subgraph MCP provides several tools for interacting with Subgraphs:
-
-### Schema Retrieval Tools
-
-- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
-- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
-- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
-
-### Query Execution Tools
-
-- **Execute query by deployment ID/IPFS hash**: Run GraphQL queries against specific, immutable deployments
-- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
-
-### Discovery Tools
-
-- **Search subgraphs by keyword**: Find subgraphs by keyword in their display names, ordered by signal
-- **Get deployment 30-day query counts**: Get aggregate query count over the last 30 days for multiple subgraph deployments
-- **Get top Subgraph deployments for a contract**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain, ordered by query fees
-
-## Key Identifier Types
-
-- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a subgraph. Use `execute_query_by_subgraph_id` or `get_schema_by_subgraph_id`.
-- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment. Use `execute_query_by_deployment_id` or `get_schema_by_deployment_id`.
-- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific, immutable deployment. Use `execute_query_by_deployment_id` (the gateway treats it like a deployment ID for querying) or `get_schema_by_ipfs_hash`.
-
-## Benefits of Natural Language Queries
-
-One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Claude will:
-
-1. Understand your goal (lookup, find Subgraphs, query, get schema)
-2. Find relevant deployments if needed
-3. Fetch and interpret the Subgraph schema
-4. Convert your question into an appropriate GraphQL query
-5. Execute the query and present the results in a readable format
-
-### Example Natural Language Queries
-
-```
-What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
-```
-
-```
-Which tokens have the highest market cap in this Subgraph?
-```
-
-```
-Show me the most recent 5 swaps for the USDC/ETH pair
-```
-
-```
-Find the top subgraphs for contract 0x1f98431c8ad98523631ae4a59f267346ea31f984 on arbitrum-one
-```
diff --git a/website/src/pages/nl/subgraphs/mcp/cline.mdx b/website/src/pages/nl/subgraphs/mcp/cline.mdx
deleted file mode 100644
index 156221d9a127..000000000000
--- a/website/src/pages/nl/subgraphs/mcp/cline.mdx
+++ /dev/null
@@ -1,99 +0,0 @@
----
-title: Cline
----
-
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Cline to interact directly with Subgraphs on The Graph Network. This integration allows you to explore Subgraph schemas, execute GraphQL queries, and find relevant Subgraphs for specific contracts—all through natural language conversations with Cline.
-
-## Prerequisites
-
-- [Cline](https://cline.bot/) installed (latest version)
-- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
-
-## Configuration Steps
-
-### 1. Open Configuration File
-
-Create or edit your `cline_mcp_settings.json` file.
-
-> **MCP Servers** > **Installed** > **Configure MCP Servers**
-
-### 2. Add Configuration
-
-```json
-{
-  "mcpServers": {
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-### 3. Add Your API Key
-
-Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
-
-## Using The Graph Resource in Cline
-
-After configuring Cline:
-
-1. Restart Cline
-2. Start a new conversation
-3. Enable the Subgraph MCP from the context menu
-4. Add "Subgraph Server Instructions" as a resource to your chat context
-
-## Available Tools and Usage
-
-The Subgraph MCP provides several tools for interacting with Subgraphs:
-
-### Schema Retrieval Tools
-
-- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
-- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
-- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
-
-### Query Execution Tools
-
-- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
-- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
-
-### Discovery Tools
-
-- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
-
-## Natural Language Queries
-
-One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cline will:
-
-1. Understand your goal (lookup, find Subgraphs, query, get schema)
-2. Find relevant deployments if needed
-3. Fetch and interpret the Subgraph schema
-4. Convert your question into an appropriate GraphQL query
-5. Execute the query and present the results in a readable format
-
-### Example Natural Language Queries
-
-```
-What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
-```
-
-```
-Which tokens have the highest market cap in this Subgraph?
-```
-
-```
-Show me the most recent 5 swaps for the USDC/ETH pair
-```
-
-## Key Identifier Types
-
-When working with Subgraphs, you'll encounter different types of identifiers:
-
-- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
-- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
-- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/nl/subgraphs/mcp/cursor.mdx b/website/src/pages/nl/subgraphs/mcp/cursor.mdx
deleted file mode 100644
index 298f43ece048..000000000000
--- a/website/src/pages/nl/subgraphs/mcp/cursor.mdx
+++ /dev/null
@@ -1,94 +0,0 @@
----
-title: Cursor
----
-
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Cursor to interact directly with Subgraphs on The Graph Network. This integration allows you to explore Subgraph schemas, execute GraphQL queries, and find relevant Subgraphs for specific contracts—all through natural language conversations with Cursor.
-
-## Prerequisites
-
-- [Cursor](https://www.cursor.com/) installed (latest version)
-- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
-
-## Configuration Steps
-
-### 1. Open Configuration File
-
-Create or edit your `~/.cursor/mcp.json` file.
-
-> **Cursor Settings** > **MCP** > **Add new global MCP Server**
-
-### 2. Add Configuration
-
-```json
-{
-  "mcpServers": {
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-### 3. Add Your API Key
-
-Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
-
-### 4. Restart Cursor
-
-Restart Cursor, and start a new chat.
-
-## Available Subgraph Tools and Usage
-
-The Subgraph MCP provides several tools for interacting with Subgraphs:
-
-### Schema Retrieval Tools
-
-- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
-- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
-- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
-
-### Query Execution Tools
-
-- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
-- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
-
-### Discovery Tools
-
-- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
-
-## Benefits of Natural Language Queries
-
-One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cursor will:
-
-1. Understand your goal (lookup, find Subgraphs, query, get schema)
-2. Find relevant deployments if needed
-3. Fetch and interpret the Subgraph schema
-4. Convert your question into an appropriate GraphQL query
-5. Execute the query and present the results in a readable format
-
-### Example Natural Language Queries
-
-```
-What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
-```
-
-```
-Which tokens have the highest market cap in this Subgraph?
-```
-
-```
-Show me the most recent 5 swaps for the USDC/ETH pair
-```
-
-## Key Identifier Types
-
-When working with Subgraphs, you'll encounter different types of identifiers:
-
-- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
-- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
-- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/nl/substreams/_meta.js b/website/src/pages/nl/substreams/_meta.js
index a8ee04618eae..658bb8c213c6 100644
--- a/website/src/pages/nl/substreams/_meta.js
+++ b/website/src/pages/nl/substreams/_meta.js
@@ -5,5 +5,4 @@ export default {
   introduction: '',
   developing: titles.developing ?? '',
   publishing: '',
-  sps: titles.sps ?? '',
 }
diff --git a/website/src/pages/nl/token-api/_meta-titles.json b/website/src/pages/nl/token-api/_meta-titles.json
index 7ed31e0af95d..3108ecd3ebfd 100644
--- a/website/src/pages/nl/token-api/_meta-titles.json
+++ b/website/src/pages/nl/token-api/_meta-titles.json
@@ -1,6 +1,7 @@
 {
   "mcp": "MCP",
   "evm": "EVM Endpoints",
+  "svm": "SVM Endpoints",
   "monitoring": "Monitoring Endpoints",
   "faq": "FAQ"
 }
diff --git a/website/src/pages/nl/token-api/_meta.js b/website/src/pages/nl/token-api/_meta.js
index f67576d7f612..fb7f7334ea0c 100644
--- a/website/src/pages/nl/token-api/_meta.js
+++ b/website/src/pages/nl/token-api/_meta.js
@@ -2,8 +2,8 @@ import titles from './_meta-titles.json'
 
 export default {
   'quick-start': '',
-  mcp: titles.mcp ?? '',
   evm: titles.evm ?? '',
+  svm: titles.svm ?? '',
   monitoring: titles.monitoring ?? '',
   faq: '',
 }
diff --git a/website/src/pages/nl/token-api/mcp/_meta.js b/website/src/pages/nl/token-api/mcp/_meta.js
deleted file mode 100644
index 8630d4da27b3..000000000000
--- a/website/src/pages/nl/token-api/mcp/_meta.js
+++ /dev/null
@@ -1,5 +0,0 @@
-export default {
-  claude: '',
-  cline: '',
-  cursor: '',
-}
diff --git a/website/src/pages/nl/token-api/svm/_meta.js b/website/src/pages/nl/token-api/svm/_meta.js
new file mode 100644
index 000000000000..1a48b82fcbf1
--- /dev/null
+++ b/website/src/pages/nl/token-api/svm/_meta.js
@@ -0,0 +1,5 @@
+export default {
+  'get-balances-svm': '',
+  'get-transfers-svm': '',
+  'get-swaps-svm': '',
+}
diff --git a/website/src/pages/nl/token-api/svm/get-balances-svm.mdx b/website/src/pages/nl/token-api/svm/get-balances-svm.mdx
new file mode 100644
index 000000000000..c2946c190bf9
--- /dev/null
+++ b/website/src/pages/nl/token-api/svm/get-balances-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Balances
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getBalancesSvm
+---
+
+Provides Solana tokens balances by token account address.
diff --git a/website/src/pages/nl/token-api/svm/get-swaps-svm.mdx b/website/src/pages/nl/token-api/svm/get-swaps-svm.mdx
new file mode 100644
index 000000000000..95282a38ac9f
--- /dev/null
+++ b/website/src/pages/nl/token-api/svm/get-swaps-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Swap Events
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getSwapsSvm
+---
+
+Provides Raydium swap events.
diff --git a/website/src/pages/nl/token-api/svm/get-transfers-svm.mdx b/website/src/pages/nl/token-api/svm/get-transfers-svm.mdx
new file mode 100644
index 000000000000..5335cdddf418
--- /dev/null
+++ b/website/src/pages/nl/token-api/svm/get-transfers-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Transfers Events
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getTransfersSvm
+---
+
+Provides SVM transfer events.
diff --git a/website/src/pages/pl/ai-suite/_meta-titles.json b/website/src/pages/pl/ai-suite/_meta-titles.json
new file mode 100644
index 000000000000..5eb482a7092b
--- /dev/null
+++ b/website/src/pages/pl/ai-suite/_meta-titles.json
@@ -0,0 +1,6 @@
+{
+  "graph-assistant": "Graph Assistant",
+  "ai-introduction": "The Graph's AI",
+  "subgraph-mcp": "Subgraph MCP",
+  "token-api-mcp": "Token API MCP"
+}
diff --git a/website/src/pages/pl/ai-suite/_meta.js b/website/src/pages/pl/ai-suite/_meta.js
new file mode 100644
index 000000000000..c9e51dfd35fb
--- /dev/null
+++ b/website/src/pages/pl/ai-suite/_meta.js
@@ -0,0 +1,8 @@
+import titles from './_meta-titles.json'
+
+export default {
+  'ai-introduction': titles['ai-introduction'],
+  'graph-assistant': titles['graph-assistant'],
+  'subgraph-mcp': titles['subgraph-mcp'],
+  'token-api-mcp': titles['token-api-mcp'],
+}
diff --git a/website/src/pages/pl/ai-suite/ai-introduction.mdx b/website/src/pages/pl/ai-suite/ai-introduction.mdx
new file mode 100644
index 000000000000..d25cc9f77358
--- /dev/null
+++ b/website/src/pages/pl/ai-suite/ai-introduction.mdx
@@ -0,0 +1,58 @@
+---
+title: The Graph's AI
+---
+
+Build with speed and scale faster with The Graph's AI.
+
+## Using AI on The Graph
+
+Instead of relying on static datasets or centralized APIs, you can now access live blockchain data through our **agentic** app, [Graph Assistant](/ai-suite/graph-assistant/introduction/), and use our AI-native tooling, [Subgraph MCP](/ai-suite/subgraph-mcp/introduction/), and [Token API MCP](/ai-suite/token-api-mcp/introduction/).
+
+### Why Use Onchain Data with AI?
+
+Using onchain data with AI unlocks powerful new ways to interact with and understand blockchain ecosystems.
+
+- **AI for Non-Technical End Users**: AI can turn complex onchain data into accessible insights. Assistants powered by AI enable you to explore and analyze blockchain data without coding.
+- **AI for Developers**: You can use AI to interact directly with The Graph's data through your agents or build AI-powered applications on top of it. This streamlines development and opens up more intuitive, dynamic use cases.
+
+## AI for Non-Technical/End Users
+
+[Graph Assistant](/ai-suite/graph-assistant/introduction/) is a powerful **agentic** application that empowers users to easily interact with blockchain data. Ask questions in simple, natural language and get rich, AI powered insights. Both technical developers and non-technical product teams can move faster, make smarter decisions, and gain a clearer understanding than ever before.
+
+### Benefits of Using Graph Assistant
+
+- **Natural language Input**: You don't need to write complex queries or sift through dashboards. Simply ask your question in plain English and get clear, structured results.
+- **Multi-source support**: Works across multiple Subgraphs and Token API. The Assistant automatically determines which data source to use, so you don't have to switch tools or manage endpoints.
+- **Schema-free access**: You don't need to understand the schema. You can refer to tokens, protocols, dates, or addresses using natural language. The Assistant takes care of the rest.
+
+### Conversational Querying with Graph Assistant
+
+**Example queries:**
+
+- "List the top-5 swaps by USD value in the last 24 hours."
+- "Give me the daily volume on Uniswap."
+- "List the 20 most recently registered .eth names."
+
+[Graph Assistant](/ai-suite/graph-assistant/introduction/) will eventually be a one-stop shop for interacting with The Graph. Right now, it's an agentic AI app that uses state-of-the-art AI techniques, LLMs, and MCPs to understand and answer your questions about [Subgraphs](/subgraphs/developing/subgraphs/) and [Token API](/token-api/quick-start/) data.
+
+## AI for Developers
+
+### Enable Natural Language Access to Onchain Data
+
+[Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) servers connect to Claude, Cline, and Cursor. They enable models to understand, query, and interact with structured onchain data using natural language. MCPs remove the need to write low-level queries or interact with APIs directly.
+
+### Subgraph MCP
+
+The [Subgraph MCP](/ai-suite/subgraph-mcp/introduction/) server connects models to Subgraphs on The Graph Network. It allows language models to explore Subgraph schemas, execute GraphQL queries, find relevant Subgraphs by keyword or contract, and surface usage metrics using natural language.
+
+### Token API MCP
+
+The [Token API MCP](/ai-suite/token-api-mcp/introduction/) MCP server enables models to access onchain token data. It supports querying token metadata, wallet balances, transfer history, and top token holders through simple prompts.
+
+#### Benefits of Using Subgraph and Token API MCPs
+
+- Query Subgraphs and token data using natural language
+- Access GraphQL schemas and token metadata without manual queries
+- Find Subgraphs by keyword or contract and check 30-day usage
+- Retrieve real-time data from The Graph and onchain token sources
+- Get wallet balances, transfer history, and top token holders
diff --git a/website/src/pages/pl/ai-suite/graph-assistant/_meta.js b/website/src/pages/pl/ai-suite/graph-assistant/_meta.js
new file mode 100644
index 000000000000..74da5e0686a7
--- /dev/null
+++ b/website/src/pages/pl/ai-suite/graph-assistant/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  'quick-start': '',
+  introduction: '',
+  'how-to-guide': '',
+  faq: '',
+}
diff --git a/website/src/pages/pl/ai-suite/graph-assistant/faq.mdx b/website/src/pages/pl/ai-suite/graph-assistant/faq.mdx
new file mode 100644
index 000000000000..8addf9935524
--- /dev/null
+++ b/website/src/pages/pl/ai-suite/graph-assistant/faq.mdx
@@ -0,0 +1,26 @@
+---
+title: Graph Assistant FAQ
+sidebarTitle: 'FAQ'
+---
+
+This page summarizes some of the most common questions for developers using Graph Assistant.
+
+1. What is The Graph Assistant?
+
+The Graph Assistant is an AI-powered chat interface that lets you query blockchain data in plain English. Under the hood, it translates your questions into GraphQL calls against Subgraphs and the Token API, then returns results, no coding required.
+
+2. What is an agentic application?
+
+An agentic application combines AI-driven reasoning with external data sources or APIs to take autonomous actions on your behalf. In this case, Graph Assistant acts as an “agent” that interprets your natural-language prompts, builds and dispatches GraphQL queries, and formats the results so that you don't need to write or manage queries yourself.
+
+3. Which networks and data does Graph Assistant support?
+
+The Assistant has access to Subgraphs across multiple chains. If a Subgraph is published to The Graph Network and is being indexed, the Assistant can automatically route queries to it. The Assistant also has access to the Token API on Ethereum Mainnet, BSC, Unichain, Arbitrum-One, Optimism, and Polygon.
+
+4. Is there a usage limit or quota?
+
+Yes, 10 questions per hour.
+
+5. What if the Assistant can't interpret my question?
+
+When the Assistant fails to parse your intent (for example, ambiguous token name, missing context, or an unsupported request), it will prompt you for clarification. For instance, it might ask, “Did you mean XYZ on Ethereum or XYZ on Arbitrum?” or “Please specify a date range for this query.” If you continue to see parsing errors, check that you're using correct token symbols or specifying networks and time frames clearly.
diff --git a/website/src/pages/pl/ai-suite/graph-assistant/how-to-guide.mdx b/website/src/pages/pl/ai-suite/graph-assistant/how-to-guide.mdx
new file mode 100644
index 000000000000..463130894ad8
--- /dev/null
+++ b/website/src/pages/pl/ai-suite/graph-assistant/how-to-guide.mdx
@@ -0,0 +1,56 @@
+---
+title: How To Use The Graph Assistant
+sidebarTitle: 'How-to Guide'
+---
+
+## Overview
+
+You type a natural language question into the chat interface, such as:
+
+```yaml
+'On Uniswap, return the top-10 pools by total value locked in USD.'
+```
+
+> [!IMPORTANT] All users can process 10 free queries per user per hour.
+
+> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the underlying agents. Do not share sensitive, personal, or private information.
+
+### Behind the Scenes
+
+The Assistant:
+
+1. Interprets your intent
+2. Maps it to the correct Subgraphs or Token API endpoint
+3. Executes optimized queries
+4. Returns clean, structured results
+
+You don't need to write queries or understand a Subgraph's schema, you simply ask.
+
+### Example Use Cases
+
+**Protocol Analytics**
+
+- “Compare daily active users on Aave vs. Compound in May 2025.”
+- “Show me the total value locked (TVL) for XYZDAO over the last quarter.”
+
+**Token Insights**
+
+- “What are the top 10 tokens by market cap on Ethereum right now?”
+- “How many XYZ did I receive between May 1 and May 15?”
+
+**Historical Data Retrieval**
+
+- “Fetch the token price history of XYZ for the last six months.”
+- “What was the average gas price on Ethereum during April?”
+
+**Portfolio Monitoring**
+
+- “List my wallet’s current token balances and their USD equivalents.”
+- “Calculate profit/loss on XYZ since xyz date.”
+
+**Cross-Chain Comparison**
+
+- “Show me the 7-day trading volume of XYZ on Ethereum vs. Polygon.”
+- “How many XYZ swaps occurred on Arbitrum yesterday?”
+
+To get started follow the [quickstart](/ai-suite/graph-assistant/quick-start/) and explore its capabilities.
diff --git a/website/src/pages/pl/ai-suite/graph-assistant/introduction.mdx b/website/src/pages/pl/ai-suite/graph-assistant/introduction.mdx
new file mode 100644
index 000000000000..65fdf0f96028
--- /dev/null
+++ b/website/src/pages/pl/ai-suite/graph-assistant/introduction.mdx
@@ -0,0 +1,31 @@
+---
+title: Introduction
+---
+
+> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime.
+
+[Graph Assistant](https://thegraph.com/graph-assistant) (Beta) gives instant, code-free access to blockchain data, transforming natural language into precise, AI-powered queries without the need to code.
+
+## Overview
+
+[Graph Assistant](https://thegraph.com/graph-assistant) is an advanced, [agentic](/en/ai-suite/graph-assistant/faq/) easy-to-use chat interface for querying blockchain data using natural language. Unlike a basic chatbot, Graph Assistant can understand your intent, build complex queries, and execute them automatically. This gives you rich, AI-powered insights from onchain data without writing any code.
+
+- **Automatically** interprets user intent, generates precise queries, executes them via The Graph's Subgraphs and Token API, and presents structured, AI-powered answers without requiring any code.
+- **Removes** the technical complexity found in traditional dashboards or chatbots. It provides composable insights directly from indexed Subgraphs and Token datasets.
+
+## Core Features
+
+| Feature | Description |
+| --- | --- |
+| **Friendly Interface** | Conversational access to blockchain data via natural language. You simply ask questions, the Assistant fetches the answer, and renders results. |
+| **Backed by Subgraphs** | Uses subgraphs to index protocol-specific data like transactions, events, and protocol metrics. |
+| **Backed by Token API** | Uses Token API for token-level information like balances, transfers, and metadata. |
+| **No Setup Required** | No need to configure data sources or write queries. |
+| **Automatic Query Building** | The Assistant performs complex queries such as fetching historical token volumes, protocol analytics, or cross-chain data and handles filtering, pagination, and joins across Subgraphs automatically. |
+
+## Help Shape What's Next
+
+This is in **beta**, and community input is essential. If you have ideas, questions, or run into anything unexpected, we'd love to hear from you:
+
+- Join the community on [Discord](https://discord.com/invite/graphprotocol): Provide feedback and stay in the loop with other builders. You'll be able to join the `#graph-assistant` channel to share your experience directly.
+- Interested in going deeper? Reach out to become a dedicated beta tester so your specific use case can be better supported.
diff --git a/website/src/pages/pl/ai-suite/graph-assistant/quick-start.mdx b/website/src/pages/pl/ai-suite/graph-assistant/quick-start.mdx
new file mode 100644
index 000000000000..13f8478b8d2b
--- /dev/null
+++ b/website/src/pages/pl/ai-suite/graph-assistant/quick-start.mdx
@@ -0,0 +1,44 @@
+---
+title: Quick Start
+---
+
+> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime.
+
+This guide provides step-by-step instructions for getting started with Graph Assistant quickly.
+
+## Step-by Step
+
+### Step 1. Create an Account
+
+Go to: [Graph Assistant](https://thegraph.com/graph-assistant)
+
+- Click Sign Up (or Log In if you already have an account).
+- Use your Google, GitHub, X, email or wallet credentials to log in.
+- No additional setup is required.
+
+### Step 2. Open the Assistant Chat
+
+After logging in:
+
+- You'll see Graph Assistant's interface.
+- At the bottom of the page, you will find a chat input bar. This is where you will interact with the Assistant.
+
+### Step 3: Ask Your First Question
+
+> [!IMPORTANT] All users can process 10 free queries per user per hour.
+
+In the input bar, type a natural-language query (everyday language).
+
+Example:
+
+```yaml
+Show me the 24-hour trading volume of XYZ token on Ethereum
+```
+
+> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the AI interface. Do not share sensitive, personal, or private information.
+
+The Assistant will:
+
+- Digest your question
+- Fetch onchain data using Subgraphs or the Token API
+- Return a clean, formatted response with the data you need
diff --git a/website/src/pages/pl/ai-suite/subgraph-mcp/_meta.js b/website/src/pages/pl/ai-suite/subgraph-mcp/_meta.js
new file mode 100644
index 000000000000..6f527b4e53e4
--- /dev/null
+++ b/website/src/pages/pl/ai-suite/subgraph-mcp/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  introduction: '',
+  claude: '',
+  cline: '',
+  cursor: '',
+}
diff --git a/website/src/pages/pl/ai-suite/subgraph-mcp/claude.mdx b/website/src/pages/pl/ai-suite/subgraph-mcp/claude.mdx
new file mode 100644
index 000000000000..ff3caa4e3e7f
--- /dev/null
+++ b/website/src/pages/pl/ai-suite/subgraph-mcp/claude.mdx
@@ -0,0 +1,169 @@
+---
+title: Claude Desktop
+---
+
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data via natural language conversations with Claude.
+
+## Prerequisites
+
+- [Node.js](https://nodejs.org/en) installed and available in your path
+- [Claude Desktop](https://claude.ai/download) installed (latest version)
+- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
+
+## Installation Options
+
+### Option 1: Using npx (Recommended)
+
+#### Configuration Steps using npx
+
+#### 1. Open Configuration File
+
+Navigate to your `claude_desktop_config.json` file:
+
+> **Settings** > **Developer** > **Edit Config**
+
+- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
+- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
+- Linux: `.config/Claude/claude_desktop_config.json`
+
+#### 2. Add Configuration
+
+Paste the following settings into your config file:
+
+```json
+{
+  "mcpServers": {
+    "subgraph": {
+      "command": "npx",
+      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
+      "env": {
+        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
+      }
+    }
+  }
+}
+```
+
+#### 3. Add Your Gateway API Key
+
+Replace `GATEWAY_API_KEY` with your API key from [Subgraph Studio](https://thegraph.com/studio/).
+
+#### 4. Save and Restart
+
+Once you've entered your Gateway API key into your settings, save the file and restart Claude Desktop.
+
+### Option 2: Building from Source
+
+#### Requirements
+
+- Rust (latest stable version recommended: 1.75+)
+  ```bash
+  curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
+  ```
+  Follow the on-screen instructions. For other platforms, see the [official Rust installation guide](https://www.rust-lang.org/tools/install).
+
+#### Installation Steps
+
+1. **Clone and Build the Repository**
+
+   ```bash
+   git clone git@github.com:graphops/subgraph-mcp.git
+   cd subgraph-mcp
+   cargo build --release
+   ```
+
+2. **Find the Command Path**
+
+   After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory.
+   - Navigate to your `subgraph-mcp` directory in terminal
+   - Run `pwd` to get the full path
+   - Combine the output with `/target/release/subgraph-mcp`
+
+3. **Configure Claude Desktop**
+
+   Open your `claude_desktop_config.json` file as described above and add:
+
+   ```json
+   {
+     "mcpServers": {
+       "subgraph": {
+         "command": "/path/to/your/subgraph-mcp/target/release/subgraph-mcp",
+         "env": {
+           "GATEWAY_API_KEY": "your-api-key-here"
+         }
+       }
+     }
+   }
+   ```
+
+   Replace `/path/to/your/subgraph-mcp/target/release/subgraph-mcp` with the actual path to the compiled binary.
+
+## Using The Graph Resource in Claude
+
+After configuring Claude Desktop:
+
+1. Restart Claude Desktop
+2. Start a new conversation
+3. Click on the context menu (top right)
+4. Add "Subgraph Server Instructions" as a resource by adding `graphql://subgraph` to your chat context
+
+> **Important**: Claude Desktop may not automatically utilize the Subgraph MCP. You must manually add "Subgraph Server Instructions" resource to your chat context for each conversation where you want to use it.
+
+## Troubleshooting
+
+To enable logs for the MCP when using the npx option, add the `--verbose true` option to your args array.
+
+## Available Subgraph Tools and Usage
+
+The Subgraph MCP provides several tools for interacting with Subgraphs:
+
+### Schema Retrieval Tools
+
+- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
+- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
+- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
+
+### Query Execution Tools
+
+- **Execute query by deployment ID/IPFS hash**: Run GraphQL queries against specific, immutable deployments
+- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
+
+### Discovery Tools
+
+- **Search subgraphs by keyword**: Find subgraphs by keyword in their display names, ordered by signal
+- **Get deployment 30-day query counts**: Get aggregate query count over the last 30 days for multiple subgraph deployments
+- **Get top Subgraph deployments for a contract**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain, ordered by query fees
+
+## Key Identifier Types
+
+- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a subgraph. Use `execute_query_by_subgraph_id` or `get_schema_by_subgraph_id`.
+- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment. Use `execute_query_by_deployment_id` or `get_schema_by_deployment_id`.
+- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific, immutable deployment. Use `execute_query_by_deployment_id` (the gateway treats it like a deployment ID for querying) or `get_schema_by_ipfs_hash`.
+
+## Benefits of Natural Language Queries
+
+One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Claude will:
+
+1. Understand your goal (lookup, find Subgraphs, query, get schema)
+2. Find relevant deployments if needed
+3. Fetch and interpret the Subgraph schema
+4. Convert your question into an appropriate GraphQL query
+5. Execute the query and present the results in a readable format
+
+### Example Natural Language Queries
+
+```
+What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
+```
+
+```
+Which tokens have the highest market cap in this Subgraph?
+```
+
+```
+Show me the most recent 5 swaps for the USDC/ETH pair
+```
+
+```
+Find the top subgraphs for contract 0x1f98431c8ad98523631ae4a59f267346ea31f984 on arbitrum-one
+```
diff --git a/website/src/pages/pl/ai-suite/subgraph-mcp/cline.mdx b/website/src/pages/pl/ai-suite/subgraph-mcp/cline.mdx
new file mode 100644
index 000000000000..eb8044bfe991
--- /dev/null
+++ b/website/src/pages/pl/ai-suite/subgraph-mcp/cline.mdx
@@ -0,0 +1,99 @@
+---
+title: Cline
+---
+
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data through natural language conversations with Cline.
+
+## Prerequisites
+
+- [Cline](https://cline.bot/) installed (latest version)
+- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
+
+## Configuration Steps
+
+### 1. Open Configuration File
+
+Create or edit your `cline_mcp_settings.json` file.
+
+> **MCP Servers** > **Installed** > **Configure MCP Servers**
+
+### 2. Add Configuration
+
+```json
+{
+  "mcpServers": {
+    "subgraph": {
+      "command": "npx",
+      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
+      "env": {
+        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
+      }
+    }
+  }
+}
+```
+
+### 3. Add Your API Key
+
+Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
+
+## Using The Graph Resource in Cline
+
+After configuring Cline:
+
+1. Restart Cline
+2. Start a new conversation
+3. Enable the Subgraph MCP from the context menu
+4. Add "Subgraph Server Instructions" as a resource to your chat context
+
+## Available Tools and Usage
+
+The Subgraph MCP provides several tools for interacting with Subgraphs:
+
+### Schema Retrieval Tools
+
+- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
+- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
+- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
+
+### Query Execution Tools
+
+- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
+- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
+
+### Discovery Tools
+
+- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
+
+## Natural Language Queries
+
+One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cline will:
+
+1. Understand your goal (lookup, find Subgraphs, query, get schema)
+2. Find relevant deployments if needed
+3. Fetch and interpret the Subgraph schema
+4. Convert your question into an appropriate GraphQL query
+5. Execute the query and present the results in a readable format
+
+### Example Natural Language Queries
+
+```
+What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
+```
+
+```
+Which tokens have the highest market cap in this Subgraph?
+```
+
+```
+Show me the most recent 5 swaps for the USDC/ETH pair
+```
+
+## Key Identifier Types
+
+When working with Subgraphs, you'll encounter different types of identifiers:
+
+- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
+- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
+- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/pl/ai-suite/subgraph-mcp/cursor.mdx b/website/src/pages/pl/ai-suite/subgraph-mcp/cursor.mdx
new file mode 100644
index 000000000000..6291caf4b06b
--- /dev/null
+++ b/website/src/pages/pl/ai-suite/subgraph-mcp/cursor.mdx
@@ -0,0 +1,94 @@
+---
+title: Cursor
+---
+
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data through natural language conversations with Cline.
+
+## Prerequisites
+
+- [Cursor](https://www.cursor.com/) installed (latest version)
+- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
+
+## Configuration Steps
+
+### 1. Open Configuration File
+
+Create or edit your `~/.cursor/mcp.json` file.
+
+> **Cursor Settings** > **MCP** > **Add new global MCP Server**
+
+### 2. Add Configuration
+
+```json
+{
+  "mcpServers": {
+    "subgraph": {
+      "command": "npx",
+      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
+      "env": {
+        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
+      }
+    }
+  }
+}
+```
+
+### 3. Add Your API Key
+
+Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
+
+### 4. Restart Cursor
+
+Restart Cursor, and start a new chat.
+
+## Available Subgraph Tools and Usage
+
+The Subgraph MCP provides several tools for interacting with Subgraphs:
+
+### Schema Retrieval Tools
+
+- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
+- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
+- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
+
+### Query Execution Tools
+
+- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
+- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
+
+### Discovery Tools
+
+- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
+
+## Benefits of Natural Language Queries
+
+One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cursor will:
+
+1. Understand your goal (lookup, find Subgraphs, query, get schema)
+2. Find relevant deployments if needed
+3. Fetch and interpret the Subgraph schema
+4. Convert your question into an appropriate GraphQL query
+5. Execute the query and present the results in a readable format
+
+### Example Natural Language Queries
+
+```
+What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
+```
+
+```
+Which tokens have the highest market cap in this Subgraph?
+```
+
+```
+Show me the most recent 5 swaps for the USDC/ETH pair
+```
+
+## Key Identifier Types
+
+When working with Subgraphs, you'll encounter different types of identifiers:
+
+- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
+- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
+- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/pl/ai-suite/subgraph-mcp/introduction.mdx b/website/src/pages/pl/ai-suite/subgraph-mcp/introduction.mdx
new file mode 100644
index 000000000000..da1272cf9a36
--- /dev/null
+++ b/website/src/pages/pl/ai-suite/subgraph-mcp/introduction.mdx
@@ -0,0 +1,22 @@
+---
+title: Subgraph MCP Introduction
+sidebarTitle: 'Introduction'
+---
+
+Subgraph MCP server is an open-source implementation of [Anthropic's Model Context Protocol](https://modelcontextprotocol.io/introduction).
+
+It presents The Graph's Subgraph data through a set of MCP tools that any MCP-compatible client can call. With these tools, clients can search for relevant Subgraphs, inspect GraphQL schemas, and run queries against specific deployments on The Graph Network all within a single, standardized interface.
+
+The server itself does not hold a language model. Instead, it translates incoming MCP requests into Subgraph queries and returns the structured results, allowing the client's LLM to transform a natural-language prompt into actionable blockchain data.
+
+Think of it as a USB-C hub: it standardizes the plug-and-play connection between AI agents and The Graph's Subgraph ecosystem.
+
+## What You Can Do
+
+- Access GraphQL schemas for any Subgraph on The Graph Network
+- Run GraphQL queries on any Subgraph deployment
+- Discover top Subgraph deployments by keyword or contract address
+- Retrieve 30-day query volumes for Subgraph deployments
+- Ask questions about Subgraph data without writing GraphQL manually
+
+The Subgraph MCP server allows smooth integration with [Claude](/ai-suite/subgraph-mcp/claude/), [Cline](/ai-suite/subgraph-mcp/cline/), or [Cursor](/ai-suite/subgraph-mcp/cursor/), making blockchain data queries with The Graph Network a conversational experience.
diff --git a/website/src/pages/pl/ai-suite/token-api-mcp/_meta.js b/website/src/pages/pl/ai-suite/token-api-mcp/_meta.js
new file mode 100644
index 000000000000..6f527b4e53e4
--- /dev/null
+++ b/website/src/pages/pl/ai-suite/token-api-mcp/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  introduction: '',
+  claude: '',
+  cline: '',
+  cursor: '',
+}
diff --git a/website/src/pages/tr/token-api/mcp/claude.mdx b/website/src/pages/pl/ai-suite/token-api-mcp/claude.mdx
similarity index 99%
rename from website/src/pages/tr/token-api/mcp/claude.mdx
rename to website/src/pages/pl/ai-suite/token-api-mcp/claude.mdx
index 008e0ea6a9a4..3e21f4d7e165 100644
--- a/website/src/pages/tr/token-api/mcp/claude.mdx
+++ b/website/src/pages/pl/ai-suite/token-api-mcp/claude.mdx
@@ -12,7 +12,7 @@ sidebarTitle: Claude Desktop
 
 ![Screenshot of Claude Desktop's settings panel showing the MCP server configuration option.](/img/claude-preview-token-api.png)
 
-## Yapılandırma
+## Configuration
 
 Create or edit your `claude_desktop_config.json` file.
 
diff --git a/website/src/pages/es/token-api/mcp/cline.mdx b/website/src/pages/pl/ai-suite/token-api-mcp/cline.mdx
similarity index 99%
rename from website/src/pages/es/token-api/mcp/cline.mdx
rename to website/src/pages/pl/ai-suite/token-api-mcp/cline.mdx
index 776a978f2eb0..e885d21366cd 100644
--- a/website/src/pages/es/token-api/mcp/cline.mdx
+++ b/website/src/pages/pl/ai-suite/token-api-mcp/cline.mdx
@@ -12,7 +12,7 @@ sidebarTitle: Cline
 
 ![Screenshot of Cline's MCP server configuration interface displaying the JSON settings file with mcp-pinax server details visible.](/img/cline-preview-token-api.png)
 
-## Configuración
+## Configuration
 
 Create or edit your `cline_mcp_settings.json` file.
 
diff --git a/website/src/pages/tr/token-api/mcp/cursor.mdx b/website/src/pages/pl/ai-suite/token-api-mcp/cursor.mdx
similarity index 98%
rename from website/src/pages/tr/token-api/mcp/cursor.mdx
rename to website/src/pages/pl/ai-suite/token-api-mcp/cursor.mdx
index 121073c02e13..68fe2fdb201c 100644
--- a/website/src/pages/tr/token-api/mcp/cursor.mdx
+++ b/website/src/pages/pl/ai-suite/token-api-mcp/cursor.mdx
@@ -12,7 +12,7 @@ sidebarTitle: Cursor
 
 ![Screenshot of Cursor's MCP configuration panel.](/img/cursor-preview-token-api.png)
 
-## Yapılandırma
+## Configuration
 
 Create or edit your `~/.cursor/mcp.json` file.
 
diff --git a/website/src/pages/pl/ai-suite/token-api-mcp/introduction.mdx b/website/src/pages/pl/ai-suite/token-api-mcp/introduction.mdx
new file mode 100644
index 000000000000..b61ad0a1c485
--- /dev/null
+++ b/website/src/pages/pl/ai-suite/token-api-mcp/introduction.mdx
@@ -0,0 +1,23 @@
+---
+title: Token API MCP Introduction
+sidebarTitle: 'Introduction'
+---
+
+Token API MCP server is an open-source implementation of [Anthropic's Model Context Protocol](https://modelcontextprotocol.io/introduction).
+
+This MCP server makes on-chain token data, including metadata, balances, transfers, and holder statistics, accessible through a set of MCP tools. Any compatible client can use these tools to fetch and analyze token information through a standardized interface. It connects to The Graph's hosted Token API database, enabling AI assistants to query real-time blockchain data using natural language requests that get translated into optimized SQL queries.
+
+The server itself does not host any language model. It simply converts MCP calls into data look-ups and returns structured results, letting the client's own LLM incorporate the results.
+
+Think of it as a USB-C hub: it standardizes the plug-and-play connection between AI agents and The Graph's Token API data.
+
+## What You Can Do
+
+- Retrieve token metadata including name, symbol, decimals, total supply, and contract address
+- Get token balances for any wallet address holding a supported ERC-20 token
+- Fetch token transfer activity including sender, receiver, amount, and timestamp
+- Identify top holders and analyze token distribution
+- Ask natural language questions about token data without writing smart contract calls
+- Access historical transfer data to analyze token movement over time
+
+The Token MCP server provides [Claude](/ai-suite/token-api-mcp/claude/), [Cline](/ai-suite/token-api-mcp/cline/), and [Cursor](/ai-suite/token-api-mcp/cursor/) with direct, conversational access to onchain token data.
diff --git a/website/src/pages/pl/resources/_meta.js b/website/src/pages/pl/resources/_meta.js
index aa8e2d0ec6a8..38c56cf56c43 100644
--- a/website/src/pages/pl/resources/_meta.js
+++ b/website/src/pages/pl/resources/_meta.js
@@ -7,5 +7,4 @@ export default {
   roles: titles.roles ?? '',
   'migration-guides': titles['migration-guides'] ?? '',
   'subgraph-studio-faq': '',
-  'claude-mcp': '',
 }
diff --git a/website/src/pages/pl/resources/claude-mcp.mdx b/website/src/pages/pl/resources/claude-mcp.mdx
deleted file mode 100644
index 44ed075cffda..000000000000
--- a/website/src/pages/pl/resources/claude-mcp.mdx
+++ /dev/null
@@ -1,122 +0,0 @@
----
-title: Claude MCP
----
-
-This guide walks you through configuring Claude Desktop to use The Graph ecosystem's [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) resources: Token API and Subgraph. These integrations allow you to interact with blockchain data through natural language conversations with Claude.
-
-## What You Can Do
-
-With these integrations, you can:
-
-- **Token API**: Access token and wallet information across multiple blockchains
-- **Subgraph**: Find relevant Subgraphs for specific keywords and contracts, explore Subgraph schemas, and execute GraphQL queries
-
-## Prerequisites
-
-- [Node.js](https://nodejs.org/en/download/) installed and available in your path
-- [Claude Desktop](https://claude.ai/download) installed
-- API keys:
-  - Token API key from [The Graph Market](https://thegraph.market/)
-  - Gateway API key from [Subgraph Studio](https://thegraph.com/studio/apikeys/)
-
-## Configuration Steps
-
-### 1. Open Configuration File
-
-Navigate to your `claude_desktop_config.json` file:
-
-> **Claude Desktop** > **Settings** > **Developer** > **Edit Config**
-
-Paths by operating system:
-
-- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
-- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
-- Linux: `.config/Claude/claude_desktop_config.json`
-
-### 2. Add Configuration
-
-Replace the contents of the existing config file with:
-
-```json
-{
-  "mcpServers": {
-    "token-api": {
-      "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
-      "env": {
-        "ACCESS_TOKEN": "ACCESS_TOKEN"
-      }
-    },
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-### 3. Add Your API Keys
-
-Replace:
-
-- `ACCESS_TOKEN` with your Token API key from [The Graph Market](https://thegraph.market/)
-- `GATEWAY_API_KEY` with your Gateway API key from [Subgraph Studio](https://thegraph.com/studio/apikeys/)
-
-### 4. Save and Restart
-
-- Save the configuration file
-- Restart Claude Desktop
-
-### 5. Add The Graph Resources in Claude
-
-After configuration:
-
-1. Start a new conversation in Claude Desktop
-2. Click on the context menu (top right)
-3. Add "Subgraph Server Instructions" as a resource by entering `graphql://subgraph` for Subgraph MCP
-
-> **Important**: You must manually add The Graph resources to your chat context for each conversation where you want to use them.
-
-### 6. Run Queries
-
-Here are some example queries you can try after setting up the resources:
-
-### Subgraph Queries
-
-```
-What are the top pools in Uniswap?
-```
-
-```
-Who are the top Delegators of The Graph Protocol?
-```
-
-```
-Please make a bar chart for the number of active loans in Compound for the last 7 days
-```
-
-### Token API Queries
-
-```
-Show me the current price of ETH
-```
-
-```
-What are the top tokens by market cap on Ethereum?
-```
-
-```
-Analyze this wallet address: 0x...
-```
-
-## Troubleshooting
-
-If you encounter issues:
-
-1. **Verify Node.js Installation**: Ensure Node.js is correctly installed by running `node -v` in your terminal
-2. **Check API Keys**: Verify that your API keys are correctly entered in the configuration file
-3. **Enable Verbose Logging**: Add `--verbose true` to the args array in your configuration to see detailed logs
-4. **Restart Claude Desktop**: After making changes to the configuration, always restart Claude Desktop
diff --git a/website/src/pages/pl/subgraphs/_meta.js b/website/src/pages/pl/subgraphs/_meta.js
index 4365293ffc72..45841d5f3355 100644
--- a/website/src/pages/pl/subgraphs/_meta.js
+++ b/website/src/pages/pl/subgraphs/_meta.js
@@ -6,7 +6,6 @@ export default {
   querying: titles.querying ?? '',
   developing: titles.developing ?? '',
   billing: '',
-  mcp: titles.mcp ?? '',
   guides: titles.guides,
   'best-practices': titles['best-practices'],
   'fair-use-policy': '',
diff --git a/website/src/pages/pl/subgraphs/mcp/_meta.js b/website/src/pages/pl/subgraphs/mcp/_meta.js
deleted file mode 100644
index 8630d4da27b3..000000000000
--- a/website/src/pages/pl/subgraphs/mcp/_meta.js
+++ /dev/null
@@ -1,5 +0,0 @@
-export default {
-  claude: '',
-  cline: '',
-  cursor: '',
-}
diff --git a/website/src/pages/pl/subgraphs/mcp/claude.mdx b/website/src/pages/pl/subgraphs/mcp/claude.mdx
deleted file mode 100644
index 027b272cb942..000000000000
--- a/website/src/pages/pl/subgraphs/mcp/claude.mdx
+++ /dev/null
@@ -1,179 +0,0 @@
----
-title: Claude Desktop
----
-
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Claude to interact directly with Subgraphs on The Graph Network. This integration allows you to find relevant Subgraphs for specific keywords and contracts, explore Subgraph schemas, and execute GraphQL queries—all through natural language conversations with Claude.
-
-## What You Can Do
-
-The Subgraph MCP integration enables you to:
-
-- Access the GraphQL schema for any Subgraph on The Graph Network
-- Execute GraphQL queries against any Subgraph deployment
-- Find top Subgraph deployments for a given keyword or contract address
-- Get 30-day query volume for Subgraph deployments
-- Ask natural language questions about Subgraph data without writing GraphQL queries manually
-
-## Prerequisites
-
-- [Node.js](https://nodejs.org/en) installed and available in your path
-- [Claude Desktop](https://claude.ai/download) installed (latest version)
-- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
-
-## Installation Options
-
-### Option 1: Using npx (Recommended)
-
-#### Configuration Steps using npx
-
-#### 1. Open Configuration File
-
-Navigate to your `claude_desktop_config.json` file:
-
-> **Settings** > **Developer** > **Edit Config**
-
-- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
-- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
-- Linux: `.config/Claude/claude_desktop_config.json`
-
-#### 2. Add Configuration
-
-Paste the following settings into your config file:
-
-```json
-{
-  "mcpServers": {
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-#### 3. Add Your Gateway API Key
-
-Replace `GATEWAY_API_KEY` with your API key from [Subgraph Studio](https://thegraph.com/studio/).
-
-#### 4. Save and Restart
-
-Once you've entered your Gateway API key into your settings, save the file and restart Claude Desktop.
-
-### Option 2: Building from Source
-
-#### Requirements
-
-- Rust (latest stable version recommended: 1.75+)
-  ```bash
-  curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
-  ```
-  Follow the on-screen instructions. For other platforms, see the [official Rust installation guide](https://www.rust-lang.org/tools/install).
-
-#### Installation Steps
-
-1. **Clone and Build the Repository**
-
-   ```bash
-   git clone git@github.com:graphops/subgraph-mcp.git
-   cd subgraph-mcp
-   cargo build --release
-   ```
-
-2. **Find the Command Path**
-
-   After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory.
-   - Navigate to your `subgraph-mcp` directory in terminal
-   - Run `pwd` to get the full path
-   - Combine the output with `/target/release/subgraph-mcp`
-
-3. **Configure Claude Desktop**
-
-   Open your `claude_desktop_config.json` file as described above and add:
-
-   ```json
-   {
-     "mcpServers": {
-       "subgraph": {
-         "command": "/path/to/your/subgraph-mcp/target/release/subgraph-mcp",
-         "env": {
-           "GATEWAY_API_KEY": "your-api-key-here"
-         }
-       }
-     }
-   }
-   ```
-
-   Replace `/path/to/your/subgraph-mcp/target/release/subgraph-mcp` with the actual path to the compiled binary.
-
-## Using The Graph Resource in Claude
-
-After configuring Claude Desktop:
-
-1. Restart Claude Desktop
-2. Start a new conversation
-3. Click on the context menu (top right)
-4. Add "Subgraph Server Instructions" as a resource by adding `graphql://subgraph` to your chat context
-
-> **Important**: Claude Desktop may not automatically utilize the Subgraph MCP. You must manually add "Subgraph Server Instructions" resource to your chat context for each conversation where you want to use it.
-
-## Troubleshooting
-
-To enable logs for the MCP when using the npx option, add the `--verbose true` option to your args array.
-
-## Available Subgraph Tools and Usage
-
-The Subgraph MCP provides several tools for interacting with Subgraphs:
-
-### Schema Retrieval Tools
-
-- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
-- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
-- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
-
-### Query Execution Tools
-
-- **Execute query by deployment ID/IPFS hash**: Run GraphQL queries against specific, immutable deployments
-- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
-
-### Discovery Tools
-
-- **Search subgraphs by keyword**: Find subgraphs by keyword in their display names, ordered by signal
-- **Get deployment 30-day query counts**: Get aggregate query count over the last 30 days for multiple subgraph deployments
-- **Get top Subgraph deployments for a contract**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain, ordered by query fees
-
-## Key Identifier Types
-
-- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a subgraph. Use `execute_query_by_subgraph_id` or `get_schema_by_subgraph_id`.
-- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment. Use `execute_query_by_deployment_id` or `get_schema_by_deployment_id`.
-- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific, immutable deployment. Use `execute_query_by_deployment_id` (the gateway treats it like a deployment ID for querying) or `get_schema_by_ipfs_hash`.
-
-## Benefits of Natural Language Queries
-
-One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Claude will:
-
-1. Understand your goal (lookup, find Subgraphs, query, get schema)
-2. Find relevant deployments if needed
-3. Fetch and interpret the Subgraph schema
-4. Convert your question into an appropriate GraphQL query
-5. Execute the query and present the results in a readable format
-
-### Example Natural Language Queries
-
-```
-What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
-```
-
-```
-Which tokens have the highest market cap in this Subgraph?
-```
-
-```
-Show me the most recent 5 swaps for the USDC/ETH pair
-```
-
-```
-Find the top subgraphs for contract 0x1f98431c8ad98523631ae4a59f267346ea31f984 on arbitrum-one
-```
diff --git a/website/src/pages/pl/subgraphs/mcp/cline.mdx b/website/src/pages/pl/subgraphs/mcp/cline.mdx
deleted file mode 100644
index 156221d9a127..000000000000
--- a/website/src/pages/pl/subgraphs/mcp/cline.mdx
+++ /dev/null
@@ -1,99 +0,0 @@
----
-title: Cline
----
-
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Cline to interact directly with Subgraphs on The Graph Network. This integration allows you to explore Subgraph schemas, execute GraphQL queries, and find relevant Subgraphs for specific contracts—all through natural language conversations with Cline.
-
-## Prerequisites
-
-- [Cline](https://cline.bot/) installed (latest version)
-- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
-
-## Configuration Steps
-
-### 1. Open Configuration File
-
-Create or edit your `cline_mcp_settings.json` file.
-
-> **MCP Servers** > **Installed** > **Configure MCP Servers**
-
-### 2. Add Configuration
-
-```json
-{
-  "mcpServers": {
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-### 3. Add Your API Key
-
-Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
-
-## Using The Graph Resource in Cline
-
-After configuring Cline:
-
-1. Restart Cline
-2. Start a new conversation
-3. Enable the Subgraph MCP from the context menu
-4. Add "Subgraph Server Instructions" as a resource to your chat context
-
-## Available Tools and Usage
-
-The Subgraph MCP provides several tools for interacting with Subgraphs:
-
-### Schema Retrieval Tools
-
-- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
-- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
-- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
-
-### Query Execution Tools
-
-- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
-- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
-
-### Discovery Tools
-
-- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
-
-## Natural Language Queries
-
-One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cline will:
-
-1. Understand your goal (lookup, find Subgraphs, query, get schema)
-2. Find relevant deployments if needed
-3. Fetch and interpret the Subgraph schema
-4. Convert your question into an appropriate GraphQL query
-5. Execute the query and present the results in a readable format
-
-### Example Natural Language Queries
-
-```
-What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
-```
-
-```
-Which tokens have the highest market cap in this Subgraph?
-```
-
-```
-Show me the most recent 5 swaps for the USDC/ETH pair
-```
-
-## Key Identifier Types
-
-When working with Subgraphs, you'll encounter different types of identifiers:
-
-- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
-- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
-- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/pl/subgraphs/mcp/cursor.mdx b/website/src/pages/pl/subgraphs/mcp/cursor.mdx
deleted file mode 100644
index 298f43ece048..000000000000
--- a/website/src/pages/pl/subgraphs/mcp/cursor.mdx
+++ /dev/null
@@ -1,94 +0,0 @@
----
-title: Cursor
----
-
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Cursor to interact directly with Subgraphs on The Graph Network. This integration allows you to explore Subgraph schemas, execute GraphQL queries, and find relevant Subgraphs for specific contracts—all through natural language conversations with Cursor.
-
-## Prerequisites
-
-- [Cursor](https://www.cursor.com/) installed (latest version)
-- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
-
-## Configuration Steps
-
-### 1. Open Configuration File
-
-Create or edit your `~/.cursor/mcp.json` file.
-
-> **Cursor Settings** > **MCP** > **Add new global MCP Server**
-
-### 2. Add Configuration
-
-```json
-{
-  "mcpServers": {
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-### 3. Add Your API Key
-
-Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
-
-### 4. Restart Cursor
-
-Restart Cursor, and start a new chat.
-
-## Available Subgraph Tools and Usage
-
-The Subgraph MCP provides several tools for interacting with Subgraphs:
-
-### Schema Retrieval Tools
-
-- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
-- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
-- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
-
-### Query Execution Tools
-
-- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
-- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
-
-### Discovery Tools
-
-- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
-
-## Benefits of Natural Language Queries
-
-One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cursor will:
-
-1. Understand your goal (lookup, find Subgraphs, query, get schema)
-2. Find relevant deployments if needed
-3. Fetch and interpret the Subgraph schema
-4. Convert your question into an appropriate GraphQL query
-5. Execute the query and present the results in a readable format
-
-### Example Natural Language Queries
-
-```
-What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
-```
-
-```
-Which tokens have the highest market cap in this Subgraph?
-```
-
-```
-Show me the most recent 5 swaps for the USDC/ETH pair
-```
-
-## Key Identifier Types
-
-When working with Subgraphs, you'll encounter different types of identifiers:
-
-- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
-- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
-- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/pl/substreams/_meta.js b/website/src/pages/pl/substreams/_meta.js
index a8ee04618eae..658bb8c213c6 100644
--- a/website/src/pages/pl/substreams/_meta.js
+++ b/website/src/pages/pl/substreams/_meta.js
@@ -5,5 +5,4 @@ export default {
   introduction: '',
   developing: titles.developing ?? '',
   publishing: '',
-  sps: titles.sps ?? '',
 }
diff --git a/website/src/pages/pl/token-api/_meta-titles.json b/website/src/pages/pl/token-api/_meta-titles.json
index 7ed31e0af95d..3108ecd3ebfd 100644
--- a/website/src/pages/pl/token-api/_meta-titles.json
+++ b/website/src/pages/pl/token-api/_meta-titles.json
@@ -1,6 +1,7 @@
 {
   "mcp": "MCP",
   "evm": "EVM Endpoints",
+  "svm": "SVM Endpoints",
   "monitoring": "Monitoring Endpoints",
   "faq": "FAQ"
 }
diff --git a/website/src/pages/pl/token-api/_meta.js b/website/src/pages/pl/token-api/_meta.js
index f67576d7f612..fb7f7334ea0c 100644
--- a/website/src/pages/pl/token-api/_meta.js
+++ b/website/src/pages/pl/token-api/_meta.js
@@ -2,8 +2,8 @@ import titles from './_meta-titles.json'
 
 export default {
   'quick-start': '',
-  mcp: titles.mcp ?? '',
   evm: titles.evm ?? '',
+  svm: titles.svm ?? '',
   monitoring: titles.monitoring ?? '',
   faq: '',
 }
diff --git a/website/src/pages/pl/token-api/mcp/_meta.js b/website/src/pages/pl/token-api/mcp/_meta.js
deleted file mode 100644
index 8630d4da27b3..000000000000
--- a/website/src/pages/pl/token-api/mcp/_meta.js
+++ /dev/null
@@ -1,5 +0,0 @@
-export default {
-  claude: '',
-  cline: '',
-  cursor: '',
-}
diff --git a/website/src/pages/pl/token-api/svm/_meta.js b/website/src/pages/pl/token-api/svm/_meta.js
new file mode 100644
index 000000000000..1a48b82fcbf1
--- /dev/null
+++ b/website/src/pages/pl/token-api/svm/_meta.js
@@ -0,0 +1,5 @@
+export default {
+  'get-balances-svm': '',
+  'get-transfers-svm': '',
+  'get-swaps-svm': '',
+}
diff --git a/website/src/pages/pl/token-api/svm/get-balances-svm.mdx b/website/src/pages/pl/token-api/svm/get-balances-svm.mdx
new file mode 100644
index 000000000000..c2946c190bf9
--- /dev/null
+++ b/website/src/pages/pl/token-api/svm/get-balances-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Balances
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getBalancesSvm
+---
+
+Provides Solana tokens balances by token account address.
diff --git a/website/src/pages/pl/token-api/svm/get-swaps-svm.mdx b/website/src/pages/pl/token-api/svm/get-swaps-svm.mdx
new file mode 100644
index 000000000000..95282a38ac9f
--- /dev/null
+++ b/website/src/pages/pl/token-api/svm/get-swaps-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Swap Events
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getSwapsSvm
+---
+
+Provides Raydium swap events.
diff --git a/website/src/pages/pl/token-api/svm/get-transfers-svm.mdx b/website/src/pages/pl/token-api/svm/get-transfers-svm.mdx
new file mode 100644
index 000000000000..5335cdddf418
--- /dev/null
+++ b/website/src/pages/pl/token-api/svm/get-transfers-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Transfers Events
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getTransfersSvm
+---
+
+Provides SVM transfer events.
diff --git a/website/src/pages/pt/ai-suite/_meta-titles.json b/website/src/pages/pt/ai-suite/_meta-titles.json
new file mode 100644
index 000000000000..5eb482a7092b
--- /dev/null
+++ b/website/src/pages/pt/ai-suite/_meta-titles.json
@@ -0,0 +1,6 @@
+{
+  "graph-assistant": "Graph Assistant",
+  "ai-introduction": "The Graph's AI",
+  "subgraph-mcp": "Subgraph MCP",
+  "token-api-mcp": "Token API MCP"
+}
diff --git a/website/src/pages/pt/ai-suite/_meta.js b/website/src/pages/pt/ai-suite/_meta.js
new file mode 100644
index 000000000000..c9e51dfd35fb
--- /dev/null
+++ b/website/src/pages/pt/ai-suite/_meta.js
@@ -0,0 +1,8 @@
+import titles from './_meta-titles.json'
+
+export default {
+  'ai-introduction': titles['ai-introduction'],
+  'graph-assistant': titles['graph-assistant'],
+  'subgraph-mcp': titles['subgraph-mcp'],
+  'token-api-mcp': titles['token-api-mcp'],
+}
diff --git a/website/src/pages/pt/ai-suite/ai-introduction.mdx b/website/src/pages/pt/ai-suite/ai-introduction.mdx
new file mode 100644
index 000000000000..d25cc9f77358
--- /dev/null
+++ b/website/src/pages/pt/ai-suite/ai-introduction.mdx
@@ -0,0 +1,58 @@
+---
+title: The Graph's AI
+---
+
+Build with speed and scale faster with The Graph's AI.
+
+## Using AI on The Graph
+
+Instead of relying on static datasets or centralized APIs, you can now access live blockchain data through our **agentic** app, [Graph Assistant](/ai-suite/graph-assistant/introduction/), and use our AI-native tooling, [Subgraph MCP](/ai-suite/subgraph-mcp/introduction/), and [Token API MCP](/ai-suite/token-api-mcp/introduction/).
+
+### Why Use Onchain Data with AI?
+
+Using onchain data with AI unlocks powerful new ways to interact with and understand blockchain ecosystems.
+
+- **AI for Non-Technical End Users**: AI can turn complex onchain data into accessible insights. Assistants powered by AI enable you to explore and analyze blockchain data without coding.
+- **AI for Developers**: You can use AI to interact directly with The Graph's data through your agents or build AI-powered applications on top of it. This streamlines development and opens up more intuitive, dynamic use cases.
+
+## AI for Non-Technical/End Users
+
+[Graph Assistant](/ai-suite/graph-assistant/introduction/) is a powerful **agentic** application that empowers users to easily interact with blockchain data. Ask questions in simple, natural language and get rich, AI powered insights. Both technical developers and non-technical product teams can move faster, make smarter decisions, and gain a clearer understanding than ever before.
+
+### Benefits of Using Graph Assistant
+
+- **Natural language Input**: You don't need to write complex queries or sift through dashboards. Simply ask your question in plain English and get clear, structured results.
+- **Multi-source support**: Works across multiple Subgraphs and Token API. The Assistant automatically determines which data source to use, so you don't have to switch tools or manage endpoints.
+- **Schema-free access**: You don't need to understand the schema. You can refer to tokens, protocols, dates, or addresses using natural language. The Assistant takes care of the rest.
+
+### Conversational Querying with Graph Assistant
+
+**Example queries:**
+
+- "List the top-5 swaps by USD value in the last 24 hours."
+- "Give me the daily volume on Uniswap."
+- "List the 20 most recently registered .eth names."
+
+[Graph Assistant](/ai-suite/graph-assistant/introduction/) will eventually be a one-stop shop for interacting with The Graph. Right now, it's an agentic AI app that uses state-of-the-art AI techniques, LLMs, and MCPs to understand and answer your questions about [Subgraphs](/subgraphs/developing/subgraphs/) and [Token API](/token-api/quick-start/) data.
+
+## AI for Developers
+
+### Enable Natural Language Access to Onchain Data
+
+[Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) servers connect to Claude, Cline, and Cursor. They enable models to understand, query, and interact with structured onchain data using natural language. MCPs remove the need to write low-level queries or interact with APIs directly.
+
+### Subgraph MCP
+
+The [Subgraph MCP](/ai-suite/subgraph-mcp/introduction/) server connects models to Subgraphs on The Graph Network. It allows language models to explore Subgraph schemas, execute GraphQL queries, find relevant Subgraphs by keyword or contract, and surface usage metrics using natural language.
+
+### Token API MCP
+
+The [Token API MCP](/ai-suite/token-api-mcp/introduction/) MCP server enables models to access onchain token data. It supports querying token metadata, wallet balances, transfer history, and top token holders through simple prompts.
+
+#### Benefits of Using Subgraph and Token API MCPs
+
+- Query Subgraphs and token data using natural language
+- Access GraphQL schemas and token metadata without manual queries
+- Find Subgraphs by keyword or contract and check 30-day usage
+- Retrieve real-time data from The Graph and onchain token sources
+- Get wallet balances, transfer history, and top token holders
diff --git a/website/src/pages/pt/ai-suite/graph-assistant/_meta.js b/website/src/pages/pt/ai-suite/graph-assistant/_meta.js
new file mode 100644
index 000000000000..74da5e0686a7
--- /dev/null
+++ b/website/src/pages/pt/ai-suite/graph-assistant/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  'quick-start': '',
+  introduction: '',
+  'how-to-guide': '',
+  faq: '',
+}
diff --git a/website/src/pages/pt/ai-suite/graph-assistant/faq.mdx b/website/src/pages/pt/ai-suite/graph-assistant/faq.mdx
new file mode 100644
index 000000000000..8addf9935524
--- /dev/null
+++ b/website/src/pages/pt/ai-suite/graph-assistant/faq.mdx
@@ -0,0 +1,26 @@
+---
+title: Graph Assistant FAQ
+sidebarTitle: 'FAQ'
+---
+
+This page summarizes some of the most common questions for developers using Graph Assistant.
+
+1. What is The Graph Assistant?
+
+The Graph Assistant is an AI-powered chat interface that lets you query blockchain data in plain English. Under the hood, it translates your questions into GraphQL calls against Subgraphs and the Token API, then returns results, no coding required.
+
+2. What is an agentic application?
+
+An agentic application combines AI-driven reasoning with external data sources or APIs to take autonomous actions on your behalf. In this case, Graph Assistant acts as an “agent” that interprets your natural-language prompts, builds and dispatches GraphQL queries, and formats the results so that you don't need to write or manage queries yourself.
+
+3. Which networks and data does Graph Assistant support?
+
+The Assistant has access to Subgraphs across multiple chains. If a Subgraph is published to The Graph Network and is being indexed, the Assistant can automatically route queries to it. The Assistant also has access to the Token API on Ethereum Mainnet, BSC, Unichain, Arbitrum-One, Optimism, and Polygon.
+
+4. Is there a usage limit or quota?
+
+Yes, 10 questions per hour.
+
+5. What if the Assistant can't interpret my question?
+
+When the Assistant fails to parse your intent (for example, ambiguous token name, missing context, or an unsupported request), it will prompt you for clarification. For instance, it might ask, “Did you mean XYZ on Ethereum or XYZ on Arbitrum?” or “Please specify a date range for this query.” If you continue to see parsing errors, check that you're using correct token symbols or specifying networks and time frames clearly.
diff --git a/website/src/pages/pt/ai-suite/graph-assistant/how-to-guide.mdx b/website/src/pages/pt/ai-suite/graph-assistant/how-to-guide.mdx
new file mode 100644
index 000000000000..463130894ad8
--- /dev/null
+++ b/website/src/pages/pt/ai-suite/graph-assistant/how-to-guide.mdx
@@ -0,0 +1,56 @@
+---
+title: How To Use The Graph Assistant
+sidebarTitle: 'How-to Guide'
+---
+
+## Overview
+
+You type a natural language question into the chat interface, such as:
+
+```yaml
+'On Uniswap, return the top-10 pools by total value locked in USD.'
+```
+
+> [!IMPORTANT] All users can process 10 free queries per user per hour.
+
+> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the underlying agents. Do not share sensitive, personal, or private information.
+
+### Behind the Scenes
+
+The Assistant:
+
+1. Interprets your intent
+2. Maps it to the correct Subgraphs or Token API endpoint
+3. Executes optimized queries
+4. Returns clean, structured results
+
+You don't need to write queries or understand a Subgraph's schema, you simply ask.
+
+### Example Use Cases
+
+**Protocol Analytics**
+
+- “Compare daily active users on Aave vs. Compound in May 2025.”
+- “Show me the total value locked (TVL) for XYZDAO over the last quarter.”
+
+**Token Insights**
+
+- “What are the top 10 tokens by market cap on Ethereum right now?”
+- “How many XYZ did I receive between May 1 and May 15?”
+
+**Historical Data Retrieval**
+
+- “Fetch the token price history of XYZ for the last six months.”
+- “What was the average gas price on Ethereum during April?”
+
+**Portfolio Monitoring**
+
+- “List my wallet’s current token balances and their USD equivalents.”
+- “Calculate profit/loss on XYZ since xyz date.”
+
+**Cross-Chain Comparison**
+
+- “Show me the 7-day trading volume of XYZ on Ethereum vs. Polygon.”
+- “How many XYZ swaps occurred on Arbitrum yesterday?”
+
+To get started follow the [quickstart](/ai-suite/graph-assistant/quick-start/) and explore its capabilities.
diff --git a/website/src/pages/pt/ai-suite/graph-assistant/introduction.mdx b/website/src/pages/pt/ai-suite/graph-assistant/introduction.mdx
new file mode 100644
index 000000000000..65fdf0f96028
--- /dev/null
+++ b/website/src/pages/pt/ai-suite/graph-assistant/introduction.mdx
@@ -0,0 +1,31 @@
+---
+title: Introduction
+---
+
+> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime.
+
+[Graph Assistant](https://thegraph.com/graph-assistant) (Beta) gives instant, code-free access to blockchain data, transforming natural language into precise, AI-powered queries without the need to code.
+
+## Overview
+
+[Graph Assistant](https://thegraph.com/graph-assistant) is an advanced, [agentic](/en/ai-suite/graph-assistant/faq/) easy-to-use chat interface for querying blockchain data using natural language. Unlike a basic chatbot, Graph Assistant can understand your intent, build complex queries, and execute them automatically. This gives you rich, AI-powered insights from onchain data without writing any code.
+
+- **Automatically** interprets user intent, generates precise queries, executes them via The Graph's Subgraphs and Token API, and presents structured, AI-powered answers without requiring any code.
+- **Removes** the technical complexity found in traditional dashboards or chatbots. It provides composable insights directly from indexed Subgraphs and Token datasets.
+
+## Core Features
+
+| Feature | Description |
+| --- | --- |
+| **Friendly Interface** | Conversational access to blockchain data via natural language. You simply ask questions, the Assistant fetches the answer, and renders results. |
+| **Backed by Subgraphs** | Uses subgraphs to index protocol-specific data like transactions, events, and protocol metrics. |
+| **Backed by Token API** | Uses Token API for token-level information like balances, transfers, and metadata. |
+| **No Setup Required** | No need to configure data sources or write queries. |
+| **Automatic Query Building** | The Assistant performs complex queries such as fetching historical token volumes, protocol analytics, or cross-chain data and handles filtering, pagination, and joins across Subgraphs automatically. |
+
+## Help Shape What's Next
+
+This is in **beta**, and community input is essential. If you have ideas, questions, or run into anything unexpected, we'd love to hear from you:
+
+- Join the community on [Discord](https://discord.com/invite/graphprotocol): Provide feedback and stay in the loop with other builders. You'll be able to join the `#graph-assistant` channel to share your experience directly.
+- Interested in going deeper? Reach out to become a dedicated beta tester so your specific use case can be better supported.
diff --git a/website/src/pages/pt/ai-suite/graph-assistant/quick-start.mdx b/website/src/pages/pt/ai-suite/graph-assistant/quick-start.mdx
new file mode 100644
index 000000000000..13f8478b8d2b
--- /dev/null
+++ b/website/src/pages/pt/ai-suite/graph-assistant/quick-start.mdx
@@ -0,0 +1,44 @@
+---
+title: Quick Start
+---
+
+> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime.
+
+This guide provides step-by-step instructions for getting started with Graph Assistant quickly.
+
+## Step-by Step
+
+### Step 1. Create an Account
+
+Go to: [Graph Assistant](https://thegraph.com/graph-assistant)
+
+- Click Sign Up (or Log In if you already have an account).
+- Use your Google, GitHub, X, email or wallet credentials to log in.
+- No additional setup is required.
+
+### Step 2. Open the Assistant Chat
+
+After logging in:
+
+- You'll see Graph Assistant's interface.
+- At the bottom of the page, you will find a chat input bar. This is where you will interact with the Assistant.
+
+### Step 3: Ask Your First Question
+
+> [!IMPORTANT] All users can process 10 free queries per user per hour.
+
+In the input bar, type a natural-language query (everyday language).
+
+Example:
+
+```yaml
+Show me the 24-hour trading volume of XYZ token on Ethereum
+```
+
+> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the AI interface. Do not share sensitive, personal, or private information.
+
+The Assistant will:
+
+- Digest your question
+- Fetch onchain data using Subgraphs or the Token API
+- Return a clean, formatted response with the data you need
diff --git a/website/src/pages/pt/ai-suite/subgraph-mcp/_meta.js b/website/src/pages/pt/ai-suite/subgraph-mcp/_meta.js
new file mode 100644
index 000000000000..6f527b4e53e4
--- /dev/null
+++ b/website/src/pages/pt/ai-suite/subgraph-mcp/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  introduction: '',
+  claude: '',
+  cline: '',
+  cursor: '',
+}
diff --git a/website/src/pages/pt/ai-suite/subgraph-mcp/claude.mdx b/website/src/pages/pt/ai-suite/subgraph-mcp/claude.mdx
new file mode 100644
index 000000000000..ff3caa4e3e7f
--- /dev/null
+++ b/website/src/pages/pt/ai-suite/subgraph-mcp/claude.mdx
@@ -0,0 +1,169 @@
+---
+title: Claude Desktop
+---
+
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data via natural language conversations with Claude.
+
+## Prerequisites
+
+- [Node.js](https://nodejs.org/en) installed and available in your path
+- [Claude Desktop](https://claude.ai/download) installed (latest version)
+- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
+
+## Installation Options
+
+### Option 1: Using npx (Recommended)
+
+#### Configuration Steps using npx
+
+#### 1. Open Configuration File
+
+Navigate to your `claude_desktop_config.json` file:
+
+> **Settings** > **Developer** > **Edit Config**
+
+- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
+- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
+- Linux: `.config/Claude/claude_desktop_config.json`
+
+#### 2. Add Configuration
+
+Paste the following settings into your config file:
+
+```json
+{
+  "mcpServers": {
+    "subgraph": {
+      "command": "npx",
+      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
+      "env": {
+        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
+      }
+    }
+  }
+}
+```
+
+#### 3. Add Your Gateway API Key
+
+Replace `GATEWAY_API_KEY` with your API key from [Subgraph Studio](https://thegraph.com/studio/).
+
+#### 4. Save and Restart
+
+Once you've entered your Gateway API key into your settings, save the file and restart Claude Desktop.
+
+### Option 2: Building from Source
+
+#### Requirements
+
+- Rust (latest stable version recommended: 1.75+)
+  ```bash
+  curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
+  ```
+  Follow the on-screen instructions. For other platforms, see the [official Rust installation guide](https://www.rust-lang.org/tools/install).
+
+#### Installation Steps
+
+1. **Clone and Build the Repository**
+
+   ```bash
+   git clone git@github.com:graphops/subgraph-mcp.git
+   cd subgraph-mcp
+   cargo build --release
+   ```
+
+2. **Find the Command Path**
+
+   After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory.
+   - Navigate to your `subgraph-mcp` directory in terminal
+   - Run `pwd` to get the full path
+   - Combine the output with `/target/release/subgraph-mcp`
+
+3. **Configure Claude Desktop**
+
+   Open your `claude_desktop_config.json` file as described above and add:
+
+   ```json
+   {
+     "mcpServers": {
+       "subgraph": {
+         "command": "/path/to/your/subgraph-mcp/target/release/subgraph-mcp",
+         "env": {
+           "GATEWAY_API_KEY": "your-api-key-here"
+         }
+       }
+     }
+   }
+   ```
+
+   Replace `/path/to/your/subgraph-mcp/target/release/subgraph-mcp` with the actual path to the compiled binary.
+
+## Using The Graph Resource in Claude
+
+After configuring Claude Desktop:
+
+1. Restart Claude Desktop
+2. Start a new conversation
+3. Click on the context menu (top right)
+4. Add "Subgraph Server Instructions" as a resource by adding `graphql://subgraph` to your chat context
+
+> **Important**: Claude Desktop may not automatically utilize the Subgraph MCP. You must manually add "Subgraph Server Instructions" resource to your chat context for each conversation where you want to use it.
+
+## Troubleshooting
+
+To enable logs for the MCP when using the npx option, add the `--verbose true` option to your args array.
+
+## Available Subgraph Tools and Usage
+
+The Subgraph MCP provides several tools for interacting with Subgraphs:
+
+### Schema Retrieval Tools
+
+- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
+- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
+- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
+
+### Query Execution Tools
+
+- **Execute query by deployment ID/IPFS hash**: Run GraphQL queries against specific, immutable deployments
+- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
+
+### Discovery Tools
+
+- **Search subgraphs by keyword**: Find subgraphs by keyword in their display names, ordered by signal
+- **Get deployment 30-day query counts**: Get aggregate query count over the last 30 days for multiple subgraph deployments
+- **Get top Subgraph deployments for a contract**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain, ordered by query fees
+
+## Key Identifier Types
+
+- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a subgraph. Use `execute_query_by_subgraph_id` or `get_schema_by_subgraph_id`.
+- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment. Use `execute_query_by_deployment_id` or `get_schema_by_deployment_id`.
+- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific, immutable deployment. Use `execute_query_by_deployment_id` (the gateway treats it like a deployment ID for querying) or `get_schema_by_ipfs_hash`.
+
+## Benefits of Natural Language Queries
+
+One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Claude will:
+
+1. Understand your goal (lookup, find Subgraphs, query, get schema)
+2. Find relevant deployments if needed
+3. Fetch and interpret the Subgraph schema
+4. Convert your question into an appropriate GraphQL query
+5. Execute the query and present the results in a readable format
+
+### Example Natural Language Queries
+
+```
+What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
+```
+
+```
+Which tokens have the highest market cap in this Subgraph?
+```
+
+```
+Show me the most recent 5 swaps for the USDC/ETH pair
+```
+
+```
+Find the top subgraphs for contract 0x1f98431c8ad98523631ae4a59f267346ea31f984 on arbitrum-one
+```
diff --git a/website/src/pages/pt/ai-suite/subgraph-mcp/cline.mdx b/website/src/pages/pt/ai-suite/subgraph-mcp/cline.mdx
new file mode 100644
index 000000000000..eb8044bfe991
--- /dev/null
+++ b/website/src/pages/pt/ai-suite/subgraph-mcp/cline.mdx
@@ -0,0 +1,99 @@
+---
+title: Cline
+---
+
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data through natural language conversations with Cline.
+
+## Prerequisites
+
+- [Cline](https://cline.bot/) installed (latest version)
+- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
+
+## Configuration Steps
+
+### 1. Open Configuration File
+
+Create or edit your `cline_mcp_settings.json` file.
+
+> **MCP Servers** > **Installed** > **Configure MCP Servers**
+
+### 2. Add Configuration
+
+```json
+{
+  "mcpServers": {
+    "subgraph": {
+      "command": "npx",
+      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
+      "env": {
+        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
+      }
+    }
+  }
+}
+```
+
+### 3. Add Your API Key
+
+Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
+
+## Using The Graph Resource in Cline
+
+After configuring Cline:
+
+1. Restart Cline
+2. Start a new conversation
+3. Enable the Subgraph MCP from the context menu
+4. Add "Subgraph Server Instructions" as a resource to your chat context
+
+## Available Tools and Usage
+
+The Subgraph MCP provides several tools for interacting with Subgraphs:
+
+### Schema Retrieval Tools
+
+- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
+- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
+- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
+
+### Query Execution Tools
+
+- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
+- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
+
+### Discovery Tools
+
+- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
+
+## Natural Language Queries
+
+One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cline will:
+
+1. Understand your goal (lookup, find Subgraphs, query, get schema)
+2. Find relevant deployments if needed
+3. Fetch and interpret the Subgraph schema
+4. Convert your question into an appropriate GraphQL query
+5. Execute the query and present the results in a readable format
+
+### Example Natural Language Queries
+
+```
+What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
+```
+
+```
+Which tokens have the highest market cap in this Subgraph?
+```
+
+```
+Show me the most recent 5 swaps for the USDC/ETH pair
+```
+
+## Key Identifier Types
+
+When working with Subgraphs, you'll encounter different types of identifiers:
+
+- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
+- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
+- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/pt/ai-suite/subgraph-mcp/cursor.mdx b/website/src/pages/pt/ai-suite/subgraph-mcp/cursor.mdx
new file mode 100644
index 000000000000..6291caf4b06b
--- /dev/null
+++ b/website/src/pages/pt/ai-suite/subgraph-mcp/cursor.mdx
@@ -0,0 +1,94 @@
+---
+title: Cursor
+---
+
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data through natural language conversations with Cline.
+
+## Prerequisites
+
+- [Cursor](https://www.cursor.com/) installed (latest version)
+- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
+
+## Configuration Steps
+
+### 1. Open Configuration File
+
+Create or edit your `~/.cursor/mcp.json` file.
+
+> **Cursor Settings** > **MCP** > **Add new global MCP Server**
+
+### 2. Add Configuration
+
+```json
+{
+  "mcpServers": {
+    "subgraph": {
+      "command": "npx",
+      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
+      "env": {
+        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
+      }
+    }
+  }
+}
+```
+
+### 3. Add Your API Key
+
+Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
+
+### 4. Restart Cursor
+
+Restart Cursor, and start a new chat.
+
+## Available Subgraph Tools and Usage
+
+The Subgraph MCP provides several tools for interacting with Subgraphs:
+
+### Schema Retrieval Tools
+
+- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
+- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
+- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
+
+### Query Execution Tools
+
+- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
+- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
+
+### Discovery Tools
+
+- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
+
+## Benefits of Natural Language Queries
+
+One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cursor will:
+
+1. Understand your goal (lookup, find Subgraphs, query, get schema)
+2. Find relevant deployments if needed
+3. Fetch and interpret the Subgraph schema
+4. Convert your question into an appropriate GraphQL query
+5. Execute the query and present the results in a readable format
+
+### Example Natural Language Queries
+
+```
+What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
+```
+
+```
+Which tokens have the highest market cap in this Subgraph?
+```
+
+```
+Show me the most recent 5 swaps for the USDC/ETH pair
+```
+
+## Key Identifier Types
+
+When working with Subgraphs, you'll encounter different types of identifiers:
+
+- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
+- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
+- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/pt/ai-suite/subgraph-mcp/introduction.mdx b/website/src/pages/pt/ai-suite/subgraph-mcp/introduction.mdx
new file mode 100644
index 000000000000..da1272cf9a36
--- /dev/null
+++ b/website/src/pages/pt/ai-suite/subgraph-mcp/introduction.mdx
@@ -0,0 +1,22 @@
+---
+title: Subgraph MCP Introduction
+sidebarTitle: 'Introduction'
+---
+
+Subgraph MCP server is an open-source implementation of [Anthropic's Model Context Protocol](https://modelcontextprotocol.io/introduction).
+
+It presents The Graph's Subgraph data through a set of MCP tools that any MCP-compatible client can call. With these tools, clients can search for relevant Subgraphs, inspect GraphQL schemas, and run queries against specific deployments on The Graph Network all within a single, standardized interface.
+
+The server itself does not hold a language model. Instead, it translates incoming MCP requests into Subgraph queries and returns the structured results, allowing the client's LLM to transform a natural-language prompt into actionable blockchain data.
+
+Think of it as a USB-C hub: it standardizes the plug-and-play connection between AI agents and The Graph's Subgraph ecosystem.
+
+## What You Can Do
+
+- Access GraphQL schemas for any Subgraph on The Graph Network
+- Run GraphQL queries on any Subgraph deployment
+- Discover top Subgraph deployments by keyword or contract address
+- Retrieve 30-day query volumes for Subgraph deployments
+- Ask questions about Subgraph data without writing GraphQL manually
+
+The Subgraph MCP server allows smooth integration with [Claude](/ai-suite/subgraph-mcp/claude/), [Cline](/ai-suite/subgraph-mcp/cline/), or [Cursor](/ai-suite/subgraph-mcp/cursor/), making blockchain data queries with The Graph Network a conversational experience.
diff --git a/website/src/pages/pt/ai-suite/token-api-mcp/_meta.js b/website/src/pages/pt/ai-suite/token-api-mcp/_meta.js
new file mode 100644
index 000000000000..6f527b4e53e4
--- /dev/null
+++ b/website/src/pages/pt/ai-suite/token-api-mcp/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  introduction: '',
+  claude: '',
+  cline: '',
+  cursor: '',
+}
diff --git a/website/src/pages/pt/ai-suite/token-api-mcp/claude.mdx b/website/src/pages/pt/ai-suite/token-api-mcp/claude.mdx
new file mode 100644
index 000000000000..3e21f4d7e165
--- /dev/null
+++ b/website/src/pages/pt/ai-suite/token-api-mcp/claude.mdx
@@ -0,0 +1,58 @@
+---
+title: Using Claude Desktop to Access the Token API via MCP
+sidebarTitle: Claude Desktop
+---
+
+## Prerequisites
+
+- [Claude Desktop](https://claude.ai/download) installed.
+- A [JWT token](/token-api/quick-start) from [The Graph Market](https://thegraph.market/).
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path.
+- The `@pinax/mcp` package requires Node 18+, as it relies on built-in `fetch()` / `Headers`, which are not available in Node 17 or older. You may need to specify an exact path to an up-to-date Node version, or uninstall previous versions of Node to ensure `@pinax/mcp` uses the correct version.
+
+![Screenshot of Claude Desktop's settings panel showing the MCP server configuration option.](/img/claude-preview-token-api.png)
+
+## Configuration
+
+Create or edit your `claude_desktop_config.json` file.
+
+> **Settings** > **Developer** > **Edit Config**
+
+- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
+- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
+- Linux: `.config/Claude/claude_desktop_config.json`
+
+```json label="claude_desktop_config.json"
+{
+  "mcpServers": {
+    "token-api": {
+      "command": "npx",
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
+      "env": {
+        "ACCESS_TOKEN": "<https://thegraph.market JWT Access Token>"
+      }
+    }
+  }
+}
+```
+
+## Troubleshooting
+
+To enable logs for the MCP, use the `--verbose true` option.
+
+### ENOENT
+
+![Error dialog in Claude Desktop showing 'ENOENT' system error, indicating the npx/bunx command wasn't found in the system path.](/img/claude-ENOENT.png)
+
+Try to use the full path of the command instead:
+
+- Run `which npx` or `which bunx` to get the path of the command.
+- Replace `npx` or `bunx` in the configuration file with the full path (e.g. `/home/user/bin/bunx`).
+
+### Server disconnected
+
+![Connection error notification in Claude Desktop displaying 'Server disconnected' message.](/img/claude-server-disconnect.png)
+
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
+
+> You can always have a look at the full logs under `Claude/logs/mcp.log` and `Claude/logs/mcp-server-pinax.log` for more details.
diff --git a/website/src/pages/pt/ai-suite/token-api-mcp/cline.mdx b/website/src/pages/pt/ai-suite/token-api-mcp/cline.mdx
new file mode 100644
index 000000000000..e885d21366cd
--- /dev/null
+++ b/website/src/pages/pt/ai-suite/token-api-mcp/cline.mdx
@@ -0,0 +1,52 @@
+---
+title: Using Cline to Access the Token API via MCP
+sidebarTitle: Cline
+---
+
+## Prerequisites
+
+- [Cline](https://cline.bot/) installed.
+- A [JWT token](/token-api/quick-start) from [The Graph Market](https://thegraph.market/).
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path.
+- The `@pinax/mcp` package requires Node 18+, as it relies on built-in `fetch()` / `Headers`, which are not available in Node 17 or older. You may need to specify an exact path to an up-to-date Node version, or uninstall previous versions of Node to ensure `@pinax/mcp` uses the correct version.
+
+![Screenshot of Cline's MCP server configuration interface displaying the JSON settings file with mcp-pinax server details visible.](/img/cline-preview-token-api.png)
+
+## Configuration
+
+Create or edit your `cline_mcp_settings.json` file.
+
+> **MCP Servers** > **Installed** > **Configure MCP Servers**
+
+```json label="cline_mcp_settings.json"
+{
+  "mcpServers": {
+    "mcp-pinax": {
+      "command": "npx",
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
+      "env": {
+        "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
+      }
+    }
+  }
+}
+```
+
+## Troubleshooting
+
+To enable logs for the MCP, use the `--verbose true` option.
+
+### ENOENT
+
+![Cline error dialog showing 'ENOENT' system alert.](/img/cline-error.png)
+
+Try to use the full path of the command instead:
+
+- Run `which npx` or `which bunx` to get the path of the command.
+- Replace `npx` or `bunx` in the configuration file with the full path (e.g. `/home/user/bin/bunx`).
+
+### Server disconnected
+
+![Cline connection error notification displaying server disconnection warning.](/img/cline-missing-variables.png)
+
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/pt/ai-suite/token-api-mcp/cursor.mdx b/website/src/pages/pt/ai-suite/token-api-mcp/cursor.mdx
new file mode 100644
index 000000000000..68fe2fdb201c
--- /dev/null
+++ b/website/src/pages/pt/ai-suite/token-api-mcp/cursor.mdx
@@ -0,0 +1,50 @@
+---
+title: Using Cursor to Access the Token API via MCP
+sidebarTitle: Cursor
+---
+
+## Prerequisites
+
+- [Cursor](https://www.cursor.com/) installed.
+- A [JWT token](/token-api/quick-start) from [The Graph Market](https://thegraph.market/).
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path.
+- The `@pinax/mcp` package requires Node 18+, as it relies on built-in `fetch()` / `Headers`, which are not available in Node 17 or older. You may need to specify an exact path to an up-to-date Node version, or uninstall previous versions of Node to ensure `@pinax/mcp` uses the correct version.
+
+![Screenshot of Cursor's MCP configuration panel.](/img/cursor-preview-token-api.png)
+
+## Configuration
+
+Create or edit your `~/.cursor/mcp.json` file.
+
+> **Cursor Settings** > **MCP** > **Add new global MCP Server**
+
+```json label="mcp.json"
+{
+  "mcpServers": {
+    "mcp-pinax": {
+      "command": "npx",
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
+      "env": {
+        "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
+      }
+    }
+  }
+}
+```
+
+## Troubleshooting
+
+![Cursor IDE error notification that reads, "Failed to create client"](/img/cursor-error.png)
+
+To enable logs for the MCP, use the `--verbose true` option.
+
+### ENOENT
+
+Try to use the full path of the command instead:
+
+- Run `which npx` or `which bunx` to get the path of the command.
+- Replace `npx` or `bunx` in the configuration file with the full path (e.g. `/home/user/bin/bunx`).
+
+### Server disconnected
+
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/pt/ai-suite/token-api-mcp/introduction.mdx b/website/src/pages/pt/ai-suite/token-api-mcp/introduction.mdx
new file mode 100644
index 000000000000..b61ad0a1c485
--- /dev/null
+++ b/website/src/pages/pt/ai-suite/token-api-mcp/introduction.mdx
@@ -0,0 +1,23 @@
+---
+title: Token API MCP Introduction
+sidebarTitle: 'Introduction'
+---
+
+Token API MCP server is an open-source implementation of [Anthropic's Model Context Protocol](https://modelcontextprotocol.io/introduction).
+
+This MCP server makes on-chain token data, including metadata, balances, transfers, and holder statistics, accessible through a set of MCP tools. Any compatible client can use these tools to fetch and analyze token information through a standardized interface. It connects to The Graph's hosted Token API database, enabling AI assistants to query real-time blockchain data using natural language requests that get translated into optimized SQL queries.
+
+The server itself does not host any language model. It simply converts MCP calls into data look-ups and returns structured results, letting the client's own LLM incorporate the results.
+
+Think of it as a USB-C hub: it standardizes the plug-and-play connection between AI agents and The Graph's Token API data.
+
+## What You Can Do
+
+- Retrieve token metadata including name, symbol, decimals, total supply, and contract address
+- Get token balances for any wallet address holding a supported ERC-20 token
+- Fetch token transfer activity including sender, receiver, amount, and timestamp
+- Identify top holders and analyze token distribution
+- Ask natural language questions about token data without writing smart contract calls
+- Access historical transfer data to analyze token movement over time
+
+The Token MCP server provides [Claude](/ai-suite/token-api-mcp/claude/), [Cline](/ai-suite/token-api-mcp/cline/), and [Cursor](/ai-suite/token-api-mcp/cursor/) with direct, conversational access to onchain token data.
diff --git a/website/src/pages/pt/resources/_meta.js b/website/src/pages/pt/resources/_meta.js
index aa8e2d0ec6a8..38c56cf56c43 100644
--- a/website/src/pages/pt/resources/_meta.js
+++ b/website/src/pages/pt/resources/_meta.js
@@ -7,5 +7,4 @@ export default {
   roles: titles.roles ?? '',
   'migration-guides': titles['migration-guides'] ?? '',
   'subgraph-studio-faq': '',
-  'claude-mcp': '',
 }
diff --git a/website/src/pages/pt/resources/claude-mcp.mdx b/website/src/pages/pt/resources/claude-mcp.mdx
deleted file mode 100644
index 44ed075cffda..000000000000
--- a/website/src/pages/pt/resources/claude-mcp.mdx
+++ /dev/null
@@ -1,122 +0,0 @@
----
-title: Claude MCP
----
-
-This guide walks you through configuring Claude Desktop to use The Graph ecosystem's [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) resources: Token API and Subgraph. These integrations allow you to interact with blockchain data through natural language conversations with Claude.
-
-## What You Can Do
-
-With these integrations, you can:
-
-- **Token API**: Access token and wallet information across multiple blockchains
-- **Subgraph**: Find relevant Subgraphs for specific keywords and contracts, explore Subgraph schemas, and execute GraphQL queries
-
-## Prerequisites
-
-- [Node.js](https://nodejs.org/en/download/) installed and available in your path
-- [Claude Desktop](https://claude.ai/download) installed
-- API keys:
-  - Token API key from [The Graph Market](https://thegraph.market/)
-  - Gateway API key from [Subgraph Studio](https://thegraph.com/studio/apikeys/)
-
-## Configuration Steps
-
-### 1. Open Configuration File
-
-Navigate to your `claude_desktop_config.json` file:
-
-> **Claude Desktop** > **Settings** > **Developer** > **Edit Config**
-
-Paths by operating system:
-
-- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
-- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
-- Linux: `.config/Claude/claude_desktop_config.json`
-
-### 2. Add Configuration
-
-Replace the contents of the existing config file with:
-
-```json
-{
-  "mcpServers": {
-    "token-api": {
-      "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
-      "env": {
-        "ACCESS_TOKEN": "ACCESS_TOKEN"
-      }
-    },
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-### 3. Add Your API Keys
-
-Replace:
-
-- `ACCESS_TOKEN` with your Token API key from [The Graph Market](https://thegraph.market/)
-- `GATEWAY_API_KEY` with your Gateway API key from [Subgraph Studio](https://thegraph.com/studio/apikeys/)
-
-### 4. Save and Restart
-
-- Save the configuration file
-- Restart Claude Desktop
-
-### 5. Add The Graph Resources in Claude
-
-After configuration:
-
-1. Start a new conversation in Claude Desktop
-2. Click on the context menu (top right)
-3. Add "Subgraph Server Instructions" as a resource by entering `graphql://subgraph` for Subgraph MCP
-
-> **Important**: You must manually add The Graph resources to your chat context for each conversation where you want to use them.
-
-### 6. Run Queries
-
-Here are some example queries you can try after setting up the resources:
-
-### Subgraph Queries
-
-```
-What are the top pools in Uniswap?
-```
-
-```
-Who are the top Delegators of The Graph Protocol?
-```
-
-```
-Please make a bar chart for the number of active loans in Compound for the last 7 days
-```
-
-### Token API Queries
-
-```
-Show me the current price of ETH
-```
-
-```
-What are the top tokens by market cap on Ethereum?
-```
-
-```
-Analyze this wallet address: 0x...
-```
-
-## Troubleshooting
-
-If you encounter issues:
-
-1. **Verify Node.js Installation**: Ensure Node.js is correctly installed by running `node -v` in your terminal
-2. **Check API Keys**: Verify that your API keys are correctly entered in the configuration file
-3. **Enable Verbose Logging**: Add `--verbose true` to the args array in your configuration to see detailed logs
-4. **Restart Claude Desktop**: After making changes to the configuration, always restart Claude Desktop
diff --git a/website/src/pages/pt/subgraphs/_meta.js b/website/src/pages/pt/subgraphs/_meta.js
index 4365293ffc72..45841d5f3355 100644
--- a/website/src/pages/pt/subgraphs/_meta.js
+++ b/website/src/pages/pt/subgraphs/_meta.js
@@ -6,7 +6,6 @@ export default {
   querying: titles.querying ?? '',
   developing: titles.developing ?? '',
   billing: '',
-  mcp: titles.mcp ?? '',
   guides: titles.guides,
   'best-practices': titles['best-practices'],
   'fair-use-policy': '',
diff --git a/website/src/pages/pt/subgraphs/mcp/_meta.js b/website/src/pages/pt/subgraphs/mcp/_meta.js
deleted file mode 100644
index 8630d4da27b3..000000000000
--- a/website/src/pages/pt/subgraphs/mcp/_meta.js
+++ /dev/null
@@ -1,5 +0,0 @@
-export default {
-  claude: '',
-  cline: '',
-  cursor: '',
-}
diff --git a/website/src/pages/pt/subgraphs/mcp/claude.mdx b/website/src/pages/pt/subgraphs/mcp/claude.mdx
deleted file mode 100644
index 027b272cb942..000000000000
--- a/website/src/pages/pt/subgraphs/mcp/claude.mdx
+++ /dev/null
@@ -1,179 +0,0 @@
----
-title: Claude Desktop
----
-
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Claude to interact directly with Subgraphs on The Graph Network. This integration allows you to find relevant Subgraphs for specific keywords and contracts, explore Subgraph schemas, and execute GraphQL queries—all through natural language conversations with Claude.
-
-## What You Can Do
-
-The Subgraph MCP integration enables you to:
-
-- Access the GraphQL schema for any Subgraph on The Graph Network
-- Execute GraphQL queries against any Subgraph deployment
-- Find top Subgraph deployments for a given keyword or contract address
-- Get 30-day query volume for Subgraph deployments
-- Ask natural language questions about Subgraph data without writing GraphQL queries manually
-
-## Prerequisites
-
-- [Node.js](https://nodejs.org/en) installed and available in your path
-- [Claude Desktop](https://claude.ai/download) installed (latest version)
-- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
-
-## Installation Options
-
-### Option 1: Using npx (Recommended)
-
-#### Configuration Steps using npx
-
-#### 1. Open Configuration File
-
-Navigate to your `claude_desktop_config.json` file:
-
-> **Settings** > **Developer** > **Edit Config**
-
-- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
-- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
-- Linux: `.config/Claude/claude_desktop_config.json`
-
-#### 2. Add Configuration
-
-Paste the following settings into your config file:
-
-```json
-{
-  "mcpServers": {
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-#### 3. Add Your Gateway API Key
-
-Replace `GATEWAY_API_KEY` with your API key from [Subgraph Studio](https://thegraph.com/studio/).
-
-#### 4. Save and Restart
-
-Once you've entered your Gateway API key into your settings, save the file and restart Claude Desktop.
-
-### Option 2: Building from Source
-
-#### Requirements
-
-- Rust (latest stable version recommended: 1.75+)
-  ```bash
-  curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
-  ```
-  Follow the on-screen instructions. For other platforms, see the [official Rust installation guide](https://www.rust-lang.org/tools/install).
-
-#### Installation Steps
-
-1. **Clone and Build the Repository**
-
-   ```bash
-   git clone git@github.com:graphops/subgraph-mcp.git
-   cd subgraph-mcp
-   cargo build --release
-   ```
-
-2. **Find the Command Path**
-
-   After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory.
-   - Navigate to your `subgraph-mcp` directory in terminal
-   - Run `pwd` to get the full path
-   - Combine the output with `/target/release/subgraph-mcp`
-
-3. **Configure Claude Desktop**
-
-   Open your `claude_desktop_config.json` file as described above and add:
-
-   ```json
-   {
-     "mcpServers": {
-       "subgraph": {
-         "command": "/path/to/your/subgraph-mcp/target/release/subgraph-mcp",
-         "env": {
-           "GATEWAY_API_KEY": "your-api-key-here"
-         }
-       }
-     }
-   }
-   ```
-
-   Replace `/path/to/your/subgraph-mcp/target/release/subgraph-mcp` with the actual path to the compiled binary.
-
-## Using The Graph Resource in Claude
-
-After configuring Claude Desktop:
-
-1. Restart Claude Desktop
-2. Start a new conversation
-3. Click on the context menu (top right)
-4. Add "Subgraph Server Instructions" as a resource by adding `graphql://subgraph` to your chat context
-
-> **Important**: Claude Desktop may not automatically utilize the Subgraph MCP. You must manually add "Subgraph Server Instructions" resource to your chat context for each conversation where you want to use it.
-
-## Troubleshooting
-
-To enable logs for the MCP when using the npx option, add the `--verbose true` option to your args array.
-
-## Available Subgraph Tools and Usage
-
-The Subgraph MCP provides several tools for interacting with Subgraphs:
-
-### Schema Retrieval Tools
-
-- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
-- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
-- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
-
-### Query Execution Tools
-
-- **Execute query by deployment ID/IPFS hash**: Run GraphQL queries against specific, immutable deployments
-- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
-
-### Discovery Tools
-
-- **Search subgraphs by keyword**: Find subgraphs by keyword in their display names, ordered by signal
-- **Get deployment 30-day query counts**: Get aggregate query count over the last 30 days for multiple subgraph deployments
-- **Get top Subgraph deployments for a contract**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain, ordered by query fees
-
-## Key Identifier Types
-
-- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a subgraph. Use `execute_query_by_subgraph_id` or `get_schema_by_subgraph_id`.
-- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment. Use `execute_query_by_deployment_id` or `get_schema_by_deployment_id`.
-- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific, immutable deployment. Use `execute_query_by_deployment_id` (the gateway treats it like a deployment ID for querying) or `get_schema_by_ipfs_hash`.
-
-## Benefits of Natural Language Queries
-
-One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Claude will:
-
-1. Understand your goal (lookup, find Subgraphs, query, get schema)
-2. Find relevant deployments if needed
-3. Fetch and interpret the Subgraph schema
-4. Convert your question into an appropriate GraphQL query
-5. Execute the query and present the results in a readable format
-
-### Example Natural Language Queries
-
-```
-What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
-```
-
-```
-Which tokens have the highest market cap in this Subgraph?
-```
-
-```
-Show me the most recent 5 swaps for the USDC/ETH pair
-```
-
-```
-Find the top subgraphs for contract 0x1f98431c8ad98523631ae4a59f267346ea31f984 on arbitrum-one
-```
diff --git a/website/src/pages/pt/subgraphs/mcp/cline.mdx b/website/src/pages/pt/subgraphs/mcp/cline.mdx
deleted file mode 100644
index 156221d9a127..000000000000
--- a/website/src/pages/pt/subgraphs/mcp/cline.mdx
+++ /dev/null
@@ -1,99 +0,0 @@
----
-title: Cline
----
-
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Cline to interact directly with Subgraphs on The Graph Network. This integration allows you to explore Subgraph schemas, execute GraphQL queries, and find relevant Subgraphs for specific contracts—all through natural language conversations with Cline.
-
-## Prerequisites
-
-- [Cline](https://cline.bot/) installed (latest version)
-- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
-
-## Configuration Steps
-
-### 1. Open Configuration File
-
-Create or edit your `cline_mcp_settings.json` file.
-
-> **MCP Servers** > **Installed** > **Configure MCP Servers**
-
-### 2. Add Configuration
-
-```json
-{
-  "mcpServers": {
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-### 3. Add Your API Key
-
-Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
-
-## Using The Graph Resource in Cline
-
-After configuring Cline:
-
-1. Restart Cline
-2. Start a new conversation
-3. Enable the Subgraph MCP from the context menu
-4. Add "Subgraph Server Instructions" as a resource to your chat context
-
-## Available Tools and Usage
-
-The Subgraph MCP provides several tools for interacting with Subgraphs:
-
-### Schema Retrieval Tools
-
-- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
-- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
-- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
-
-### Query Execution Tools
-
-- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
-- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
-
-### Discovery Tools
-
-- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
-
-## Natural Language Queries
-
-One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cline will:
-
-1. Understand your goal (lookup, find Subgraphs, query, get schema)
-2. Find relevant deployments if needed
-3. Fetch and interpret the Subgraph schema
-4. Convert your question into an appropriate GraphQL query
-5. Execute the query and present the results in a readable format
-
-### Example Natural Language Queries
-
-```
-What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
-```
-
-```
-Which tokens have the highest market cap in this Subgraph?
-```
-
-```
-Show me the most recent 5 swaps for the USDC/ETH pair
-```
-
-## Key Identifier Types
-
-When working with Subgraphs, you'll encounter different types of identifiers:
-
-- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
-- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
-- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/pt/subgraphs/mcp/cursor.mdx b/website/src/pages/pt/subgraphs/mcp/cursor.mdx
deleted file mode 100644
index 298f43ece048..000000000000
--- a/website/src/pages/pt/subgraphs/mcp/cursor.mdx
+++ /dev/null
@@ -1,94 +0,0 @@
----
-title: Cursor
----
-
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Cursor to interact directly with Subgraphs on The Graph Network. This integration allows you to explore Subgraph schemas, execute GraphQL queries, and find relevant Subgraphs for specific contracts—all through natural language conversations with Cursor.
-
-## Prerequisites
-
-- [Cursor](https://www.cursor.com/) installed (latest version)
-- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
-
-## Configuration Steps
-
-### 1. Open Configuration File
-
-Create or edit your `~/.cursor/mcp.json` file.
-
-> **Cursor Settings** > **MCP** > **Add new global MCP Server**
-
-### 2. Add Configuration
-
-```json
-{
-  "mcpServers": {
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-### 3. Add Your API Key
-
-Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
-
-### 4. Restart Cursor
-
-Restart Cursor, and start a new chat.
-
-## Available Subgraph Tools and Usage
-
-The Subgraph MCP provides several tools for interacting with Subgraphs:
-
-### Schema Retrieval Tools
-
-- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
-- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
-- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
-
-### Query Execution Tools
-
-- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
-- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
-
-### Discovery Tools
-
-- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
-
-## Benefits of Natural Language Queries
-
-One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cursor will:
-
-1. Understand your goal (lookup, find Subgraphs, query, get schema)
-2. Find relevant deployments if needed
-3. Fetch and interpret the Subgraph schema
-4. Convert your question into an appropriate GraphQL query
-5. Execute the query and present the results in a readable format
-
-### Example Natural Language Queries
-
-```
-What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
-```
-
-```
-Which tokens have the highest market cap in this Subgraph?
-```
-
-```
-Show me the most recent 5 swaps for the USDC/ETH pair
-```
-
-## Key Identifier Types
-
-When working with Subgraphs, you'll encounter different types of identifiers:
-
-- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
-- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
-- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/pt/substreams/_meta.js b/website/src/pages/pt/substreams/_meta.js
index a8ee04618eae..658bb8c213c6 100644
--- a/website/src/pages/pt/substreams/_meta.js
+++ b/website/src/pages/pt/substreams/_meta.js
@@ -5,5 +5,4 @@ export default {
   introduction: '',
   developing: titles.developing ?? '',
   publishing: '',
-  sps: titles.sps ?? '',
 }
diff --git a/website/src/pages/pt/token-api/_meta-titles.json b/website/src/pages/pt/token-api/_meta-titles.json
index 8f6b7851ce8a..c00f5979dc95 100644
--- a/website/src/pages/pt/token-api/_meta-titles.json
+++ b/website/src/pages/pt/token-api/_meta-titles.json
@@ -1,6 +1,7 @@
 {
   "mcp": "MCP",
   "evm": "EVM Endpoints",
+  "svm": "SVM Endpoints",
   "monitoring": "Monitoring Endpoints",
   "faq": "Perguntas Frequentes"
 }
diff --git a/website/src/pages/pt/token-api/_meta.js b/website/src/pages/pt/token-api/_meta.js
index f67576d7f612..fb7f7334ea0c 100644
--- a/website/src/pages/pt/token-api/_meta.js
+++ b/website/src/pages/pt/token-api/_meta.js
@@ -2,8 +2,8 @@ import titles from './_meta-titles.json'
 
 export default {
   'quick-start': '',
-  mcp: titles.mcp ?? '',
   evm: titles.evm ?? '',
+  svm: titles.svm ?? '',
   monitoring: titles.monitoring ?? '',
   faq: '',
 }
diff --git a/website/src/pages/pt/token-api/mcp/_meta.js b/website/src/pages/pt/token-api/mcp/_meta.js
deleted file mode 100644
index 8630d4da27b3..000000000000
--- a/website/src/pages/pt/token-api/mcp/_meta.js
+++ /dev/null
@@ -1,5 +0,0 @@
-export default {
-  claude: '',
-  cline: '',
-  cursor: '',
-}
diff --git a/website/src/pages/pt/token-api/mcp/claude.mdx b/website/src/pages/pt/token-api/mcp/claude.mdx
deleted file mode 100644
index d515884fb9a3..000000000000
--- a/website/src/pages/pt/token-api/mcp/claude.mdx
+++ /dev/null
@@ -1,58 +0,0 @@
----
-title: Using Claude Desktop to Access the Token API via MCP
-sidebarTitle: Claude Desktop
----
-
-## Pré-requisitos
-
-- [Claude Desktop](https://claude.ai/download) installed.
-- A [JWT token](/token-api/quick-start) from [The Graph Market](https://thegraph.market/).
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path.
-- The `@pinax/mcp` package requires Node 18+, as it relies on built-in `fetch()` / `Headers`, which are not available in Node 17 or older. You may need to specify an exact path to an up-to-date Node version, or uninstall previous versions of Node to ensure `@pinax/mcp` uses the correct version.
-
-![Screenshot of Claude Desktop's settings panel showing the MCP server configuration option.](/img/claude-preview-token-api.png)
-
-## Configuração
-
-Create or edit your `claude_desktop_config.json` file.
-
-> **Settings** > **Developer** > **Edit Config**
-
-- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
-- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
-- Linux: `.config/Claude/claude_desktop_config.json`
-
-```json label="claude_desktop_config.json"
-{
-  "mcpServers": {
-    "token-api": {
-      "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
-      "env": {
-        "ACCESS_TOKEN": "<https://thegraph.market JWT Access Token>"
-      }
-    }
-  }
-}
-```
-
-## Troubleshooting
-
-To enable logs for the MCP, use the `--verbose true` option.
-
-### ENOENT
-
-![Error dialog in Claude Desktop showing 'ENOENT' system error, indicating the npx/bunx command wasn't found in the system path.](/img/claude-ENOENT.png)
-
-Try to use the full path of the command instead:
-
-- Run `which npx` or `which bunx` to get the path of the command.
-- Replace `npx` or `bunx` in the configuration file with the full path (e.g. `/home/user/bin/bunx`).
-
-### Server disconnected
-
-![Connection error notification in Claude Desktop displaying 'Server disconnected' message.](/img/claude-server-disconnect.png)
-
-Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
-
-> You can always have a look at the full logs under `Claude/logs/mcp.log` and `Claude/logs/mcp-server-pinax.log` for more details.
diff --git a/website/src/pages/pt/token-api/mcp/cline.mdx b/website/src/pages/pt/token-api/mcp/cline.mdx
deleted file mode 100644
index c782519bc6ed..000000000000
--- a/website/src/pages/pt/token-api/mcp/cline.mdx
+++ /dev/null
@@ -1,52 +0,0 @@
----
-title: Using Cline to Access the Token API via MCP
-sidebarTitle: Cline
----
-
-## Pré-requisitos
-
-- [Cline](https://cline.bot/) installed.
-- A [JWT token](/token-api/quick-start) from [The Graph Market](https://thegraph.market/).
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path.
-- The `@pinax/mcp` package requires Node 18+, as it relies on built-in `fetch()` / `Headers`, which are not available in Node 17 or older. You may need to specify an exact path to an up-to-date Node version, or uninstall previous versions of Node to ensure `@pinax/mcp` uses the correct version.
-
-![Screenshot of Cline's MCP server configuration interface displaying the JSON settings file with mcp-pinax server details visible.](/img/cline-preview-token-api.png)
-
-## Configuração
-
-Create or edit your `cline_mcp_settings.json` file.
-
-> **MCP Servers** > **Installed** > **Configure MCP Servers**
-
-```json label="cline_mcp_settings.json"
-{
-  "mcpServers": {
-    "mcp-pinax": {
-      "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
-      "env": {
-        "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
-      }
-    }
-  }
-}
-```
-
-## Troubleshooting
-
-To enable logs for the MCP, use the `--verbose true` option.
-
-### ENOENT
-
-![Cline error dialog showing 'ENOENT' system alert.](/img/cline-error.png)
-
-Try to use the full path of the command instead:
-
-- Run `which npx` or `which bunx` to get the path of the command.
-- Replace `npx` or `bunx` in the configuration file with the full path (e.g. `/home/user/bin/bunx`).
-
-### Server disconnected
-
-![Cline connection error notification displaying server disconnection warning.](/img/cline-missing-variables.png)
-
-Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/pt/token-api/mcp/cursor.mdx b/website/src/pages/pt/token-api/mcp/cursor.mdx
deleted file mode 100644
index 9ce73d91a9eb..000000000000
--- a/website/src/pages/pt/token-api/mcp/cursor.mdx
+++ /dev/null
@@ -1,50 +0,0 @@
----
-title: Using Cursor to Access the Token API via MCP
-sidebarTitle: Cursor
----
-
-## Pré-requisitos
-
-- [Cursor](https://www.cursor.com/) installed.
-- A [JWT token](/token-api/quick-start) from [The Graph Market](https://thegraph.market/).
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path.
-- The `@pinax/mcp` package requires Node 18+, as it relies on built-in `fetch()` / `Headers`, which are not available in Node 17 or older. You may need to specify an exact path to an up-to-date Node version, or uninstall previous versions of Node to ensure `@pinax/mcp` uses the correct version.
-
-![Screenshot of Cursor's MCP configuration panel.](/img/cursor-preview-token-api.png)
-
-## Configuração
-
-Create or edit your `~/.cursor/mcp.json` file.
-
-> **Cursor Settings** > **MCP** > **Add new global MCP Server**
-
-```json label="mcp.json"
-{
-  "mcpServers": {
-    "mcp-pinax": {
-      "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
-      "env": {
-        "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
-      }
-    }
-  }
-}
-```
-
-## Troubleshooting
-
-![Cursor IDE error notification that reads, "Failed to create client"](/img/cursor-error.png)
-
-To enable logs for the MCP, use the `--verbose true` option.
-
-### ENOENT
-
-Try to use the full path of the command instead:
-
-- Run `which npx` or `which bunx` to get the path of the command.
-- Replace `npx` or `bunx` in the configuration file with the full path (e.g. `/home/user/bin/bunx`).
-
-### Server disconnected
-
-Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/pt/token-api/svm/_meta.js b/website/src/pages/pt/token-api/svm/_meta.js
new file mode 100644
index 000000000000..1a48b82fcbf1
--- /dev/null
+++ b/website/src/pages/pt/token-api/svm/_meta.js
@@ -0,0 +1,5 @@
+export default {
+  'get-balances-svm': '',
+  'get-transfers-svm': '',
+  'get-swaps-svm': '',
+}
diff --git a/website/src/pages/pt/token-api/svm/get-balances-svm.mdx b/website/src/pages/pt/token-api/svm/get-balances-svm.mdx
new file mode 100644
index 000000000000..c2946c190bf9
--- /dev/null
+++ b/website/src/pages/pt/token-api/svm/get-balances-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Balances
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getBalancesSvm
+---
+
+Provides Solana tokens balances by token account address.
diff --git a/website/src/pages/pt/token-api/svm/get-swaps-svm.mdx b/website/src/pages/pt/token-api/svm/get-swaps-svm.mdx
new file mode 100644
index 000000000000..95282a38ac9f
--- /dev/null
+++ b/website/src/pages/pt/token-api/svm/get-swaps-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Swap Events
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getSwapsSvm
+---
+
+Provides Raydium swap events.
diff --git a/website/src/pages/pt/token-api/svm/get-transfers-svm.mdx b/website/src/pages/pt/token-api/svm/get-transfers-svm.mdx
new file mode 100644
index 000000000000..5335cdddf418
--- /dev/null
+++ b/website/src/pages/pt/token-api/svm/get-transfers-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Transfers Events
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getTransfersSvm
+---
+
+Provides SVM transfer events.
diff --git a/website/src/pages/ro/ai-suite/_meta-titles.json b/website/src/pages/ro/ai-suite/_meta-titles.json
new file mode 100644
index 000000000000..5eb482a7092b
--- /dev/null
+++ b/website/src/pages/ro/ai-suite/_meta-titles.json
@@ -0,0 +1,6 @@
+{
+  "graph-assistant": "Graph Assistant",
+  "ai-introduction": "The Graph's AI",
+  "subgraph-mcp": "Subgraph MCP",
+  "token-api-mcp": "Token API MCP"
+}
diff --git a/website/src/pages/ro/ai-suite/_meta.js b/website/src/pages/ro/ai-suite/_meta.js
new file mode 100644
index 000000000000..c9e51dfd35fb
--- /dev/null
+++ b/website/src/pages/ro/ai-suite/_meta.js
@@ -0,0 +1,8 @@
+import titles from './_meta-titles.json'
+
+export default {
+  'ai-introduction': titles['ai-introduction'],
+  'graph-assistant': titles['graph-assistant'],
+  'subgraph-mcp': titles['subgraph-mcp'],
+  'token-api-mcp': titles['token-api-mcp'],
+}
diff --git a/website/src/pages/ro/ai-suite/ai-introduction.mdx b/website/src/pages/ro/ai-suite/ai-introduction.mdx
new file mode 100644
index 000000000000..d25cc9f77358
--- /dev/null
+++ b/website/src/pages/ro/ai-suite/ai-introduction.mdx
@@ -0,0 +1,58 @@
+---
+title: The Graph's AI
+---
+
+Build with speed and scale faster with The Graph's AI.
+
+## Using AI on The Graph
+
+Instead of relying on static datasets or centralized APIs, you can now access live blockchain data through our **agentic** app, [Graph Assistant](/ai-suite/graph-assistant/introduction/), and use our AI-native tooling, [Subgraph MCP](/ai-suite/subgraph-mcp/introduction/), and [Token API MCP](/ai-suite/token-api-mcp/introduction/).
+
+### Why Use Onchain Data with AI?
+
+Using onchain data with AI unlocks powerful new ways to interact with and understand blockchain ecosystems.
+
+- **AI for Non-Technical End Users**: AI can turn complex onchain data into accessible insights. Assistants powered by AI enable you to explore and analyze blockchain data without coding.
+- **AI for Developers**: You can use AI to interact directly with The Graph's data through your agents or build AI-powered applications on top of it. This streamlines development and opens up more intuitive, dynamic use cases.
+
+## AI for Non-Technical/End Users
+
+[Graph Assistant](/ai-suite/graph-assistant/introduction/) is a powerful **agentic** application that empowers users to easily interact with blockchain data. Ask questions in simple, natural language and get rich, AI powered insights. Both technical developers and non-technical product teams can move faster, make smarter decisions, and gain a clearer understanding than ever before.
+
+### Benefits of Using Graph Assistant
+
+- **Natural language Input**: You don't need to write complex queries or sift through dashboards. Simply ask your question in plain English and get clear, structured results.
+- **Multi-source support**: Works across multiple Subgraphs and Token API. The Assistant automatically determines which data source to use, so you don't have to switch tools or manage endpoints.
+- **Schema-free access**: You don't need to understand the schema. You can refer to tokens, protocols, dates, or addresses using natural language. The Assistant takes care of the rest.
+
+### Conversational Querying with Graph Assistant
+
+**Example queries:**
+
+- "List the top-5 swaps by USD value in the last 24 hours."
+- "Give me the daily volume on Uniswap."
+- "List the 20 most recently registered .eth names."
+
+[Graph Assistant](/ai-suite/graph-assistant/introduction/) will eventually be a one-stop shop for interacting with The Graph. Right now, it's an agentic AI app that uses state-of-the-art AI techniques, LLMs, and MCPs to understand and answer your questions about [Subgraphs](/subgraphs/developing/subgraphs/) and [Token API](/token-api/quick-start/) data.
+
+## AI for Developers
+
+### Enable Natural Language Access to Onchain Data
+
+[Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) servers connect to Claude, Cline, and Cursor. They enable models to understand, query, and interact with structured onchain data using natural language. MCPs remove the need to write low-level queries or interact with APIs directly.
+
+### Subgraph MCP
+
+The [Subgraph MCP](/ai-suite/subgraph-mcp/introduction/) server connects models to Subgraphs on The Graph Network. It allows language models to explore Subgraph schemas, execute GraphQL queries, find relevant Subgraphs by keyword or contract, and surface usage metrics using natural language.
+
+### Token API MCP
+
+The [Token API MCP](/ai-suite/token-api-mcp/introduction/) MCP server enables models to access onchain token data. It supports querying token metadata, wallet balances, transfer history, and top token holders through simple prompts.
+
+#### Benefits of Using Subgraph and Token API MCPs
+
+- Query Subgraphs and token data using natural language
+- Access GraphQL schemas and token metadata without manual queries
+- Find Subgraphs by keyword or contract and check 30-day usage
+- Retrieve real-time data from The Graph and onchain token sources
+- Get wallet balances, transfer history, and top token holders
diff --git a/website/src/pages/ro/ai-suite/graph-assistant/_meta.js b/website/src/pages/ro/ai-suite/graph-assistant/_meta.js
new file mode 100644
index 000000000000..74da5e0686a7
--- /dev/null
+++ b/website/src/pages/ro/ai-suite/graph-assistant/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  'quick-start': '',
+  introduction: '',
+  'how-to-guide': '',
+  faq: '',
+}
diff --git a/website/src/pages/ro/ai-suite/graph-assistant/faq.mdx b/website/src/pages/ro/ai-suite/graph-assistant/faq.mdx
new file mode 100644
index 000000000000..8addf9935524
--- /dev/null
+++ b/website/src/pages/ro/ai-suite/graph-assistant/faq.mdx
@@ -0,0 +1,26 @@
+---
+title: Graph Assistant FAQ
+sidebarTitle: 'FAQ'
+---
+
+This page summarizes some of the most common questions for developers using Graph Assistant.
+
+1. What is The Graph Assistant?
+
+The Graph Assistant is an AI-powered chat interface that lets you query blockchain data in plain English. Under the hood, it translates your questions into GraphQL calls against Subgraphs and the Token API, then returns results, no coding required.
+
+2. What is an agentic application?
+
+An agentic application combines AI-driven reasoning with external data sources or APIs to take autonomous actions on your behalf. In this case, Graph Assistant acts as an “agent” that interprets your natural-language prompts, builds and dispatches GraphQL queries, and formats the results so that you don't need to write or manage queries yourself.
+
+3. Which networks and data does Graph Assistant support?
+
+The Assistant has access to Subgraphs across multiple chains. If a Subgraph is published to The Graph Network and is being indexed, the Assistant can automatically route queries to it. The Assistant also has access to the Token API on Ethereum Mainnet, BSC, Unichain, Arbitrum-One, Optimism, and Polygon.
+
+4. Is there a usage limit or quota?
+
+Yes, 10 questions per hour.
+
+5. What if the Assistant can't interpret my question?
+
+When the Assistant fails to parse your intent (for example, ambiguous token name, missing context, or an unsupported request), it will prompt you for clarification. For instance, it might ask, “Did you mean XYZ on Ethereum or XYZ on Arbitrum?” or “Please specify a date range for this query.” If you continue to see parsing errors, check that you're using correct token symbols or specifying networks and time frames clearly.
diff --git a/website/src/pages/ro/ai-suite/graph-assistant/how-to-guide.mdx b/website/src/pages/ro/ai-suite/graph-assistant/how-to-guide.mdx
new file mode 100644
index 000000000000..463130894ad8
--- /dev/null
+++ b/website/src/pages/ro/ai-suite/graph-assistant/how-to-guide.mdx
@@ -0,0 +1,56 @@
+---
+title: How To Use The Graph Assistant
+sidebarTitle: 'How-to Guide'
+---
+
+## Overview
+
+You type a natural language question into the chat interface, such as:
+
+```yaml
+'On Uniswap, return the top-10 pools by total value locked in USD.'
+```
+
+> [!IMPORTANT] All users can process 10 free queries per user per hour.
+
+> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the underlying agents. Do not share sensitive, personal, or private information.
+
+### Behind the Scenes
+
+The Assistant:
+
+1. Interprets your intent
+2. Maps it to the correct Subgraphs or Token API endpoint
+3. Executes optimized queries
+4. Returns clean, structured results
+
+You don't need to write queries or understand a Subgraph's schema, you simply ask.
+
+### Example Use Cases
+
+**Protocol Analytics**
+
+- “Compare daily active users on Aave vs. Compound in May 2025.”
+- “Show me the total value locked (TVL) for XYZDAO over the last quarter.”
+
+**Token Insights**
+
+- “What are the top 10 tokens by market cap on Ethereum right now?”
+- “How many XYZ did I receive between May 1 and May 15?”
+
+**Historical Data Retrieval**
+
+- “Fetch the token price history of XYZ for the last six months.”
+- “What was the average gas price on Ethereum during April?”
+
+**Portfolio Monitoring**
+
+- “List my wallet’s current token balances and their USD equivalents.”
+- “Calculate profit/loss on XYZ since xyz date.”
+
+**Cross-Chain Comparison**
+
+- “Show me the 7-day trading volume of XYZ on Ethereum vs. Polygon.”
+- “How many XYZ swaps occurred on Arbitrum yesterday?”
+
+To get started follow the [quickstart](/ai-suite/graph-assistant/quick-start/) and explore its capabilities.
diff --git a/website/src/pages/ro/ai-suite/graph-assistant/introduction.mdx b/website/src/pages/ro/ai-suite/graph-assistant/introduction.mdx
new file mode 100644
index 000000000000..65fdf0f96028
--- /dev/null
+++ b/website/src/pages/ro/ai-suite/graph-assistant/introduction.mdx
@@ -0,0 +1,31 @@
+---
+title: Introduction
+---
+
+> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime.
+
+[Graph Assistant](https://thegraph.com/graph-assistant) (Beta) gives instant, code-free access to blockchain data, transforming natural language into precise, AI-powered queries without the need to code.
+
+## Overview
+
+[Graph Assistant](https://thegraph.com/graph-assistant) is an advanced, [agentic](/en/ai-suite/graph-assistant/faq/) easy-to-use chat interface for querying blockchain data using natural language. Unlike a basic chatbot, Graph Assistant can understand your intent, build complex queries, and execute them automatically. This gives you rich, AI-powered insights from onchain data without writing any code.
+
+- **Automatically** interprets user intent, generates precise queries, executes them via The Graph's Subgraphs and Token API, and presents structured, AI-powered answers without requiring any code.
+- **Removes** the technical complexity found in traditional dashboards or chatbots. It provides composable insights directly from indexed Subgraphs and Token datasets.
+
+## Core Features
+
+| Feature | Description |
+| --- | --- |
+| **Friendly Interface** | Conversational access to blockchain data via natural language. You simply ask questions, the Assistant fetches the answer, and renders results. |
+| **Backed by Subgraphs** | Uses subgraphs to index protocol-specific data like transactions, events, and protocol metrics. |
+| **Backed by Token API** | Uses Token API for token-level information like balances, transfers, and metadata. |
+| **No Setup Required** | No need to configure data sources or write queries. |
+| **Automatic Query Building** | The Assistant performs complex queries such as fetching historical token volumes, protocol analytics, or cross-chain data and handles filtering, pagination, and joins across Subgraphs automatically. |
+
+## Help Shape What's Next
+
+This is in **beta**, and community input is essential. If you have ideas, questions, or run into anything unexpected, we'd love to hear from you:
+
+- Join the community on [Discord](https://discord.com/invite/graphprotocol): Provide feedback and stay in the loop with other builders. You'll be able to join the `#graph-assistant` channel to share your experience directly.
+- Interested in going deeper? Reach out to become a dedicated beta tester so your specific use case can be better supported.
diff --git a/website/src/pages/ro/ai-suite/graph-assistant/quick-start.mdx b/website/src/pages/ro/ai-suite/graph-assistant/quick-start.mdx
new file mode 100644
index 000000000000..13f8478b8d2b
--- /dev/null
+++ b/website/src/pages/ro/ai-suite/graph-assistant/quick-start.mdx
@@ -0,0 +1,44 @@
+---
+title: Quick Start
+---
+
+> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime.
+
+This guide provides step-by-step instructions for getting started with Graph Assistant quickly.
+
+## Step-by Step
+
+### Step 1. Create an Account
+
+Go to: [Graph Assistant](https://thegraph.com/graph-assistant)
+
+- Click Sign Up (or Log In if you already have an account).
+- Use your Google, GitHub, X, email or wallet credentials to log in.
+- No additional setup is required.
+
+### Step 2. Open the Assistant Chat
+
+After logging in:
+
+- You'll see Graph Assistant's interface.
+- At the bottom of the page, you will find a chat input bar. This is where you will interact with the Assistant.
+
+### Step 3: Ask Your First Question
+
+> [!IMPORTANT] All users can process 10 free queries per user per hour.
+
+In the input bar, type a natural-language query (everyday language).
+
+Example:
+
+```yaml
+Show me the 24-hour trading volume of XYZ token on Ethereum
+```
+
+> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the AI interface. Do not share sensitive, personal, or private information.
+
+The Assistant will:
+
+- Digest your question
+- Fetch onchain data using Subgraphs or the Token API
+- Return a clean, formatted response with the data you need
diff --git a/website/src/pages/ro/ai-suite/subgraph-mcp/_meta.js b/website/src/pages/ro/ai-suite/subgraph-mcp/_meta.js
new file mode 100644
index 000000000000..6f527b4e53e4
--- /dev/null
+++ b/website/src/pages/ro/ai-suite/subgraph-mcp/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  introduction: '',
+  claude: '',
+  cline: '',
+  cursor: '',
+}
diff --git a/website/src/pages/ro/ai-suite/subgraph-mcp/claude.mdx b/website/src/pages/ro/ai-suite/subgraph-mcp/claude.mdx
new file mode 100644
index 000000000000..ff3caa4e3e7f
--- /dev/null
+++ b/website/src/pages/ro/ai-suite/subgraph-mcp/claude.mdx
@@ -0,0 +1,169 @@
+---
+title: Claude Desktop
+---
+
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data via natural language conversations with Claude.
+
+## Prerequisites
+
+- [Node.js](https://nodejs.org/en) installed and available in your path
+- [Claude Desktop](https://claude.ai/download) installed (latest version)
+- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
+
+## Installation Options
+
+### Option 1: Using npx (Recommended)
+
+#### Configuration Steps using npx
+
+#### 1. Open Configuration File
+
+Navigate to your `claude_desktop_config.json` file:
+
+> **Settings** > **Developer** > **Edit Config**
+
+- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
+- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
+- Linux: `.config/Claude/claude_desktop_config.json`
+
+#### 2. Add Configuration
+
+Paste the following settings into your config file:
+
+```json
+{
+  "mcpServers": {
+    "subgraph": {
+      "command": "npx",
+      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
+      "env": {
+        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
+      }
+    }
+  }
+}
+```
+
+#### 3. Add Your Gateway API Key
+
+Replace `GATEWAY_API_KEY` with your API key from [Subgraph Studio](https://thegraph.com/studio/).
+
+#### 4. Save and Restart
+
+Once you've entered your Gateway API key into your settings, save the file and restart Claude Desktop.
+
+### Option 2: Building from Source
+
+#### Requirements
+
+- Rust (latest stable version recommended: 1.75+)
+  ```bash
+  curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
+  ```
+  Follow the on-screen instructions. For other platforms, see the [official Rust installation guide](https://www.rust-lang.org/tools/install).
+
+#### Installation Steps
+
+1. **Clone and Build the Repository**
+
+   ```bash
+   git clone git@github.com:graphops/subgraph-mcp.git
+   cd subgraph-mcp
+   cargo build --release
+   ```
+
+2. **Find the Command Path**
+
+   After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory.
+   - Navigate to your `subgraph-mcp` directory in terminal
+   - Run `pwd` to get the full path
+   - Combine the output with `/target/release/subgraph-mcp`
+
+3. **Configure Claude Desktop**
+
+   Open your `claude_desktop_config.json` file as described above and add:
+
+   ```json
+   {
+     "mcpServers": {
+       "subgraph": {
+         "command": "/path/to/your/subgraph-mcp/target/release/subgraph-mcp",
+         "env": {
+           "GATEWAY_API_KEY": "your-api-key-here"
+         }
+       }
+     }
+   }
+   ```
+
+   Replace `/path/to/your/subgraph-mcp/target/release/subgraph-mcp` with the actual path to the compiled binary.
+
+## Using The Graph Resource in Claude
+
+After configuring Claude Desktop:
+
+1. Restart Claude Desktop
+2. Start a new conversation
+3. Click on the context menu (top right)
+4. Add "Subgraph Server Instructions" as a resource by adding `graphql://subgraph` to your chat context
+
+> **Important**: Claude Desktop may not automatically utilize the Subgraph MCP. You must manually add "Subgraph Server Instructions" resource to your chat context for each conversation where you want to use it.
+
+## Troubleshooting
+
+To enable logs for the MCP when using the npx option, add the `--verbose true` option to your args array.
+
+## Available Subgraph Tools and Usage
+
+The Subgraph MCP provides several tools for interacting with Subgraphs:
+
+### Schema Retrieval Tools
+
+- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
+- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
+- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
+
+### Query Execution Tools
+
+- **Execute query by deployment ID/IPFS hash**: Run GraphQL queries against specific, immutable deployments
+- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
+
+### Discovery Tools
+
+- **Search subgraphs by keyword**: Find subgraphs by keyword in their display names, ordered by signal
+- **Get deployment 30-day query counts**: Get aggregate query count over the last 30 days for multiple subgraph deployments
+- **Get top Subgraph deployments for a contract**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain, ordered by query fees
+
+## Key Identifier Types
+
+- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a subgraph. Use `execute_query_by_subgraph_id` or `get_schema_by_subgraph_id`.
+- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment. Use `execute_query_by_deployment_id` or `get_schema_by_deployment_id`.
+- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific, immutable deployment. Use `execute_query_by_deployment_id` (the gateway treats it like a deployment ID for querying) or `get_schema_by_ipfs_hash`.
+
+## Benefits of Natural Language Queries
+
+One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Claude will:
+
+1. Understand your goal (lookup, find Subgraphs, query, get schema)
+2. Find relevant deployments if needed
+3. Fetch and interpret the Subgraph schema
+4. Convert your question into an appropriate GraphQL query
+5. Execute the query and present the results in a readable format
+
+### Example Natural Language Queries
+
+```
+What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
+```
+
+```
+Which tokens have the highest market cap in this Subgraph?
+```
+
+```
+Show me the most recent 5 swaps for the USDC/ETH pair
+```
+
+```
+Find the top subgraphs for contract 0x1f98431c8ad98523631ae4a59f267346ea31f984 on arbitrum-one
+```
diff --git a/website/src/pages/ro/ai-suite/subgraph-mcp/cline.mdx b/website/src/pages/ro/ai-suite/subgraph-mcp/cline.mdx
new file mode 100644
index 000000000000..eb8044bfe991
--- /dev/null
+++ b/website/src/pages/ro/ai-suite/subgraph-mcp/cline.mdx
@@ -0,0 +1,99 @@
+---
+title: Cline
+---
+
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data through natural language conversations with Cline.
+
+## Prerequisites
+
+- [Cline](https://cline.bot/) installed (latest version)
+- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
+
+## Configuration Steps
+
+### 1. Open Configuration File
+
+Create or edit your `cline_mcp_settings.json` file.
+
+> **MCP Servers** > **Installed** > **Configure MCP Servers**
+
+### 2. Add Configuration
+
+```json
+{
+  "mcpServers": {
+    "subgraph": {
+      "command": "npx",
+      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
+      "env": {
+        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
+      }
+    }
+  }
+}
+```
+
+### 3. Add Your API Key
+
+Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
+
+## Using The Graph Resource in Cline
+
+After configuring Cline:
+
+1. Restart Cline
+2. Start a new conversation
+3. Enable the Subgraph MCP from the context menu
+4. Add "Subgraph Server Instructions" as a resource to your chat context
+
+## Available Tools and Usage
+
+The Subgraph MCP provides several tools for interacting with Subgraphs:
+
+### Schema Retrieval Tools
+
+- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
+- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
+- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
+
+### Query Execution Tools
+
+- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
+- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
+
+### Discovery Tools
+
+- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
+
+## Natural Language Queries
+
+One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cline will:
+
+1. Understand your goal (lookup, find Subgraphs, query, get schema)
+2. Find relevant deployments if needed
+3. Fetch and interpret the Subgraph schema
+4. Convert your question into an appropriate GraphQL query
+5. Execute the query and present the results in a readable format
+
+### Example Natural Language Queries
+
+```
+What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
+```
+
+```
+Which tokens have the highest market cap in this Subgraph?
+```
+
+```
+Show me the most recent 5 swaps for the USDC/ETH pair
+```
+
+## Key Identifier Types
+
+When working with Subgraphs, you'll encounter different types of identifiers:
+
+- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
+- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
+- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/ro/ai-suite/subgraph-mcp/cursor.mdx b/website/src/pages/ro/ai-suite/subgraph-mcp/cursor.mdx
new file mode 100644
index 000000000000..6291caf4b06b
--- /dev/null
+++ b/website/src/pages/ro/ai-suite/subgraph-mcp/cursor.mdx
@@ -0,0 +1,94 @@
+---
+title: Cursor
+---
+
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data through natural language conversations with Cline.
+
+## Prerequisites
+
+- [Cursor](https://www.cursor.com/) installed (latest version)
+- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
+
+## Configuration Steps
+
+### 1. Open Configuration File
+
+Create or edit your `~/.cursor/mcp.json` file.
+
+> **Cursor Settings** > **MCP** > **Add new global MCP Server**
+
+### 2. Add Configuration
+
+```json
+{
+  "mcpServers": {
+    "subgraph": {
+      "command": "npx",
+      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
+      "env": {
+        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
+      }
+    }
+  }
+}
+```
+
+### 3. Add Your API Key
+
+Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
+
+### 4. Restart Cursor
+
+Restart Cursor, and start a new chat.
+
+## Available Subgraph Tools and Usage
+
+The Subgraph MCP provides several tools for interacting with Subgraphs:
+
+### Schema Retrieval Tools
+
+- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
+- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
+- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
+
+### Query Execution Tools
+
+- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
+- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
+
+### Discovery Tools
+
+- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
+
+## Benefits of Natural Language Queries
+
+One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cursor will:
+
+1. Understand your goal (lookup, find Subgraphs, query, get schema)
+2. Find relevant deployments if needed
+3. Fetch and interpret the Subgraph schema
+4. Convert your question into an appropriate GraphQL query
+5. Execute the query and present the results in a readable format
+
+### Example Natural Language Queries
+
+```
+What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
+```
+
+```
+Which tokens have the highest market cap in this Subgraph?
+```
+
+```
+Show me the most recent 5 swaps for the USDC/ETH pair
+```
+
+## Key Identifier Types
+
+When working with Subgraphs, you'll encounter different types of identifiers:
+
+- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
+- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
+- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/ro/ai-suite/subgraph-mcp/introduction.mdx b/website/src/pages/ro/ai-suite/subgraph-mcp/introduction.mdx
new file mode 100644
index 000000000000..da1272cf9a36
--- /dev/null
+++ b/website/src/pages/ro/ai-suite/subgraph-mcp/introduction.mdx
@@ -0,0 +1,22 @@
+---
+title: Subgraph MCP Introduction
+sidebarTitle: 'Introduction'
+---
+
+Subgraph MCP server is an open-source implementation of [Anthropic's Model Context Protocol](https://modelcontextprotocol.io/introduction).
+
+It presents The Graph's Subgraph data through a set of MCP tools that any MCP-compatible client can call. With these tools, clients can search for relevant Subgraphs, inspect GraphQL schemas, and run queries against specific deployments on The Graph Network all within a single, standardized interface.
+
+The server itself does not hold a language model. Instead, it translates incoming MCP requests into Subgraph queries and returns the structured results, allowing the client's LLM to transform a natural-language prompt into actionable blockchain data.
+
+Think of it as a USB-C hub: it standardizes the plug-and-play connection between AI agents and The Graph's Subgraph ecosystem.
+
+## What You Can Do
+
+- Access GraphQL schemas for any Subgraph on The Graph Network
+- Run GraphQL queries on any Subgraph deployment
+- Discover top Subgraph deployments by keyword or contract address
+- Retrieve 30-day query volumes for Subgraph deployments
+- Ask questions about Subgraph data without writing GraphQL manually
+
+The Subgraph MCP server allows smooth integration with [Claude](/ai-suite/subgraph-mcp/claude/), [Cline](/ai-suite/subgraph-mcp/cline/), or [Cursor](/ai-suite/subgraph-mcp/cursor/), making blockchain data queries with The Graph Network a conversational experience.
diff --git a/website/src/pages/ro/ai-suite/token-api-mcp/_meta.js b/website/src/pages/ro/ai-suite/token-api-mcp/_meta.js
new file mode 100644
index 000000000000..6f527b4e53e4
--- /dev/null
+++ b/website/src/pages/ro/ai-suite/token-api-mcp/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  introduction: '',
+  claude: '',
+  cline: '',
+  cursor: '',
+}
diff --git a/website/src/pages/ro/ai-suite/token-api-mcp/claude.mdx b/website/src/pages/ro/ai-suite/token-api-mcp/claude.mdx
new file mode 100644
index 000000000000..3e21f4d7e165
--- /dev/null
+++ b/website/src/pages/ro/ai-suite/token-api-mcp/claude.mdx
@@ -0,0 +1,58 @@
+---
+title: Using Claude Desktop to Access the Token API via MCP
+sidebarTitle: Claude Desktop
+---
+
+## Prerequisites
+
+- [Claude Desktop](https://claude.ai/download) installed.
+- A [JWT token](/token-api/quick-start) from [The Graph Market](https://thegraph.market/).
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path.
+- The `@pinax/mcp` package requires Node 18+, as it relies on built-in `fetch()` / `Headers`, which are not available in Node 17 or older. You may need to specify an exact path to an up-to-date Node version, or uninstall previous versions of Node to ensure `@pinax/mcp` uses the correct version.
+
+![Screenshot of Claude Desktop's settings panel showing the MCP server configuration option.](/img/claude-preview-token-api.png)
+
+## Configuration
+
+Create or edit your `claude_desktop_config.json` file.
+
+> **Settings** > **Developer** > **Edit Config**
+
+- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
+- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
+- Linux: `.config/Claude/claude_desktop_config.json`
+
+```json label="claude_desktop_config.json"
+{
+  "mcpServers": {
+    "token-api": {
+      "command": "npx",
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
+      "env": {
+        "ACCESS_TOKEN": "<https://thegraph.market JWT Access Token>"
+      }
+    }
+  }
+}
+```
+
+## Troubleshooting
+
+To enable logs for the MCP, use the `--verbose true` option.
+
+### ENOENT
+
+![Error dialog in Claude Desktop showing 'ENOENT' system error, indicating the npx/bunx command wasn't found in the system path.](/img/claude-ENOENT.png)
+
+Try to use the full path of the command instead:
+
+- Run `which npx` or `which bunx` to get the path of the command.
+- Replace `npx` or `bunx` in the configuration file with the full path (e.g. `/home/user/bin/bunx`).
+
+### Server disconnected
+
+![Connection error notification in Claude Desktop displaying 'Server disconnected' message.](/img/claude-server-disconnect.png)
+
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
+
+> You can always have a look at the full logs under `Claude/logs/mcp.log` and `Claude/logs/mcp-server-pinax.log` for more details.
diff --git a/website/src/pages/ro/ai-suite/token-api-mcp/cline.mdx b/website/src/pages/ro/ai-suite/token-api-mcp/cline.mdx
new file mode 100644
index 000000000000..e885d21366cd
--- /dev/null
+++ b/website/src/pages/ro/ai-suite/token-api-mcp/cline.mdx
@@ -0,0 +1,52 @@
+---
+title: Using Cline to Access the Token API via MCP
+sidebarTitle: Cline
+---
+
+## Prerequisites
+
+- [Cline](https://cline.bot/) installed.
+- A [JWT token](/token-api/quick-start) from [The Graph Market](https://thegraph.market/).
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path.
+- The `@pinax/mcp` package requires Node 18+, as it relies on built-in `fetch()` / `Headers`, which are not available in Node 17 or older. You may need to specify an exact path to an up-to-date Node version, or uninstall previous versions of Node to ensure `@pinax/mcp` uses the correct version.
+
+![Screenshot of Cline's MCP server configuration interface displaying the JSON settings file with mcp-pinax server details visible.](/img/cline-preview-token-api.png)
+
+## Configuration
+
+Create or edit your `cline_mcp_settings.json` file.
+
+> **MCP Servers** > **Installed** > **Configure MCP Servers**
+
+```json label="cline_mcp_settings.json"
+{
+  "mcpServers": {
+    "mcp-pinax": {
+      "command": "npx",
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
+      "env": {
+        "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
+      }
+    }
+  }
+}
+```
+
+## Troubleshooting
+
+To enable logs for the MCP, use the `--verbose true` option.
+
+### ENOENT
+
+![Cline error dialog showing 'ENOENT' system alert.](/img/cline-error.png)
+
+Try to use the full path of the command instead:
+
+- Run `which npx` or `which bunx` to get the path of the command.
+- Replace `npx` or `bunx` in the configuration file with the full path (e.g. `/home/user/bin/bunx`).
+
+### Server disconnected
+
+![Cline connection error notification displaying server disconnection warning.](/img/cline-missing-variables.png)
+
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/ro/ai-suite/token-api-mcp/cursor.mdx b/website/src/pages/ro/ai-suite/token-api-mcp/cursor.mdx
new file mode 100644
index 000000000000..68fe2fdb201c
--- /dev/null
+++ b/website/src/pages/ro/ai-suite/token-api-mcp/cursor.mdx
@@ -0,0 +1,50 @@
+---
+title: Using Cursor to Access the Token API via MCP
+sidebarTitle: Cursor
+---
+
+## Prerequisites
+
+- [Cursor](https://www.cursor.com/) installed.
+- A [JWT token](/token-api/quick-start) from [The Graph Market](https://thegraph.market/).
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path.
+- The `@pinax/mcp` package requires Node 18+, as it relies on built-in `fetch()` / `Headers`, which are not available in Node 17 or older. You may need to specify an exact path to an up-to-date Node version, or uninstall previous versions of Node to ensure `@pinax/mcp` uses the correct version.
+
+![Screenshot of Cursor's MCP configuration panel.](/img/cursor-preview-token-api.png)
+
+## Configuration
+
+Create or edit your `~/.cursor/mcp.json` file.
+
+> **Cursor Settings** > **MCP** > **Add new global MCP Server**
+
+```json label="mcp.json"
+{
+  "mcpServers": {
+    "mcp-pinax": {
+      "command": "npx",
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
+      "env": {
+        "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
+      }
+    }
+  }
+}
+```
+
+## Troubleshooting
+
+![Cursor IDE error notification that reads, "Failed to create client"](/img/cursor-error.png)
+
+To enable logs for the MCP, use the `--verbose true` option.
+
+### ENOENT
+
+Try to use the full path of the command instead:
+
+- Run `which npx` or `which bunx` to get the path of the command.
+- Replace `npx` or `bunx` in the configuration file with the full path (e.g. `/home/user/bin/bunx`).
+
+### Server disconnected
+
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/ro/ai-suite/token-api-mcp/introduction.mdx b/website/src/pages/ro/ai-suite/token-api-mcp/introduction.mdx
new file mode 100644
index 000000000000..b61ad0a1c485
--- /dev/null
+++ b/website/src/pages/ro/ai-suite/token-api-mcp/introduction.mdx
@@ -0,0 +1,23 @@
+---
+title: Token API MCP Introduction
+sidebarTitle: 'Introduction'
+---
+
+Token API MCP server is an open-source implementation of [Anthropic's Model Context Protocol](https://modelcontextprotocol.io/introduction).
+
+This MCP server makes on-chain token data, including metadata, balances, transfers, and holder statistics, accessible through a set of MCP tools. Any compatible client can use these tools to fetch and analyze token information through a standardized interface. It connects to The Graph's hosted Token API database, enabling AI assistants to query real-time blockchain data using natural language requests that get translated into optimized SQL queries.
+
+The server itself does not host any language model. It simply converts MCP calls into data look-ups and returns structured results, letting the client's own LLM incorporate the results.
+
+Think of it as a USB-C hub: it standardizes the plug-and-play connection between AI agents and The Graph's Token API data.
+
+## What You Can Do
+
+- Retrieve token metadata including name, symbol, decimals, total supply, and contract address
+- Get token balances for any wallet address holding a supported ERC-20 token
+- Fetch token transfer activity including sender, receiver, amount, and timestamp
+- Identify top holders and analyze token distribution
+- Ask natural language questions about token data without writing smart contract calls
+- Access historical transfer data to analyze token movement over time
+
+The Token MCP server provides [Claude](/ai-suite/token-api-mcp/claude/), [Cline](/ai-suite/token-api-mcp/cline/), and [Cursor](/ai-suite/token-api-mcp/cursor/) with direct, conversational access to onchain token data.
diff --git a/website/src/pages/ro/resources/_meta.js b/website/src/pages/ro/resources/_meta.js
index aa8e2d0ec6a8..38c56cf56c43 100644
--- a/website/src/pages/ro/resources/_meta.js
+++ b/website/src/pages/ro/resources/_meta.js
@@ -7,5 +7,4 @@ export default {
   roles: titles.roles ?? '',
   'migration-guides': titles['migration-guides'] ?? '',
   'subgraph-studio-faq': '',
-  'claude-mcp': '',
 }
diff --git a/website/src/pages/ro/resources/claude-mcp.mdx b/website/src/pages/ro/resources/claude-mcp.mdx
deleted file mode 100644
index 44ed075cffda..000000000000
--- a/website/src/pages/ro/resources/claude-mcp.mdx
+++ /dev/null
@@ -1,122 +0,0 @@
----
-title: Claude MCP
----
-
-This guide walks you through configuring Claude Desktop to use The Graph ecosystem's [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) resources: Token API and Subgraph. These integrations allow you to interact with blockchain data through natural language conversations with Claude.
-
-## What You Can Do
-
-With these integrations, you can:
-
-- **Token API**: Access token and wallet information across multiple blockchains
-- **Subgraph**: Find relevant Subgraphs for specific keywords and contracts, explore Subgraph schemas, and execute GraphQL queries
-
-## Prerequisites
-
-- [Node.js](https://nodejs.org/en/download/) installed and available in your path
-- [Claude Desktop](https://claude.ai/download) installed
-- API keys:
-  - Token API key from [The Graph Market](https://thegraph.market/)
-  - Gateway API key from [Subgraph Studio](https://thegraph.com/studio/apikeys/)
-
-## Configuration Steps
-
-### 1. Open Configuration File
-
-Navigate to your `claude_desktop_config.json` file:
-
-> **Claude Desktop** > **Settings** > **Developer** > **Edit Config**
-
-Paths by operating system:
-
-- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
-- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
-- Linux: `.config/Claude/claude_desktop_config.json`
-
-### 2. Add Configuration
-
-Replace the contents of the existing config file with:
-
-```json
-{
-  "mcpServers": {
-    "token-api": {
-      "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
-      "env": {
-        "ACCESS_TOKEN": "ACCESS_TOKEN"
-      }
-    },
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-### 3. Add Your API Keys
-
-Replace:
-
-- `ACCESS_TOKEN` with your Token API key from [The Graph Market](https://thegraph.market/)
-- `GATEWAY_API_KEY` with your Gateway API key from [Subgraph Studio](https://thegraph.com/studio/apikeys/)
-
-### 4. Save and Restart
-
-- Save the configuration file
-- Restart Claude Desktop
-
-### 5. Add The Graph Resources in Claude
-
-After configuration:
-
-1. Start a new conversation in Claude Desktop
-2. Click on the context menu (top right)
-3. Add "Subgraph Server Instructions" as a resource by entering `graphql://subgraph` for Subgraph MCP
-
-> **Important**: You must manually add The Graph resources to your chat context for each conversation where you want to use them.
-
-### 6. Run Queries
-
-Here are some example queries you can try after setting up the resources:
-
-### Subgraph Queries
-
-```
-What are the top pools in Uniswap?
-```
-
-```
-Who are the top Delegators of The Graph Protocol?
-```
-
-```
-Please make a bar chart for the number of active loans in Compound for the last 7 days
-```
-
-### Token API Queries
-
-```
-Show me the current price of ETH
-```
-
-```
-What are the top tokens by market cap on Ethereum?
-```
-
-```
-Analyze this wallet address: 0x...
-```
-
-## Troubleshooting
-
-If you encounter issues:
-
-1. **Verify Node.js Installation**: Ensure Node.js is correctly installed by running `node -v` in your terminal
-2. **Check API Keys**: Verify that your API keys are correctly entered in the configuration file
-3. **Enable Verbose Logging**: Add `--verbose true` to the args array in your configuration to see detailed logs
-4. **Restart Claude Desktop**: After making changes to the configuration, always restart Claude Desktop
diff --git a/website/src/pages/ro/subgraphs/_meta.js b/website/src/pages/ro/subgraphs/_meta.js
index 4365293ffc72..45841d5f3355 100644
--- a/website/src/pages/ro/subgraphs/_meta.js
+++ b/website/src/pages/ro/subgraphs/_meta.js
@@ -6,7 +6,6 @@ export default {
   querying: titles.querying ?? '',
   developing: titles.developing ?? '',
   billing: '',
-  mcp: titles.mcp ?? '',
   guides: titles.guides,
   'best-practices': titles['best-practices'],
   'fair-use-policy': '',
diff --git a/website/src/pages/ro/subgraphs/mcp/_meta.js b/website/src/pages/ro/subgraphs/mcp/_meta.js
deleted file mode 100644
index 8630d4da27b3..000000000000
--- a/website/src/pages/ro/subgraphs/mcp/_meta.js
+++ /dev/null
@@ -1,5 +0,0 @@
-export default {
-  claude: '',
-  cline: '',
-  cursor: '',
-}
diff --git a/website/src/pages/ro/subgraphs/mcp/claude.mdx b/website/src/pages/ro/subgraphs/mcp/claude.mdx
deleted file mode 100644
index 027b272cb942..000000000000
--- a/website/src/pages/ro/subgraphs/mcp/claude.mdx
+++ /dev/null
@@ -1,179 +0,0 @@
----
-title: Claude Desktop
----
-
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Claude to interact directly with Subgraphs on The Graph Network. This integration allows you to find relevant Subgraphs for specific keywords and contracts, explore Subgraph schemas, and execute GraphQL queries—all through natural language conversations with Claude.
-
-## What You Can Do
-
-The Subgraph MCP integration enables you to:
-
-- Access the GraphQL schema for any Subgraph on The Graph Network
-- Execute GraphQL queries against any Subgraph deployment
-- Find top Subgraph deployments for a given keyword or contract address
-- Get 30-day query volume for Subgraph deployments
-- Ask natural language questions about Subgraph data without writing GraphQL queries manually
-
-## Prerequisites
-
-- [Node.js](https://nodejs.org/en) installed and available in your path
-- [Claude Desktop](https://claude.ai/download) installed (latest version)
-- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
-
-## Installation Options
-
-### Option 1: Using npx (Recommended)
-
-#### Configuration Steps using npx
-
-#### 1. Open Configuration File
-
-Navigate to your `claude_desktop_config.json` file:
-
-> **Settings** > **Developer** > **Edit Config**
-
-- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
-- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
-- Linux: `.config/Claude/claude_desktop_config.json`
-
-#### 2. Add Configuration
-
-Paste the following settings into your config file:
-
-```json
-{
-  "mcpServers": {
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-#### 3. Add Your Gateway API Key
-
-Replace `GATEWAY_API_KEY` with your API key from [Subgraph Studio](https://thegraph.com/studio/).
-
-#### 4. Save and Restart
-
-Once you've entered your Gateway API key into your settings, save the file and restart Claude Desktop.
-
-### Option 2: Building from Source
-
-#### Requirements
-
-- Rust (latest stable version recommended: 1.75+)
-  ```bash
-  curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
-  ```
-  Follow the on-screen instructions. For other platforms, see the [official Rust installation guide](https://www.rust-lang.org/tools/install).
-
-#### Installation Steps
-
-1. **Clone and Build the Repository**
-
-   ```bash
-   git clone git@github.com:graphops/subgraph-mcp.git
-   cd subgraph-mcp
-   cargo build --release
-   ```
-
-2. **Find the Command Path**
-
-   After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory.
-   - Navigate to your `subgraph-mcp` directory in terminal
-   - Run `pwd` to get the full path
-   - Combine the output with `/target/release/subgraph-mcp`
-
-3. **Configure Claude Desktop**
-
-   Open your `claude_desktop_config.json` file as described above and add:
-
-   ```json
-   {
-     "mcpServers": {
-       "subgraph": {
-         "command": "/path/to/your/subgraph-mcp/target/release/subgraph-mcp",
-         "env": {
-           "GATEWAY_API_KEY": "your-api-key-here"
-         }
-       }
-     }
-   }
-   ```
-
-   Replace `/path/to/your/subgraph-mcp/target/release/subgraph-mcp` with the actual path to the compiled binary.
-
-## Using The Graph Resource in Claude
-
-After configuring Claude Desktop:
-
-1. Restart Claude Desktop
-2. Start a new conversation
-3. Click on the context menu (top right)
-4. Add "Subgraph Server Instructions" as a resource by adding `graphql://subgraph` to your chat context
-
-> **Important**: Claude Desktop may not automatically utilize the Subgraph MCP. You must manually add "Subgraph Server Instructions" resource to your chat context for each conversation where you want to use it.
-
-## Troubleshooting
-
-To enable logs for the MCP when using the npx option, add the `--verbose true` option to your args array.
-
-## Available Subgraph Tools and Usage
-
-The Subgraph MCP provides several tools for interacting with Subgraphs:
-
-### Schema Retrieval Tools
-
-- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
-- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
-- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
-
-### Query Execution Tools
-
-- **Execute query by deployment ID/IPFS hash**: Run GraphQL queries against specific, immutable deployments
-- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
-
-### Discovery Tools
-
-- **Search subgraphs by keyword**: Find subgraphs by keyword in their display names, ordered by signal
-- **Get deployment 30-day query counts**: Get aggregate query count over the last 30 days for multiple subgraph deployments
-- **Get top Subgraph deployments for a contract**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain, ordered by query fees
-
-## Key Identifier Types
-
-- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a subgraph. Use `execute_query_by_subgraph_id` or `get_schema_by_subgraph_id`.
-- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment. Use `execute_query_by_deployment_id` or `get_schema_by_deployment_id`.
-- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific, immutable deployment. Use `execute_query_by_deployment_id` (the gateway treats it like a deployment ID for querying) or `get_schema_by_ipfs_hash`.
-
-## Benefits of Natural Language Queries
-
-One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Claude will:
-
-1. Understand your goal (lookup, find Subgraphs, query, get schema)
-2. Find relevant deployments if needed
-3. Fetch and interpret the Subgraph schema
-4. Convert your question into an appropriate GraphQL query
-5. Execute the query and present the results in a readable format
-
-### Example Natural Language Queries
-
-```
-What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
-```
-
-```
-Which tokens have the highest market cap in this Subgraph?
-```
-
-```
-Show me the most recent 5 swaps for the USDC/ETH pair
-```
-
-```
-Find the top subgraphs for contract 0x1f98431c8ad98523631ae4a59f267346ea31f984 on arbitrum-one
-```
diff --git a/website/src/pages/ro/subgraphs/mcp/cline.mdx b/website/src/pages/ro/subgraphs/mcp/cline.mdx
deleted file mode 100644
index 156221d9a127..000000000000
--- a/website/src/pages/ro/subgraphs/mcp/cline.mdx
+++ /dev/null
@@ -1,99 +0,0 @@
----
-title: Cline
----
-
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Cline to interact directly with Subgraphs on The Graph Network. This integration allows you to explore Subgraph schemas, execute GraphQL queries, and find relevant Subgraphs for specific contracts—all through natural language conversations with Cline.
-
-## Prerequisites
-
-- [Cline](https://cline.bot/) installed (latest version)
-- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
-
-## Configuration Steps
-
-### 1. Open Configuration File
-
-Create or edit your `cline_mcp_settings.json` file.
-
-> **MCP Servers** > **Installed** > **Configure MCP Servers**
-
-### 2. Add Configuration
-
-```json
-{
-  "mcpServers": {
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-### 3. Add Your API Key
-
-Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
-
-## Using The Graph Resource in Cline
-
-After configuring Cline:
-
-1. Restart Cline
-2. Start a new conversation
-3. Enable the Subgraph MCP from the context menu
-4. Add "Subgraph Server Instructions" as a resource to your chat context
-
-## Available Tools and Usage
-
-The Subgraph MCP provides several tools for interacting with Subgraphs:
-
-### Schema Retrieval Tools
-
-- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
-- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
-- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
-
-### Query Execution Tools
-
-- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
-- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
-
-### Discovery Tools
-
-- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
-
-## Natural Language Queries
-
-One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cline will:
-
-1. Understand your goal (lookup, find Subgraphs, query, get schema)
-2. Find relevant deployments if needed
-3. Fetch and interpret the Subgraph schema
-4. Convert your question into an appropriate GraphQL query
-5. Execute the query and present the results in a readable format
-
-### Example Natural Language Queries
-
-```
-What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
-```
-
-```
-Which tokens have the highest market cap in this Subgraph?
-```
-
-```
-Show me the most recent 5 swaps for the USDC/ETH pair
-```
-
-## Key Identifier Types
-
-When working with Subgraphs, you'll encounter different types of identifiers:
-
-- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
-- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
-- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/ro/subgraphs/mcp/cursor.mdx b/website/src/pages/ro/subgraphs/mcp/cursor.mdx
deleted file mode 100644
index 298f43ece048..000000000000
--- a/website/src/pages/ro/subgraphs/mcp/cursor.mdx
+++ /dev/null
@@ -1,94 +0,0 @@
----
-title: Cursor
----
-
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Cursor to interact directly with Subgraphs on The Graph Network. This integration allows you to explore Subgraph schemas, execute GraphQL queries, and find relevant Subgraphs for specific contracts—all through natural language conversations with Cursor.
-
-## Prerequisites
-
-- [Cursor](https://www.cursor.com/) installed (latest version)
-- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
-
-## Configuration Steps
-
-### 1. Open Configuration File
-
-Create or edit your `~/.cursor/mcp.json` file.
-
-> **Cursor Settings** > **MCP** > **Add new global MCP Server**
-
-### 2. Add Configuration
-
-```json
-{
-  "mcpServers": {
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-### 3. Add Your API Key
-
-Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
-
-### 4. Restart Cursor
-
-Restart Cursor, and start a new chat.
-
-## Available Subgraph Tools and Usage
-
-The Subgraph MCP provides several tools for interacting with Subgraphs:
-
-### Schema Retrieval Tools
-
-- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
-- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
-- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
-
-### Query Execution Tools
-
-- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
-- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
-
-### Discovery Tools
-
-- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
-
-## Benefits of Natural Language Queries
-
-One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cursor will:
-
-1. Understand your goal (lookup, find Subgraphs, query, get schema)
-2. Find relevant deployments if needed
-3. Fetch and interpret the Subgraph schema
-4. Convert your question into an appropriate GraphQL query
-5. Execute the query and present the results in a readable format
-
-### Example Natural Language Queries
-
-```
-What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
-```
-
-```
-Which tokens have the highest market cap in this Subgraph?
-```
-
-```
-Show me the most recent 5 swaps for the USDC/ETH pair
-```
-
-## Key Identifier Types
-
-When working with Subgraphs, you'll encounter different types of identifiers:
-
-- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
-- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
-- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/ro/substreams/_meta.js b/website/src/pages/ro/substreams/_meta.js
index a8ee04618eae..658bb8c213c6 100644
--- a/website/src/pages/ro/substreams/_meta.js
+++ b/website/src/pages/ro/substreams/_meta.js
@@ -5,5 +5,4 @@ export default {
   introduction: '',
   developing: titles.developing ?? '',
   publishing: '',
-  sps: titles.sps ?? '',
 }
diff --git a/website/src/pages/ro/token-api/_meta-titles.json b/website/src/pages/ro/token-api/_meta-titles.json
index 7ed31e0af95d..3108ecd3ebfd 100644
--- a/website/src/pages/ro/token-api/_meta-titles.json
+++ b/website/src/pages/ro/token-api/_meta-titles.json
@@ -1,6 +1,7 @@
 {
   "mcp": "MCP",
   "evm": "EVM Endpoints",
+  "svm": "SVM Endpoints",
   "monitoring": "Monitoring Endpoints",
   "faq": "FAQ"
 }
diff --git a/website/src/pages/ro/token-api/_meta.js b/website/src/pages/ro/token-api/_meta.js
index f67576d7f612..fb7f7334ea0c 100644
--- a/website/src/pages/ro/token-api/_meta.js
+++ b/website/src/pages/ro/token-api/_meta.js
@@ -2,8 +2,8 @@ import titles from './_meta-titles.json'
 
 export default {
   'quick-start': '',
-  mcp: titles.mcp ?? '',
   evm: titles.evm ?? '',
+  svm: titles.svm ?? '',
   monitoring: titles.monitoring ?? '',
   faq: '',
 }
diff --git a/website/src/pages/ro/token-api/mcp/_meta.js b/website/src/pages/ro/token-api/mcp/_meta.js
deleted file mode 100644
index 8630d4da27b3..000000000000
--- a/website/src/pages/ro/token-api/mcp/_meta.js
+++ /dev/null
@@ -1,5 +0,0 @@
-export default {
-  claude: '',
-  cline: '',
-  cursor: '',
-}
diff --git a/website/src/pages/ro/token-api/svm/_meta.js b/website/src/pages/ro/token-api/svm/_meta.js
new file mode 100644
index 000000000000..1a48b82fcbf1
--- /dev/null
+++ b/website/src/pages/ro/token-api/svm/_meta.js
@@ -0,0 +1,5 @@
+export default {
+  'get-balances-svm': '',
+  'get-transfers-svm': '',
+  'get-swaps-svm': '',
+}
diff --git a/website/src/pages/ro/token-api/svm/get-balances-svm.mdx b/website/src/pages/ro/token-api/svm/get-balances-svm.mdx
new file mode 100644
index 000000000000..c2946c190bf9
--- /dev/null
+++ b/website/src/pages/ro/token-api/svm/get-balances-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Balances
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getBalancesSvm
+---
+
+Provides Solana tokens balances by token account address.
diff --git a/website/src/pages/ro/token-api/svm/get-swaps-svm.mdx b/website/src/pages/ro/token-api/svm/get-swaps-svm.mdx
new file mode 100644
index 000000000000..95282a38ac9f
--- /dev/null
+++ b/website/src/pages/ro/token-api/svm/get-swaps-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Swap Events
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getSwapsSvm
+---
+
+Provides Raydium swap events.
diff --git a/website/src/pages/ro/token-api/svm/get-transfers-svm.mdx b/website/src/pages/ro/token-api/svm/get-transfers-svm.mdx
new file mode 100644
index 000000000000..5335cdddf418
--- /dev/null
+++ b/website/src/pages/ro/token-api/svm/get-transfers-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Transfers Events
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getTransfersSvm
+---
+
+Provides SVM transfer events.
diff --git a/website/src/pages/ru/ai-suite/_meta-titles.json b/website/src/pages/ru/ai-suite/_meta-titles.json
new file mode 100644
index 000000000000..5eb482a7092b
--- /dev/null
+++ b/website/src/pages/ru/ai-suite/_meta-titles.json
@@ -0,0 +1,6 @@
+{
+  "graph-assistant": "Graph Assistant",
+  "ai-introduction": "The Graph's AI",
+  "subgraph-mcp": "Subgraph MCP",
+  "token-api-mcp": "Token API MCP"
+}
diff --git a/website/src/pages/ru/ai-suite/_meta.js b/website/src/pages/ru/ai-suite/_meta.js
new file mode 100644
index 000000000000..c9e51dfd35fb
--- /dev/null
+++ b/website/src/pages/ru/ai-suite/_meta.js
@@ -0,0 +1,8 @@
+import titles from './_meta-titles.json'
+
+export default {
+  'ai-introduction': titles['ai-introduction'],
+  'graph-assistant': titles['graph-assistant'],
+  'subgraph-mcp': titles['subgraph-mcp'],
+  'token-api-mcp': titles['token-api-mcp'],
+}
diff --git a/website/src/pages/ru/ai-suite/ai-introduction.mdx b/website/src/pages/ru/ai-suite/ai-introduction.mdx
new file mode 100644
index 000000000000..d25cc9f77358
--- /dev/null
+++ b/website/src/pages/ru/ai-suite/ai-introduction.mdx
@@ -0,0 +1,58 @@
+---
+title: The Graph's AI
+---
+
+Build with speed and scale faster with The Graph's AI.
+
+## Using AI on The Graph
+
+Instead of relying on static datasets or centralized APIs, you can now access live blockchain data through our **agentic** app, [Graph Assistant](/ai-suite/graph-assistant/introduction/), and use our AI-native tooling, [Subgraph MCP](/ai-suite/subgraph-mcp/introduction/), and [Token API MCP](/ai-suite/token-api-mcp/introduction/).
+
+### Why Use Onchain Data with AI?
+
+Using onchain data with AI unlocks powerful new ways to interact with and understand blockchain ecosystems.
+
+- **AI for Non-Technical End Users**: AI can turn complex onchain data into accessible insights. Assistants powered by AI enable you to explore and analyze blockchain data without coding.
+- **AI for Developers**: You can use AI to interact directly with The Graph's data through your agents or build AI-powered applications on top of it. This streamlines development and opens up more intuitive, dynamic use cases.
+
+## AI for Non-Technical/End Users
+
+[Graph Assistant](/ai-suite/graph-assistant/introduction/) is a powerful **agentic** application that empowers users to easily interact with blockchain data. Ask questions in simple, natural language and get rich, AI powered insights. Both technical developers and non-technical product teams can move faster, make smarter decisions, and gain a clearer understanding than ever before.
+
+### Benefits of Using Graph Assistant
+
+- **Natural language Input**: You don't need to write complex queries or sift through dashboards. Simply ask your question in plain English and get clear, structured results.
+- **Multi-source support**: Works across multiple Subgraphs and Token API. The Assistant automatically determines which data source to use, so you don't have to switch tools or manage endpoints.
+- **Schema-free access**: You don't need to understand the schema. You can refer to tokens, protocols, dates, or addresses using natural language. The Assistant takes care of the rest.
+
+### Conversational Querying with Graph Assistant
+
+**Example queries:**
+
+- "List the top-5 swaps by USD value in the last 24 hours."
+- "Give me the daily volume on Uniswap."
+- "List the 20 most recently registered .eth names."
+
+[Graph Assistant](/ai-suite/graph-assistant/introduction/) will eventually be a one-stop shop for interacting with The Graph. Right now, it's an agentic AI app that uses state-of-the-art AI techniques, LLMs, and MCPs to understand and answer your questions about [Subgraphs](/subgraphs/developing/subgraphs/) and [Token API](/token-api/quick-start/) data.
+
+## AI for Developers
+
+### Enable Natural Language Access to Onchain Data
+
+[Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) servers connect to Claude, Cline, and Cursor. They enable models to understand, query, and interact with structured onchain data using natural language. MCPs remove the need to write low-level queries or interact with APIs directly.
+
+### Subgraph MCP
+
+The [Subgraph MCP](/ai-suite/subgraph-mcp/introduction/) server connects models to Subgraphs on The Graph Network. It allows language models to explore Subgraph schemas, execute GraphQL queries, find relevant Subgraphs by keyword or contract, and surface usage metrics using natural language.
+
+### Token API MCP
+
+The [Token API MCP](/ai-suite/token-api-mcp/introduction/) MCP server enables models to access onchain token data. It supports querying token metadata, wallet balances, transfer history, and top token holders through simple prompts.
+
+#### Benefits of Using Subgraph and Token API MCPs
+
+- Query Subgraphs and token data using natural language
+- Access GraphQL schemas and token metadata without manual queries
+- Find Subgraphs by keyword or contract and check 30-day usage
+- Retrieve real-time data from The Graph and onchain token sources
+- Get wallet balances, transfer history, and top token holders
diff --git a/website/src/pages/ru/ai-suite/graph-assistant/_meta.js b/website/src/pages/ru/ai-suite/graph-assistant/_meta.js
new file mode 100644
index 000000000000..74da5e0686a7
--- /dev/null
+++ b/website/src/pages/ru/ai-suite/graph-assistant/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  'quick-start': '',
+  introduction: '',
+  'how-to-guide': '',
+  faq: '',
+}
diff --git a/website/src/pages/ru/ai-suite/graph-assistant/faq.mdx b/website/src/pages/ru/ai-suite/graph-assistant/faq.mdx
new file mode 100644
index 000000000000..8addf9935524
--- /dev/null
+++ b/website/src/pages/ru/ai-suite/graph-assistant/faq.mdx
@@ -0,0 +1,26 @@
+---
+title: Graph Assistant FAQ
+sidebarTitle: 'FAQ'
+---
+
+This page summarizes some of the most common questions for developers using Graph Assistant.
+
+1. What is The Graph Assistant?
+
+The Graph Assistant is an AI-powered chat interface that lets you query blockchain data in plain English. Under the hood, it translates your questions into GraphQL calls against Subgraphs and the Token API, then returns results, no coding required.
+
+2. What is an agentic application?
+
+An agentic application combines AI-driven reasoning with external data sources or APIs to take autonomous actions on your behalf. In this case, Graph Assistant acts as an “agent” that interprets your natural-language prompts, builds and dispatches GraphQL queries, and formats the results so that you don't need to write or manage queries yourself.
+
+3. Which networks and data does Graph Assistant support?
+
+The Assistant has access to Subgraphs across multiple chains. If a Subgraph is published to The Graph Network and is being indexed, the Assistant can automatically route queries to it. The Assistant also has access to the Token API on Ethereum Mainnet, BSC, Unichain, Arbitrum-One, Optimism, and Polygon.
+
+4. Is there a usage limit or quota?
+
+Yes, 10 questions per hour.
+
+5. What if the Assistant can't interpret my question?
+
+When the Assistant fails to parse your intent (for example, ambiguous token name, missing context, or an unsupported request), it will prompt you for clarification. For instance, it might ask, “Did you mean XYZ on Ethereum or XYZ on Arbitrum?” or “Please specify a date range for this query.” If you continue to see parsing errors, check that you're using correct token symbols or specifying networks and time frames clearly.
diff --git a/website/src/pages/ru/ai-suite/graph-assistant/how-to-guide.mdx b/website/src/pages/ru/ai-suite/graph-assistant/how-to-guide.mdx
new file mode 100644
index 000000000000..463130894ad8
--- /dev/null
+++ b/website/src/pages/ru/ai-suite/graph-assistant/how-to-guide.mdx
@@ -0,0 +1,56 @@
+---
+title: How To Use The Graph Assistant
+sidebarTitle: 'How-to Guide'
+---
+
+## Overview
+
+You type a natural language question into the chat interface, such as:
+
+```yaml
+'On Uniswap, return the top-10 pools by total value locked in USD.'
+```
+
+> [!IMPORTANT] All users can process 10 free queries per user per hour.
+
+> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the underlying agents. Do not share sensitive, personal, or private information.
+
+### Behind the Scenes
+
+The Assistant:
+
+1. Interprets your intent
+2. Maps it to the correct Subgraphs or Token API endpoint
+3. Executes optimized queries
+4. Returns clean, structured results
+
+You don't need to write queries or understand a Subgraph's schema, you simply ask.
+
+### Example Use Cases
+
+**Protocol Analytics**
+
+- “Compare daily active users on Aave vs. Compound in May 2025.”
+- “Show me the total value locked (TVL) for XYZDAO over the last quarter.”
+
+**Token Insights**
+
+- “What are the top 10 tokens by market cap on Ethereum right now?”
+- “How many XYZ did I receive between May 1 and May 15?”
+
+**Historical Data Retrieval**
+
+- “Fetch the token price history of XYZ for the last six months.”
+- “What was the average gas price on Ethereum during April?”
+
+**Portfolio Monitoring**
+
+- “List my wallet’s current token balances and their USD equivalents.”
+- “Calculate profit/loss on XYZ since xyz date.”
+
+**Cross-Chain Comparison**
+
+- “Show me the 7-day trading volume of XYZ on Ethereum vs. Polygon.”
+- “How many XYZ swaps occurred on Arbitrum yesterday?”
+
+To get started follow the [quickstart](/ai-suite/graph-assistant/quick-start/) and explore its capabilities.
diff --git a/website/src/pages/ru/ai-suite/graph-assistant/introduction.mdx b/website/src/pages/ru/ai-suite/graph-assistant/introduction.mdx
new file mode 100644
index 000000000000..65fdf0f96028
--- /dev/null
+++ b/website/src/pages/ru/ai-suite/graph-assistant/introduction.mdx
@@ -0,0 +1,31 @@
+---
+title: Introduction
+---
+
+> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime.
+
+[Graph Assistant](https://thegraph.com/graph-assistant) (Beta) gives instant, code-free access to blockchain data, transforming natural language into precise, AI-powered queries without the need to code.
+
+## Overview
+
+[Graph Assistant](https://thegraph.com/graph-assistant) is an advanced, [agentic](/en/ai-suite/graph-assistant/faq/) easy-to-use chat interface for querying blockchain data using natural language. Unlike a basic chatbot, Graph Assistant can understand your intent, build complex queries, and execute them automatically. This gives you rich, AI-powered insights from onchain data without writing any code.
+
+- **Automatically** interprets user intent, generates precise queries, executes them via The Graph's Subgraphs and Token API, and presents structured, AI-powered answers without requiring any code.
+- **Removes** the technical complexity found in traditional dashboards or chatbots. It provides composable insights directly from indexed Subgraphs and Token datasets.
+
+## Core Features
+
+| Feature | Description |
+| --- | --- |
+| **Friendly Interface** | Conversational access to blockchain data via natural language. You simply ask questions, the Assistant fetches the answer, and renders results. |
+| **Backed by Subgraphs** | Uses subgraphs to index protocol-specific data like transactions, events, and protocol metrics. |
+| **Backed by Token API** | Uses Token API for token-level information like balances, transfers, and metadata. |
+| **No Setup Required** | No need to configure data sources or write queries. |
+| **Automatic Query Building** | The Assistant performs complex queries such as fetching historical token volumes, protocol analytics, or cross-chain data and handles filtering, pagination, and joins across Subgraphs automatically. |
+
+## Help Shape What's Next
+
+This is in **beta**, and community input is essential. If you have ideas, questions, or run into anything unexpected, we'd love to hear from you:
+
+- Join the community on [Discord](https://discord.com/invite/graphprotocol): Provide feedback and stay in the loop with other builders. You'll be able to join the `#graph-assistant` channel to share your experience directly.
+- Interested in going deeper? Reach out to become a dedicated beta tester so your specific use case can be better supported.
diff --git a/website/src/pages/ru/ai-suite/graph-assistant/quick-start.mdx b/website/src/pages/ru/ai-suite/graph-assistant/quick-start.mdx
new file mode 100644
index 000000000000..13f8478b8d2b
--- /dev/null
+++ b/website/src/pages/ru/ai-suite/graph-assistant/quick-start.mdx
@@ -0,0 +1,44 @@
+---
+title: Quick Start
+---
+
+> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime.
+
+This guide provides step-by-step instructions for getting started with Graph Assistant quickly.
+
+## Step-by Step
+
+### Step 1. Create an Account
+
+Go to: [Graph Assistant](https://thegraph.com/graph-assistant)
+
+- Click Sign Up (or Log In if you already have an account).
+- Use your Google, GitHub, X, email or wallet credentials to log in.
+- No additional setup is required.
+
+### Step 2. Open the Assistant Chat
+
+After logging in:
+
+- You'll see Graph Assistant's interface.
+- At the bottom of the page, you will find a chat input bar. This is where you will interact with the Assistant.
+
+### Step 3: Ask Your First Question
+
+> [!IMPORTANT] All users can process 10 free queries per user per hour.
+
+In the input bar, type a natural-language query (everyday language).
+
+Example:
+
+```yaml
+Show me the 24-hour trading volume of XYZ token on Ethereum
+```
+
+> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the AI interface. Do not share sensitive, personal, or private information.
+
+The Assistant will:
+
+- Digest your question
+- Fetch onchain data using Subgraphs or the Token API
+- Return a clean, formatted response with the data you need
diff --git a/website/src/pages/ru/ai-suite/subgraph-mcp/_meta.js b/website/src/pages/ru/ai-suite/subgraph-mcp/_meta.js
new file mode 100644
index 000000000000..6f527b4e53e4
--- /dev/null
+++ b/website/src/pages/ru/ai-suite/subgraph-mcp/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  introduction: '',
+  claude: '',
+  cline: '',
+  cursor: '',
+}
diff --git a/website/src/pages/ru/ai-suite/subgraph-mcp/claude.mdx b/website/src/pages/ru/ai-suite/subgraph-mcp/claude.mdx
new file mode 100644
index 000000000000..ff3caa4e3e7f
--- /dev/null
+++ b/website/src/pages/ru/ai-suite/subgraph-mcp/claude.mdx
@@ -0,0 +1,169 @@
+---
+title: Claude Desktop
+---
+
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data via natural language conversations with Claude.
+
+## Prerequisites
+
+- [Node.js](https://nodejs.org/en) installed and available in your path
+- [Claude Desktop](https://claude.ai/download) installed (latest version)
+- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
+
+## Installation Options
+
+### Option 1: Using npx (Recommended)
+
+#### Configuration Steps using npx
+
+#### 1. Open Configuration File
+
+Navigate to your `claude_desktop_config.json` file:
+
+> **Settings** > **Developer** > **Edit Config**
+
+- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
+- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
+- Linux: `.config/Claude/claude_desktop_config.json`
+
+#### 2. Add Configuration
+
+Paste the following settings into your config file:
+
+```json
+{
+  "mcpServers": {
+    "subgraph": {
+      "command": "npx",
+      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
+      "env": {
+        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
+      }
+    }
+  }
+}
+```
+
+#### 3. Add Your Gateway API Key
+
+Replace `GATEWAY_API_KEY` with your API key from [Subgraph Studio](https://thegraph.com/studio/).
+
+#### 4. Save and Restart
+
+Once you've entered your Gateway API key into your settings, save the file and restart Claude Desktop.
+
+### Option 2: Building from Source
+
+#### Requirements
+
+- Rust (latest stable version recommended: 1.75+)
+  ```bash
+  curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
+  ```
+  Follow the on-screen instructions. For other platforms, see the [official Rust installation guide](https://www.rust-lang.org/tools/install).
+
+#### Installation Steps
+
+1. **Clone and Build the Repository**
+
+   ```bash
+   git clone git@github.com:graphops/subgraph-mcp.git
+   cd subgraph-mcp
+   cargo build --release
+   ```
+
+2. **Find the Command Path**
+
+   After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory.
+   - Navigate to your `subgraph-mcp` directory in terminal
+   - Run `pwd` to get the full path
+   - Combine the output with `/target/release/subgraph-mcp`
+
+3. **Configure Claude Desktop**
+
+   Open your `claude_desktop_config.json` file as described above and add:
+
+   ```json
+   {
+     "mcpServers": {
+       "subgraph": {
+         "command": "/path/to/your/subgraph-mcp/target/release/subgraph-mcp",
+         "env": {
+           "GATEWAY_API_KEY": "your-api-key-here"
+         }
+       }
+     }
+   }
+   ```
+
+   Replace `/path/to/your/subgraph-mcp/target/release/subgraph-mcp` with the actual path to the compiled binary.
+
+## Using The Graph Resource in Claude
+
+After configuring Claude Desktop:
+
+1. Restart Claude Desktop
+2. Start a new conversation
+3. Click on the context menu (top right)
+4. Add "Subgraph Server Instructions" as a resource by adding `graphql://subgraph` to your chat context
+
+> **Important**: Claude Desktop may not automatically utilize the Subgraph MCP. You must manually add "Subgraph Server Instructions" resource to your chat context for each conversation where you want to use it.
+
+## Troubleshooting
+
+To enable logs for the MCP when using the npx option, add the `--verbose true` option to your args array.
+
+## Available Subgraph Tools and Usage
+
+The Subgraph MCP provides several tools for interacting with Subgraphs:
+
+### Schema Retrieval Tools
+
+- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
+- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
+- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
+
+### Query Execution Tools
+
+- **Execute query by deployment ID/IPFS hash**: Run GraphQL queries against specific, immutable deployments
+- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
+
+### Discovery Tools
+
+- **Search subgraphs by keyword**: Find subgraphs by keyword in their display names, ordered by signal
+- **Get deployment 30-day query counts**: Get aggregate query count over the last 30 days for multiple subgraph deployments
+- **Get top Subgraph deployments for a contract**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain, ordered by query fees
+
+## Key Identifier Types
+
+- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a subgraph. Use `execute_query_by_subgraph_id` or `get_schema_by_subgraph_id`.
+- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment. Use `execute_query_by_deployment_id` or `get_schema_by_deployment_id`.
+- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific, immutable deployment. Use `execute_query_by_deployment_id` (the gateway treats it like a deployment ID for querying) or `get_schema_by_ipfs_hash`.
+
+## Benefits of Natural Language Queries
+
+One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Claude will:
+
+1. Understand your goal (lookup, find Subgraphs, query, get schema)
+2. Find relevant deployments if needed
+3. Fetch and interpret the Subgraph schema
+4. Convert your question into an appropriate GraphQL query
+5. Execute the query and present the results in a readable format
+
+### Example Natural Language Queries
+
+```
+What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
+```
+
+```
+Which tokens have the highest market cap in this Subgraph?
+```
+
+```
+Show me the most recent 5 swaps for the USDC/ETH pair
+```
+
+```
+Find the top subgraphs for contract 0x1f98431c8ad98523631ae4a59f267346ea31f984 on arbitrum-one
+```
diff --git a/website/src/pages/ru/ai-suite/subgraph-mcp/cline.mdx b/website/src/pages/ru/ai-suite/subgraph-mcp/cline.mdx
new file mode 100644
index 000000000000..eb8044bfe991
--- /dev/null
+++ b/website/src/pages/ru/ai-suite/subgraph-mcp/cline.mdx
@@ -0,0 +1,99 @@
+---
+title: Cline
+---
+
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data through natural language conversations with Cline.
+
+## Prerequisites
+
+- [Cline](https://cline.bot/) installed (latest version)
+- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
+
+## Configuration Steps
+
+### 1. Open Configuration File
+
+Create or edit your `cline_mcp_settings.json` file.
+
+> **MCP Servers** > **Installed** > **Configure MCP Servers**
+
+### 2. Add Configuration
+
+```json
+{
+  "mcpServers": {
+    "subgraph": {
+      "command": "npx",
+      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
+      "env": {
+        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
+      }
+    }
+  }
+}
+```
+
+### 3. Add Your API Key
+
+Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
+
+## Using The Graph Resource in Cline
+
+After configuring Cline:
+
+1. Restart Cline
+2. Start a new conversation
+3. Enable the Subgraph MCP from the context menu
+4. Add "Subgraph Server Instructions" as a resource to your chat context
+
+## Available Tools and Usage
+
+The Subgraph MCP provides several tools for interacting with Subgraphs:
+
+### Schema Retrieval Tools
+
+- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
+- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
+- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
+
+### Query Execution Tools
+
+- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
+- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
+
+### Discovery Tools
+
+- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
+
+## Natural Language Queries
+
+One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cline will:
+
+1. Understand your goal (lookup, find Subgraphs, query, get schema)
+2. Find relevant deployments if needed
+3. Fetch and interpret the Subgraph schema
+4. Convert your question into an appropriate GraphQL query
+5. Execute the query and present the results in a readable format
+
+### Example Natural Language Queries
+
+```
+What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
+```
+
+```
+Which tokens have the highest market cap in this Subgraph?
+```
+
+```
+Show me the most recent 5 swaps for the USDC/ETH pair
+```
+
+## Key Identifier Types
+
+When working with Subgraphs, you'll encounter different types of identifiers:
+
+- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
+- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
+- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/ru/ai-suite/subgraph-mcp/cursor.mdx b/website/src/pages/ru/ai-suite/subgraph-mcp/cursor.mdx
new file mode 100644
index 000000000000..6291caf4b06b
--- /dev/null
+++ b/website/src/pages/ru/ai-suite/subgraph-mcp/cursor.mdx
@@ -0,0 +1,94 @@
+---
+title: Cursor
+---
+
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data through natural language conversations with Cline.
+
+## Prerequisites
+
+- [Cursor](https://www.cursor.com/) installed (latest version)
+- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
+
+## Configuration Steps
+
+### 1. Open Configuration File
+
+Create or edit your `~/.cursor/mcp.json` file.
+
+> **Cursor Settings** > **MCP** > **Add new global MCP Server**
+
+### 2. Add Configuration
+
+```json
+{
+  "mcpServers": {
+    "subgraph": {
+      "command": "npx",
+      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
+      "env": {
+        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
+      }
+    }
+  }
+}
+```
+
+### 3. Add Your API Key
+
+Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
+
+### 4. Restart Cursor
+
+Restart Cursor, and start a new chat.
+
+## Available Subgraph Tools and Usage
+
+The Subgraph MCP provides several tools for interacting with Subgraphs:
+
+### Schema Retrieval Tools
+
+- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
+- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
+- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
+
+### Query Execution Tools
+
+- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
+- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
+
+### Discovery Tools
+
+- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
+
+## Benefits of Natural Language Queries
+
+One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cursor will:
+
+1. Understand your goal (lookup, find Subgraphs, query, get schema)
+2. Find relevant deployments if needed
+3. Fetch and interpret the Subgraph schema
+4. Convert your question into an appropriate GraphQL query
+5. Execute the query and present the results in a readable format
+
+### Example Natural Language Queries
+
+```
+What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
+```
+
+```
+Which tokens have the highest market cap in this Subgraph?
+```
+
+```
+Show me the most recent 5 swaps for the USDC/ETH pair
+```
+
+## Key Identifier Types
+
+When working with Subgraphs, you'll encounter different types of identifiers:
+
+- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
+- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
+- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/ru/ai-suite/subgraph-mcp/introduction.mdx b/website/src/pages/ru/ai-suite/subgraph-mcp/introduction.mdx
new file mode 100644
index 000000000000..da1272cf9a36
--- /dev/null
+++ b/website/src/pages/ru/ai-suite/subgraph-mcp/introduction.mdx
@@ -0,0 +1,22 @@
+---
+title: Subgraph MCP Introduction
+sidebarTitle: 'Introduction'
+---
+
+Subgraph MCP server is an open-source implementation of [Anthropic's Model Context Protocol](https://modelcontextprotocol.io/introduction).
+
+It presents The Graph's Subgraph data through a set of MCP tools that any MCP-compatible client can call. With these tools, clients can search for relevant Subgraphs, inspect GraphQL schemas, and run queries against specific deployments on The Graph Network all within a single, standardized interface.
+
+The server itself does not hold a language model. Instead, it translates incoming MCP requests into Subgraph queries and returns the structured results, allowing the client's LLM to transform a natural-language prompt into actionable blockchain data.
+
+Think of it as a USB-C hub: it standardizes the plug-and-play connection between AI agents and The Graph's Subgraph ecosystem.
+
+## What You Can Do
+
+- Access GraphQL schemas for any Subgraph on The Graph Network
+- Run GraphQL queries on any Subgraph deployment
+- Discover top Subgraph deployments by keyword or contract address
+- Retrieve 30-day query volumes for Subgraph deployments
+- Ask questions about Subgraph data without writing GraphQL manually
+
+The Subgraph MCP server allows smooth integration with [Claude](/ai-suite/subgraph-mcp/claude/), [Cline](/ai-suite/subgraph-mcp/cline/), or [Cursor](/ai-suite/subgraph-mcp/cursor/), making blockchain data queries with The Graph Network a conversational experience.
diff --git a/website/src/pages/ru/ai-suite/token-api-mcp/_meta.js b/website/src/pages/ru/ai-suite/token-api-mcp/_meta.js
new file mode 100644
index 000000000000..6f527b4e53e4
--- /dev/null
+++ b/website/src/pages/ru/ai-suite/token-api-mcp/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  introduction: '',
+  claude: '',
+  cline: '',
+  cursor: '',
+}
diff --git a/website/src/pages/ru/ai-suite/token-api-mcp/claude.mdx b/website/src/pages/ru/ai-suite/token-api-mcp/claude.mdx
new file mode 100644
index 000000000000..3e21f4d7e165
--- /dev/null
+++ b/website/src/pages/ru/ai-suite/token-api-mcp/claude.mdx
@@ -0,0 +1,58 @@
+---
+title: Using Claude Desktop to Access the Token API via MCP
+sidebarTitle: Claude Desktop
+---
+
+## Prerequisites
+
+- [Claude Desktop](https://claude.ai/download) installed.
+- A [JWT token](/token-api/quick-start) from [The Graph Market](https://thegraph.market/).
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path.
+- The `@pinax/mcp` package requires Node 18+, as it relies on built-in `fetch()` / `Headers`, which are not available in Node 17 or older. You may need to specify an exact path to an up-to-date Node version, or uninstall previous versions of Node to ensure `@pinax/mcp` uses the correct version.
+
+![Screenshot of Claude Desktop's settings panel showing the MCP server configuration option.](/img/claude-preview-token-api.png)
+
+## Configuration
+
+Create or edit your `claude_desktop_config.json` file.
+
+> **Settings** > **Developer** > **Edit Config**
+
+- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
+- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
+- Linux: `.config/Claude/claude_desktop_config.json`
+
+```json label="claude_desktop_config.json"
+{
+  "mcpServers": {
+    "token-api": {
+      "command": "npx",
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
+      "env": {
+        "ACCESS_TOKEN": "<https://thegraph.market JWT Access Token>"
+      }
+    }
+  }
+}
+```
+
+## Troubleshooting
+
+To enable logs for the MCP, use the `--verbose true` option.
+
+### ENOENT
+
+![Error dialog in Claude Desktop showing 'ENOENT' system error, indicating the npx/bunx command wasn't found in the system path.](/img/claude-ENOENT.png)
+
+Try to use the full path of the command instead:
+
+- Run `which npx` or `which bunx` to get the path of the command.
+- Replace `npx` or `bunx` in the configuration file with the full path (e.g. `/home/user/bin/bunx`).
+
+### Server disconnected
+
+![Connection error notification in Claude Desktop displaying 'Server disconnected' message.](/img/claude-server-disconnect.png)
+
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
+
+> You can always have a look at the full logs under `Claude/logs/mcp.log` and `Claude/logs/mcp-server-pinax.log` for more details.
diff --git a/website/src/pages/ru/ai-suite/token-api-mcp/cline.mdx b/website/src/pages/ru/ai-suite/token-api-mcp/cline.mdx
new file mode 100644
index 000000000000..e885d21366cd
--- /dev/null
+++ b/website/src/pages/ru/ai-suite/token-api-mcp/cline.mdx
@@ -0,0 +1,52 @@
+---
+title: Using Cline to Access the Token API via MCP
+sidebarTitle: Cline
+---
+
+## Prerequisites
+
+- [Cline](https://cline.bot/) installed.
+- A [JWT token](/token-api/quick-start) from [The Graph Market](https://thegraph.market/).
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path.
+- The `@pinax/mcp` package requires Node 18+, as it relies on built-in `fetch()` / `Headers`, which are not available in Node 17 or older. You may need to specify an exact path to an up-to-date Node version, or uninstall previous versions of Node to ensure `@pinax/mcp` uses the correct version.
+
+![Screenshot of Cline's MCP server configuration interface displaying the JSON settings file with mcp-pinax server details visible.](/img/cline-preview-token-api.png)
+
+## Configuration
+
+Create or edit your `cline_mcp_settings.json` file.
+
+> **MCP Servers** > **Installed** > **Configure MCP Servers**
+
+```json label="cline_mcp_settings.json"
+{
+  "mcpServers": {
+    "mcp-pinax": {
+      "command": "npx",
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
+      "env": {
+        "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
+      }
+    }
+  }
+}
+```
+
+## Troubleshooting
+
+To enable logs for the MCP, use the `--verbose true` option.
+
+### ENOENT
+
+![Cline error dialog showing 'ENOENT' system alert.](/img/cline-error.png)
+
+Try to use the full path of the command instead:
+
+- Run `which npx` or `which bunx` to get the path of the command.
+- Replace `npx` or `bunx` in the configuration file with the full path (e.g. `/home/user/bin/bunx`).
+
+### Server disconnected
+
+![Cline connection error notification displaying server disconnection warning.](/img/cline-missing-variables.png)
+
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/ru/ai-suite/token-api-mcp/cursor.mdx b/website/src/pages/ru/ai-suite/token-api-mcp/cursor.mdx
new file mode 100644
index 000000000000..68fe2fdb201c
--- /dev/null
+++ b/website/src/pages/ru/ai-suite/token-api-mcp/cursor.mdx
@@ -0,0 +1,50 @@
+---
+title: Using Cursor to Access the Token API via MCP
+sidebarTitle: Cursor
+---
+
+## Prerequisites
+
+- [Cursor](https://www.cursor.com/) installed.
+- A [JWT token](/token-api/quick-start) from [The Graph Market](https://thegraph.market/).
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path.
+- The `@pinax/mcp` package requires Node 18+, as it relies on built-in `fetch()` / `Headers`, which are not available in Node 17 or older. You may need to specify an exact path to an up-to-date Node version, or uninstall previous versions of Node to ensure `@pinax/mcp` uses the correct version.
+
+![Screenshot of Cursor's MCP configuration panel.](/img/cursor-preview-token-api.png)
+
+## Configuration
+
+Create or edit your `~/.cursor/mcp.json` file.
+
+> **Cursor Settings** > **MCP** > **Add new global MCP Server**
+
+```json label="mcp.json"
+{
+  "mcpServers": {
+    "mcp-pinax": {
+      "command": "npx",
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
+      "env": {
+        "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
+      }
+    }
+  }
+}
+```
+
+## Troubleshooting
+
+![Cursor IDE error notification that reads, "Failed to create client"](/img/cursor-error.png)
+
+To enable logs for the MCP, use the `--verbose true` option.
+
+### ENOENT
+
+Try to use the full path of the command instead:
+
+- Run `which npx` or `which bunx` to get the path of the command.
+- Replace `npx` or `bunx` in the configuration file with the full path (e.g. `/home/user/bin/bunx`).
+
+### Server disconnected
+
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/ru/ai-suite/token-api-mcp/introduction.mdx b/website/src/pages/ru/ai-suite/token-api-mcp/introduction.mdx
new file mode 100644
index 000000000000..b61ad0a1c485
--- /dev/null
+++ b/website/src/pages/ru/ai-suite/token-api-mcp/introduction.mdx
@@ -0,0 +1,23 @@
+---
+title: Token API MCP Introduction
+sidebarTitle: 'Introduction'
+---
+
+Token API MCP server is an open-source implementation of [Anthropic's Model Context Protocol](https://modelcontextprotocol.io/introduction).
+
+This MCP server makes on-chain token data, including metadata, balances, transfers, and holder statistics, accessible through a set of MCP tools. Any compatible client can use these tools to fetch and analyze token information through a standardized interface. It connects to The Graph's hosted Token API database, enabling AI assistants to query real-time blockchain data using natural language requests that get translated into optimized SQL queries.
+
+The server itself does not host any language model. It simply converts MCP calls into data look-ups and returns structured results, letting the client's own LLM incorporate the results.
+
+Think of it as a USB-C hub: it standardizes the plug-and-play connection between AI agents and The Graph's Token API data.
+
+## What You Can Do
+
+- Retrieve token metadata including name, symbol, decimals, total supply, and contract address
+- Get token balances for any wallet address holding a supported ERC-20 token
+- Fetch token transfer activity including sender, receiver, amount, and timestamp
+- Identify top holders and analyze token distribution
+- Ask natural language questions about token data without writing smart contract calls
+- Access historical transfer data to analyze token movement over time
+
+The Token MCP server provides [Claude](/ai-suite/token-api-mcp/claude/), [Cline](/ai-suite/token-api-mcp/cline/), and [Cursor](/ai-suite/token-api-mcp/cursor/) with direct, conversational access to onchain token data.
diff --git a/website/src/pages/ru/resources/_meta.js b/website/src/pages/ru/resources/_meta.js
index aa8e2d0ec6a8..38c56cf56c43 100644
--- a/website/src/pages/ru/resources/_meta.js
+++ b/website/src/pages/ru/resources/_meta.js
@@ -7,5 +7,4 @@ export default {
   roles: titles.roles ?? '',
   'migration-guides': titles['migration-guides'] ?? '',
   'subgraph-studio-faq': '',
-  'claude-mcp': '',
 }
diff --git a/website/src/pages/ru/resources/claude-mcp.mdx b/website/src/pages/ru/resources/claude-mcp.mdx
deleted file mode 100644
index 44ed075cffda..000000000000
--- a/website/src/pages/ru/resources/claude-mcp.mdx
+++ /dev/null
@@ -1,122 +0,0 @@
----
-title: Claude MCP
----
-
-This guide walks you through configuring Claude Desktop to use The Graph ecosystem's [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) resources: Token API and Subgraph. These integrations allow you to interact with blockchain data through natural language conversations with Claude.
-
-## What You Can Do
-
-With these integrations, you can:
-
-- **Token API**: Access token and wallet information across multiple blockchains
-- **Subgraph**: Find relevant Subgraphs for specific keywords and contracts, explore Subgraph schemas, and execute GraphQL queries
-
-## Prerequisites
-
-- [Node.js](https://nodejs.org/en/download/) installed and available in your path
-- [Claude Desktop](https://claude.ai/download) installed
-- API keys:
-  - Token API key from [The Graph Market](https://thegraph.market/)
-  - Gateway API key from [Subgraph Studio](https://thegraph.com/studio/apikeys/)
-
-## Configuration Steps
-
-### 1. Open Configuration File
-
-Navigate to your `claude_desktop_config.json` file:
-
-> **Claude Desktop** > **Settings** > **Developer** > **Edit Config**
-
-Paths by operating system:
-
-- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
-- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
-- Linux: `.config/Claude/claude_desktop_config.json`
-
-### 2. Add Configuration
-
-Replace the contents of the existing config file with:
-
-```json
-{
-  "mcpServers": {
-    "token-api": {
-      "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
-      "env": {
-        "ACCESS_TOKEN": "ACCESS_TOKEN"
-      }
-    },
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-### 3. Add Your API Keys
-
-Replace:
-
-- `ACCESS_TOKEN` with your Token API key from [The Graph Market](https://thegraph.market/)
-- `GATEWAY_API_KEY` with your Gateway API key from [Subgraph Studio](https://thegraph.com/studio/apikeys/)
-
-### 4. Save and Restart
-
-- Save the configuration file
-- Restart Claude Desktop
-
-### 5. Add The Graph Resources in Claude
-
-After configuration:
-
-1. Start a new conversation in Claude Desktop
-2. Click on the context menu (top right)
-3. Add "Subgraph Server Instructions" as a resource by entering `graphql://subgraph` for Subgraph MCP
-
-> **Important**: You must manually add The Graph resources to your chat context for each conversation where you want to use them.
-
-### 6. Run Queries
-
-Here are some example queries you can try after setting up the resources:
-
-### Subgraph Queries
-
-```
-What are the top pools in Uniswap?
-```
-
-```
-Who are the top Delegators of The Graph Protocol?
-```
-
-```
-Please make a bar chart for the number of active loans in Compound for the last 7 days
-```
-
-### Token API Queries
-
-```
-Show me the current price of ETH
-```
-
-```
-What are the top tokens by market cap on Ethereum?
-```
-
-```
-Analyze this wallet address: 0x...
-```
-
-## Troubleshooting
-
-If you encounter issues:
-
-1. **Verify Node.js Installation**: Ensure Node.js is correctly installed by running `node -v` in your terminal
-2. **Check API Keys**: Verify that your API keys are correctly entered in the configuration file
-3. **Enable Verbose Logging**: Add `--verbose true` to the args array in your configuration to see detailed logs
-4. **Restart Claude Desktop**: After making changes to the configuration, always restart Claude Desktop
diff --git a/website/src/pages/ru/subgraphs/_meta.js b/website/src/pages/ru/subgraphs/_meta.js
index 4365293ffc72..45841d5f3355 100644
--- a/website/src/pages/ru/subgraphs/_meta.js
+++ b/website/src/pages/ru/subgraphs/_meta.js
@@ -6,7 +6,6 @@ export default {
   querying: titles.querying ?? '',
   developing: titles.developing ?? '',
   billing: '',
-  mcp: titles.mcp ?? '',
   guides: titles.guides,
   'best-practices': titles['best-practices'],
   'fair-use-policy': '',
diff --git a/website/src/pages/ru/subgraphs/mcp/_meta.js b/website/src/pages/ru/subgraphs/mcp/_meta.js
deleted file mode 100644
index 8630d4da27b3..000000000000
--- a/website/src/pages/ru/subgraphs/mcp/_meta.js
+++ /dev/null
@@ -1,5 +0,0 @@
-export default {
-  claude: '',
-  cline: '',
-  cursor: '',
-}
diff --git a/website/src/pages/ru/subgraphs/mcp/claude.mdx b/website/src/pages/ru/subgraphs/mcp/claude.mdx
deleted file mode 100644
index 027b272cb942..000000000000
--- a/website/src/pages/ru/subgraphs/mcp/claude.mdx
+++ /dev/null
@@ -1,179 +0,0 @@
----
-title: Claude Desktop
----
-
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Claude to interact directly with Subgraphs on The Graph Network. This integration allows you to find relevant Subgraphs for specific keywords and contracts, explore Subgraph schemas, and execute GraphQL queries—all through natural language conversations with Claude.
-
-## What You Can Do
-
-The Subgraph MCP integration enables you to:
-
-- Access the GraphQL schema for any Subgraph on The Graph Network
-- Execute GraphQL queries against any Subgraph deployment
-- Find top Subgraph deployments for a given keyword or contract address
-- Get 30-day query volume for Subgraph deployments
-- Ask natural language questions about Subgraph data without writing GraphQL queries manually
-
-## Prerequisites
-
-- [Node.js](https://nodejs.org/en) installed and available in your path
-- [Claude Desktop](https://claude.ai/download) installed (latest version)
-- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
-
-## Installation Options
-
-### Option 1: Using npx (Recommended)
-
-#### Configuration Steps using npx
-
-#### 1. Open Configuration File
-
-Navigate to your `claude_desktop_config.json` file:
-
-> **Settings** > **Developer** > **Edit Config**
-
-- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
-- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
-- Linux: `.config/Claude/claude_desktop_config.json`
-
-#### 2. Add Configuration
-
-Paste the following settings into your config file:
-
-```json
-{
-  "mcpServers": {
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-#### 3. Add Your Gateway API Key
-
-Replace `GATEWAY_API_KEY` with your API key from [Subgraph Studio](https://thegraph.com/studio/).
-
-#### 4. Save and Restart
-
-Once you've entered your Gateway API key into your settings, save the file and restart Claude Desktop.
-
-### Option 2: Building from Source
-
-#### Requirements
-
-- Rust (latest stable version recommended: 1.75+)
-  ```bash
-  curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
-  ```
-  Follow the on-screen instructions. For other platforms, see the [official Rust installation guide](https://www.rust-lang.org/tools/install).
-
-#### Installation Steps
-
-1. **Clone and Build the Repository**
-
-   ```bash
-   git clone git@github.com:graphops/subgraph-mcp.git
-   cd subgraph-mcp
-   cargo build --release
-   ```
-
-2. **Find the Command Path**
-
-   After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory.
-   - Navigate to your `subgraph-mcp` directory in terminal
-   - Run `pwd` to get the full path
-   - Combine the output with `/target/release/subgraph-mcp`
-
-3. **Configure Claude Desktop**
-
-   Open your `claude_desktop_config.json` file as described above and add:
-
-   ```json
-   {
-     "mcpServers": {
-       "subgraph": {
-         "command": "/path/to/your/subgraph-mcp/target/release/subgraph-mcp",
-         "env": {
-           "GATEWAY_API_KEY": "your-api-key-here"
-         }
-       }
-     }
-   }
-   ```
-
-   Replace `/path/to/your/subgraph-mcp/target/release/subgraph-mcp` with the actual path to the compiled binary.
-
-## Using The Graph Resource in Claude
-
-After configuring Claude Desktop:
-
-1. Restart Claude Desktop
-2. Start a new conversation
-3. Click on the context menu (top right)
-4. Add "Subgraph Server Instructions" as a resource by adding `graphql://subgraph` to your chat context
-
-> **Important**: Claude Desktop may not automatically utilize the Subgraph MCP. You must manually add "Subgraph Server Instructions" resource to your chat context for each conversation where you want to use it.
-
-## Troubleshooting
-
-To enable logs for the MCP when using the npx option, add the `--verbose true` option to your args array.
-
-## Available Subgraph Tools and Usage
-
-The Subgraph MCP provides several tools for interacting with Subgraphs:
-
-### Schema Retrieval Tools
-
-- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
-- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
-- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
-
-### Query Execution Tools
-
-- **Execute query by deployment ID/IPFS hash**: Run GraphQL queries against specific, immutable deployments
-- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
-
-### Discovery Tools
-
-- **Search subgraphs by keyword**: Find subgraphs by keyword in their display names, ordered by signal
-- **Get deployment 30-day query counts**: Get aggregate query count over the last 30 days for multiple subgraph deployments
-- **Get top Subgraph deployments for a contract**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain, ordered by query fees
-
-## Key Identifier Types
-
-- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a subgraph. Use `execute_query_by_subgraph_id` or `get_schema_by_subgraph_id`.
-- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment. Use `execute_query_by_deployment_id` or `get_schema_by_deployment_id`.
-- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific, immutable deployment. Use `execute_query_by_deployment_id` (the gateway treats it like a deployment ID for querying) or `get_schema_by_ipfs_hash`.
-
-## Benefits of Natural Language Queries
-
-One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Claude will:
-
-1. Understand your goal (lookup, find Subgraphs, query, get schema)
-2. Find relevant deployments if needed
-3. Fetch and interpret the Subgraph schema
-4. Convert your question into an appropriate GraphQL query
-5. Execute the query and present the results in a readable format
-
-### Example Natural Language Queries
-
-```
-What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
-```
-
-```
-Which tokens have the highest market cap in this Subgraph?
-```
-
-```
-Show me the most recent 5 swaps for the USDC/ETH pair
-```
-
-```
-Find the top subgraphs for contract 0x1f98431c8ad98523631ae4a59f267346ea31f984 on arbitrum-one
-```
diff --git a/website/src/pages/ru/subgraphs/mcp/cline.mdx b/website/src/pages/ru/subgraphs/mcp/cline.mdx
deleted file mode 100644
index 156221d9a127..000000000000
--- a/website/src/pages/ru/subgraphs/mcp/cline.mdx
+++ /dev/null
@@ -1,99 +0,0 @@
----
-title: Cline
----
-
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Cline to interact directly with Subgraphs on The Graph Network. This integration allows you to explore Subgraph schemas, execute GraphQL queries, and find relevant Subgraphs for specific contracts—all through natural language conversations with Cline.
-
-## Prerequisites
-
-- [Cline](https://cline.bot/) installed (latest version)
-- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
-
-## Configuration Steps
-
-### 1. Open Configuration File
-
-Create or edit your `cline_mcp_settings.json` file.
-
-> **MCP Servers** > **Installed** > **Configure MCP Servers**
-
-### 2. Add Configuration
-
-```json
-{
-  "mcpServers": {
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-### 3. Add Your API Key
-
-Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
-
-## Using The Graph Resource in Cline
-
-After configuring Cline:
-
-1. Restart Cline
-2. Start a new conversation
-3. Enable the Subgraph MCP from the context menu
-4. Add "Subgraph Server Instructions" as a resource to your chat context
-
-## Available Tools and Usage
-
-The Subgraph MCP provides several tools for interacting with Subgraphs:
-
-### Schema Retrieval Tools
-
-- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
-- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
-- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
-
-### Query Execution Tools
-
-- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
-- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
-
-### Discovery Tools
-
-- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
-
-## Natural Language Queries
-
-One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cline will:
-
-1. Understand your goal (lookup, find Subgraphs, query, get schema)
-2. Find relevant deployments if needed
-3. Fetch and interpret the Subgraph schema
-4. Convert your question into an appropriate GraphQL query
-5. Execute the query and present the results in a readable format
-
-### Example Natural Language Queries
-
-```
-What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
-```
-
-```
-Which tokens have the highest market cap in this Subgraph?
-```
-
-```
-Show me the most recent 5 swaps for the USDC/ETH pair
-```
-
-## Key Identifier Types
-
-When working with Subgraphs, you'll encounter different types of identifiers:
-
-- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
-- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
-- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/ru/subgraphs/mcp/cursor.mdx b/website/src/pages/ru/subgraphs/mcp/cursor.mdx
deleted file mode 100644
index 298f43ece048..000000000000
--- a/website/src/pages/ru/subgraphs/mcp/cursor.mdx
+++ /dev/null
@@ -1,94 +0,0 @@
----
-title: Cursor
----
-
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Cursor to interact directly with Subgraphs on The Graph Network. This integration allows you to explore Subgraph schemas, execute GraphQL queries, and find relevant Subgraphs for specific contracts—all through natural language conversations with Cursor.
-
-## Prerequisites
-
-- [Cursor](https://www.cursor.com/) installed (latest version)
-- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
-
-## Configuration Steps
-
-### 1. Open Configuration File
-
-Create or edit your `~/.cursor/mcp.json` file.
-
-> **Cursor Settings** > **MCP** > **Add new global MCP Server**
-
-### 2. Add Configuration
-
-```json
-{
-  "mcpServers": {
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-### 3. Add Your API Key
-
-Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
-
-### 4. Restart Cursor
-
-Restart Cursor, and start a new chat.
-
-## Available Subgraph Tools and Usage
-
-The Subgraph MCP provides several tools for interacting with Subgraphs:
-
-### Schema Retrieval Tools
-
-- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
-- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
-- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
-
-### Query Execution Tools
-
-- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
-- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
-
-### Discovery Tools
-
-- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
-
-## Benefits of Natural Language Queries
-
-One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cursor will:
-
-1. Understand your goal (lookup, find Subgraphs, query, get schema)
-2. Find relevant deployments if needed
-3. Fetch and interpret the Subgraph schema
-4. Convert your question into an appropriate GraphQL query
-5. Execute the query and present the results in a readable format
-
-### Example Natural Language Queries
-
-```
-What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
-```
-
-```
-Which tokens have the highest market cap in this Subgraph?
-```
-
-```
-Show me the most recent 5 swaps for the USDC/ETH pair
-```
-
-## Key Identifier Types
-
-When working with Subgraphs, you'll encounter different types of identifiers:
-
-- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
-- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
-- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/ru/substreams/_meta.js b/website/src/pages/ru/substreams/_meta.js
index a8ee04618eae..658bb8c213c6 100644
--- a/website/src/pages/ru/substreams/_meta.js
+++ b/website/src/pages/ru/substreams/_meta.js
@@ -5,5 +5,4 @@ export default {
   introduction: '',
   developing: titles.developing ?? '',
   publishing: '',
-  sps: titles.sps ?? '',
 }
diff --git a/website/src/pages/ru/token-api/_meta-titles.json b/website/src/pages/ru/token-api/_meta-titles.json
index e3d12c4a864f..54aff26bf479 100644
--- a/website/src/pages/ru/token-api/_meta-titles.json
+++ b/website/src/pages/ru/token-api/_meta-titles.json
@@ -1,6 +1,7 @@
 {
   "mcp": "MCP",
   "evm": "EVM Endpoints",
+  "svm": "SVM Endpoints",
   "monitoring": "Monitoring Endpoints",
   "faq": "Часто задаваемые вопросы"
 }
diff --git a/website/src/pages/ru/token-api/_meta.js b/website/src/pages/ru/token-api/_meta.js
index f67576d7f612..fb7f7334ea0c 100644
--- a/website/src/pages/ru/token-api/_meta.js
+++ b/website/src/pages/ru/token-api/_meta.js
@@ -2,8 +2,8 @@ import titles from './_meta-titles.json'
 
 export default {
   'quick-start': '',
-  mcp: titles.mcp ?? '',
   evm: titles.evm ?? '',
+  svm: titles.svm ?? '',
   monitoring: titles.monitoring ?? '',
   faq: '',
 }
diff --git a/website/src/pages/ru/token-api/mcp/_meta.js b/website/src/pages/ru/token-api/mcp/_meta.js
deleted file mode 100644
index 8630d4da27b3..000000000000
--- a/website/src/pages/ru/token-api/mcp/_meta.js
+++ /dev/null
@@ -1,5 +0,0 @@
-export default {
-  claude: '',
-  cline: '',
-  cursor: '',
-}
diff --git a/website/src/pages/ru/token-api/mcp/claude.mdx b/website/src/pages/ru/token-api/mcp/claude.mdx
deleted file mode 100644
index be15cbb0fee1..000000000000
--- a/website/src/pages/ru/token-api/mcp/claude.mdx
+++ /dev/null
@@ -1,58 +0,0 @@
----
-title: Using Claude Desktop to Access the Token API via MCP
-sidebarTitle: Claude Desktop
----
-
-## Предварительные требования
-
-- [Claude Desktop](https://claude.ai/download) installed.
-- A [JWT token](/token-api/quick-start) from [The Graph Market](https://thegraph.market/).
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path.
-- The `@pinax/mcp` package requires Node 18+, as it relies on built-in `fetch()` / `Headers`, which are not available in Node 17 or older. You may need to specify an exact path to an up-to-date Node version, or uninstall previous versions of Node to ensure `@pinax/mcp` uses the correct version.
-
-![Screenshot of Claude Desktop's settings panel showing the MCP server configuration option.](/img/claude-preview-token-api.png)
-
-## Конфигурация
-
-Create or edit your `claude_desktop_config.json` file.
-
-> **Settings** > **Developer** > **Edit Config**
-
-- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
-- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
-- Linux: `.config/Claude/claude_desktop_config.json`
-
-```json label="claude_desktop_config.json"
-{
-  "mcpServers": {
-    "token-api": {
-      "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
-      "env": {
-        "ACCESS_TOKEN": "<https://thegraph.market JWT Access Token>"
-      }
-    }
-  }
-}
-```
-
-## Troubleshooting
-
-To enable logs for the MCP, use the `--verbose true` option.
-
-### ENOENT
-
-![Error dialog in Claude Desktop showing 'ENOENT' system error, indicating the npx/bunx command wasn't found in the system path.](/img/claude-ENOENT.png)
-
-Try to use the full path of the command instead:
-
-- Run `which npx` or `which bunx` to get the path of the command.
-- Replace `npx` or `bunx` in the configuration file with the full path (e.g. `/home/user/bin/bunx`).
-
-### Server disconnected
-
-![Connection error notification in Claude Desktop displaying 'Server disconnected' message.](/img/claude-server-disconnect.png)
-
-Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
-
-> You can always have a look at the full logs under `Claude/logs/mcp.log` and `Claude/logs/mcp-server-pinax.log` for more details.
diff --git a/website/src/pages/ru/token-api/mcp/cline.mdx b/website/src/pages/ru/token-api/mcp/cline.mdx
deleted file mode 100644
index b264b1300266..000000000000
--- a/website/src/pages/ru/token-api/mcp/cline.mdx
+++ /dev/null
@@ -1,52 +0,0 @@
----
-title: Using Cline to Access the Token API via MCP
-sidebarTitle: Cline
----
-
-## Предварительные требования
-
-- [Cline](https://cline.bot/) installed.
-- A [JWT token](/token-api/quick-start) from [The Graph Market](https://thegraph.market/).
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path.
-- The `@pinax/mcp` package requires Node 18+, as it relies on built-in `fetch()` / `Headers`, which are not available in Node 17 or older. You may need to specify an exact path to an up-to-date Node version, or uninstall previous versions of Node to ensure `@pinax/mcp` uses the correct version.
-
-![Screenshot of Cline's MCP server configuration interface displaying the JSON settings file with mcp-pinax server details visible.](/img/cline-preview-token-api.png)
-
-## Конфигурация
-
-Create or edit your `cline_mcp_settings.json` file.
-
-> **MCP Servers** > **Installed** > **Configure MCP Servers**
-
-```json label="cline_mcp_settings.json"
-{
-  "mcpServers": {
-    "mcp-pinax": {
-      "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
-      "env": {
-        "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
-      }
-    }
-  }
-}
-```
-
-## Troubleshooting
-
-To enable logs for the MCP, use the `--verbose true` option.
-
-### ENOENT
-
-![Cline error dialog showing 'ENOENT' system alert.](/img/cline-error.png)
-
-Try to use the full path of the command instead:
-
-- Run `which npx` or `which bunx` to get the path of the command.
-- Replace `npx` or `bunx` in the configuration file with the full path (e.g. `/home/user/bin/bunx`).
-
-### Server disconnected
-
-![Cline connection error notification displaying server disconnection warning.](/img/cline-missing-variables.png)
-
-Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/ru/token-api/mcp/cursor.mdx b/website/src/pages/ru/token-api/mcp/cursor.mdx
deleted file mode 100644
index 16250c0cae94..000000000000
--- a/website/src/pages/ru/token-api/mcp/cursor.mdx
+++ /dev/null
@@ -1,50 +0,0 @@
----
-title: Using Cursor to Access the Token API via MCP
-sidebarTitle: Cursor
----
-
-## Предварительные требования
-
-- [Cursor](https://www.cursor.com/) installed.
-- A [JWT token](/token-api/quick-start) from [The Graph Market](https://thegraph.market/).
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path.
-- The `@pinax/mcp` package requires Node 18+, as it relies on built-in `fetch()` / `Headers`, which are not available in Node 17 or older. You may need to specify an exact path to an up-to-date Node version, or uninstall previous versions of Node to ensure `@pinax/mcp` uses the correct version.
-
-![Screenshot of Cursor's MCP configuration panel.](/img/cursor-preview-token-api.png)
-
-## Конфигурация
-
-Create or edit your `~/.cursor/mcp.json` file.
-
-> **Cursor Settings** > **MCP** > **Add new global MCP Server**
-
-```json label="mcp.json"
-{
-  "mcpServers": {
-    "mcp-pinax": {
-      "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
-      "env": {
-        "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
-      }
-    }
-  }
-}
-```
-
-## Troubleshooting
-
-![Cursor IDE error notification that reads, "Failed to create client"](/img/cursor-error.png)
-
-To enable logs for the MCP, use the `--verbose true` option.
-
-### ENOENT
-
-Try to use the full path of the command instead:
-
-- Run `which npx` or `which bunx` to get the path of the command.
-- Replace `npx` or `bunx` in the configuration file with the full path (e.g. `/home/user/bin/bunx`).
-
-### Server disconnected
-
-Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/ru/token-api/svm/_meta.js b/website/src/pages/ru/token-api/svm/_meta.js
new file mode 100644
index 000000000000..1a48b82fcbf1
--- /dev/null
+++ b/website/src/pages/ru/token-api/svm/_meta.js
@@ -0,0 +1,5 @@
+export default {
+  'get-balances-svm': '',
+  'get-transfers-svm': '',
+  'get-swaps-svm': '',
+}
diff --git a/website/src/pages/ru/token-api/svm/get-balances-svm.mdx b/website/src/pages/ru/token-api/svm/get-balances-svm.mdx
new file mode 100644
index 000000000000..c2946c190bf9
--- /dev/null
+++ b/website/src/pages/ru/token-api/svm/get-balances-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Balances
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getBalancesSvm
+---
+
+Provides Solana tokens balances by token account address.
diff --git a/website/src/pages/ru/token-api/svm/get-swaps-svm.mdx b/website/src/pages/ru/token-api/svm/get-swaps-svm.mdx
new file mode 100644
index 000000000000..95282a38ac9f
--- /dev/null
+++ b/website/src/pages/ru/token-api/svm/get-swaps-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Swap Events
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getSwapsSvm
+---
+
+Provides Raydium swap events.
diff --git a/website/src/pages/ru/token-api/svm/get-transfers-svm.mdx b/website/src/pages/ru/token-api/svm/get-transfers-svm.mdx
new file mode 100644
index 000000000000..5335cdddf418
--- /dev/null
+++ b/website/src/pages/ru/token-api/svm/get-transfers-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Transfers Events
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getTransfersSvm
+---
+
+Provides SVM transfer events.
diff --git a/website/src/pages/sv/ai-suite/_meta-titles.json b/website/src/pages/sv/ai-suite/_meta-titles.json
new file mode 100644
index 000000000000..5eb482a7092b
--- /dev/null
+++ b/website/src/pages/sv/ai-suite/_meta-titles.json
@@ -0,0 +1,6 @@
+{
+  "graph-assistant": "Graph Assistant",
+  "ai-introduction": "The Graph's AI",
+  "subgraph-mcp": "Subgraph MCP",
+  "token-api-mcp": "Token API MCP"
+}
diff --git a/website/src/pages/sv/ai-suite/_meta.js b/website/src/pages/sv/ai-suite/_meta.js
new file mode 100644
index 000000000000..c9e51dfd35fb
--- /dev/null
+++ b/website/src/pages/sv/ai-suite/_meta.js
@@ -0,0 +1,8 @@
+import titles from './_meta-titles.json'
+
+export default {
+  'ai-introduction': titles['ai-introduction'],
+  'graph-assistant': titles['graph-assistant'],
+  'subgraph-mcp': titles['subgraph-mcp'],
+  'token-api-mcp': titles['token-api-mcp'],
+}
diff --git a/website/src/pages/sv/ai-suite/ai-introduction.mdx b/website/src/pages/sv/ai-suite/ai-introduction.mdx
new file mode 100644
index 000000000000..d25cc9f77358
--- /dev/null
+++ b/website/src/pages/sv/ai-suite/ai-introduction.mdx
@@ -0,0 +1,58 @@
+---
+title: The Graph's AI
+---
+
+Build with speed and scale faster with The Graph's AI.
+
+## Using AI on The Graph
+
+Instead of relying on static datasets or centralized APIs, you can now access live blockchain data through our **agentic** app, [Graph Assistant](/ai-suite/graph-assistant/introduction/), and use our AI-native tooling, [Subgraph MCP](/ai-suite/subgraph-mcp/introduction/), and [Token API MCP](/ai-suite/token-api-mcp/introduction/).
+
+### Why Use Onchain Data with AI?
+
+Using onchain data with AI unlocks powerful new ways to interact with and understand blockchain ecosystems.
+
+- **AI for Non-Technical End Users**: AI can turn complex onchain data into accessible insights. Assistants powered by AI enable you to explore and analyze blockchain data without coding.
+- **AI for Developers**: You can use AI to interact directly with The Graph's data through your agents or build AI-powered applications on top of it. This streamlines development and opens up more intuitive, dynamic use cases.
+
+## AI for Non-Technical/End Users
+
+[Graph Assistant](/ai-suite/graph-assistant/introduction/) is a powerful **agentic** application that empowers users to easily interact with blockchain data. Ask questions in simple, natural language and get rich, AI powered insights. Both technical developers and non-technical product teams can move faster, make smarter decisions, and gain a clearer understanding than ever before.
+
+### Benefits of Using Graph Assistant
+
+- **Natural language Input**: You don't need to write complex queries or sift through dashboards. Simply ask your question in plain English and get clear, structured results.
+- **Multi-source support**: Works across multiple Subgraphs and Token API. The Assistant automatically determines which data source to use, so you don't have to switch tools or manage endpoints.
+- **Schema-free access**: You don't need to understand the schema. You can refer to tokens, protocols, dates, or addresses using natural language. The Assistant takes care of the rest.
+
+### Conversational Querying with Graph Assistant
+
+**Example queries:**
+
+- "List the top-5 swaps by USD value in the last 24 hours."
+- "Give me the daily volume on Uniswap."
+- "List the 20 most recently registered .eth names."
+
+[Graph Assistant](/ai-suite/graph-assistant/introduction/) will eventually be a one-stop shop for interacting with The Graph. Right now, it's an agentic AI app that uses state-of-the-art AI techniques, LLMs, and MCPs to understand and answer your questions about [Subgraphs](/subgraphs/developing/subgraphs/) and [Token API](/token-api/quick-start/) data.
+
+## AI for Developers
+
+### Enable Natural Language Access to Onchain Data
+
+[Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) servers connect to Claude, Cline, and Cursor. They enable models to understand, query, and interact with structured onchain data using natural language. MCPs remove the need to write low-level queries or interact with APIs directly.
+
+### Subgraph MCP
+
+The [Subgraph MCP](/ai-suite/subgraph-mcp/introduction/) server connects models to Subgraphs on The Graph Network. It allows language models to explore Subgraph schemas, execute GraphQL queries, find relevant Subgraphs by keyword or contract, and surface usage metrics using natural language.
+
+### Token API MCP
+
+The [Token API MCP](/ai-suite/token-api-mcp/introduction/) MCP server enables models to access onchain token data. It supports querying token metadata, wallet balances, transfer history, and top token holders through simple prompts.
+
+#### Benefits of Using Subgraph and Token API MCPs
+
+- Query Subgraphs and token data using natural language
+- Access GraphQL schemas and token metadata without manual queries
+- Find Subgraphs by keyword or contract and check 30-day usage
+- Retrieve real-time data from The Graph and onchain token sources
+- Get wallet balances, transfer history, and top token holders
diff --git a/website/src/pages/sv/ai-suite/graph-assistant/_meta.js b/website/src/pages/sv/ai-suite/graph-assistant/_meta.js
new file mode 100644
index 000000000000..74da5e0686a7
--- /dev/null
+++ b/website/src/pages/sv/ai-suite/graph-assistant/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  'quick-start': '',
+  introduction: '',
+  'how-to-guide': '',
+  faq: '',
+}
diff --git a/website/src/pages/sv/ai-suite/graph-assistant/faq.mdx b/website/src/pages/sv/ai-suite/graph-assistant/faq.mdx
new file mode 100644
index 000000000000..8addf9935524
--- /dev/null
+++ b/website/src/pages/sv/ai-suite/graph-assistant/faq.mdx
@@ -0,0 +1,26 @@
+---
+title: Graph Assistant FAQ
+sidebarTitle: 'FAQ'
+---
+
+This page summarizes some of the most common questions for developers using Graph Assistant.
+
+1. What is The Graph Assistant?
+
+The Graph Assistant is an AI-powered chat interface that lets you query blockchain data in plain English. Under the hood, it translates your questions into GraphQL calls against Subgraphs and the Token API, then returns results, no coding required.
+
+2. What is an agentic application?
+
+An agentic application combines AI-driven reasoning with external data sources or APIs to take autonomous actions on your behalf. In this case, Graph Assistant acts as an “agent” that interprets your natural-language prompts, builds and dispatches GraphQL queries, and formats the results so that you don't need to write or manage queries yourself.
+
+3. Which networks and data does Graph Assistant support?
+
+The Assistant has access to Subgraphs across multiple chains. If a Subgraph is published to The Graph Network and is being indexed, the Assistant can automatically route queries to it. The Assistant also has access to the Token API on Ethereum Mainnet, BSC, Unichain, Arbitrum-One, Optimism, and Polygon.
+
+4. Is there a usage limit or quota?
+
+Yes, 10 questions per hour.
+
+5. What if the Assistant can't interpret my question?
+
+When the Assistant fails to parse your intent (for example, ambiguous token name, missing context, or an unsupported request), it will prompt you for clarification. For instance, it might ask, “Did you mean XYZ on Ethereum or XYZ on Arbitrum?” or “Please specify a date range for this query.” If you continue to see parsing errors, check that you're using correct token symbols or specifying networks and time frames clearly.
diff --git a/website/src/pages/sv/ai-suite/graph-assistant/how-to-guide.mdx b/website/src/pages/sv/ai-suite/graph-assistant/how-to-guide.mdx
new file mode 100644
index 000000000000..463130894ad8
--- /dev/null
+++ b/website/src/pages/sv/ai-suite/graph-assistant/how-to-guide.mdx
@@ -0,0 +1,56 @@
+---
+title: How To Use The Graph Assistant
+sidebarTitle: 'How-to Guide'
+---
+
+## Overview
+
+You type a natural language question into the chat interface, such as:
+
+```yaml
+'On Uniswap, return the top-10 pools by total value locked in USD.'
+```
+
+> [!IMPORTANT] All users can process 10 free queries per user per hour.
+
+> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the underlying agents. Do not share sensitive, personal, or private information.
+
+### Behind the Scenes
+
+The Assistant:
+
+1. Interprets your intent
+2. Maps it to the correct Subgraphs or Token API endpoint
+3. Executes optimized queries
+4. Returns clean, structured results
+
+You don't need to write queries or understand a Subgraph's schema, you simply ask.
+
+### Example Use Cases
+
+**Protocol Analytics**
+
+- “Compare daily active users on Aave vs. Compound in May 2025.”
+- “Show me the total value locked (TVL) for XYZDAO over the last quarter.”
+
+**Token Insights**
+
+- “What are the top 10 tokens by market cap on Ethereum right now?”
+- “How many XYZ did I receive between May 1 and May 15?”
+
+**Historical Data Retrieval**
+
+- “Fetch the token price history of XYZ for the last six months.”
+- “What was the average gas price on Ethereum during April?”
+
+**Portfolio Monitoring**
+
+- “List my wallet’s current token balances and their USD equivalents.”
+- “Calculate profit/loss on XYZ since xyz date.”
+
+**Cross-Chain Comparison**
+
+- “Show me the 7-day trading volume of XYZ on Ethereum vs. Polygon.”
+- “How many XYZ swaps occurred on Arbitrum yesterday?”
+
+To get started follow the [quickstart](/ai-suite/graph-assistant/quick-start/) and explore its capabilities.
diff --git a/website/src/pages/sv/ai-suite/graph-assistant/introduction.mdx b/website/src/pages/sv/ai-suite/graph-assistant/introduction.mdx
new file mode 100644
index 000000000000..65fdf0f96028
--- /dev/null
+++ b/website/src/pages/sv/ai-suite/graph-assistant/introduction.mdx
@@ -0,0 +1,31 @@
+---
+title: Introduction
+---
+
+> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime.
+
+[Graph Assistant](https://thegraph.com/graph-assistant) (Beta) gives instant, code-free access to blockchain data, transforming natural language into precise, AI-powered queries without the need to code.
+
+## Overview
+
+[Graph Assistant](https://thegraph.com/graph-assistant) is an advanced, [agentic](/en/ai-suite/graph-assistant/faq/) easy-to-use chat interface for querying blockchain data using natural language. Unlike a basic chatbot, Graph Assistant can understand your intent, build complex queries, and execute them automatically. This gives you rich, AI-powered insights from onchain data without writing any code.
+
+- **Automatically** interprets user intent, generates precise queries, executes them via The Graph's Subgraphs and Token API, and presents structured, AI-powered answers without requiring any code.
+- **Removes** the technical complexity found in traditional dashboards or chatbots. It provides composable insights directly from indexed Subgraphs and Token datasets.
+
+## Core Features
+
+| Feature | Description |
+| --- | --- |
+| **Friendly Interface** | Conversational access to blockchain data via natural language. You simply ask questions, the Assistant fetches the answer, and renders results. |
+| **Backed by Subgraphs** | Uses subgraphs to index protocol-specific data like transactions, events, and protocol metrics. |
+| **Backed by Token API** | Uses Token API for token-level information like balances, transfers, and metadata. |
+| **No Setup Required** | No need to configure data sources or write queries. |
+| **Automatic Query Building** | The Assistant performs complex queries such as fetching historical token volumes, protocol analytics, or cross-chain data and handles filtering, pagination, and joins across Subgraphs automatically. |
+
+## Help Shape What's Next
+
+This is in **beta**, and community input is essential. If you have ideas, questions, or run into anything unexpected, we'd love to hear from you:
+
+- Join the community on [Discord](https://discord.com/invite/graphprotocol): Provide feedback and stay in the loop with other builders. You'll be able to join the `#graph-assistant` channel to share your experience directly.
+- Interested in going deeper? Reach out to become a dedicated beta tester so your specific use case can be better supported.
diff --git a/website/src/pages/sv/ai-suite/graph-assistant/quick-start.mdx b/website/src/pages/sv/ai-suite/graph-assistant/quick-start.mdx
new file mode 100644
index 000000000000..13f8478b8d2b
--- /dev/null
+++ b/website/src/pages/sv/ai-suite/graph-assistant/quick-start.mdx
@@ -0,0 +1,44 @@
+---
+title: Quick Start
+---
+
+> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime.
+
+This guide provides step-by-step instructions for getting started with Graph Assistant quickly.
+
+## Step-by Step
+
+### Step 1. Create an Account
+
+Go to: [Graph Assistant](https://thegraph.com/graph-assistant)
+
+- Click Sign Up (or Log In if you already have an account).
+- Use your Google, GitHub, X, email or wallet credentials to log in.
+- No additional setup is required.
+
+### Step 2. Open the Assistant Chat
+
+After logging in:
+
+- You'll see Graph Assistant's interface.
+- At the bottom of the page, you will find a chat input bar. This is where you will interact with the Assistant.
+
+### Step 3: Ask Your First Question
+
+> [!IMPORTANT] All users can process 10 free queries per user per hour.
+
+In the input bar, type a natural-language query (everyday language).
+
+Example:
+
+```yaml
+Show me the 24-hour trading volume of XYZ token on Ethereum
+```
+
+> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the AI interface. Do not share sensitive, personal, or private information.
+
+The Assistant will:
+
+- Digest your question
+- Fetch onchain data using Subgraphs or the Token API
+- Return a clean, formatted response with the data you need
diff --git a/website/src/pages/sv/ai-suite/subgraph-mcp/_meta.js b/website/src/pages/sv/ai-suite/subgraph-mcp/_meta.js
new file mode 100644
index 000000000000..6f527b4e53e4
--- /dev/null
+++ b/website/src/pages/sv/ai-suite/subgraph-mcp/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  introduction: '',
+  claude: '',
+  cline: '',
+  cursor: '',
+}
diff --git a/website/src/pages/sv/ai-suite/subgraph-mcp/claude.mdx b/website/src/pages/sv/ai-suite/subgraph-mcp/claude.mdx
new file mode 100644
index 000000000000..ff3caa4e3e7f
--- /dev/null
+++ b/website/src/pages/sv/ai-suite/subgraph-mcp/claude.mdx
@@ -0,0 +1,169 @@
+---
+title: Claude Desktop
+---
+
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data via natural language conversations with Claude.
+
+## Prerequisites
+
+- [Node.js](https://nodejs.org/en) installed and available in your path
+- [Claude Desktop](https://claude.ai/download) installed (latest version)
+- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
+
+## Installation Options
+
+### Option 1: Using npx (Recommended)
+
+#### Configuration Steps using npx
+
+#### 1. Open Configuration File
+
+Navigate to your `claude_desktop_config.json` file:
+
+> **Settings** > **Developer** > **Edit Config**
+
+- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
+- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
+- Linux: `.config/Claude/claude_desktop_config.json`
+
+#### 2. Add Configuration
+
+Paste the following settings into your config file:
+
+```json
+{
+  "mcpServers": {
+    "subgraph": {
+      "command": "npx",
+      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
+      "env": {
+        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
+      }
+    }
+  }
+}
+```
+
+#### 3. Add Your Gateway API Key
+
+Replace `GATEWAY_API_KEY` with your API key from [Subgraph Studio](https://thegraph.com/studio/).
+
+#### 4. Save and Restart
+
+Once you've entered your Gateway API key into your settings, save the file and restart Claude Desktop.
+
+### Option 2: Building from Source
+
+#### Requirements
+
+- Rust (latest stable version recommended: 1.75+)
+  ```bash
+  curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
+  ```
+  Follow the on-screen instructions. For other platforms, see the [official Rust installation guide](https://www.rust-lang.org/tools/install).
+
+#### Installation Steps
+
+1. **Clone and Build the Repository**
+
+   ```bash
+   git clone git@github.com:graphops/subgraph-mcp.git
+   cd subgraph-mcp
+   cargo build --release
+   ```
+
+2. **Find the Command Path**
+
+   After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory.
+   - Navigate to your `subgraph-mcp` directory in terminal
+   - Run `pwd` to get the full path
+   - Combine the output with `/target/release/subgraph-mcp`
+
+3. **Configure Claude Desktop**
+
+   Open your `claude_desktop_config.json` file as described above and add:
+
+   ```json
+   {
+     "mcpServers": {
+       "subgraph": {
+         "command": "/path/to/your/subgraph-mcp/target/release/subgraph-mcp",
+         "env": {
+           "GATEWAY_API_KEY": "your-api-key-here"
+         }
+       }
+     }
+   }
+   ```
+
+   Replace `/path/to/your/subgraph-mcp/target/release/subgraph-mcp` with the actual path to the compiled binary.
+
+## Using The Graph Resource in Claude
+
+After configuring Claude Desktop:
+
+1. Restart Claude Desktop
+2. Start a new conversation
+3. Click on the context menu (top right)
+4. Add "Subgraph Server Instructions" as a resource by adding `graphql://subgraph` to your chat context
+
+> **Important**: Claude Desktop may not automatically utilize the Subgraph MCP. You must manually add "Subgraph Server Instructions" resource to your chat context for each conversation where you want to use it.
+
+## Troubleshooting
+
+To enable logs for the MCP when using the npx option, add the `--verbose true` option to your args array.
+
+## Available Subgraph Tools and Usage
+
+The Subgraph MCP provides several tools for interacting with Subgraphs:
+
+### Schema Retrieval Tools
+
+- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
+- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
+- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
+
+### Query Execution Tools
+
+- **Execute query by deployment ID/IPFS hash**: Run GraphQL queries against specific, immutable deployments
+- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
+
+### Discovery Tools
+
+- **Search subgraphs by keyword**: Find subgraphs by keyword in their display names, ordered by signal
+- **Get deployment 30-day query counts**: Get aggregate query count over the last 30 days for multiple subgraph deployments
+- **Get top Subgraph deployments for a contract**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain, ordered by query fees
+
+## Key Identifier Types
+
+- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a subgraph. Use `execute_query_by_subgraph_id` or `get_schema_by_subgraph_id`.
+- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment. Use `execute_query_by_deployment_id` or `get_schema_by_deployment_id`.
+- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific, immutable deployment. Use `execute_query_by_deployment_id` (the gateway treats it like a deployment ID for querying) or `get_schema_by_ipfs_hash`.
+
+## Benefits of Natural Language Queries
+
+One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Claude will:
+
+1. Understand your goal (lookup, find Subgraphs, query, get schema)
+2. Find relevant deployments if needed
+3. Fetch and interpret the Subgraph schema
+4. Convert your question into an appropriate GraphQL query
+5. Execute the query and present the results in a readable format
+
+### Example Natural Language Queries
+
+```
+What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
+```
+
+```
+Which tokens have the highest market cap in this Subgraph?
+```
+
+```
+Show me the most recent 5 swaps for the USDC/ETH pair
+```
+
+```
+Find the top subgraphs for contract 0x1f98431c8ad98523631ae4a59f267346ea31f984 on arbitrum-one
+```
diff --git a/website/src/pages/sv/ai-suite/subgraph-mcp/cline.mdx b/website/src/pages/sv/ai-suite/subgraph-mcp/cline.mdx
new file mode 100644
index 000000000000..eb8044bfe991
--- /dev/null
+++ b/website/src/pages/sv/ai-suite/subgraph-mcp/cline.mdx
@@ -0,0 +1,99 @@
+---
+title: Cline
+---
+
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data through natural language conversations with Cline.
+
+## Prerequisites
+
+- [Cline](https://cline.bot/) installed (latest version)
+- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
+
+## Configuration Steps
+
+### 1. Open Configuration File
+
+Create or edit your `cline_mcp_settings.json` file.
+
+> **MCP Servers** > **Installed** > **Configure MCP Servers**
+
+### 2. Add Configuration
+
+```json
+{
+  "mcpServers": {
+    "subgraph": {
+      "command": "npx",
+      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
+      "env": {
+        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
+      }
+    }
+  }
+}
+```
+
+### 3. Add Your API Key
+
+Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
+
+## Using The Graph Resource in Cline
+
+After configuring Cline:
+
+1. Restart Cline
+2. Start a new conversation
+3. Enable the Subgraph MCP from the context menu
+4. Add "Subgraph Server Instructions" as a resource to your chat context
+
+## Available Tools and Usage
+
+The Subgraph MCP provides several tools for interacting with Subgraphs:
+
+### Schema Retrieval Tools
+
+- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
+- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
+- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
+
+### Query Execution Tools
+
+- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
+- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
+
+### Discovery Tools
+
+- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
+
+## Natural Language Queries
+
+One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cline will:
+
+1. Understand your goal (lookup, find Subgraphs, query, get schema)
+2. Find relevant deployments if needed
+3. Fetch and interpret the Subgraph schema
+4. Convert your question into an appropriate GraphQL query
+5. Execute the query and present the results in a readable format
+
+### Example Natural Language Queries
+
+```
+What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
+```
+
+```
+Which tokens have the highest market cap in this Subgraph?
+```
+
+```
+Show me the most recent 5 swaps for the USDC/ETH pair
+```
+
+## Key Identifier Types
+
+When working with Subgraphs, you'll encounter different types of identifiers:
+
+- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
+- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
+- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/sv/ai-suite/subgraph-mcp/cursor.mdx b/website/src/pages/sv/ai-suite/subgraph-mcp/cursor.mdx
new file mode 100644
index 000000000000..6291caf4b06b
--- /dev/null
+++ b/website/src/pages/sv/ai-suite/subgraph-mcp/cursor.mdx
@@ -0,0 +1,94 @@
+---
+title: Cursor
+---
+
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data through natural language conversations with Cline.
+
+## Prerequisites
+
+- [Cursor](https://www.cursor.com/) installed (latest version)
+- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
+
+## Configuration Steps
+
+### 1. Open Configuration File
+
+Create or edit your `~/.cursor/mcp.json` file.
+
+> **Cursor Settings** > **MCP** > **Add new global MCP Server**
+
+### 2. Add Configuration
+
+```json
+{
+  "mcpServers": {
+    "subgraph": {
+      "command": "npx",
+      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
+      "env": {
+        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
+      }
+    }
+  }
+}
+```
+
+### 3. Add Your API Key
+
+Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
+
+### 4. Restart Cursor
+
+Restart Cursor, and start a new chat.
+
+## Available Subgraph Tools and Usage
+
+The Subgraph MCP provides several tools for interacting with Subgraphs:
+
+### Schema Retrieval Tools
+
+- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
+- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
+- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
+
+### Query Execution Tools
+
+- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
+- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
+
+### Discovery Tools
+
+- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
+
+## Benefits of Natural Language Queries
+
+One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cursor will:
+
+1. Understand your goal (lookup, find Subgraphs, query, get schema)
+2. Find relevant deployments if needed
+3. Fetch and interpret the Subgraph schema
+4. Convert your question into an appropriate GraphQL query
+5. Execute the query and present the results in a readable format
+
+### Example Natural Language Queries
+
+```
+What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
+```
+
+```
+Which tokens have the highest market cap in this Subgraph?
+```
+
+```
+Show me the most recent 5 swaps for the USDC/ETH pair
+```
+
+## Key Identifier Types
+
+When working with Subgraphs, you'll encounter different types of identifiers:
+
+- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
+- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
+- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/sv/ai-suite/subgraph-mcp/introduction.mdx b/website/src/pages/sv/ai-suite/subgraph-mcp/introduction.mdx
new file mode 100644
index 000000000000..da1272cf9a36
--- /dev/null
+++ b/website/src/pages/sv/ai-suite/subgraph-mcp/introduction.mdx
@@ -0,0 +1,22 @@
+---
+title: Subgraph MCP Introduction
+sidebarTitle: 'Introduction'
+---
+
+Subgraph MCP server is an open-source implementation of [Anthropic's Model Context Protocol](https://modelcontextprotocol.io/introduction).
+
+It presents The Graph's Subgraph data through a set of MCP tools that any MCP-compatible client can call. With these tools, clients can search for relevant Subgraphs, inspect GraphQL schemas, and run queries against specific deployments on The Graph Network all within a single, standardized interface.
+
+The server itself does not hold a language model. Instead, it translates incoming MCP requests into Subgraph queries and returns the structured results, allowing the client's LLM to transform a natural-language prompt into actionable blockchain data.
+
+Think of it as a USB-C hub: it standardizes the plug-and-play connection between AI agents and The Graph's Subgraph ecosystem.
+
+## What You Can Do
+
+- Access GraphQL schemas for any Subgraph on The Graph Network
+- Run GraphQL queries on any Subgraph deployment
+- Discover top Subgraph deployments by keyword or contract address
+- Retrieve 30-day query volumes for Subgraph deployments
+- Ask questions about Subgraph data without writing GraphQL manually
+
+The Subgraph MCP server allows smooth integration with [Claude](/ai-suite/subgraph-mcp/claude/), [Cline](/ai-suite/subgraph-mcp/cline/), or [Cursor](/ai-suite/subgraph-mcp/cursor/), making blockchain data queries with The Graph Network a conversational experience.
diff --git a/website/src/pages/sv/ai-suite/token-api-mcp/_meta.js b/website/src/pages/sv/ai-suite/token-api-mcp/_meta.js
new file mode 100644
index 000000000000..6f527b4e53e4
--- /dev/null
+++ b/website/src/pages/sv/ai-suite/token-api-mcp/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  introduction: '',
+  claude: '',
+  cline: '',
+  cursor: '',
+}
diff --git a/website/src/pages/sv/ai-suite/token-api-mcp/claude.mdx b/website/src/pages/sv/ai-suite/token-api-mcp/claude.mdx
new file mode 100644
index 000000000000..3e21f4d7e165
--- /dev/null
+++ b/website/src/pages/sv/ai-suite/token-api-mcp/claude.mdx
@@ -0,0 +1,58 @@
+---
+title: Using Claude Desktop to Access the Token API via MCP
+sidebarTitle: Claude Desktop
+---
+
+## Prerequisites
+
+- [Claude Desktop](https://claude.ai/download) installed.
+- A [JWT token](/token-api/quick-start) from [The Graph Market](https://thegraph.market/).
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path.
+- The `@pinax/mcp` package requires Node 18+, as it relies on built-in `fetch()` / `Headers`, which are not available in Node 17 or older. You may need to specify an exact path to an up-to-date Node version, or uninstall previous versions of Node to ensure `@pinax/mcp` uses the correct version.
+
+![Screenshot of Claude Desktop's settings panel showing the MCP server configuration option.](/img/claude-preview-token-api.png)
+
+## Configuration
+
+Create or edit your `claude_desktop_config.json` file.
+
+> **Settings** > **Developer** > **Edit Config**
+
+- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
+- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
+- Linux: `.config/Claude/claude_desktop_config.json`
+
+```json label="claude_desktop_config.json"
+{
+  "mcpServers": {
+    "token-api": {
+      "command": "npx",
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
+      "env": {
+        "ACCESS_TOKEN": "<https://thegraph.market JWT Access Token>"
+      }
+    }
+  }
+}
+```
+
+## Troubleshooting
+
+To enable logs for the MCP, use the `--verbose true` option.
+
+### ENOENT
+
+![Error dialog in Claude Desktop showing 'ENOENT' system error, indicating the npx/bunx command wasn't found in the system path.](/img/claude-ENOENT.png)
+
+Try to use the full path of the command instead:
+
+- Run `which npx` or `which bunx` to get the path of the command.
+- Replace `npx` or `bunx` in the configuration file with the full path (e.g. `/home/user/bin/bunx`).
+
+### Server disconnected
+
+![Connection error notification in Claude Desktop displaying 'Server disconnected' message.](/img/claude-server-disconnect.png)
+
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
+
+> You can always have a look at the full logs under `Claude/logs/mcp.log` and `Claude/logs/mcp-server-pinax.log` for more details.
diff --git a/website/src/pages/sv/ai-suite/token-api-mcp/cline.mdx b/website/src/pages/sv/ai-suite/token-api-mcp/cline.mdx
new file mode 100644
index 000000000000..e885d21366cd
--- /dev/null
+++ b/website/src/pages/sv/ai-suite/token-api-mcp/cline.mdx
@@ -0,0 +1,52 @@
+---
+title: Using Cline to Access the Token API via MCP
+sidebarTitle: Cline
+---
+
+## Prerequisites
+
+- [Cline](https://cline.bot/) installed.
+- A [JWT token](/token-api/quick-start) from [The Graph Market](https://thegraph.market/).
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path.
+- The `@pinax/mcp` package requires Node 18+, as it relies on built-in `fetch()` / `Headers`, which are not available in Node 17 or older. You may need to specify an exact path to an up-to-date Node version, or uninstall previous versions of Node to ensure `@pinax/mcp` uses the correct version.
+
+![Screenshot of Cline's MCP server configuration interface displaying the JSON settings file with mcp-pinax server details visible.](/img/cline-preview-token-api.png)
+
+## Configuration
+
+Create or edit your `cline_mcp_settings.json` file.
+
+> **MCP Servers** > **Installed** > **Configure MCP Servers**
+
+```json label="cline_mcp_settings.json"
+{
+  "mcpServers": {
+    "mcp-pinax": {
+      "command": "npx",
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
+      "env": {
+        "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
+      }
+    }
+  }
+}
+```
+
+## Troubleshooting
+
+To enable logs for the MCP, use the `--verbose true` option.
+
+### ENOENT
+
+![Cline error dialog showing 'ENOENT' system alert.](/img/cline-error.png)
+
+Try to use the full path of the command instead:
+
+- Run `which npx` or `which bunx` to get the path of the command.
+- Replace `npx` or `bunx` in the configuration file with the full path (e.g. `/home/user/bin/bunx`).
+
+### Server disconnected
+
+![Cline connection error notification displaying server disconnection warning.](/img/cline-missing-variables.png)
+
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/sv/ai-suite/token-api-mcp/cursor.mdx b/website/src/pages/sv/ai-suite/token-api-mcp/cursor.mdx
new file mode 100644
index 000000000000..68fe2fdb201c
--- /dev/null
+++ b/website/src/pages/sv/ai-suite/token-api-mcp/cursor.mdx
@@ -0,0 +1,50 @@
+---
+title: Using Cursor to Access the Token API via MCP
+sidebarTitle: Cursor
+---
+
+## Prerequisites
+
+- [Cursor](https://www.cursor.com/) installed.
+- A [JWT token](/token-api/quick-start) from [The Graph Market](https://thegraph.market/).
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path.
+- The `@pinax/mcp` package requires Node 18+, as it relies on built-in `fetch()` / `Headers`, which are not available in Node 17 or older. You may need to specify an exact path to an up-to-date Node version, or uninstall previous versions of Node to ensure `@pinax/mcp` uses the correct version.
+
+![Screenshot of Cursor's MCP configuration panel.](/img/cursor-preview-token-api.png)
+
+## Configuration
+
+Create or edit your `~/.cursor/mcp.json` file.
+
+> **Cursor Settings** > **MCP** > **Add new global MCP Server**
+
+```json label="mcp.json"
+{
+  "mcpServers": {
+    "mcp-pinax": {
+      "command": "npx",
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
+      "env": {
+        "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
+      }
+    }
+  }
+}
+```
+
+## Troubleshooting
+
+![Cursor IDE error notification that reads, "Failed to create client"](/img/cursor-error.png)
+
+To enable logs for the MCP, use the `--verbose true` option.
+
+### ENOENT
+
+Try to use the full path of the command instead:
+
+- Run `which npx` or `which bunx` to get the path of the command.
+- Replace `npx` or `bunx` in the configuration file with the full path (e.g. `/home/user/bin/bunx`).
+
+### Server disconnected
+
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/sv/ai-suite/token-api-mcp/introduction.mdx b/website/src/pages/sv/ai-suite/token-api-mcp/introduction.mdx
new file mode 100644
index 000000000000..b61ad0a1c485
--- /dev/null
+++ b/website/src/pages/sv/ai-suite/token-api-mcp/introduction.mdx
@@ -0,0 +1,23 @@
+---
+title: Token API MCP Introduction
+sidebarTitle: 'Introduction'
+---
+
+Token API MCP server is an open-source implementation of [Anthropic's Model Context Protocol](https://modelcontextprotocol.io/introduction).
+
+This MCP server makes on-chain token data, including metadata, balances, transfers, and holder statistics, accessible through a set of MCP tools. Any compatible client can use these tools to fetch and analyze token information through a standardized interface. It connects to The Graph's hosted Token API database, enabling AI assistants to query real-time blockchain data using natural language requests that get translated into optimized SQL queries.
+
+The server itself does not host any language model. It simply converts MCP calls into data look-ups and returns structured results, letting the client's own LLM incorporate the results.
+
+Think of it as a USB-C hub: it standardizes the plug-and-play connection between AI agents and The Graph's Token API data.
+
+## What You Can Do
+
+- Retrieve token metadata including name, symbol, decimals, total supply, and contract address
+- Get token balances for any wallet address holding a supported ERC-20 token
+- Fetch token transfer activity including sender, receiver, amount, and timestamp
+- Identify top holders and analyze token distribution
+- Ask natural language questions about token data without writing smart contract calls
+- Access historical transfer data to analyze token movement over time
+
+The Token MCP server provides [Claude](/ai-suite/token-api-mcp/claude/), [Cline](/ai-suite/token-api-mcp/cline/), and [Cursor](/ai-suite/token-api-mcp/cursor/) with direct, conversational access to onchain token data.
diff --git a/website/src/pages/sv/resources/_meta.js b/website/src/pages/sv/resources/_meta.js
index aa8e2d0ec6a8..38c56cf56c43 100644
--- a/website/src/pages/sv/resources/_meta.js
+++ b/website/src/pages/sv/resources/_meta.js
@@ -7,5 +7,4 @@ export default {
   roles: titles.roles ?? '',
   'migration-guides': titles['migration-guides'] ?? '',
   'subgraph-studio-faq': '',
-  'claude-mcp': '',
 }
diff --git a/website/src/pages/sv/resources/claude-mcp.mdx b/website/src/pages/sv/resources/claude-mcp.mdx
deleted file mode 100644
index 44ed075cffda..000000000000
--- a/website/src/pages/sv/resources/claude-mcp.mdx
+++ /dev/null
@@ -1,122 +0,0 @@
----
-title: Claude MCP
----
-
-This guide walks you through configuring Claude Desktop to use The Graph ecosystem's [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) resources: Token API and Subgraph. These integrations allow you to interact with blockchain data through natural language conversations with Claude.
-
-## What You Can Do
-
-With these integrations, you can:
-
-- **Token API**: Access token and wallet information across multiple blockchains
-- **Subgraph**: Find relevant Subgraphs for specific keywords and contracts, explore Subgraph schemas, and execute GraphQL queries
-
-## Prerequisites
-
-- [Node.js](https://nodejs.org/en/download/) installed and available in your path
-- [Claude Desktop](https://claude.ai/download) installed
-- API keys:
-  - Token API key from [The Graph Market](https://thegraph.market/)
-  - Gateway API key from [Subgraph Studio](https://thegraph.com/studio/apikeys/)
-
-## Configuration Steps
-
-### 1. Open Configuration File
-
-Navigate to your `claude_desktop_config.json` file:
-
-> **Claude Desktop** > **Settings** > **Developer** > **Edit Config**
-
-Paths by operating system:
-
-- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
-- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
-- Linux: `.config/Claude/claude_desktop_config.json`
-
-### 2. Add Configuration
-
-Replace the contents of the existing config file with:
-
-```json
-{
-  "mcpServers": {
-    "token-api": {
-      "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
-      "env": {
-        "ACCESS_TOKEN": "ACCESS_TOKEN"
-      }
-    },
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-### 3. Add Your API Keys
-
-Replace:
-
-- `ACCESS_TOKEN` with your Token API key from [The Graph Market](https://thegraph.market/)
-- `GATEWAY_API_KEY` with your Gateway API key from [Subgraph Studio](https://thegraph.com/studio/apikeys/)
-
-### 4. Save and Restart
-
-- Save the configuration file
-- Restart Claude Desktop
-
-### 5. Add The Graph Resources in Claude
-
-After configuration:
-
-1. Start a new conversation in Claude Desktop
-2. Click on the context menu (top right)
-3. Add "Subgraph Server Instructions" as a resource by entering `graphql://subgraph` for Subgraph MCP
-
-> **Important**: You must manually add The Graph resources to your chat context for each conversation where you want to use them.
-
-### 6. Run Queries
-
-Here are some example queries you can try after setting up the resources:
-
-### Subgraph Queries
-
-```
-What are the top pools in Uniswap?
-```
-
-```
-Who are the top Delegators of The Graph Protocol?
-```
-
-```
-Please make a bar chart for the number of active loans in Compound for the last 7 days
-```
-
-### Token API Queries
-
-```
-Show me the current price of ETH
-```
-
-```
-What are the top tokens by market cap on Ethereum?
-```
-
-```
-Analyze this wallet address: 0x...
-```
-
-## Troubleshooting
-
-If you encounter issues:
-
-1. **Verify Node.js Installation**: Ensure Node.js is correctly installed by running `node -v` in your terminal
-2. **Check API Keys**: Verify that your API keys are correctly entered in the configuration file
-3. **Enable Verbose Logging**: Add `--verbose true` to the args array in your configuration to see detailed logs
-4. **Restart Claude Desktop**: After making changes to the configuration, always restart Claude Desktop
diff --git a/website/src/pages/sv/subgraphs/_meta.js b/website/src/pages/sv/subgraphs/_meta.js
index 4365293ffc72..45841d5f3355 100644
--- a/website/src/pages/sv/subgraphs/_meta.js
+++ b/website/src/pages/sv/subgraphs/_meta.js
@@ -6,7 +6,6 @@ export default {
   querying: titles.querying ?? '',
   developing: titles.developing ?? '',
   billing: '',
-  mcp: titles.mcp ?? '',
   guides: titles.guides,
   'best-practices': titles['best-practices'],
   'fair-use-policy': '',
diff --git a/website/src/pages/sv/subgraphs/mcp/_meta.js b/website/src/pages/sv/subgraphs/mcp/_meta.js
deleted file mode 100644
index 8630d4da27b3..000000000000
--- a/website/src/pages/sv/subgraphs/mcp/_meta.js
+++ /dev/null
@@ -1,5 +0,0 @@
-export default {
-  claude: '',
-  cline: '',
-  cursor: '',
-}
diff --git a/website/src/pages/sv/subgraphs/mcp/claude.mdx b/website/src/pages/sv/subgraphs/mcp/claude.mdx
deleted file mode 100644
index 027b272cb942..000000000000
--- a/website/src/pages/sv/subgraphs/mcp/claude.mdx
+++ /dev/null
@@ -1,179 +0,0 @@
----
-title: Claude Desktop
----
-
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Claude to interact directly with Subgraphs on The Graph Network. This integration allows you to find relevant Subgraphs for specific keywords and contracts, explore Subgraph schemas, and execute GraphQL queries—all through natural language conversations with Claude.
-
-## What You Can Do
-
-The Subgraph MCP integration enables you to:
-
-- Access the GraphQL schema for any Subgraph on The Graph Network
-- Execute GraphQL queries against any Subgraph deployment
-- Find top Subgraph deployments for a given keyword or contract address
-- Get 30-day query volume for Subgraph deployments
-- Ask natural language questions about Subgraph data without writing GraphQL queries manually
-
-## Prerequisites
-
-- [Node.js](https://nodejs.org/en) installed and available in your path
-- [Claude Desktop](https://claude.ai/download) installed (latest version)
-- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
-
-## Installation Options
-
-### Option 1: Using npx (Recommended)
-
-#### Configuration Steps using npx
-
-#### 1. Open Configuration File
-
-Navigate to your `claude_desktop_config.json` file:
-
-> **Settings** > **Developer** > **Edit Config**
-
-- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
-- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
-- Linux: `.config/Claude/claude_desktop_config.json`
-
-#### 2. Add Configuration
-
-Paste the following settings into your config file:
-
-```json
-{
-  "mcpServers": {
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-#### 3. Add Your Gateway API Key
-
-Replace `GATEWAY_API_KEY` with your API key from [Subgraph Studio](https://thegraph.com/studio/).
-
-#### 4. Save and Restart
-
-Once you've entered your Gateway API key into your settings, save the file and restart Claude Desktop.
-
-### Option 2: Building from Source
-
-#### Requirements
-
-- Rust (latest stable version recommended: 1.75+)
-  ```bash
-  curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
-  ```
-  Follow the on-screen instructions. For other platforms, see the [official Rust installation guide](https://www.rust-lang.org/tools/install).
-
-#### Installation Steps
-
-1. **Clone and Build the Repository**
-
-   ```bash
-   git clone git@github.com:graphops/subgraph-mcp.git
-   cd subgraph-mcp
-   cargo build --release
-   ```
-
-2. **Find the Command Path**
-
-   After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory.
-   - Navigate to your `subgraph-mcp` directory in terminal
-   - Run `pwd` to get the full path
-   - Combine the output with `/target/release/subgraph-mcp`
-
-3. **Configure Claude Desktop**
-
-   Open your `claude_desktop_config.json` file as described above and add:
-
-   ```json
-   {
-     "mcpServers": {
-       "subgraph": {
-         "command": "/path/to/your/subgraph-mcp/target/release/subgraph-mcp",
-         "env": {
-           "GATEWAY_API_KEY": "your-api-key-here"
-         }
-       }
-     }
-   }
-   ```
-
-   Replace `/path/to/your/subgraph-mcp/target/release/subgraph-mcp` with the actual path to the compiled binary.
-
-## Using The Graph Resource in Claude
-
-After configuring Claude Desktop:
-
-1. Restart Claude Desktop
-2. Start a new conversation
-3. Click on the context menu (top right)
-4. Add "Subgraph Server Instructions" as a resource by adding `graphql://subgraph` to your chat context
-
-> **Important**: Claude Desktop may not automatically utilize the Subgraph MCP. You must manually add "Subgraph Server Instructions" resource to your chat context for each conversation where you want to use it.
-
-## Troubleshooting
-
-To enable logs for the MCP when using the npx option, add the `--verbose true` option to your args array.
-
-## Available Subgraph Tools and Usage
-
-The Subgraph MCP provides several tools for interacting with Subgraphs:
-
-### Schema Retrieval Tools
-
-- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
-- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
-- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
-
-### Query Execution Tools
-
-- **Execute query by deployment ID/IPFS hash**: Run GraphQL queries against specific, immutable deployments
-- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
-
-### Discovery Tools
-
-- **Search subgraphs by keyword**: Find subgraphs by keyword in their display names, ordered by signal
-- **Get deployment 30-day query counts**: Get aggregate query count over the last 30 days for multiple subgraph deployments
-- **Get top Subgraph deployments for a contract**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain, ordered by query fees
-
-## Key Identifier Types
-
-- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a subgraph. Use `execute_query_by_subgraph_id` or `get_schema_by_subgraph_id`.
-- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment. Use `execute_query_by_deployment_id` or `get_schema_by_deployment_id`.
-- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific, immutable deployment. Use `execute_query_by_deployment_id` (the gateway treats it like a deployment ID for querying) or `get_schema_by_ipfs_hash`.
-
-## Benefits of Natural Language Queries
-
-One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Claude will:
-
-1. Understand your goal (lookup, find Subgraphs, query, get schema)
-2. Find relevant deployments if needed
-3. Fetch and interpret the Subgraph schema
-4. Convert your question into an appropriate GraphQL query
-5. Execute the query and present the results in a readable format
-
-### Example Natural Language Queries
-
-```
-What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
-```
-
-```
-Which tokens have the highest market cap in this Subgraph?
-```
-
-```
-Show me the most recent 5 swaps for the USDC/ETH pair
-```
-
-```
-Find the top subgraphs for contract 0x1f98431c8ad98523631ae4a59f267346ea31f984 on arbitrum-one
-```
diff --git a/website/src/pages/sv/subgraphs/mcp/cline.mdx b/website/src/pages/sv/subgraphs/mcp/cline.mdx
deleted file mode 100644
index 156221d9a127..000000000000
--- a/website/src/pages/sv/subgraphs/mcp/cline.mdx
+++ /dev/null
@@ -1,99 +0,0 @@
----
-title: Cline
----
-
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Cline to interact directly with Subgraphs on The Graph Network. This integration allows you to explore Subgraph schemas, execute GraphQL queries, and find relevant Subgraphs for specific contracts—all through natural language conversations with Cline.
-
-## Prerequisites
-
-- [Cline](https://cline.bot/) installed (latest version)
-- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
-
-## Configuration Steps
-
-### 1. Open Configuration File
-
-Create or edit your `cline_mcp_settings.json` file.
-
-> **MCP Servers** > **Installed** > **Configure MCP Servers**
-
-### 2. Add Configuration
-
-```json
-{
-  "mcpServers": {
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-### 3. Add Your API Key
-
-Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
-
-## Using The Graph Resource in Cline
-
-After configuring Cline:
-
-1. Restart Cline
-2. Start a new conversation
-3. Enable the Subgraph MCP from the context menu
-4. Add "Subgraph Server Instructions" as a resource to your chat context
-
-## Available Tools and Usage
-
-The Subgraph MCP provides several tools for interacting with Subgraphs:
-
-### Schema Retrieval Tools
-
-- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
-- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
-- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
-
-### Query Execution Tools
-
-- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
-- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
-
-### Discovery Tools
-
-- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
-
-## Natural Language Queries
-
-One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cline will:
-
-1. Understand your goal (lookup, find Subgraphs, query, get schema)
-2. Find relevant deployments if needed
-3. Fetch and interpret the Subgraph schema
-4. Convert your question into an appropriate GraphQL query
-5. Execute the query and present the results in a readable format
-
-### Example Natural Language Queries
-
-```
-What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
-```
-
-```
-Which tokens have the highest market cap in this Subgraph?
-```
-
-```
-Show me the most recent 5 swaps for the USDC/ETH pair
-```
-
-## Key Identifier Types
-
-When working with Subgraphs, you'll encounter different types of identifiers:
-
-- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
-- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
-- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/sv/subgraphs/mcp/cursor.mdx b/website/src/pages/sv/subgraphs/mcp/cursor.mdx
deleted file mode 100644
index 298f43ece048..000000000000
--- a/website/src/pages/sv/subgraphs/mcp/cursor.mdx
+++ /dev/null
@@ -1,94 +0,0 @@
----
-title: Cursor
----
-
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Cursor to interact directly with Subgraphs on The Graph Network. This integration allows you to explore Subgraph schemas, execute GraphQL queries, and find relevant Subgraphs for specific contracts—all through natural language conversations with Cursor.
-
-## Prerequisites
-
-- [Cursor](https://www.cursor.com/) installed (latest version)
-- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
-
-## Configuration Steps
-
-### 1. Open Configuration File
-
-Create or edit your `~/.cursor/mcp.json` file.
-
-> **Cursor Settings** > **MCP** > **Add new global MCP Server**
-
-### 2. Add Configuration
-
-```json
-{
-  "mcpServers": {
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-### 3. Add Your API Key
-
-Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
-
-### 4. Restart Cursor
-
-Restart Cursor, and start a new chat.
-
-## Available Subgraph Tools and Usage
-
-The Subgraph MCP provides several tools for interacting with Subgraphs:
-
-### Schema Retrieval Tools
-
-- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
-- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
-- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
-
-### Query Execution Tools
-
-- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
-- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
-
-### Discovery Tools
-
-- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
-
-## Benefits of Natural Language Queries
-
-One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cursor will:
-
-1. Understand your goal (lookup, find Subgraphs, query, get schema)
-2. Find relevant deployments if needed
-3. Fetch and interpret the Subgraph schema
-4. Convert your question into an appropriate GraphQL query
-5. Execute the query and present the results in a readable format
-
-### Example Natural Language Queries
-
-```
-What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
-```
-
-```
-Which tokens have the highest market cap in this Subgraph?
-```
-
-```
-Show me the most recent 5 swaps for the USDC/ETH pair
-```
-
-## Key Identifier Types
-
-When working with Subgraphs, you'll encounter different types of identifiers:
-
-- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
-- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
-- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/sv/substreams/_meta.js b/website/src/pages/sv/substreams/_meta.js
index a8ee04618eae..658bb8c213c6 100644
--- a/website/src/pages/sv/substreams/_meta.js
+++ b/website/src/pages/sv/substreams/_meta.js
@@ -5,5 +5,4 @@ export default {
   introduction: '',
   developing: titles.developing ?? '',
   publishing: '',
-  sps: titles.sps ?? '',
 }
diff --git a/website/src/pages/sv/token-api/_meta-titles.json b/website/src/pages/sv/token-api/_meta-titles.json
index 7ed31e0af95d..3108ecd3ebfd 100644
--- a/website/src/pages/sv/token-api/_meta-titles.json
+++ b/website/src/pages/sv/token-api/_meta-titles.json
@@ -1,6 +1,7 @@
 {
   "mcp": "MCP",
   "evm": "EVM Endpoints",
+  "svm": "SVM Endpoints",
   "monitoring": "Monitoring Endpoints",
   "faq": "FAQ"
 }
diff --git a/website/src/pages/sv/token-api/_meta.js b/website/src/pages/sv/token-api/_meta.js
index f67576d7f612..fb7f7334ea0c 100644
--- a/website/src/pages/sv/token-api/_meta.js
+++ b/website/src/pages/sv/token-api/_meta.js
@@ -2,8 +2,8 @@ import titles from './_meta-titles.json'
 
 export default {
   'quick-start': '',
-  mcp: titles.mcp ?? '',
   evm: titles.evm ?? '',
+  svm: titles.svm ?? '',
   monitoring: titles.monitoring ?? '',
   faq: '',
 }
diff --git a/website/src/pages/sv/token-api/mcp/_meta.js b/website/src/pages/sv/token-api/mcp/_meta.js
deleted file mode 100644
index 8630d4da27b3..000000000000
--- a/website/src/pages/sv/token-api/mcp/_meta.js
+++ /dev/null
@@ -1,5 +0,0 @@
-export default {
-  claude: '',
-  cline: '',
-  cursor: '',
-}
diff --git a/website/src/pages/sv/token-api/svm/_meta.js b/website/src/pages/sv/token-api/svm/_meta.js
new file mode 100644
index 000000000000..1a48b82fcbf1
--- /dev/null
+++ b/website/src/pages/sv/token-api/svm/_meta.js
@@ -0,0 +1,5 @@
+export default {
+  'get-balances-svm': '',
+  'get-transfers-svm': '',
+  'get-swaps-svm': '',
+}
diff --git a/website/src/pages/sv/token-api/svm/get-balances-svm.mdx b/website/src/pages/sv/token-api/svm/get-balances-svm.mdx
new file mode 100644
index 000000000000..c2946c190bf9
--- /dev/null
+++ b/website/src/pages/sv/token-api/svm/get-balances-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Balances
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getBalancesSvm
+---
+
+Provides Solana tokens balances by token account address.
diff --git a/website/src/pages/sv/token-api/svm/get-swaps-svm.mdx b/website/src/pages/sv/token-api/svm/get-swaps-svm.mdx
new file mode 100644
index 000000000000..95282a38ac9f
--- /dev/null
+++ b/website/src/pages/sv/token-api/svm/get-swaps-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Swap Events
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getSwapsSvm
+---
+
+Provides Raydium swap events.
diff --git a/website/src/pages/sv/token-api/svm/get-transfers-svm.mdx b/website/src/pages/sv/token-api/svm/get-transfers-svm.mdx
new file mode 100644
index 000000000000..5335cdddf418
--- /dev/null
+++ b/website/src/pages/sv/token-api/svm/get-transfers-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Transfers Events
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getTransfersSvm
+---
+
+Provides SVM transfer events.
diff --git a/website/src/pages/tr/ai-suite/_meta-titles.json b/website/src/pages/tr/ai-suite/_meta-titles.json
new file mode 100644
index 000000000000..5eb482a7092b
--- /dev/null
+++ b/website/src/pages/tr/ai-suite/_meta-titles.json
@@ -0,0 +1,6 @@
+{
+  "graph-assistant": "Graph Assistant",
+  "ai-introduction": "The Graph's AI",
+  "subgraph-mcp": "Subgraph MCP",
+  "token-api-mcp": "Token API MCP"
+}
diff --git a/website/src/pages/tr/ai-suite/_meta.js b/website/src/pages/tr/ai-suite/_meta.js
new file mode 100644
index 000000000000..c9e51dfd35fb
--- /dev/null
+++ b/website/src/pages/tr/ai-suite/_meta.js
@@ -0,0 +1,8 @@
+import titles from './_meta-titles.json'
+
+export default {
+  'ai-introduction': titles['ai-introduction'],
+  'graph-assistant': titles['graph-assistant'],
+  'subgraph-mcp': titles['subgraph-mcp'],
+  'token-api-mcp': titles['token-api-mcp'],
+}
diff --git a/website/src/pages/tr/ai-suite/ai-introduction.mdx b/website/src/pages/tr/ai-suite/ai-introduction.mdx
new file mode 100644
index 000000000000..d25cc9f77358
--- /dev/null
+++ b/website/src/pages/tr/ai-suite/ai-introduction.mdx
@@ -0,0 +1,58 @@
+---
+title: The Graph's AI
+---
+
+Build with speed and scale faster with The Graph's AI.
+
+## Using AI on The Graph
+
+Instead of relying on static datasets or centralized APIs, you can now access live blockchain data through our **agentic** app, [Graph Assistant](/ai-suite/graph-assistant/introduction/), and use our AI-native tooling, [Subgraph MCP](/ai-suite/subgraph-mcp/introduction/), and [Token API MCP](/ai-suite/token-api-mcp/introduction/).
+
+### Why Use Onchain Data with AI?
+
+Using onchain data with AI unlocks powerful new ways to interact with and understand blockchain ecosystems.
+
+- **AI for Non-Technical End Users**: AI can turn complex onchain data into accessible insights. Assistants powered by AI enable you to explore and analyze blockchain data without coding.
+- **AI for Developers**: You can use AI to interact directly with The Graph's data through your agents or build AI-powered applications on top of it. This streamlines development and opens up more intuitive, dynamic use cases.
+
+## AI for Non-Technical/End Users
+
+[Graph Assistant](/ai-suite/graph-assistant/introduction/) is a powerful **agentic** application that empowers users to easily interact with blockchain data. Ask questions in simple, natural language and get rich, AI powered insights. Both technical developers and non-technical product teams can move faster, make smarter decisions, and gain a clearer understanding than ever before.
+
+### Benefits of Using Graph Assistant
+
+- **Natural language Input**: You don't need to write complex queries or sift through dashboards. Simply ask your question in plain English and get clear, structured results.
+- **Multi-source support**: Works across multiple Subgraphs and Token API. The Assistant automatically determines which data source to use, so you don't have to switch tools or manage endpoints.
+- **Schema-free access**: You don't need to understand the schema. You can refer to tokens, protocols, dates, or addresses using natural language. The Assistant takes care of the rest.
+
+### Conversational Querying with Graph Assistant
+
+**Example queries:**
+
+- "List the top-5 swaps by USD value in the last 24 hours."
+- "Give me the daily volume on Uniswap."
+- "List the 20 most recently registered .eth names."
+
+[Graph Assistant](/ai-suite/graph-assistant/introduction/) will eventually be a one-stop shop for interacting with The Graph. Right now, it's an agentic AI app that uses state-of-the-art AI techniques, LLMs, and MCPs to understand and answer your questions about [Subgraphs](/subgraphs/developing/subgraphs/) and [Token API](/token-api/quick-start/) data.
+
+## AI for Developers
+
+### Enable Natural Language Access to Onchain Data
+
+[Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) servers connect to Claude, Cline, and Cursor. They enable models to understand, query, and interact with structured onchain data using natural language. MCPs remove the need to write low-level queries or interact with APIs directly.
+
+### Subgraph MCP
+
+The [Subgraph MCP](/ai-suite/subgraph-mcp/introduction/) server connects models to Subgraphs on The Graph Network. It allows language models to explore Subgraph schemas, execute GraphQL queries, find relevant Subgraphs by keyword or contract, and surface usage metrics using natural language.
+
+### Token API MCP
+
+The [Token API MCP](/ai-suite/token-api-mcp/introduction/) MCP server enables models to access onchain token data. It supports querying token metadata, wallet balances, transfer history, and top token holders through simple prompts.
+
+#### Benefits of Using Subgraph and Token API MCPs
+
+- Query Subgraphs and token data using natural language
+- Access GraphQL schemas and token metadata without manual queries
+- Find Subgraphs by keyword or contract and check 30-day usage
+- Retrieve real-time data from The Graph and onchain token sources
+- Get wallet balances, transfer history, and top token holders
diff --git a/website/src/pages/tr/ai-suite/graph-assistant/_meta.js b/website/src/pages/tr/ai-suite/graph-assistant/_meta.js
new file mode 100644
index 000000000000..74da5e0686a7
--- /dev/null
+++ b/website/src/pages/tr/ai-suite/graph-assistant/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  'quick-start': '',
+  introduction: '',
+  'how-to-guide': '',
+  faq: '',
+}
diff --git a/website/src/pages/tr/ai-suite/graph-assistant/faq.mdx b/website/src/pages/tr/ai-suite/graph-assistant/faq.mdx
new file mode 100644
index 000000000000..8addf9935524
--- /dev/null
+++ b/website/src/pages/tr/ai-suite/graph-assistant/faq.mdx
@@ -0,0 +1,26 @@
+---
+title: Graph Assistant FAQ
+sidebarTitle: 'FAQ'
+---
+
+This page summarizes some of the most common questions for developers using Graph Assistant.
+
+1. What is The Graph Assistant?
+
+The Graph Assistant is an AI-powered chat interface that lets you query blockchain data in plain English. Under the hood, it translates your questions into GraphQL calls against Subgraphs and the Token API, then returns results, no coding required.
+
+2. What is an agentic application?
+
+An agentic application combines AI-driven reasoning with external data sources or APIs to take autonomous actions on your behalf. In this case, Graph Assistant acts as an “agent” that interprets your natural-language prompts, builds and dispatches GraphQL queries, and formats the results so that you don't need to write or manage queries yourself.
+
+3. Which networks and data does Graph Assistant support?
+
+The Assistant has access to Subgraphs across multiple chains. If a Subgraph is published to The Graph Network and is being indexed, the Assistant can automatically route queries to it. The Assistant also has access to the Token API on Ethereum Mainnet, BSC, Unichain, Arbitrum-One, Optimism, and Polygon.
+
+4. Is there a usage limit or quota?
+
+Yes, 10 questions per hour.
+
+5. What if the Assistant can't interpret my question?
+
+When the Assistant fails to parse your intent (for example, ambiguous token name, missing context, or an unsupported request), it will prompt you for clarification. For instance, it might ask, “Did you mean XYZ on Ethereum or XYZ on Arbitrum?” or “Please specify a date range for this query.” If you continue to see parsing errors, check that you're using correct token symbols or specifying networks and time frames clearly.
diff --git a/website/src/pages/tr/ai-suite/graph-assistant/how-to-guide.mdx b/website/src/pages/tr/ai-suite/graph-assistant/how-to-guide.mdx
new file mode 100644
index 000000000000..463130894ad8
--- /dev/null
+++ b/website/src/pages/tr/ai-suite/graph-assistant/how-to-guide.mdx
@@ -0,0 +1,56 @@
+---
+title: How To Use The Graph Assistant
+sidebarTitle: 'How-to Guide'
+---
+
+## Overview
+
+You type a natural language question into the chat interface, such as:
+
+```yaml
+'On Uniswap, return the top-10 pools by total value locked in USD.'
+```
+
+> [!IMPORTANT] All users can process 10 free queries per user per hour.
+
+> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the underlying agents. Do not share sensitive, personal, or private information.
+
+### Behind the Scenes
+
+The Assistant:
+
+1. Interprets your intent
+2. Maps it to the correct Subgraphs or Token API endpoint
+3. Executes optimized queries
+4. Returns clean, structured results
+
+You don't need to write queries or understand a Subgraph's schema, you simply ask.
+
+### Example Use Cases
+
+**Protocol Analytics**
+
+- “Compare daily active users on Aave vs. Compound in May 2025.”
+- “Show me the total value locked (TVL) for XYZDAO over the last quarter.”
+
+**Token Insights**
+
+- “What are the top 10 tokens by market cap on Ethereum right now?”
+- “How many XYZ did I receive between May 1 and May 15?”
+
+**Historical Data Retrieval**
+
+- “Fetch the token price history of XYZ for the last six months.”
+- “What was the average gas price on Ethereum during April?”
+
+**Portfolio Monitoring**
+
+- “List my wallet’s current token balances and their USD equivalents.”
+- “Calculate profit/loss on XYZ since xyz date.”
+
+**Cross-Chain Comparison**
+
+- “Show me the 7-day trading volume of XYZ on Ethereum vs. Polygon.”
+- “How many XYZ swaps occurred on Arbitrum yesterday?”
+
+To get started follow the [quickstart](/ai-suite/graph-assistant/quick-start/) and explore its capabilities.
diff --git a/website/src/pages/tr/ai-suite/graph-assistant/introduction.mdx b/website/src/pages/tr/ai-suite/graph-assistant/introduction.mdx
new file mode 100644
index 000000000000..65fdf0f96028
--- /dev/null
+++ b/website/src/pages/tr/ai-suite/graph-assistant/introduction.mdx
@@ -0,0 +1,31 @@
+---
+title: Introduction
+---
+
+> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime.
+
+[Graph Assistant](https://thegraph.com/graph-assistant) (Beta) gives instant, code-free access to blockchain data, transforming natural language into precise, AI-powered queries without the need to code.
+
+## Overview
+
+[Graph Assistant](https://thegraph.com/graph-assistant) is an advanced, [agentic](/en/ai-suite/graph-assistant/faq/) easy-to-use chat interface for querying blockchain data using natural language. Unlike a basic chatbot, Graph Assistant can understand your intent, build complex queries, and execute them automatically. This gives you rich, AI-powered insights from onchain data without writing any code.
+
+- **Automatically** interprets user intent, generates precise queries, executes them via The Graph's Subgraphs and Token API, and presents structured, AI-powered answers without requiring any code.
+- **Removes** the technical complexity found in traditional dashboards or chatbots. It provides composable insights directly from indexed Subgraphs and Token datasets.
+
+## Core Features
+
+| Feature | Description |
+| --- | --- |
+| **Friendly Interface** | Conversational access to blockchain data via natural language. You simply ask questions, the Assistant fetches the answer, and renders results. |
+| **Backed by Subgraphs** | Uses subgraphs to index protocol-specific data like transactions, events, and protocol metrics. |
+| **Backed by Token API** | Uses Token API for token-level information like balances, transfers, and metadata. |
+| **No Setup Required** | No need to configure data sources or write queries. |
+| **Automatic Query Building** | The Assistant performs complex queries such as fetching historical token volumes, protocol analytics, or cross-chain data and handles filtering, pagination, and joins across Subgraphs automatically. |
+
+## Help Shape What's Next
+
+This is in **beta**, and community input is essential. If you have ideas, questions, or run into anything unexpected, we'd love to hear from you:
+
+- Join the community on [Discord](https://discord.com/invite/graphprotocol): Provide feedback and stay in the loop with other builders. You'll be able to join the `#graph-assistant` channel to share your experience directly.
+- Interested in going deeper? Reach out to become a dedicated beta tester so your specific use case can be better supported.
diff --git a/website/src/pages/tr/ai-suite/graph-assistant/quick-start.mdx b/website/src/pages/tr/ai-suite/graph-assistant/quick-start.mdx
new file mode 100644
index 000000000000..13f8478b8d2b
--- /dev/null
+++ b/website/src/pages/tr/ai-suite/graph-assistant/quick-start.mdx
@@ -0,0 +1,44 @@
+---
+title: Quick Start
+---
+
+> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime.
+
+This guide provides step-by-step instructions for getting started with Graph Assistant quickly.
+
+## Step-by Step
+
+### Step 1. Create an Account
+
+Go to: [Graph Assistant](https://thegraph.com/graph-assistant)
+
+- Click Sign Up (or Log In if you already have an account).
+- Use your Google, GitHub, X, email or wallet credentials to log in.
+- No additional setup is required.
+
+### Step 2. Open the Assistant Chat
+
+After logging in:
+
+- You'll see Graph Assistant's interface.
+- At the bottom of the page, you will find a chat input bar. This is where you will interact with the Assistant.
+
+### Step 3: Ask Your First Question
+
+> [!IMPORTANT] All users can process 10 free queries per user per hour.
+
+In the input bar, type a natural-language query (everyday language).
+
+Example:
+
+```yaml
+Show me the 24-hour trading volume of XYZ token on Ethereum
+```
+
+> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the AI interface. Do not share sensitive, personal, or private information.
+
+The Assistant will:
+
+- Digest your question
+- Fetch onchain data using Subgraphs or the Token API
+- Return a clean, formatted response with the data you need
diff --git a/website/src/pages/tr/ai-suite/subgraph-mcp/_meta.js b/website/src/pages/tr/ai-suite/subgraph-mcp/_meta.js
new file mode 100644
index 000000000000..6f527b4e53e4
--- /dev/null
+++ b/website/src/pages/tr/ai-suite/subgraph-mcp/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  introduction: '',
+  claude: '',
+  cline: '',
+  cursor: '',
+}
diff --git a/website/src/pages/tr/ai-suite/subgraph-mcp/claude.mdx b/website/src/pages/tr/ai-suite/subgraph-mcp/claude.mdx
new file mode 100644
index 000000000000..ff3caa4e3e7f
--- /dev/null
+++ b/website/src/pages/tr/ai-suite/subgraph-mcp/claude.mdx
@@ -0,0 +1,169 @@
+---
+title: Claude Desktop
+---
+
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data via natural language conversations with Claude.
+
+## Prerequisites
+
+- [Node.js](https://nodejs.org/en) installed and available in your path
+- [Claude Desktop](https://claude.ai/download) installed (latest version)
+- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
+
+## Installation Options
+
+### Option 1: Using npx (Recommended)
+
+#### Configuration Steps using npx
+
+#### 1. Open Configuration File
+
+Navigate to your `claude_desktop_config.json` file:
+
+> **Settings** > **Developer** > **Edit Config**
+
+- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
+- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
+- Linux: `.config/Claude/claude_desktop_config.json`
+
+#### 2. Add Configuration
+
+Paste the following settings into your config file:
+
+```json
+{
+  "mcpServers": {
+    "subgraph": {
+      "command": "npx",
+      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
+      "env": {
+        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
+      }
+    }
+  }
+}
+```
+
+#### 3. Add Your Gateway API Key
+
+Replace `GATEWAY_API_KEY` with your API key from [Subgraph Studio](https://thegraph.com/studio/).
+
+#### 4. Save and Restart
+
+Once you've entered your Gateway API key into your settings, save the file and restart Claude Desktop.
+
+### Option 2: Building from Source
+
+#### Requirements
+
+- Rust (latest stable version recommended: 1.75+)
+  ```bash
+  curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
+  ```
+  Follow the on-screen instructions. For other platforms, see the [official Rust installation guide](https://www.rust-lang.org/tools/install).
+
+#### Installation Steps
+
+1. **Clone and Build the Repository**
+
+   ```bash
+   git clone git@github.com:graphops/subgraph-mcp.git
+   cd subgraph-mcp
+   cargo build --release
+   ```
+
+2. **Find the Command Path**
+
+   After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory.
+   - Navigate to your `subgraph-mcp` directory in terminal
+   - Run `pwd` to get the full path
+   - Combine the output with `/target/release/subgraph-mcp`
+
+3. **Configure Claude Desktop**
+
+   Open your `claude_desktop_config.json` file as described above and add:
+
+   ```json
+   {
+     "mcpServers": {
+       "subgraph": {
+         "command": "/path/to/your/subgraph-mcp/target/release/subgraph-mcp",
+         "env": {
+           "GATEWAY_API_KEY": "your-api-key-here"
+         }
+       }
+     }
+   }
+   ```
+
+   Replace `/path/to/your/subgraph-mcp/target/release/subgraph-mcp` with the actual path to the compiled binary.
+
+## Using The Graph Resource in Claude
+
+After configuring Claude Desktop:
+
+1. Restart Claude Desktop
+2. Start a new conversation
+3. Click on the context menu (top right)
+4. Add "Subgraph Server Instructions" as a resource by adding `graphql://subgraph` to your chat context
+
+> **Important**: Claude Desktop may not automatically utilize the Subgraph MCP. You must manually add "Subgraph Server Instructions" resource to your chat context for each conversation where you want to use it.
+
+## Troubleshooting
+
+To enable logs for the MCP when using the npx option, add the `--verbose true` option to your args array.
+
+## Available Subgraph Tools and Usage
+
+The Subgraph MCP provides several tools for interacting with Subgraphs:
+
+### Schema Retrieval Tools
+
+- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
+- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
+- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
+
+### Query Execution Tools
+
+- **Execute query by deployment ID/IPFS hash**: Run GraphQL queries against specific, immutable deployments
+- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
+
+### Discovery Tools
+
+- **Search subgraphs by keyword**: Find subgraphs by keyword in their display names, ordered by signal
+- **Get deployment 30-day query counts**: Get aggregate query count over the last 30 days for multiple subgraph deployments
+- **Get top Subgraph deployments for a contract**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain, ordered by query fees
+
+## Key Identifier Types
+
+- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a subgraph. Use `execute_query_by_subgraph_id` or `get_schema_by_subgraph_id`.
+- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment. Use `execute_query_by_deployment_id` or `get_schema_by_deployment_id`.
+- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific, immutable deployment. Use `execute_query_by_deployment_id` (the gateway treats it like a deployment ID for querying) or `get_schema_by_ipfs_hash`.
+
+## Benefits of Natural Language Queries
+
+One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Claude will:
+
+1. Understand your goal (lookup, find Subgraphs, query, get schema)
+2. Find relevant deployments if needed
+3. Fetch and interpret the Subgraph schema
+4. Convert your question into an appropriate GraphQL query
+5. Execute the query and present the results in a readable format
+
+### Example Natural Language Queries
+
+```
+What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
+```
+
+```
+Which tokens have the highest market cap in this Subgraph?
+```
+
+```
+Show me the most recent 5 swaps for the USDC/ETH pair
+```
+
+```
+Find the top subgraphs for contract 0x1f98431c8ad98523631ae4a59f267346ea31f984 on arbitrum-one
+```
diff --git a/website/src/pages/tr/ai-suite/subgraph-mcp/cline.mdx b/website/src/pages/tr/ai-suite/subgraph-mcp/cline.mdx
new file mode 100644
index 000000000000..eb8044bfe991
--- /dev/null
+++ b/website/src/pages/tr/ai-suite/subgraph-mcp/cline.mdx
@@ -0,0 +1,99 @@
+---
+title: Cline
+---
+
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data through natural language conversations with Cline.
+
+## Prerequisites
+
+- [Cline](https://cline.bot/) installed (latest version)
+- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
+
+## Configuration Steps
+
+### 1. Open Configuration File
+
+Create or edit your `cline_mcp_settings.json` file.
+
+> **MCP Servers** > **Installed** > **Configure MCP Servers**
+
+### 2. Add Configuration
+
+```json
+{
+  "mcpServers": {
+    "subgraph": {
+      "command": "npx",
+      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
+      "env": {
+        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
+      }
+    }
+  }
+}
+```
+
+### 3. Add Your API Key
+
+Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
+
+## Using The Graph Resource in Cline
+
+After configuring Cline:
+
+1. Restart Cline
+2. Start a new conversation
+3. Enable the Subgraph MCP from the context menu
+4. Add "Subgraph Server Instructions" as a resource to your chat context
+
+## Available Tools and Usage
+
+The Subgraph MCP provides several tools for interacting with Subgraphs:
+
+### Schema Retrieval Tools
+
+- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
+- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
+- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
+
+### Query Execution Tools
+
+- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
+- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
+
+### Discovery Tools
+
+- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
+
+## Natural Language Queries
+
+One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cline will:
+
+1. Understand your goal (lookup, find Subgraphs, query, get schema)
+2. Find relevant deployments if needed
+3. Fetch and interpret the Subgraph schema
+4. Convert your question into an appropriate GraphQL query
+5. Execute the query and present the results in a readable format
+
+### Example Natural Language Queries
+
+```
+What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
+```
+
+```
+Which tokens have the highest market cap in this Subgraph?
+```
+
+```
+Show me the most recent 5 swaps for the USDC/ETH pair
+```
+
+## Key Identifier Types
+
+When working with Subgraphs, you'll encounter different types of identifiers:
+
+- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
+- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
+- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/tr/ai-suite/subgraph-mcp/cursor.mdx b/website/src/pages/tr/ai-suite/subgraph-mcp/cursor.mdx
new file mode 100644
index 000000000000..6291caf4b06b
--- /dev/null
+++ b/website/src/pages/tr/ai-suite/subgraph-mcp/cursor.mdx
@@ -0,0 +1,94 @@
+---
+title: Cursor
+---
+
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data through natural language conversations with Cline.
+
+## Prerequisites
+
+- [Cursor](https://www.cursor.com/) installed (latest version)
+- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
+
+## Configuration Steps
+
+### 1. Open Configuration File
+
+Create or edit your `~/.cursor/mcp.json` file.
+
+> **Cursor Settings** > **MCP** > **Add new global MCP Server**
+
+### 2. Add Configuration
+
+```json
+{
+  "mcpServers": {
+    "subgraph": {
+      "command": "npx",
+      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
+      "env": {
+        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
+      }
+    }
+  }
+}
+```
+
+### 3. Add Your API Key
+
+Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
+
+### 4. Restart Cursor
+
+Restart Cursor, and start a new chat.
+
+## Available Subgraph Tools and Usage
+
+The Subgraph MCP provides several tools for interacting with Subgraphs:
+
+### Schema Retrieval Tools
+
+- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
+- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
+- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
+
+### Query Execution Tools
+
+- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
+- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
+
+### Discovery Tools
+
+- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
+
+## Benefits of Natural Language Queries
+
+One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cursor will:
+
+1. Understand your goal (lookup, find Subgraphs, query, get schema)
+2. Find relevant deployments if needed
+3. Fetch and interpret the Subgraph schema
+4. Convert your question into an appropriate GraphQL query
+5. Execute the query and present the results in a readable format
+
+### Example Natural Language Queries
+
+```
+What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
+```
+
+```
+Which tokens have the highest market cap in this Subgraph?
+```
+
+```
+Show me the most recent 5 swaps for the USDC/ETH pair
+```
+
+## Key Identifier Types
+
+When working with Subgraphs, you'll encounter different types of identifiers:
+
+- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
+- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
+- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/tr/ai-suite/subgraph-mcp/introduction.mdx b/website/src/pages/tr/ai-suite/subgraph-mcp/introduction.mdx
new file mode 100644
index 000000000000..da1272cf9a36
--- /dev/null
+++ b/website/src/pages/tr/ai-suite/subgraph-mcp/introduction.mdx
@@ -0,0 +1,22 @@
+---
+title: Subgraph MCP Introduction
+sidebarTitle: 'Introduction'
+---
+
+Subgraph MCP server is an open-source implementation of [Anthropic's Model Context Protocol](https://modelcontextprotocol.io/introduction).
+
+It presents The Graph's Subgraph data through a set of MCP tools that any MCP-compatible client can call. With these tools, clients can search for relevant Subgraphs, inspect GraphQL schemas, and run queries against specific deployments on The Graph Network all within a single, standardized interface.
+
+The server itself does not hold a language model. Instead, it translates incoming MCP requests into Subgraph queries and returns the structured results, allowing the client's LLM to transform a natural-language prompt into actionable blockchain data.
+
+Think of it as a USB-C hub: it standardizes the plug-and-play connection between AI agents and The Graph's Subgraph ecosystem.
+
+## What You Can Do
+
+- Access GraphQL schemas for any Subgraph on The Graph Network
+- Run GraphQL queries on any Subgraph deployment
+- Discover top Subgraph deployments by keyword or contract address
+- Retrieve 30-day query volumes for Subgraph deployments
+- Ask questions about Subgraph data without writing GraphQL manually
+
+The Subgraph MCP server allows smooth integration with [Claude](/ai-suite/subgraph-mcp/claude/), [Cline](/ai-suite/subgraph-mcp/cline/), or [Cursor](/ai-suite/subgraph-mcp/cursor/), making blockchain data queries with The Graph Network a conversational experience.
diff --git a/website/src/pages/tr/ai-suite/token-api-mcp/_meta.js b/website/src/pages/tr/ai-suite/token-api-mcp/_meta.js
new file mode 100644
index 000000000000..6f527b4e53e4
--- /dev/null
+++ b/website/src/pages/tr/ai-suite/token-api-mcp/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  introduction: '',
+  claude: '',
+  cline: '',
+  cursor: '',
+}
diff --git a/website/src/pages/tr/ai-suite/token-api-mcp/claude.mdx b/website/src/pages/tr/ai-suite/token-api-mcp/claude.mdx
new file mode 100644
index 000000000000..3e21f4d7e165
--- /dev/null
+++ b/website/src/pages/tr/ai-suite/token-api-mcp/claude.mdx
@@ -0,0 +1,58 @@
+---
+title: Using Claude Desktop to Access the Token API via MCP
+sidebarTitle: Claude Desktop
+---
+
+## Prerequisites
+
+- [Claude Desktop](https://claude.ai/download) installed.
+- A [JWT token](/token-api/quick-start) from [The Graph Market](https://thegraph.market/).
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path.
+- The `@pinax/mcp` package requires Node 18+, as it relies on built-in `fetch()` / `Headers`, which are not available in Node 17 or older. You may need to specify an exact path to an up-to-date Node version, or uninstall previous versions of Node to ensure `@pinax/mcp` uses the correct version.
+
+![Screenshot of Claude Desktop's settings panel showing the MCP server configuration option.](/img/claude-preview-token-api.png)
+
+## Configuration
+
+Create or edit your `claude_desktop_config.json` file.
+
+> **Settings** > **Developer** > **Edit Config**
+
+- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
+- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
+- Linux: `.config/Claude/claude_desktop_config.json`
+
+```json label="claude_desktop_config.json"
+{
+  "mcpServers": {
+    "token-api": {
+      "command": "npx",
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
+      "env": {
+        "ACCESS_TOKEN": "<https://thegraph.market JWT Access Token>"
+      }
+    }
+  }
+}
+```
+
+## Troubleshooting
+
+To enable logs for the MCP, use the `--verbose true` option.
+
+### ENOENT
+
+![Error dialog in Claude Desktop showing 'ENOENT' system error, indicating the npx/bunx command wasn't found in the system path.](/img/claude-ENOENT.png)
+
+Try to use the full path of the command instead:
+
+- Run `which npx` or `which bunx` to get the path of the command.
+- Replace `npx` or `bunx` in the configuration file with the full path (e.g. `/home/user/bin/bunx`).
+
+### Server disconnected
+
+![Connection error notification in Claude Desktop displaying 'Server disconnected' message.](/img/claude-server-disconnect.png)
+
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
+
+> You can always have a look at the full logs under `Claude/logs/mcp.log` and `Claude/logs/mcp-server-pinax.log` for more details.
diff --git a/website/src/pages/tr/ai-suite/token-api-mcp/cline.mdx b/website/src/pages/tr/ai-suite/token-api-mcp/cline.mdx
new file mode 100644
index 000000000000..e885d21366cd
--- /dev/null
+++ b/website/src/pages/tr/ai-suite/token-api-mcp/cline.mdx
@@ -0,0 +1,52 @@
+---
+title: Using Cline to Access the Token API via MCP
+sidebarTitle: Cline
+---
+
+## Prerequisites
+
+- [Cline](https://cline.bot/) installed.
+- A [JWT token](/token-api/quick-start) from [The Graph Market](https://thegraph.market/).
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path.
+- The `@pinax/mcp` package requires Node 18+, as it relies on built-in `fetch()` / `Headers`, which are not available in Node 17 or older. You may need to specify an exact path to an up-to-date Node version, or uninstall previous versions of Node to ensure `@pinax/mcp` uses the correct version.
+
+![Screenshot of Cline's MCP server configuration interface displaying the JSON settings file with mcp-pinax server details visible.](/img/cline-preview-token-api.png)
+
+## Configuration
+
+Create or edit your `cline_mcp_settings.json` file.
+
+> **MCP Servers** > **Installed** > **Configure MCP Servers**
+
+```json label="cline_mcp_settings.json"
+{
+  "mcpServers": {
+    "mcp-pinax": {
+      "command": "npx",
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
+      "env": {
+        "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
+      }
+    }
+  }
+}
+```
+
+## Troubleshooting
+
+To enable logs for the MCP, use the `--verbose true` option.
+
+### ENOENT
+
+![Cline error dialog showing 'ENOENT' system alert.](/img/cline-error.png)
+
+Try to use the full path of the command instead:
+
+- Run `which npx` or `which bunx` to get the path of the command.
+- Replace `npx` or `bunx` in the configuration file with the full path (e.g. `/home/user/bin/bunx`).
+
+### Server disconnected
+
+![Cline connection error notification displaying server disconnection warning.](/img/cline-missing-variables.png)
+
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/tr/ai-suite/token-api-mcp/cursor.mdx b/website/src/pages/tr/ai-suite/token-api-mcp/cursor.mdx
new file mode 100644
index 000000000000..68fe2fdb201c
--- /dev/null
+++ b/website/src/pages/tr/ai-suite/token-api-mcp/cursor.mdx
@@ -0,0 +1,50 @@
+---
+title: Using Cursor to Access the Token API via MCP
+sidebarTitle: Cursor
+---
+
+## Prerequisites
+
+- [Cursor](https://www.cursor.com/) installed.
+- A [JWT token](/token-api/quick-start) from [The Graph Market](https://thegraph.market/).
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path.
+- The `@pinax/mcp` package requires Node 18+, as it relies on built-in `fetch()` / `Headers`, which are not available in Node 17 or older. You may need to specify an exact path to an up-to-date Node version, or uninstall previous versions of Node to ensure `@pinax/mcp` uses the correct version.
+
+![Screenshot of Cursor's MCP configuration panel.](/img/cursor-preview-token-api.png)
+
+## Configuration
+
+Create or edit your `~/.cursor/mcp.json` file.
+
+> **Cursor Settings** > **MCP** > **Add new global MCP Server**
+
+```json label="mcp.json"
+{
+  "mcpServers": {
+    "mcp-pinax": {
+      "command": "npx",
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
+      "env": {
+        "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
+      }
+    }
+  }
+}
+```
+
+## Troubleshooting
+
+![Cursor IDE error notification that reads, "Failed to create client"](/img/cursor-error.png)
+
+To enable logs for the MCP, use the `--verbose true` option.
+
+### ENOENT
+
+Try to use the full path of the command instead:
+
+- Run `which npx` or `which bunx` to get the path of the command.
+- Replace `npx` or `bunx` in the configuration file with the full path (e.g. `/home/user/bin/bunx`).
+
+### Server disconnected
+
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/tr/ai-suite/token-api-mcp/introduction.mdx b/website/src/pages/tr/ai-suite/token-api-mcp/introduction.mdx
new file mode 100644
index 000000000000..b61ad0a1c485
--- /dev/null
+++ b/website/src/pages/tr/ai-suite/token-api-mcp/introduction.mdx
@@ -0,0 +1,23 @@
+---
+title: Token API MCP Introduction
+sidebarTitle: 'Introduction'
+---
+
+Token API MCP server is an open-source implementation of [Anthropic's Model Context Protocol](https://modelcontextprotocol.io/introduction).
+
+This MCP server makes on-chain token data, including metadata, balances, transfers, and holder statistics, accessible through a set of MCP tools. Any compatible client can use these tools to fetch and analyze token information through a standardized interface. It connects to The Graph's hosted Token API database, enabling AI assistants to query real-time blockchain data using natural language requests that get translated into optimized SQL queries.
+
+The server itself does not host any language model. It simply converts MCP calls into data look-ups and returns structured results, letting the client's own LLM incorporate the results.
+
+Think of it as a USB-C hub: it standardizes the plug-and-play connection between AI agents and The Graph's Token API data.
+
+## What You Can Do
+
+- Retrieve token metadata including name, symbol, decimals, total supply, and contract address
+- Get token balances for any wallet address holding a supported ERC-20 token
+- Fetch token transfer activity including sender, receiver, amount, and timestamp
+- Identify top holders and analyze token distribution
+- Ask natural language questions about token data without writing smart contract calls
+- Access historical transfer data to analyze token movement over time
+
+The Token MCP server provides [Claude](/ai-suite/token-api-mcp/claude/), [Cline](/ai-suite/token-api-mcp/cline/), and [Cursor](/ai-suite/token-api-mcp/cursor/) with direct, conversational access to onchain token data.
diff --git a/website/src/pages/tr/resources/_meta.js b/website/src/pages/tr/resources/_meta.js
index aa8e2d0ec6a8..38c56cf56c43 100644
--- a/website/src/pages/tr/resources/_meta.js
+++ b/website/src/pages/tr/resources/_meta.js
@@ -7,5 +7,4 @@ export default {
   roles: titles.roles ?? '',
   'migration-guides': titles['migration-guides'] ?? '',
   'subgraph-studio-faq': '',
-  'claude-mcp': '',
 }
diff --git a/website/src/pages/tr/resources/claude-mcp.mdx b/website/src/pages/tr/resources/claude-mcp.mdx
deleted file mode 100644
index 44ed075cffda..000000000000
--- a/website/src/pages/tr/resources/claude-mcp.mdx
+++ /dev/null
@@ -1,122 +0,0 @@
----
-title: Claude MCP
----
-
-This guide walks you through configuring Claude Desktop to use The Graph ecosystem's [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) resources: Token API and Subgraph. These integrations allow you to interact with blockchain data through natural language conversations with Claude.
-
-## What You Can Do
-
-With these integrations, you can:
-
-- **Token API**: Access token and wallet information across multiple blockchains
-- **Subgraph**: Find relevant Subgraphs for specific keywords and contracts, explore Subgraph schemas, and execute GraphQL queries
-
-## Prerequisites
-
-- [Node.js](https://nodejs.org/en/download/) installed and available in your path
-- [Claude Desktop](https://claude.ai/download) installed
-- API keys:
-  - Token API key from [The Graph Market](https://thegraph.market/)
-  - Gateway API key from [Subgraph Studio](https://thegraph.com/studio/apikeys/)
-
-## Configuration Steps
-
-### 1. Open Configuration File
-
-Navigate to your `claude_desktop_config.json` file:
-
-> **Claude Desktop** > **Settings** > **Developer** > **Edit Config**
-
-Paths by operating system:
-
-- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
-- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
-- Linux: `.config/Claude/claude_desktop_config.json`
-
-### 2. Add Configuration
-
-Replace the contents of the existing config file with:
-
-```json
-{
-  "mcpServers": {
-    "token-api": {
-      "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
-      "env": {
-        "ACCESS_TOKEN": "ACCESS_TOKEN"
-      }
-    },
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-### 3. Add Your API Keys
-
-Replace:
-
-- `ACCESS_TOKEN` with your Token API key from [The Graph Market](https://thegraph.market/)
-- `GATEWAY_API_KEY` with your Gateway API key from [Subgraph Studio](https://thegraph.com/studio/apikeys/)
-
-### 4. Save and Restart
-
-- Save the configuration file
-- Restart Claude Desktop
-
-### 5. Add The Graph Resources in Claude
-
-After configuration:
-
-1. Start a new conversation in Claude Desktop
-2. Click on the context menu (top right)
-3. Add "Subgraph Server Instructions" as a resource by entering `graphql://subgraph` for Subgraph MCP
-
-> **Important**: You must manually add The Graph resources to your chat context for each conversation where you want to use them.
-
-### 6. Run Queries
-
-Here are some example queries you can try after setting up the resources:
-
-### Subgraph Queries
-
-```
-What are the top pools in Uniswap?
-```
-
-```
-Who are the top Delegators of The Graph Protocol?
-```
-
-```
-Please make a bar chart for the number of active loans in Compound for the last 7 days
-```
-
-### Token API Queries
-
-```
-Show me the current price of ETH
-```
-
-```
-What are the top tokens by market cap on Ethereum?
-```
-
-```
-Analyze this wallet address: 0x...
-```
-
-## Troubleshooting
-
-If you encounter issues:
-
-1. **Verify Node.js Installation**: Ensure Node.js is correctly installed by running `node -v` in your terminal
-2. **Check API Keys**: Verify that your API keys are correctly entered in the configuration file
-3. **Enable Verbose Logging**: Add `--verbose true` to the args array in your configuration to see detailed logs
-4. **Restart Claude Desktop**: After making changes to the configuration, always restart Claude Desktop
diff --git a/website/src/pages/tr/subgraphs/_meta.js b/website/src/pages/tr/subgraphs/_meta.js
index 4365293ffc72..45841d5f3355 100644
--- a/website/src/pages/tr/subgraphs/_meta.js
+++ b/website/src/pages/tr/subgraphs/_meta.js
@@ -6,7 +6,6 @@ export default {
   querying: titles.querying ?? '',
   developing: titles.developing ?? '',
   billing: '',
-  mcp: titles.mcp ?? '',
   guides: titles.guides,
   'best-practices': titles['best-practices'],
   'fair-use-policy': '',
diff --git a/website/src/pages/tr/subgraphs/mcp/_meta.js b/website/src/pages/tr/subgraphs/mcp/_meta.js
deleted file mode 100644
index 8630d4da27b3..000000000000
--- a/website/src/pages/tr/subgraphs/mcp/_meta.js
+++ /dev/null
@@ -1,5 +0,0 @@
-export default {
-  claude: '',
-  cline: '',
-  cursor: '',
-}
diff --git a/website/src/pages/tr/subgraphs/mcp/claude.mdx b/website/src/pages/tr/subgraphs/mcp/claude.mdx
deleted file mode 100644
index 027b272cb942..000000000000
--- a/website/src/pages/tr/subgraphs/mcp/claude.mdx
+++ /dev/null
@@ -1,179 +0,0 @@
----
-title: Claude Desktop
----
-
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Claude to interact directly with Subgraphs on The Graph Network. This integration allows you to find relevant Subgraphs for specific keywords and contracts, explore Subgraph schemas, and execute GraphQL queries—all through natural language conversations with Claude.
-
-## What You Can Do
-
-The Subgraph MCP integration enables you to:
-
-- Access the GraphQL schema for any Subgraph on The Graph Network
-- Execute GraphQL queries against any Subgraph deployment
-- Find top Subgraph deployments for a given keyword or contract address
-- Get 30-day query volume for Subgraph deployments
-- Ask natural language questions about Subgraph data without writing GraphQL queries manually
-
-## Prerequisites
-
-- [Node.js](https://nodejs.org/en) installed and available in your path
-- [Claude Desktop](https://claude.ai/download) installed (latest version)
-- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
-
-## Installation Options
-
-### Option 1: Using npx (Recommended)
-
-#### Configuration Steps using npx
-
-#### 1. Open Configuration File
-
-Navigate to your `claude_desktop_config.json` file:
-
-> **Settings** > **Developer** > **Edit Config**
-
-- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
-- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
-- Linux: `.config/Claude/claude_desktop_config.json`
-
-#### 2. Add Configuration
-
-Paste the following settings into your config file:
-
-```json
-{
-  "mcpServers": {
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-#### 3. Add Your Gateway API Key
-
-Replace `GATEWAY_API_KEY` with your API key from [Subgraph Studio](https://thegraph.com/studio/).
-
-#### 4. Save and Restart
-
-Once you've entered your Gateway API key into your settings, save the file and restart Claude Desktop.
-
-### Option 2: Building from Source
-
-#### Requirements
-
-- Rust (latest stable version recommended: 1.75+)
-  ```bash
-  curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
-  ```
-  Follow the on-screen instructions. For other platforms, see the [official Rust installation guide](https://www.rust-lang.org/tools/install).
-
-#### Installation Steps
-
-1. **Clone and Build the Repository**
-
-   ```bash
-   git clone git@github.com:graphops/subgraph-mcp.git
-   cd subgraph-mcp
-   cargo build --release
-   ```
-
-2. **Find the Command Path**
-
-   After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory.
-   - Navigate to your `subgraph-mcp` directory in terminal
-   - Run `pwd` to get the full path
-   - Combine the output with `/target/release/subgraph-mcp`
-
-3. **Configure Claude Desktop**
-
-   Open your `claude_desktop_config.json` file as described above and add:
-
-   ```json
-   {
-     "mcpServers": {
-       "subgraph": {
-         "command": "/path/to/your/subgraph-mcp/target/release/subgraph-mcp",
-         "env": {
-           "GATEWAY_API_KEY": "your-api-key-here"
-         }
-       }
-     }
-   }
-   ```
-
-   Replace `/path/to/your/subgraph-mcp/target/release/subgraph-mcp` with the actual path to the compiled binary.
-
-## Using The Graph Resource in Claude
-
-After configuring Claude Desktop:
-
-1. Restart Claude Desktop
-2. Start a new conversation
-3. Click on the context menu (top right)
-4. Add "Subgraph Server Instructions" as a resource by adding `graphql://subgraph` to your chat context
-
-> **Important**: Claude Desktop may not automatically utilize the Subgraph MCP. You must manually add "Subgraph Server Instructions" resource to your chat context for each conversation where you want to use it.
-
-## Troubleshooting
-
-To enable logs for the MCP when using the npx option, add the `--verbose true` option to your args array.
-
-## Available Subgraph Tools and Usage
-
-The Subgraph MCP provides several tools for interacting with Subgraphs:
-
-### Schema Retrieval Tools
-
-- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
-- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
-- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
-
-### Query Execution Tools
-
-- **Execute query by deployment ID/IPFS hash**: Run GraphQL queries against specific, immutable deployments
-- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
-
-### Discovery Tools
-
-- **Search subgraphs by keyword**: Find subgraphs by keyword in their display names, ordered by signal
-- **Get deployment 30-day query counts**: Get aggregate query count over the last 30 days for multiple subgraph deployments
-- **Get top Subgraph deployments for a contract**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain, ordered by query fees
-
-## Key Identifier Types
-
-- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a subgraph. Use `execute_query_by_subgraph_id` or `get_schema_by_subgraph_id`.
-- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment. Use `execute_query_by_deployment_id` or `get_schema_by_deployment_id`.
-- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific, immutable deployment. Use `execute_query_by_deployment_id` (the gateway treats it like a deployment ID for querying) or `get_schema_by_ipfs_hash`.
-
-## Benefits of Natural Language Queries
-
-One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Claude will:
-
-1. Understand your goal (lookup, find Subgraphs, query, get schema)
-2. Find relevant deployments if needed
-3. Fetch and interpret the Subgraph schema
-4. Convert your question into an appropriate GraphQL query
-5. Execute the query and present the results in a readable format
-
-### Example Natural Language Queries
-
-```
-What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
-```
-
-```
-Which tokens have the highest market cap in this Subgraph?
-```
-
-```
-Show me the most recent 5 swaps for the USDC/ETH pair
-```
-
-```
-Find the top subgraphs for contract 0x1f98431c8ad98523631ae4a59f267346ea31f984 on arbitrum-one
-```
diff --git a/website/src/pages/tr/subgraphs/mcp/cline.mdx b/website/src/pages/tr/subgraphs/mcp/cline.mdx
deleted file mode 100644
index 156221d9a127..000000000000
--- a/website/src/pages/tr/subgraphs/mcp/cline.mdx
+++ /dev/null
@@ -1,99 +0,0 @@
----
-title: Cline
----
-
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Cline to interact directly with Subgraphs on The Graph Network. This integration allows you to explore Subgraph schemas, execute GraphQL queries, and find relevant Subgraphs for specific contracts—all through natural language conversations with Cline.
-
-## Prerequisites
-
-- [Cline](https://cline.bot/) installed (latest version)
-- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
-
-## Configuration Steps
-
-### 1. Open Configuration File
-
-Create or edit your `cline_mcp_settings.json` file.
-
-> **MCP Servers** > **Installed** > **Configure MCP Servers**
-
-### 2. Add Configuration
-
-```json
-{
-  "mcpServers": {
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-### 3. Add Your API Key
-
-Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
-
-## Using The Graph Resource in Cline
-
-After configuring Cline:
-
-1. Restart Cline
-2. Start a new conversation
-3. Enable the Subgraph MCP from the context menu
-4. Add "Subgraph Server Instructions" as a resource to your chat context
-
-## Available Tools and Usage
-
-The Subgraph MCP provides several tools for interacting with Subgraphs:
-
-### Schema Retrieval Tools
-
-- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
-- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
-- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
-
-### Query Execution Tools
-
-- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
-- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
-
-### Discovery Tools
-
-- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
-
-## Natural Language Queries
-
-One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cline will:
-
-1. Understand your goal (lookup, find Subgraphs, query, get schema)
-2. Find relevant deployments if needed
-3. Fetch and interpret the Subgraph schema
-4. Convert your question into an appropriate GraphQL query
-5. Execute the query and present the results in a readable format
-
-### Example Natural Language Queries
-
-```
-What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
-```
-
-```
-Which tokens have the highest market cap in this Subgraph?
-```
-
-```
-Show me the most recent 5 swaps for the USDC/ETH pair
-```
-
-## Key Identifier Types
-
-When working with Subgraphs, you'll encounter different types of identifiers:
-
-- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
-- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
-- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/tr/subgraphs/mcp/cursor.mdx b/website/src/pages/tr/subgraphs/mcp/cursor.mdx
deleted file mode 100644
index 298f43ece048..000000000000
--- a/website/src/pages/tr/subgraphs/mcp/cursor.mdx
+++ /dev/null
@@ -1,94 +0,0 @@
----
-title: Cursor
----
-
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Cursor to interact directly with Subgraphs on The Graph Network. This integration allows you to explore Subgraph schemas, execute GraphQL queries, and find relevant Subgraphs for specific contracts—all through natural language conversations with Cursor.
-
-## Prerequisites
-
-- [Cursor](https://www.cursor.com/) installed (latest version)
-- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
-
-## Configuration Steps
-
-### 1. Open Configuration File
-
-Create or edit your `~/.cursor/mcp.json` file.
-
-> **Cursor Settings** > **MCP** > **Add new global MCP Server**
-
-### 2. Add Configuration
-
-```json
-{
-  "mcpServers": {
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-### 3. Add Your API Key
-
-Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
-
-### 4. Restart Cursor
-
-Restart Cursor, and start a new chat.
-
-## Available Subgraph Tools and Usage
-
-The Subgraph MCP provides several tools for interacting with Subgraphs:
-
-### Schema Retrieval Tools
-
-- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
-- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
-- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
-
-### Query Execution Tools
-
-- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
-- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
-
-### Discovery Tools
-
-- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
-
-## Benefits of Natural Language Queries
-
-One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cursor will:
-
-1. Understand your goal (lookup, find Subgraphs, query, get schema)
-2. Find relevant deployments if needed
-3. Fetch and interpret the Subgraph schema
-4. Convert your question into an appropriate GraphQL query
-5. Execute the query and present the results in a readable format
-
-### Example Natural Language Queries
-
-```
-What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
-```
-
-```
-Which tokens have the highest market cap in this Subgraph?
-```
-
-```
-Show me the most recent 5 swaps for the USDC/ETH pair
-```
-
-## Key Identifier Types
-
-When working with Subgraphs, you'll encounter different types of identifiers:
-
-- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
-- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
-- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/tr/substreams/_meta.js b/website/src/pages/tr/substreams/_meta.js
index a8ee04618eae..658bb8c213c6 100644
--- a/website/src/pages/tr/substreams/_meta.js
+++ b/website/src/pages/tr/substreams/_meta.js
@@ -5,5 +5,4 @@ export default {
   introduction: '',
   developing: titles.developing ?? '',
   publishing: '',
-  sps: titles.sps ?? '',
 }
diff --git a/website/src/pages/tr/token-api/_meta-titles.json b/website/src/pages/tr/token-api/_meta-titles.json
index 7ed31e0af95d..3108ecd3ebfd 100644
--- a/website/src/pages/tr/token-api/_meta-titles.json
+++ b/website/src/pages/tr/token-api/_meta-titles.json
@@ -1,6 +1,7 @@
 {
   "mcp": "MCP",
   "evm": "EVM Endpoints",
+  "svm": "SVM Endpoints",
   "monitoring": "Monitoring Endpoints",
   "faq": "FAQ"
 }
diff --git a/website/src/pages/tr/token-api/_meta.js b/website/src/pages/tr/token-api/_meta.js
index f67576d7f612..fb7f7334ea0c 100644
--- a/website/src/pages/tr/token-api/_meta.js
+++ b/website/src/pages/tr/token-api/_meta.js
@@ -2,8 +2,8 @@ import titles from './_meta-titles.json'
 
 export default {
   'quick-start': '',
-  mcp: titles.mcp ?? '',
   evm: titles.evm ?? '',
+  svm: titles.svm ?? '',
   monitoring: titles.monitoring ?? '',
   faq: '',
 }
diff --git a/website/src/pages/tr/token-api/mcp/_meta.js b/website/src/pages/tr/token-api/mcp/_meta.js
deleted file mode 100644
index 8630d4da27b3..000000000000
--- a/website/src/pages/tr/token-api/mcp/_meta.js
+++ /dev/null
@@ -1,5 +0,0 @@
-export default {
-  claude: '',
-  cline: '',
-  cursor: '',
-}
diff --git a/website/src/pages/tr/token-api/svm/_meta.js b/website/src/pages/tr/token-api/svm/_meta.js
new file mode 100644
index 000000000000..1a48b82fcbf1
--- /dev/null
+++ b/website/src/pages/tr/token-api/svm/_meta.js
@@ -0,0 +1,5 @@
+export default {
+  'get-balances-svm': '',
+  'get-transfers-svm': '',
+  'get-swaps-svm': '',
+}
diff --git a/website/src/pages/tr/token-api/svm/get-balances-svm.mdx b/website/src/pages/tr/token-api/svm/get-balances-svm.mdx
new file mode 100644
index 000000000000..c2946c190bf9
--- /dev/null
+++ b/website/src/pages/tr/token-api/svm/get-balances-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Balances
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getBalancesSvm
+---
+
+Provides Solana tokens balances by token account address.
diff --git a/website/src/pages/tr/token-api/svm/get-swaps-svm.mdx b/website/src/pages/tr/token-api/svm/get-swaps-svm.mdx
new file mode 100644
index 000000000000..95282a38ac9f
--- /dev/null
+++ b/website/src/pages/tr/token-api/svm/get-swaps-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Swap Events
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getSwapsSvm
+---
+
+Provides Raydium swap events.
diff --git a/website/src/pages/tr/token-api/svm/get-transfers-svm.mdx b/website/src/pages/tr/token-api/svm/get-transfers-svm.mdx
new file mode 100644
index 000000000000..5335cdddf418
--- /dev/null
+++ b/website/src/pages/tr/token-api/svm/get-transfers-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Transfers Events
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getTransfersSvm
+---
+
+Provides SVM transfer events.
diff --git a/website/src/pages/uk/ai-suite/_meta-titles.json b/website/src/pages/uk/ai-suite/_meta-titles.json
new file mode 100644
index 000000000000..5eb482a7092b
--- /dev/null
+++ b/website/src/pages/uk/ai-suite/_meta-titles.json
@@ -0,0 +1,6 @@
+{
+  "graph-assistant": "Graph Assistant",
+  "ai-introduction": "The Graph's AI",
+  "subgraph-mcp": "Subgraph MCP",
+  "token-api-mcp": "Token API MCP"
+}
diff --git a/website/src/pages/uk/ai-suite/_meta.js b/website/src/pages/uk/ai-suite/_meta.js
new file mode 100644
index 000000000000..c9e51dfd35fb
--- /dev/null
+++ b/website/src/pages/uk/ai-suite/_meta.js
@@ -0,0 +1,8 @@
+import titles from './_meta-titles.json'
+
+export default {
+  'ai-introduction': titles['ai-introduction'],
+  'graph-assistant': titles['graph-assistant'],
+  'subgraph-mcp': titles['subgraph-mcp'],
+  'token-api-mcp': titles['token-api-mcp'],
+}
diff --git a/website/src/pages/uk/ai-suite/ai-introduction.mdx b/website/src/pages/uk/ai-suite/ai-introduction.mdx
new file mode 100644
index 000000000000..d25cc9f77358
--- /dev/null
+++ b/website/src/pages/uk/ai-suite/ai-introduction.mdx
@@ -0,0 +1,58 @@
+---
+title: The Graph's AI
+---
+
+Build with speed and scale faster with The Graph's AI.
+
+## Using AI on The Graph
+
+Instead of relying on static datasets or centralized APIs, you can now access live blockchain data through our **agentic** app, [Graph Assistant](/ai-suite/graph-assistant/introduction/), and use our AI-native tooling, [Subgraph MCP](/ai-suite/subgraph-mcp/introduction/), and [Token API MCP](/ai-suite/token-api-mcp/introduction/).
+
+### Why Use Onchain Data with AI?
+
+Using onchain data with AI unlocks powerful new ways to interact with and understand blockchain ecosystems.
+
+- **AI for Non-Technical End Users**: AI can turn complex onchain data into accessible insights. Assistants powered by AI enable you to explore and analyze blockchain data without coding.
+- **AI for Developers**: You can use AI to interact directly with The Graph's data through your agents or build AI-powered applications on top of it. This streamlines development and opens up more intuitive, dynamic use cases.
+
+## AI for Non-Technical/End Users
+
+[Graph Assistant](/ai-suite/graph-assistant/introduction/) is a powerful **agentic** application that empowers users to easily interact with blockchain data. Ask questions in simple, natural language and get rich, AI powered insights. Both technical developers and non-technical product teams can move faster, make smarter decisions, and gain a clearer understanding than ever before.
+
+### Benefits of Using Graph Assistant
+
+- **Natural language Input**: You don't need to write complex queries or sift through dashboards. Simply ask your question in plain English and get clear, structured results.
+- **Multi-source support**: Works across multiple Subgraphs and Token API. The Assistant automatically determines which data source to use, so you don't have to switch tools or manage endpoints.
+- **Schema-free access**: You don't need to understand the schema. You can refer to tokens, protocols, dates, or addresses using natural language. The Assistant takes care of the rest.
+
+### Conversational Querying with Graph Assistant
+
+**Example queries:**
+
+- "List the top-5 swaps by USD value in the last 24 hours."
+- "Give me the daily volume on Uniswap."
+- "List the 20 most recently registered .eth names."
+
+[Graph Assistant](/ai-suite/graph-assistant/introduction/) will eventually be a one-stop shop for interacting with The Graph. Right now, it's an agentic AI app that uses state-of-the-art AI techniques, LLMs, and MCPs to understand and answer your questions about [Subgraphs](/subgraphs/developing/subgraphs/) and [Token API](/token-api/quick-start/) data.
+
+## AI for Developers
+
+### Enable Natural Language Access to Onchain Data
+
+[Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) servers connect to Claude, Cline, and Cursor. They enable models to understand, query, and interact with structured onchain data using natural language. MCPs remove the need to write low-level queries or interact with APIs directly.
+
+### Subgraph MCP
+
+The [Subgraph MCP](/ai-suite/subgraph-mcp/introduction/) server connects models to Subgraphs on The Graph Network. It allows language models to explore Subgraph schemas, execute GraphQL queries, find relevant Subgraphs by keyword or contract, and surface usage metrics using natural language.
+
+### Token API MCP
+
+The [Token API MCP](/ai-suite/token-api-mcp/introduction/) MCP server enables models to access onchain token data. It supports querying token metadata, wallet balances, transfer history, and top token holders through simple prompts.
+
+#### Benefits of Using Subgraph and Token API MCPs
+
+- Query Subgraphs and token data using natural language
+- Access GraphQL schemas and token metadata without manual queries
+- Find Subgraphs by keyword or contract and check 30-day usage
+- Retrieve real-time data from The Graph and onchain token sources
+- Get wallet balances, transfer history, and top token holders
diff --git a/website/src/pages/uk/ai-suite/graph-assistant/_meta.js b/website/src/pages/uk/ai-suite/graph-assistant/_meta.js
new file mode 100644
index 000000000000..74da5e0686a7
--- /dev/null
+++ b/website/src/pages/uk/ai-suite/graph-assistant/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  'quick-start': '',
+  introduction: '',
+  'how-to-guide': '',
+  faq: '',
+}
diff --git a/website/src/pages/uk/ai-suite/graph-assistant/faq.mdx b/website/src/pages/uk/ai-suite/graph-assistant/faq.mdx
new file mode 100644
index 000000000000..8addf9935524
--- /dev/null
+++ b/website/src/pages/uk/ai-suite/graph-assistant/faq.mdx
@@ -0,0 +1,26 @@
+---
+title: Graph Assistant FAQ
+sidebarTitle: 'FAQ'
+---
+
+This page summarizes some of the most common questions for developers using Graph Assistant.
+
+1. What is The Graph Assistant?
+
+The Graph Assistant is an AI-powered chat interface that lets you query blockchain data in plain English. Under the hood, it translates your questions into GraphQL calls against Subgraphs and the Token API, then returns results, no coding required.
+
+2. What is an agentic application?
+
+An agentic application combines AI-driven reasoning with external data sources or APIs to take autonomous actions on your behalf. In this case, Graph Assistant acts as an “agent” that interprets your natural-language prompts, builds and dispatches GraphQL queries, and formats the results so that you don't need to write or manage queries yourself.
+
+3. Which networks and data does Graph Assistant support?
+
+The Assistant has access to Subgraphs across multiple chains. If a Subgraph is published to The Graph Network and is being indexed, the Assistant can automatically route queries to it. The Assistant also has access to the Token API on Ethereum Mainnet, BSC, Unichain, Arbitrum-One, Optimism, and Polygon.
+
+4. Is there a usage limit or quota?
+
+Yes, 10 questions per hour.
+
+5. What if the Assistant can't interpret my question?
+
+When the Assistant fails to parse your intent (for example, ambiguous token name, missing context, or an unsupported request), it will prompt you for clarification. For instance, it might ask, “Did you mean XYZ on Ethereum or XYZ on Arbitrum?” or “Please specify a date range for this query.” If you continue to see parsing errors, check that you're using correct token symbols or specifying networks and time frames clearly.
diff --git a/website/src/pages/uk/ai-suite/graph-assistant/how-to-guide.mdx b/website/src/pages/uk/ai-suite/graph-assistant/how-to-guide.mdx
new file mode 100644
index 000000000000..463130894ad8
--- /dev/null
+++ b/website/src/pages/uk/ai-suite/graph-assistant/how-to-guide.mdx
@@ -0,0 +1,56 @@
+---
+title: How To Use The Graph Assistant
+sidebarTitle: 'How-to Guide'
+---
+
+## Overview
+
+You type a natural language question into the chat interface, such as:
+
+```yaml
+'On Uniswap, return the top-10 pools by total value locked in USD.'
+```
+
+> [!IMPORTANT] All users can process 10 free queries per user per hour.
+
+> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the underlying agents. Do not share sensitive, personal, or private information.
+
+### Behind the Scenes
+
+The Assistant:
+
+1. Interprets your intent
+2. Maps it to the correct Subgraphs or Token API endpoint
+3. Executes optimized queries
+4. Returns clean, structured results
+
+You don't need to write queries or understand a Subgraph's schema, you simply ask.
+
+### Example Use Cases
+
+**Protocol Analytics**
+
+- “Compare daily active users on Aave vs. Compound in May 2025.”
+- “Show me the total value locked (TVL) for XYZDAO over the last quarter.”
+
+**Token Insights**
+
+- “What are the top 10 tokens by market cap on Ethereum right now?”
+- “How many XYZ did I receive between May 1 and May 15?”
+
+**Historical Data Retrieval**
+
+- “Fetch the token price history of XYZ for the last six months.”
+- “What was the average gas price on Ethereum during April?”
+
+**Portfolio Monitoring**
+
+- “List my wallet’s current token balances and their USD equivalents.”
+- “Calculate profit/loss on XYZ since xyz date.”
+
+**Cross-Chain Comparison**
+
+- “Show me the 7-day trading volume of XYZ on Ethereum vs. Polygon.”
+- “How many XYZ swaps occurred on Arbitrum yesterday?”
+
+To get started follow the [quickstart](/ai-suite/graph-assistant/quick-start/) and explore its capabilities.
diff --git a/website/src/pages/uk/ai-suite/graph-assistant/introduction.mdx b/website/src/pages/uk/ai-suite/graph-assistant/introduction.mdx
new file mode 100644
index 000000000000..65fdf0f96028
--- /dev/null
+++ b/website/src/pages/uk/ai-suite/graph-assistant/introduction.mdx
@@ -0,0 +1,31 @@
+---
+title: Introduction
+---
+
+> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime.
+
+[Graph Assistant](https://thegraph.com/graph-assistant) (Beta) gives instant, code-free access to blockchain data, transforming natural language into precise, AI-powered queries without the need to code.
+
+## Overview
+
+[Graph Assistant](https://thegraph.com/graph-assistant) is an advanced, [agentic](/en/ai-suite/graph-assistant/faq/) easy-to-use chat interface for querying blockchain data using natural language. Unlike a basic chatbot, Graph Assistant can understand your intent, build complex queries, and execute them automatically. This gives you rich, AI-powered insights from onchain data without writing any code.
+
+- **Automatically** interprets user intent, generates precise queries, executes them via The Graph's Subgraphs and Token API, and presents structured, AI-powered answers without requiring any code.
+- **Removes** the technical complexity found in traditional dashboards or chatbots. It provides composable insights directly from indexed Subgraphs and Token datasets.
+
+## Core Features
+
+| Feature | Description |
+| --- | --- |
+| **Friendly Interface** | Conversational access to blockchain data via natural language. You simply ask questions, the Assistant fetches the answer, and renders results. |
+| **Backed by Subgraphs** | Uses subgraphs to index protocol-specific data like transactions, events, and protocol metrics. |
+| **Backed by Token API** | Uses Token API for token-level information like balances, transfers, and metadata. |
+| **No Setup Required** | No need to configure data sources or write queries. |
+| **Automatic Query Building** | The Assistant performs complex queries such as fetching historical token volumes, protocol analytics, or cross-chain data and handles filtering, pagination, and joins across Subgraphs automatically. |
+
+## Help Shape What's Next
+
+This is in **beta**, and community input is essential. If you have ideas, questions, or run into anything unexpected, we'd love to hear from you:
+
+- Join the community on [Discord](https://discord.com/invite/graphprotocol): Provide feedback and stay in the loop with other builders. You'll be able to join the `#graph-assistant` channel to share your experience directly.
+- Interested in going deeper? Reach out to become a dedicated beta tester so your specific use case can be better supported.
diff --git a/website/src/pages/uk/ai-suite/graph-assistant/quick-start.mdx b/website/src/pages/uk/ai-suite/graph-assistant/quick-start.mdx
new file mode 100644
index 000000000000..13f8478b8d2b
--- /dev/null
+++ b/website/src/pages/uk/ai-suite/graph-assistant/quick-start.mdx
@@ -0,0 +1,44 @@
+---
+title: Quick Start
+---
+
+> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime.
+
+This guide provides step-by-step instructions for getting started with Graph Assistant quickly.
+
+## Step-by Step
+
+### Step 1. Create an Account
+
+Go to: [Graph Assistant](https://thegraph.com/graph-assistant)
+
+- Click Sign Up (or Log In if you already have an account).
+- Use your Google, GitHub, X, email or wallet credentials to log in.
+- No additional setup is required.
+
+### Step 2. Open the Assistant Chat
+
+After logging in:
+
+- You'll see Graph Assistant's interface.
+- At the bottom of the page, you will find a chat input bar. This is where you will interact with the Assistant.
+
+### Step 3: Ask Your First Question
+
+> [!IMPORTANT] All users can process 10 free queries per user per hour.
+
+In the input bar, type a natural-language query (everyday language).
+
+Example:
+
+```yaml
+Show me the 24-hour trading volume of XYZ token on Ethereum
+```
+
+> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the AI interface. Do not share sensitive, personal, or private information.
+
+The Assistant will:
+
+- Digest your question
+- Fetch onchain data using Subgraphs or the Token API
+- Return a clean, formatted response with the data you need
diff --git a/website/src/pages/uk/ai-suite/subgraph-mcp/_meta.js b/website/src/pages/uk/ai-suite/subgraph-mcp/_meta.js
new file mode 100644
index 000000000000..6f527b4e53e4
--- /dev/null
+++ b/website/src/pages/uk/ai-suite/subgraph-mcp/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  introduction: '',
+  claude: '',
+  cline: '',
+  cursor: '',
+}
diff --git a/website/src/pages/uk/ai-suite/subgraph-mcp/claude.mdx b/website/src/pages/uk/ai-suite/subgraph-mcp/claude.mdx
new file mode 100644
index 000000000000..ff3caa4e3e7f
--- /dev/null
+++ b/website/src/pages/uk/ai-suite/subgraph-mcp/claude.mdx
@@ -0,0 +1,169 @@
+---
+title: Claude Desktop
+---
+
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data via natural language conversations with Claude.
+
+## Prerequisites
+
+- [Node.js](https://nodejs.org/en) installed and available in your path
+- [Claude Desktop](https://claude.ai/download) installed (latest version)
+- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
+
+## Installation Options
+
+### Option 1: Using npx (Recommended)
+
+#### Configuration Steps using npx
+
+#### 1. Open Configuration File
+
+Navigate to your `claude_desktop_config.json` file:
+
+> **Settings** > **Developer** > **Edit Config**
+
+- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
+- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
+- Linux: `.config/Claude/claude_desktop_config.json`
+
+#### 2. Add Configuration
+
+Paste the following settings into your config file:
+
+```json
+{
+  "mcpServers": {
+    "subgraph": {
+      "command": "npx",
+      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
+      "env": {
+        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
+      }
+    }
+  }
+}
+```
+
+#### 3. Add Your Gateway API Key
+
+Replace `GATEWAY_API_KEY` with your API key from [Subgraph Studio](https://thegraph.com/studio/).
+
+#### 4. Save and Restart
+
+Once you've entered your Gateway API key into your settings, save the file and restart Claude Desktop.
+
+### Option 2: Building from Source
+
+#### Requirements
+
+- Rust (latest stable version recommended: 1.75+)
+  ```bash
+  curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
+  ```
+  Follow the on-screen instructions. For other platforms, see the [official Rust installation guide](https://www.rust-lang.org/tools/install).
+
+#### Installation Steps
+
+1. **Clone and Build the Repository**
+
+   ```bash
+   git clone git@github.com:graphops/subgraph-mcp.git
+   cd subgraph-mcp
+   cargo build --release
+   ```
+
+2. **Find the Command Path**
+
+   After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory.
+   - Navigate to your `subgraph-mcp` directory in terminal
+   - Run `pwd` to get the full path
+   - Combine the output with `/target/release/subgraph-mcp`
+
+3. **Configure Claude Desktop**
+
+   Open your `claude_desktop_config.json` file as described above and add:
+
+   ```json
+   {
+     "mcpServers": {
+       "subgraph": {
+         "command": "/path/to/your/subgraph-mcp/target/release/subgraph-mcp",
+         "env": {
+           "GATEWAY_API_KEY": "your-api-key-here"
+         }
+       }
+     }
+   }
+   ```
+
+   Replace `/path/to/your/subgraph-mcp/target/release/subgraph-mcp` with the actual path to the compiled binary.
+
+## Using The Graph Resource in Claude
+
+After configuring Claude Desktop:
+
+1. Restart Claude Desktop
+2. Start a new conversation
+3. Click on the context menu (top right)
+4. Add "Subgraph Server Instructions" as a resource by adding `graphql://subgraph` to your chat context
+
+> **Important**: Claude Desktop may not automatically utilize the Subgraph MCP. You must manually add "Subgraph Server Instructions" resource to your chat context for each conversation where you want to use it.
+
+## Troubleshooting
+
+To enable logs for the MCP when using the npx option, add the `--verbose true` option to your args array.
+
+## Available Subgraph Tools and Usage
+
+The Subgraph MCP provides several tools for interacting with Subgraphs:
+
+### Schema Retrieval Tools
+
+- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
+- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
+- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
+
+### Query Execution Tools
+
+- **Execute query by deployment ID/IPFS hash**: Run GraphQL queries against specific, immutable deployments
+- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
+
+### Discovery Tools
+
+- **Search subgraphs by keyword**: Find subgraphs by keyword in their display names, ordered by signal
+- **Get deployment 30-day query counts**: Get aggregate query count over the last 30 days for multiple subgraph deployments
+- **Get top Subgraph deployments for a contract**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain, ordered by query fees
+
+## Key Identifier Types
+
+- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a subgraph. Use `execute_query_by_subgraph_id` or `get_schema_by_subgraph_id`.
+- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment. Use `execute_query_by_deployment_id` or `get_schema_by_deployment_id`.
+- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific, immutable deployment. Use `execute_query_by_deployment_id` (the gateway treats it like a deployment ID for querying) or `get_schema_by_ipfs_hash`.
+
+## Benefits of Natural Language Queries
+
+One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Claude will:
+
+1. Understand your goal (lookup, find Subgraphs, query, get schema)
+2. Find relevant deployments if needed
+3. Fetch and interpret the Subgraph schema
+4. Convert your question into an appropriate GraphQL query
+5. Execute the query and present the results in a readable format
+
+### Example Natural Language Queries
+
+```
+What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
+```
+
+```
+Which tokens have the highest market cap in this Subgraph?
+```
+
+```
+Show me the most recent 5 swaps for the USDC/ETH pair
+```
+
+```
+Find the top subgraphs for contract 0x1f98431c8ad98523631ae4a59f267346ea31f984 on arbitrum-one
+```
diff --git a/website/src/pages/uk/ai-suite/subgraph-mcp/cline.mdx b/website/src/pages/uk/ai-suite/subgraph-mcp/cline.mdx
new file mode 100644
index 000000000000..eb8044bfe991
--- /dev/null
+++ b/website/src/pages/uk/ai-suite/subgraph-mcp/cline.mdx
@@ -0,0 +1,99 @@
+---
+title: Cline
+---
+
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data through natural language conversations with Cline.
+
+## Prerequisites
+
+- [Cline](https://cline.bot/) installed (latest version)
+- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
+
+## Configuration Steps
+
+### 1. Open Configuration File
+
+Create or edit your `cline_mcp_settings.json` file.
+
+> **MCP Servers** > **Installed** > **Configure MCP Servers**
+
+### 2. Add Configuration
+
+```json
+{
+  "mcpServers": {
+    "subgraph": {
+      "command": "npx",
+      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
+      "env": {
+        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
+      }
+    }
+  }
+}
+```
+
+### 3. Add Your API Key
+
+Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
+
+## Using The Graph Resource in Cline
+
+After configuring Cline:
+
+1. Restart Cline
+2. Start a new conversation
+3. Enable the Subgraph MCP from the context menu
+4. Add "Subgraph Server Instructions" as a resource to your chat context
+
+## Available Tools and Usage
+
+The Subgraph MCP provides several tools for interacting with Subgraphs:
+
+### Schema Retrieval Tools
+
+- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
+- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
+- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
+
+### Query Execution Tools
+
+- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
+- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
+
+### Discovery Tools
+
+- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
+
+## Natural Language Queries
+
+One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cline will:
+
+1. Understand your goal (lookup, find Subgraphs, query, get schema)
+2. Find relevant deployments if needed
+3. Fetch and interpret the Subgraph schema
+4. Convert your question into an appropriate GraphQL query
+5. Execute the query and present the results in a readable format
+
+### Example Natural Language Queries
+
+```
+What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
+```
+
+```
+Which tokens have the highest market cap in this Subgraph?
+```
+
+```
+Show me the most recent 5 swaps for the USDC/ETH pair
+```
+
+## Key Identifier Types
+
+When working with Subgraphs, you'll encounter different types of identifiers:
+
+- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
+- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
+- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/uk/ai-suite/subgraph-mcp/cursor.mdx b/website/src/pages/uk/ai-suite/subgraph-mcp/cursor.mdx
new file mode 100644
index 000000000000..6291caf4b06b
--- /dev/null
+++ b/website/src/pages/uk/ai-suite/subgraph-mcp/cursor.mdx
@@ -0,0 +1,94 @@
+---
+title: Cursor
+---
+
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data through natural language conversations with Cline.
+
+## Prerequisites
+
+- [Cursor](https://www.cursor.com/) installed (latest version)
+- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
+
+## Configuration Steps
+
+### 1. Open Configuration File
+
+Create or edit your `~/.cursor/mcp.json` file.
+
+> **Cursor Settings** > **MCP** > **Add new global MCP Server**
+
+### 2. Add Configuration
+
+```json
+{
+  "mcpServers": {
+    "subgraph": {
+      "command": "npx",
+      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
+      "env": {
+        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
+      }
+    }
+  }
+}
+```
+
+### 3. Add Your API Key
+
+Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
+
+### 4. Restart Cursor
+
+Restart Cursor, and start a new chat.
+
+## Available Subgraph Tools and Usage
+
+The Subgraph MCP provides several tools for interacting with Subgraphs:
+
+### Schema Retrieval Tools
+
+- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
+- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
+- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
+
+### Query Execution Tools
+
+- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
+- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
+
+### Discovery Tools
+
+- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
+
+## Benefits of Natural Language Queries
+
+One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cursor will:
+
+1. Understand your goal (lookup, find Subgraphs, query, get schema)
+2. Find relevant deployments if needed
+3. Fetch and interpret the Subgraph schema
+4. Convert your question into an appropriate GraphQL query
+5. Execute the query and present the results in a readable format
+
+### Example Natural Language Queries
+
+```
+What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
+```
+
+```
+Which tokens have the highest market cap in this Subgraph?
+```
+
+```
+Show me the most recent 5 swaps for the USDC/ETH pair
+```
+
+## Key Identifier Types
+
+When working with Subgraphs, you'll encounter different types of identifiers:
+
+- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
+- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
+- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/uk/ai-suite/subgraph-mcp/introduction.mdx b/website/src/pages/uk/ai-suite/subgraph-mcp/introduction.mdx
new file mode 100644
index 000000000000..da1272cf9a36
--- /dev/null
+++ b/website/src/pages/uk/ai-suite/subgraph-mcp/introduction.mdx
@@ -0,0 +1,22 @@
+---
+title: Subgraph MCP Introduction
+sidebarTitle: 'Introduction'
+---
+
+Subgraph MCP server is an open-source implementation of [Anthropic's Model Context Protocol](https://modelcontextprotocol.io/introduction).
+
+It presents The Graph's Subgraph data through a set of MCP tools that any MCP-compatible client can call. With these tools, clients can search for relevant Subgraphs, inspect GraphQL schemas, and run queries against specific deployments on The Graph Network all within a single, standardized interface.
+
+The server itself does not hold a language model. Instead, it translates incoming MCP requests into Subgraph queries and returns the structured results, allowing the client's LLM to transform a natural-language prompt into actionable blockchain data.
+
+Think of it as a USB-C hub: it standardizes the plug-and-play connection between AI agents and The Graph's Subgraph ecosystem.
+
+## What You Can Do
+
+- Access GraphQL schemas for any Subgraph on The Graph Network
+- Run GraphQL queries on any Subgraph deployment
+- Discover top Subgraph deployments by keyword or contract address
+- Retrieve 30-day query volumes for Subgraph deployments
+- Ask questions about Subgraph data without writing GraphQL manually
+
+The Subgraph MCP server allows smooth integration with [Claude](/ai-suite/subgraph-mcp/claude/), [Cline](/ai-suite/subgraph-mcp/cline/), or [Cursor](/ai-suite/subgraph-mcp/cursor/), making blockchain data queries with The Graph Network a conversational experience.
diff --git a/website/src/pages/uk/ai-suite/token-api-mcp/_meta.js b/website/src/pages/uk/ai-suite/token-api-mcp/_meta.js
new file mode 100644
index 000000000000..6f527b4e53e4
--- /dev/null
+++ b/website/src/pages/uk/ai-suite/token-api-mcp/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  introduction: '',
+  claude: '',
+  cline: '',
+  cursor: '',
+}
diff --git a/website/src/pages/uk/ai-suite/token-api-mcp/claude.mdx b/website/src/pages/uk/ai-suite/token-api-mcp/claude.mdx
new file mode 100644
index 000000000000..3e21f4d7e165
--- /dev/null
+++ b/website/src/pages/uk/ai-suite/token-api-mcp/claude.mdx
@@ -0,0 +1,58 @@
+---
+title: Using Claude Desktop to Access the Token API via MCP
+sidebarTitle: Claude Desktop
+---
+
+## Prerequisites
+
+- [Claude Desktop](https://claude.ai/download) installed.
+- A [JWT token](/token-api/quick-start) from [The Graph Market](https://thegraph.market/).
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path.
+- The `@pinax/mcp` package requires Node 18+, as it relies on built-in `fetch()` / `Headers`, which are not available in Node 17 or older. You may need to specify an exact path to an up-to-date Node version, or uninstall previous versions of Node to ensure `@pinax/mcp` uses the correct version.
+
+![Screenshot of Claude Desktop's settings panel showing the MCP server configuration option.](/img/claude-preview-token-api.png)
+
+## Configuration
+
+Create or edit your `claude_desktop_config.json` file.
+
+> **Settings** > **Developer** > **Edit Config**
+
+- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
+- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
+- Linux: `.config/Claude/claude_desktop_config.json`
+
+```json label="claude_desktop_config.json"
+{
+  "mcpServers": {
+    "token-api": {
+      "command": "npx",
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
+      "env": {
+        "ACCESS_TOKEN": "<https://thegraph.market JWT Access Token>"
+      }
+    }
+  }
+}
+```
+
+## Troubleshooting
+
+To enable logs for the MCP, use the `--verbose true` option.
+
+### ENOENT
+
+![Error dialog in Claude Desktop showing 'ENOENT' system error, indicating the npx/bunx command wasn't found in the system path.](/img/claude-ENOENT.png)
+
+Try to use the full path of the command instead:
+
+- Run `which npx` or `which bunx` to get the path of the command.
+- Replace `npx` or `bunx` in the configuration file with the full path (e.g. `/home/user/bin/bunx`).
+
+### Server disconnected
+
+![Connection error notification in Claude Desktop displaying 'Server disconnected' message.](/img/claude-server-disconnect.png)
+
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
+
+> You can always have a look at the full logs under `Claude/logs/mcp.log` and `Claude/logs/mcp-server-pinax.log` for more details.
diff --git a/website/src/pages/uk/ai-suite/token-api-mcp/cline.mdx b/website/src/pages/uk/ai-suite/token-api-mcp/cline.mdx
new file mode 100644
index 000000000000..e885d21366cd
--- /dev/null
+++ b/website/src/pages/uk/ai-suite/token-api-mcp/cline.mdx
@@ -0,0 +1,52 @@
+---
+title: Using Cline to Access the Token API via MCP
+sidebarTitle: Cline
+---
+
+## Prerequisites
+
+- [Cline](https://cline.bot/) installed.
+- A [JWT token](/token-api/quick-start) from [The Graph Market](https://thegraph.market/).
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path.
+- The `@pinax/mcp` package requires Node 18+, as it relies on built-in `fetch()` / `Headers`, which are not available in Node 17 or older. You may need to specify an exact path to an up-to-date Node version, or uninstall previous versions of Node to ensure `@pinax/mcp` uses the correct version.
+
+![Screenshot of Cline's MCP server configuration interface displaying the JSON settings file with mcp-pinax server details visible.](/img/cline-preview-token-api.png)
+
+## Configuration
+
+Create or edit your `cline_mcp_settings.json` file.
+
+> **MCP Servers** > **Installed** > **Configure MCP Servers**
+
+```json label="cline_mcp_settings.json"
+{
+  "mcpServers": {
+    "mcp-pinax": {
+      "command": "npx",
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
+      "env": {
+        "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
+      }
+    }
+  }
+}
+```
+
+## Troubleshooting
+
+To enable logs for the MCP, use the `--verbose true` option.
+
+### ENOENT
+
+![Cline error dialog showing 'ENOENT' system alert.](/img/cline-error.png)
+
+Try to use the full path of the command instead:
+
+- Run `which npx` or `which bunx` to get the path of the command.
+- Replace `npx` or `bunx` in the configuration file with the full path (e.g. `/home/user/bin/bunx`).
+
+### Server disconnected
+
+![Cline connection error notification displaying server disconnection warning.](/img/cline-missing-variables.png)
+
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/uk/ai-suite/token-api-mcp/cursor.mdx b/website/src/pages/uk/ai-suite/token-api-mcp/cursor.mdx
new file mode 100644
index 000000000000..68fe2fdb201c
--- /dev/null
+++ b/website/src/pages/uk/ai-suite/token-api-mcp/cursor.mdx
@@ -0,0 +1,50 @@
+---
+title: Using Cursor to Access the Token API via MCP
+sidebarTitle: Cursor
+---
+
+## Prerequisites
+
+- [Cursor](https://www.cursor.com/) installed.
+- A [JWT token](/token-api/quick-start) from [The Graph Market](https://thegraph.market/).
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path.
+- The `@pinax/mcp` package requires Node 18+, as it relies on built-in `fetch()` / `Headers`, which are not available in Node 17 or older. You may need to specify an exact path to an up-to-date Node version, or uninstall previous versions of Node to ensure `@pinax/mcp` uses the correct version.
+
+![Screenshot of Cursor's MCP configuration panel.](/img/cursor-preview-token-api.png)
+
+## Configuration
+
+Create or edit your `~/.cursor/mcp.json` file.
+
+> **Cursor Settings** > **MCP** > **Add new global MCP Server**
+
+```json label="mcp.json"
+{
+  "mcpServers": {
+    "mcp-pinax": {
+      "command": "npx",
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
+      "env": {
+        "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
+      }
+    }
+  }
+}
+```
+
+## Troubleshooting
+
+![Cursor IDE error notification that reads, "Failed to create client"](/img/cursor-error.png)
+
+To enable logs for the MCP, use the `--verbose true` option.
+
+### ENOENT
+
+Try to use the full path of the command instead:
+
+- Run `which npx` or `which bunx` to get the path of the command.
+- Replace `npx` or `bunx` in the configuration file with the full path (e.g. `/home/user/bin/bunx`).
+
+### Server disconnected
+
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/uk/ai-suite/token-api-mcp/introduction.mdx b/website/src/pages/uk/ai-suite/token-api-mcp/introduction.mdx
new file mode 100644
index 000000000000..b61ad0a1c485
--- /dev/null
+++ b/website/src/pages/uk/ai-suite/token-api-mcp/introduction.mdx
@@ -0,0 +1,23 @@
+---
+title: Token API MCP Introduction
+sidebarTitle: 'Introduction'
+---
+
+Token API MCP server is an open-source implementation of [Anthropic's Model Context Protocol](https://modelcontextprotocol.io/introduction).
+
+This MCP server makes on-chain token data, including metadata, balances, transfers, and holder statistics, accessible through a set of MCP tools. Any compatible client can use these tools to fetch and analyze token information through a standardized interface. It connects to The Graph's hosted Token API database, enabling AI assistants to query real-time blockchain data using natural language requests that get translated into optimized SQL queries.
+
+The server itself does not host any language model. It simply converts MCP calls into data look-ups and returns structured results, letting the client's own LLM incorporate the results.
+
+Think of it as a USB-C hub: it standardizes the plug-and-play connection between AI agents and The Graph's Token API data.
+
+## What You Can Do
+
+- Retrieve token metadata including name, symbol, decimals, total supply, and contract address
+- Get token balances for any wallet address holding a supported ERC-20 token
+- Fetch token transfer activity including sender, receiver, amount, and timestamp
+- Identify top holders and analyze token distribution
+- Ask natural language questions about token data without writing smart contract calls
+- Access historical transfer data to analyze token movement over time
+
+The Token MCP server provides [Claude](/ai-suite/token-api-mcp/claude/), [Cline](/ai-suite/token-api-mcp/cline/), and [Cursor](/ai-suite/token-api-mcp/cursor/) with direct, conversational access to onchain token data.
diff --git a/website/src/pages/uk/resources/_meta.js b/website/src/pages/uk/resources/_meta.js
index aa8e2d0ec6a8..38c56cf56c43 100644
--- a/website/src/pages/uk/resources/_meta.js
+++ b/website/src/pages/uk/resources/_meta.js
@@ -7,5 +7,4 @@ export default {
   roles: titles.roles ?? '',
   'migration-guides': titles['migration-guides'] ?? '',
   'subgraph-studio-faq': '',
-  'claude-mcp': '',
 }
diff --git a/website/src/pages/uk/resources/claude-mcp.mdx b/website/src/pages/uk/resources/claude-mcp.mdx
deleted file mode 100644
index 44ed075cffda..000000000000
--- a/website/src/pages/uk/resources/claude-mcp.mdx
+++ /dev/null
@@ -1,122 +0,0 @@
----
-title: Claude MCP
----
-
-This guide walks you through configuring Claude Desktop to use The Graph ecosystem's [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) resources: Token API and Subgraph. These integrations allow you to interact with blockchain data through natural language conversations with Claude.
-
-## What You Can Do
-
-With these integrations, you can:
-
-- **Token API**: Access token and wallet information across multiple blockchains
-- **Subgraph**: Find relevant Subgraphs for specific keywords and contracts, explore Subgraph schemas, and execute GraphQL queries
-
-## Prerequisites
-
-- [Node.js](https://nodejs.org/en/download/) installed and available in your path
-- [Claude Desktop](https://claude.ai/download) installed
-- API keys:
-  - Token API key from [The Graph Market](https://thegraph.market/)
-  - Gateway API key from [Subgraph Studio](https://thegraph.com/studio/apikeys/)
-
-## Configuration Steps
-
-### 1. Open Configuration File
-
-Navigate to your `claude_desktop_config.json` file:
-
-> **Claude Desktop** > **Settings** > **Developer** > **Edit Config**
-
-Paths by operating system:
-
-- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
-- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
-- Linux: `.config/Claude/claude_desktop_config.json`
-
-### 2. Add Configuration
-
-Replace the contents of the existing config file with:
-
-```json
-{
-  "mcpServers": {
-    "token-api": {
-      "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
-      "env": {
-        "ACCESS_TOKEN": "ACCESS_TOKEN"
-      }
-    },
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-### 3. Add Your API Keys
-
-Replace:
-
-- `ACCESS_TOKEN` with your Token API key from [The Graph Market](https://thegraph.market/)
-- `GATEWAY_API_KEY` with your Gateway API key from [Subgraph Studio](https://thegraph.com/studio/apikeys/)
-
-### 4. Save and Restart
-
-- Save the configuration file
-- Restart Claude Desktop
-
-### 5. Add The Graph Resources in Claude
-
-After configuration:
-
-1. Start a new conversation in Claude Desktop
-2. Click on the context menu (top right)
-3. Add "Subgraph Server Instructions" as a resource by entering `graphql://subgraph` for Subgraph MCP
-
-> **Important**: You must manually add The Graph resources to your chat context for each conversation where you want to use them.
-
-### 6. Run Queries
-
-Here are some example queries you can try after setting up the resources:
-
-### Subgraph Queries
-
-```
-What are the top pools in Uniswap?
-```
-
-```
-Who are the top Delegators of The Graph Protocol?
-```
-
-```
-Please make a bar chart for the number of active loans in Compound for the last 7 days
-```
-
-### Token API Queries
-
-```
-Show me the current price of ETH
-```
-
-```
-What are the top tokens by market cap on Ethereum?
-```
-
-```
-Analyze this wallet address: 0x...
-```
-
-## Troubleshooting
-
-If you encounter issues:
-
-1. **Verify Node.js Installation**: Ensure Node.js is correctly installed by running `node -v` in your terminal
-2. **Check API Keys**: Verify that your API keys are correctly entered in the configuration file
-3. **Enable Verbose Logging**: Add `--verbose true` to the args array in your configuration to see detailed logs
-4. **Restart Claude Desktop**: After making changes to the configuration, always restart Claude Desktop
diff --git a/website/src/pages/uk/subgraphs/_meta.js b/website/src/pages/uk/subgraphs/_meta.js
index 4365293ffc72..45841d5f3355 100644
--- a/website/src/pages/uk/subgraphs/_meta.js
+++ b/website/src/pages/uk/subgraphs/_meta.js
@@ -6,7 +6,6 @@ export default {
   querying: titles.querying ?? '',
   developing: titles.developing ?? '',
   billing: '',
-  mcp: titles.mcp ?? '',
   guides: titles.guides,
   'best-practices': titles['best-practices'],
   'fair-use-policy': '',
diff --git a/website/src/pages/uk/subgraphs/mcp/_meta.js b/website/src/pages/uk/subgraphs/mcp/_meta.js
deleted file mode 100644
index 8630d4da27b3..000000000000
--- a/website/src/pages/uk/subgraphs/mcp/_meta.js
+++ /dev/null
@@ -1,5 +0,0 @@
-export default {
-  claude: '',
-  cline: '',
-  cursor: '',
-}
diff --git a/website/src/pages/uk/subgraphs/mcp/claude.mdx b/website/src/pages/uk/subgraphs/mcp/claude.mdx
deleted file mode 100644
index 027b272cb942..000000000000
--- a/website/src/pages/uk/subgraphs/mcp/claude.mdx
+++ /dev/null
@@ -1,179 +0,0 @@
----
-title: Claude Desktop
----
-
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Claude to interact directly with Subgraphs on The Graph Network. This integration allows you to find relevant Subgraphs for specific keywords and contracts, explore Subgraph schemas, and execute GraphQL queries—all through natural language conversations with Claude.
-
-## What You Can Do
-
-The Subgraph MCP integration enables you to:
-
-- Access the GraphQL schema for any Subgraph on The Graph Network
-- Execute GraphQL queries against any Subgraph deployment
-- Find top Subgraph deployments for a given keyword or contract address
-- Get 30-day query volume for Subgraph deployments
-- Ask natural language questions about Subgraph data without writing GraphQL queries manually
-
-## Prerequisites
-
-- [Node.js](https://nodejs.org/en) installed and available in your path
-- [Claude Desktop](https://claude.ai/download) installed (latest version)
-- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
-
-## Installation Options
-
-### Option 1: Using npx (Recommended)
-
-#### Configuration Steps using npx
-
-#### 1. Open Configuration File
-
-Navigate to your `claude_desktop_config.json` file:
-
-> **Settings** > **Developer** > **Edit Config**
-
-- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
-- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
-- Linux: `.config/Claude/claude_desktop_config.json`
-
-#### 2. Add Configuration
-
-Paste the following settings into your config file:
-
-```json
-{
-  "mcpServers": {
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-#### 3. Add Your Gateway API Key
-
-Replace `GATEWAY_API_KEY` with your API key from [Subgraph Studio](https://thegraph.com/studio/).
-
-#### 4. Save and Restart
-
-Once you've entered your Gateway API key into your settings, save the file and restart Claude Desktop.
-
-### Option 2: Building from Source
-
-#### Requirements
-
-- Rust (latest stable version recommended: 1.75+)
-  ```bash
-  curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
-  ```
-  Follow the on-screen instructions. For other platforms, see the [official Rust installation guide](https://www.rust-lang.org/tools/install).
-
-#### Installation Steps
-
-1. **Clone and Build the Repository**
-
-   ```bash
-   git clone git@github.com:graphops/subgraph-mcp.git
-   cd subgraph-mcp
-   cargo build --release
-   ```
-
-2. **Find the Command Path**
-
-   After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory.
-   - Navigate to your `subgraph-mcp` directory in terminal
-   - Run `pwd` to get the full path
-   - Combine the output with `/target/release/subgraph-mcp`
-
-3. **Configure Claude Desktop**
-
-   Open your `claude_desktop_config.json` file as described above and add:
-
-   ```json
-   {
-     "mcpServers": {
-       "subgraph": {
-         "command": "/path/to/your/subgraph-mcp/target/release/subgraph-mcp",
-         "env": {
-           "GATEWAY_API_KEY": "your-api-key-here"
-         }
-       }
-     }
-   }
-   ```
-
-   Replace `/path/to/your/subgraph-mcp/target/release/subgraph-mcp` with the actual path to the compiled binary.
-
-## Using The Graph Resource in Claude
-
-After configuring Claude Desktop:
-
-1. Restart Claude Desktop
-2. Start a new conversation
-3. Click on the context menu (top right)
-4. Add "Subgraph Server Instructions" as a resource by adding `graphql://subgraph` to your chat context
-
-> **Important**: Claude Desktop may not automatically utilize the Subgraph MCP. You must manually add "Subgraph Server Instructions" resource to your chat context for each conversation where you want to use it.
-
-## Troubleshooting
-
-To enable logs for the MCP when using the npx option, add the `--verbose true` option to your args array.
-
-## Available Subgraph Tools and Usage
-
-The Subgraph MCP provides several tools for interacting with Subgraphs:
-
-### Schema Retrieval Tools
-
-- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
-- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
-- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
-
-### Query Execution Tools
-
-- **Execute query by deployment ID/IPFS hash**: Run GraphQL queries against specific, immutable deployments
-- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
-
-### Discovery Tools
-
-- **Search subgraphs by keyword**: Find subgraphs by keyword in their display names, ordered by signal
-- **Get deployment 30-day query counts**: Get aggregate query count over the last 30 days for multiple subgraph deployments
-- **Get top Subgraph deployments for a contract**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain, ordered by query fees
-
-## Key Identifier Types
-
-- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a subgraph. Use `execute_query_by_subgraph_id` or `get_schema_by_subgraph_id`.
-- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment. Use `execute_query_by_deployment_id` or `get_schema_by_deployment_id`.
-- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific, immutable deployment. Use `execute_query_by_deployment_id` (the gateway treats it like a deployment ID for querying) or `get_schema_by_ipfs_hash`.
-
-## Benefits of Natural Language Queries
-
-One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Claude will:
-
-1. Understand your goal (lookup, find Subgraphs, query, get schema)
-2. Find relevant deployments if needed
-3. Fetch and interpret the Subgraph schema
-4. Convert your question into an appropriate GraphQL query
-5. Execute the query and present the results in a readable format
-
-### Example Natural Language Queries
-
-```
-What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
-```
-
-```
-Which tokens have the highest market cap in this Subgraph?
-```
-
-```
-Show me the most recent 5 swaps for the USDC/ETH pair
-```
-
-```
-Find the top subgraphs for contract 0x1f98431c8ad98523631ae4a59f267346ea31f984 on arbitrum-one
-```
diff --git a/website/src/pages/uk/subgraphs/mcp/cline.mdx b/website/src/pages/uk/subgraphs/mcp/cline.mdx
deleted file mode 100644
index 156221d9a127..000000000000
--- a/website/src/pages/uk/subgraphs/mcp/cline.mdx
+++ /dev/null
@@ -1,99 +0,0 @@
----
-title: Cline
----
-
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Cline to interact directly with Subgraphs on The Graph Network. This integration allows you to explore Subgraph schemas, execute GraphQL queries, and find relevant Subgraphs for specific contracts—all through natural language conversations with Cline.
-
-## Prerequisites
-
-- [Cline](https://cline.bot/) installed (latest version)
-- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
-
-## Configuration Steps
-
-### 1. Open Configuration File
-
-Create or edit your `cline_mcp_settings.json` file.
-
-> **MCP Servers** > **Installed** > **Configure MCP Servers**
-
-### 2. Add Configuration
-
-```json
-{
-  "mcpServers": {
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-### 3. Add Your API Key
-
-Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
-
-## Using The Graph Resource in Cline
-
-After configuring Cline:
-
-1. Restart Cline
-2. Start a new conversation
-3. Enable the Subgraph MCP from the context menu
-4. Add "Subgraph Server Instructions" as a resource to your chat context
-
-## Available Tools and Usage
-
-The Subgraph MCP provides several tools for interacting with Subgraphs:
-
-### Schema Retrieval Tools
-
-- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
-- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
-- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
-
-### Query Execution Tools
-
-- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
-- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
-
-### Discovery Tools
-
-- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
-
-## Natural Language Queries
-
-One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cline will:
-
-1. Understand your goal (lookup, find Subgraphs, query, get schema)
-2. Find relevant deployments if needed
-3. Fetch and interpret the Subgraph schema
-4. Convert your question into an appropriate GraphQL query
-5. Execute the query and present the results in a readable format
-
-### Example Natural Language Queries
-
-```
-What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
-```
-
-```
-Which tokens have the highest market cap in this Subgraph?
-```
-
-```
-Show me the most recent 5 swaps for the USDC/ETH pair
-```
-
-## Key Identifier Types
-
-When working with Subgraphs, you'll encounter different types of identifiers:
-
-- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
-- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
-- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/uk/subgraphs/mcp/cursor.mdx b/website/src/pages/uk/subgraphs/mcp/cursor.mdx
deleted file mode 100644
index 298f43ece048..000000000000
--- a/website/src/pages/uk/subgraphs/mcp/cursor.mdx
+++ /dev/null
@@ -1,94 +0,0 @@
----
-title: Cursor
----
-
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Cursor to interact directly with Subgraphs on The Graph Network. This integration allows you to explore Subgraph schemas, execute GraphQL queries, and find relevant Subgraphs for specific contracts—all through natural language conversations with Cursor.
-
-## Prerequisites
-
-- [Cursor](https://www.cursor.com/) installed (latest version)
-- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
-
-## Configuration Steps
-
-### 1. Open Configuration File
-
-Create or edit your `~/.cursor/mcp.json` file.
-
-> **Cursor Settings** > **MCP** > **Add new global MCP Server**
-
-### 2. Add Configuration
-
-```json
-{
-  "mcpServers": {
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-### 3. Add Your API Key
-
-Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
-
-### 4. Restart Cursor
-
-Restart Cursor, and start a new chat.
-
-## Available Subgraph Tools and Usage
-
-The Subgraph MCP provides several tools for interacting with Subgraphs:
-
-### Schema Retrieval Tools
-
-- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
-- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
-- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
-
-### Query Execution Tools
-
-- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
-- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
-
-### Discovery Tools
-
-- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
-
-## Benefits of Natural Language Queries
-
-One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cursor will:
-
-1. Understand your goal (lookup, find Subgraphs, query, get schema)
-2. Find relevant deployments if needed
-3. Fetch and interpret the Subgraph schema
-4. Convert your question into an appropriate GraphQL query
-5. Execute the query and present the results in a readable format
-
-### Example Natural Language Queries
-
-```
-What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
-```
-
-```
-Which tokens have the highest market cap in this Subgraph?
-```
-
-```
-Show me the most recent 5 swaps for the USDC/ETH pair
-```
-
-## Key Identifier Types
-
-When working with Subgraphs, you'll encounter different types of identifiers:
-
-- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
-- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
-- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/uk/substreams/_meta.js b/website/src/pages/uk/substreams/_meta.js
index a8ee04618eae..658bb8c213c6 100644
--- a/website/src/pages/uk/substreams/_meta.js
+++ b/website/src/pages/uk/substreams/_meta.js
@@ -5,5 +5,4 @@ export default {
   introduction: '',
   developing: titles.developing ?? '',
   publishing: '',
-  sps: titles.sps ?? '',
 }
diff --git a/website/src/pages/uk/token-api/_meta-titles.json b/website/src/pages/uk/token-api/_meta-titles.json
index 7ed31e0af95d..3108ecd3ebfd 100644
--- a/website/src/pages/uk/token-api/_meta-titles.json
+++ b/website/src/pages/uk/token-api/_meta-titles.json
@@ -1,6 +1,7 @@
 {
   "mcp": "MCP",
   "evm": "EVM Endpoints",
+  "svm": "SVM Endpoints",
   "monitoring": "Monitoring Endpoints",
   "faq": "FAQ"
 }
diff --git a/website/src/pages/uk/token-api/_meta.js b/website/src/pages/uk/token-api/_meta.js
index f67576d7f612..fb7f7334ea0c 100644
--- a/website/src/pages/uk/token-api/_meta.js
+++ b/website/src/pages/uk/token-api/_meta.js
@@ -2,8 +2,8 @@ import titles from './_meta-titles.json'
 
 export default {
   'quick-start': '',
-  mcp: titles.mcp ?? '',
   evm: titles.evm ?? '',
+  svm: titles.svm ?? '',
   monitoring: titles.monitoring ?? '',
   faq: '',
 }
diff --git a/website/src/pages/uk/token-api/mcp/_meta.js b/website/src/pages/uk/token-api/mcp/_meta.js
deleted file mode 100644
index 8630d4da27b3..000000000000
--- a/website/src/pages/uk/token-api/mcp/_meta.js
+++ /dev/null
@@ -1,5 +0,0 @@
-export default {
-  claude: '',
-  cline: '',
-  cursor: '',
-}
diff --git a/website/src/pages/uk/token-api/svm/_meta.js b/website/src/pages/uk/token-api/svm/_meta.js
new file mode 100644
index 000000000000..1a48b82fcbf1
--- /dev/null
+++ b/website/src/pages/uk/token-api/svm/_meta.js
@@ -0,0 +1,5 @@
+export default {
+  'get-balances-svm': '',
+  'get-transfers-svm': '',
+  'get-swaps-svm': '',
+}
diff --git a/website/src/pages/uk/token-api/svm/get-balances-svm.mdx b/website/src/pages/uk/token-api/svm/get-balances-svm.mdx
new file mode 100644
index 000000000000..c2946c190bf9
--- /dev/null
+++ b/website/src/pages/uk/token-api/svm/get-balances-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Balances
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getBalancesSvm
+---
+
+Provides Solana tokens balances by token account address.
diff --git a/website/src/pages/uk/token-api/svm/get-swaps-svm.mdx b/website/src/pages/uk/token-api/svm/get-swaps-svm.mdx
new file mode 100644
index 000000000000..95282a38ac9f
--- /dev/null
+++ b/website/src/pages/uk/token-api/svm/get-swaps-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Swap Events
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getSwapsSvm
+---
+
+Provides Raydium swap events.
diff --git a/website/src/pages/uk/token-api/svm/get-transfers-svm.mdx b/website/src/pages/uk/token-api/svm/get-transfers-svm.mdx
new file mode 100644
index 000000000000..5335cdddf418
--- /dev/null
+++ b/website/src/pages/uk/token-api/svm/get-transfers-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Transfers Events
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getTransfersSvm
+---
+
+Provides SVM transfer events.
diff --git a/website/src/pages/ur/ai-suite/_meta-titles.json b/website/src/pages/ur/ai-suite/_meta-titles.json
new file mode 100644
index 000000000000..5eb482a7092b
--- /dev/null
+++ b/website/src/pages/ur/ai-suite/_meta-titles.json
@@ -0,0 +1,6 @@
+{
+  "graph-assistant": "Graph Assistant",
+  "ai-introduction": "The Graph's AI",
+  "subgraph-mcp": "Subgraph MCP",
+  "token-api-mcp": "Token API MCP"
+}
diff --git a/website/src/pages/ur/ai-suite/_meta.js b/website/src/pages/ur/ai-suite/_meta.js
new file mode 100644
index 000000000000..c9e51dfd35fb
--- /dev/null
+++ b/website/src/pages/ur/ai-suite/_meta.js
@@ -0,0 +1,8 @@
+import titles from './_meta-titles.json'
+
+export default {
+  'ai-introduction': titles['ai-introduction'],
+  'graph-assistant': titles['graph-assistant'],
+  'subgraph-mcp': titles['subgraph-mcp'],
+  'token-api-mcp': titles['token-api-mcp'],
+}
diff --git a/website/src/pages/ur/ai-suite/ai-introduction.mdx b/website/src/pages/ur/ai-suite/ai-introduction.mdx
new file mode 100644
index 000000000000..d25cc9f77358
--- /dev/null
+++ b/website/src/pages/ur/ai-suite/ai-introduction.mdx
@@ -0,0 +1,58 @@
+---
+title: The Graph's AI
+---
+
+Build with speed and scale faster with The Graph's AI.
+
+## Using AI on The Graph
+
+Instead of relying on static datasets or centralized APIs, you can now access live blockchain data through our **agentic** app, [Graph Assistant](/ai-suite/graph-assistant/introduction/), and use our AI-native tooling, [Subgraph MCP](/ai-suite/subgraph-mcp/introduction/), and [Token API MCP](/ai-suite/token-api-mcp/introduction/).
+
+### Why Use Onchain Data with AI?
+
+Using onchain data with AI unlocks powerful new ways to interact with and understand blockchain ecosystems.
+
+- **AI for Non-Technical End Users**: AI can turn complex onchain data into accessible insights. Assistants powered by AI enable you to explore and analyze blockchain data without coding.
+- **AI for Developers**: You can use AI to interact directly with The Graph's data through your agents or build AI-powered applications on top of it. This streamlines development and opens up more intuitive, dynamic use cases.
+
+## AI for Non-Technical/End Users
+
+[Graph Assistant](/ai-suite/graph-assistant/introduction/) is a powerful **agentic** application that empowers users to easily interact with blockchain data. Ask questions in simple, natural language and get rich, AI powered insights. Both technical developers and non-technical product teams can move faster, make smarter decisions, and gain a clearer understanding than ever before.
+
+### Benefits of Using Graph Assistant
+
+- **Natural language Input**: You don't need to write complex queries or sift through dashboards. Simply ask your question in plain English and get clear, structured results.
+- **Multi-source support**: Works across multiple Subgraphs and Token API. The Assistant automatically determines which data source to use, so you don't have to switch tools or manage endpoints.
+- **Schema-free access**: You don't need to understand the schema. You can refer to tokens, protocols, dates, or addresses using natural language. The Assistant takes care of the rest.
+
+### Conversational Querying with Graph Assistant
+
+**Example queries:**
+
+- "List the top-5 swaps by USD value in the last 24 hours."
+- "Give me the daily volume on Uniswap."
+- "List the 20 most recently registered .eth names."
+
+[Graph Assistant](/ai-suite/graph-assistant/introduction/) will eventually be a one-stop shop for interacting with The Graph. Right now, it's an agentic AI app that uses state-of-the-art AI techniques, LLMs, and MCPs to understand and answer your questions about [Subgraphs](/subgraphs/developing/subgraphs/) and [Token API](/token-api/quick-start/) data.
+
+## AI for Developers
+
+### Enable Natural Language Access to Onchain Data
+
+[Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) servers connect to Claude, Cline, and Cursor. They enable models to understand, query, and interact with structured onchain data using natural language. MCPs remove the need to write low-level queries or interact with APIs directly.
+
+### Subgraph MCP
+
+The [Subgraph MCP](/ai-suite/subgraph-mcp/introduction/) server connects models to Subgraphs on The Graph Network. It allows language models to explore Subgraph schemas, execute GraphQL queries, find relevant Subgraphs by keyword or contract, and surface usage metrics using natural language.
+
+### Token API MCP
+
+The [Token API MCP](/ai-suite/token-api-mcp/introduction/) MCP server enables models to access onchain token data. It supports querying token metadata, wallet balances, transfer history, and top token holders through simple prompts.
+
+#### Benefits of Using Subgraph and Token API MCPs
+
+- Query Subgraphs and token data using natural language
+- Access GraphQL schemas and token metadata without manual queries
+- Find Subgraphs by keyword or contract and check 30-day usage
+- Retrieve real-time data from The Graph and onchain token sources
+- Get wallet balances, transfer history, and top token holders
diff --git a/website/src/pages/ur/ai-suite/graph-assistant/_meta.js b/website/src/pages/ur/ai-suite/graph-assistant/_meta.js
new file mode 100644
index 000000000000..74da5e0686a7
--- /dev/null
+++ b/website/src/pages/ur/ai-suite/graph-assistant/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  'quick-start': '',
+  introduction: '',
+  'how-to-guide': '',
+  faq: '',
+}
diff --git a/website/src/pages/ur/ai-suite/graph-assistant/faq.mdx b/website/src/pages/ur/ai-suite/graph-assistant/faq.mdx
new file mode 100644
index 000000000000..8addf9935524
--- /dev/null
+++ b/website/src/pages/ur/ai-suite/graph-assistant/faq.mdx
@@ -0,0 +1,26 @@
+---
+title: Graph Assistant FAQ
+sidebarTitle: 'FAQ'
+---
+
+This page summarizes some of the most common questions for developers using Graph Assistant.
+
+1. What is The Graph Assistant?
+
+The Graph Assistant is an AI-powered chat interface that lets you query blockchain data in plain English. Under the hood, it translates your questions into GraphQL calls against Subgraphs and the Token API, then returns results, no coding required.
+
+2. What is an agentic application?
+
+An agentic application combines AI-driven reasoning with external data sources or APIs to take autonomous actions on your behalf. In this case, Graph Assistant acts as an “agent” that interprets your natural-language prompts, builds and dispatches GraphQL queries, and formats the results so that you don't need to write or manage queries yourself.
+
+3. Which networks and data does Graph Assistant support?
+
+The Assistant has access to Subgraphs across multiple chains. If a Subgraph is published to The Graph Network and is being indexed, the Assistant can automatically route queries to it. The Assistant also has access to the Token API on Ethereum Mainnet, BSC, Unichain, Arbitrum-One, Optimism, and Polygon.
+
+4. Is there a usage limit or quota?
+
+Yes, 10 questions per hour.
+
+5. What if the Assistant can't interpret my question?
+
+When the Assistant fails to parse your intent (for example, ambiguous token name, missing context, or an unsupported request), it will prompt you for clarification. For instance, it might ask, “Did you mean XYZ on Ethereum or XYZ on Arbitrum?” or “Please specify a date range for this query.” If you continue to see parsing errors, check that you're using correct token symbols or specifying networks and time frames clearly.
diff --git a/website/src/pages/ur/ai-suite/graph-assistant/how-to-guide.mdx b/website/src/pages/ur/ai-suite/graph-assistant/how-to-guide.mdx
new file mode 100644
index 000000000000..463130894ad8
--- /dev/null
+++ b/website/src/pages/ur/ai-suite/graph-assistant/how-to-guide.mdx
@@ -0,0 +1,56 @@
+---
+title: How To Use The Graph Assistant
+sidebarTitle: 'How-to Guide'
+---
+
+## Overview
+
+You type a natural language question into the chat interface, such as:
+
+```yaml
+'On Uniswap, return the top-10 pools by total value locked in USD.'
+```
+
+> [!IMPORTANT] All users can process 10 free queries per user per hour.
+
+> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the underlying agents. Do not share sensitive, personal, or private information.
+
+### Behind the Scenes
+
+The Assistant:
+
+1. Interprets your intent
+2. Maps it to the correct Subgraphs or Token API endpoint
+3. Executes optimized queries
+4. Returns clean, structured results
+
+You don't need to write queries or understand a Subgraph's schema, you simply ask.
+
+### Example Use Cases
+
+**Protocol Analytics**
+
+- “Compare daily active users on Aave vs. Compound in May 2025.”
+- “Show me the total value locked (TVL) for XYZDAO over the last quarter.”
+
+**Token Insights**
+
+- “What are the top 10 tokens by market cap on Ethereum right now?”
+- “How many XYZ did I receive between May 1 and May 15?”
+
+**Historical Data Retrieval**
+
+- “Fetch the token price history of XYZ for the last six months.”
+- “What was the average gas price on Ethereum during April?”
+
+**Portfolio Monitoring**
+
+- “List my wallet’s current token balances and their USD equivalents.”
+- “Calculate profit/loss on XYZ since xyz date.”
+
+**Cross-Chain Comparison**
+
+- “Show me the 7-day trading volume of XYZ on Ethereum vs. Polygon.”
+- “How many XYZ swaps occurred on Arbitrum yesterday?”
+
+To get started follow the [quickstart](/ai-suite/graph-assistant/quick-start/) and explore its capabilities.
diff --git a/website/src/pages/ur/ai-suite/graph-assistant/introduction.mdx b/website/src/pages/ur/ai-suite/graph-assistant/introduction.mdx
new file mode 100644
index 000000000000..65fdf0f96028
--- /dev/null
+++ b/website/src/pages/ur/ai-suite/graph-assistant/introduction.mdx
@@ -0,0 +1,31 @@
+---
+title: Introduction
+---
+
+> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime.
+
+[Graph Assistant](https://thegraph.com/graph-assistant) (Beta) gives instant, code-free access to blockchain data, transforming natural language into precise, AI-powered queries without the need to code.
+
+## Overview
+
+[Graph Assistant](https://thegraph.com/graph-assistant) is an advanced, [agentic](/en/ai-suite/graph-assistant/faq/) easy-to-use chat interface for querying blockchain data using natural language. Unlike a basic chatbot, Graph Assistant can understand your intent, build complex queries, and execute them automatically. This gives you rich, AI-powered insights from onchain data without writing any code.
+
+- **Automatically** interprets user intent, generates precise queries, executes them via The Graph's Subgraphs and Token API, and presents structured, AI-powered answers without requiring any code.
+- **Removes** the technical complexity found in traditional dashboards or chatbots. It provides composable insights directly from indexed Subgraphs and Token datasets.
+
+## Core Features
+
+| Feature | Description |
+| --- | --- |
+| **Friendly Interface** | Conversational access to blockchain data via natural language. You simply ask questions, the Assistant fetches the answer, and renders results. |
+| **Backed by Subgraphs** | Uses subgraphs to index protocol-specific data like transactions, events, and protocol metrics. |
+| **Backed by Token API** | Uses Token API for token-level information like balances, transfers, and metadata. |
+| **No Setup Required** | No need to configure data sources or write queries. |
+| **Automatic Query Building** | The Assistant performs complex queries such as fetching historical token volumes, protocol analytics, or cross-chain data and handles filtering, pagination, and joins across Subgraphs automatically. |
+
+## Help Shape What's Next
+
+This is in **beta**, and community input is essential. If you have ideas, questions, or run into anything unexpected, we'd love to hear from you:
+
+- Join the community on [Discord](https://discord.com/invite/graphprotocol): Provide feedback and stay in the loop with other builders. You'll be able to join the `#graph-assistant` channel to share your experience directly.
+- Interested in going deeper? Reach out to become a dedicated beta tester so your specific use case can be better supported.
diff --git a/website/src/pages/ur/ai-suite/graph-assistant/quick-start.mdx b/website/src/pages/ur/ai-suite/graph-assistant/quick-start.mdx
new file mode 100644
index 000000000000..13f8478b8d2b
--- /dev/null
+++ b/website/src/pages/ur/ai-suite/graph-assistant/quick-start.mdx
@@ -0,0 +1,44 @@
+---
+title: Quick Start
+---
+
+> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime.
+
+This guide provides step-by-step instructions for getting started with Graph Assistant quickly.
+
+## Step-by Step
+
+### Step 1. Create an Account
+
+Go to: [Graph Assistant](https://thegraph.com/graph-assistant)
+
+- Click Sign Up (or Log In if you already have an account).
+- Use your Google, GitHub, X, email or wallet credentials to log in.
+- No additional setup is required.
+
+### Step 2. Open the Assistant Chat
+
+After logging in:
+
+- You'll see Graph Assistant's interface.
+- At the bottom of the page, you will find a chat input bar. This is where you will interact with the Assistant.
+
+### Step 3: Ask Your First Question
+
+> [!IMPORTANT] All users can process 10 free queries per user per hour.
+
+In the input bar, type a natural-language query (everyday language).
+
+Example:
+
+```yaml
+Show me the 24-hour trading volume of XYZ token on Ethereum
+```
+
+> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the AI interface. Do not share sensitive, personal, or private information.
+
+The Assistant will:
+
+- Digest your question
+- Fetch onchain data using Subgraphs or the Token API
+- Return a clean, formatted response with the data you need
diff --git a/website/src/pages/ur/ai-suite/subgraph-mcp/_meta.js b/website/src/pages/ur/ai-suite/subgraph-mcp/_meta.js
new file mode 100644
index 000000000000..6f527b4e53e4
--- /dev/null
+++ b/website/src/pages/ur/ai-suite/subgraph-mcp/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  introduction: '',
+  claude: '',
+  cline: '',
+  cursor: '',
+}
diff --git a/website/src/pages/ur/ai-suite/subgraph-mcp/claude.mdx b/website/src/pages/ur/ai-suite/subgraph-mcp/claude.mdx
new file mode 100644
index 000000000000..ff3caa4e3e7f
--- /dev/null
+++ b/website/src/pages/ur/ai-suite/subgraph-mcp/claude.mdx
@@ -0,0 +1,169 @@
+---
+title: Claude Desktop
+---
+
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data via natural language conversations with Claude.
+
+## Prerequisites
+
+- [Node.js](https://nodejs.org/en) installed and available in your path
+- [Claude Desktop](https://claude.ai/download) installed (latest version)
+- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
+
+## Installation Options
+
+### Option 1: Using npx (Recommended)
+
+#### Configuration Steps using npx
+
+#### 1. Open Configuration File
+
+Navigate to your `claude_desktop_config.json` file:
+
+> **Settings** > **Developer** > **Edit Config**
+
+- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
+- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
+- Linux: `.config/Claude/claude_desktop_config.json`
+
+#### 2. Add Configuration
+
+Paste the following settings into your config file:
+
+```json
+{
+  "mcpServers": {
+    "subgraph": {
+      "command": "npx",
+      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
+      "env": {
+        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
+      }
+    }
+  }
+}
+```
+
+#### 3. Add Your Gateway API Key
+
+Replace `GATEWAY_API_KEY` with your API key from [Subgraph Studio](https://thegraph.com/studio/).
+
+#### 4. Save and Restart
+
+Once you've entered your Gateway API key into your settings, save the file and restart Claude Desktop.
+
+### Option 2: Building from Source
+
+#### Requirements
+
+- Rust (latest stable version recommended: 1.75+)
+  ```bash
+  curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
+  ```
+  Follow the on-screen instructions. For other platforms, see the [official Rust installation guide](https://www.rust-lang.org/tools/install).
+
+#### Installation Steps
+
+1. **Clone and Build the Repository**
+
+   ```bash
+   git clone git@github.com:graphops/subgraph-mcp.git
+   cd subgraph-mcp
+   cargo build --release
+   ```
+
+2. **Find the Command Path**
+
+   After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory.
+   - Navigate to your `subgraph-mcp` directory in terminal
+   - Run `pwd` to get the full path
+   - Combine the output with `/target/release/subgraph-mcp`
+
+3. **Configure Claude Desktop**
+
+   Open your `claude_desktop_config.json` file as described above and add:
+
+   ```json
+   {
+     "mcpServers": {
+       "subgraph": {
+         "command": "/path/to/your/subgraph-mcp/target/release/subgraph-mcp",
+         "env": {
+           "GATEWAY_API_KEY": "your-api-key-here"
+         }
+       }
+     }
+   }
+   ```
+
+   Replace `/path/to/your/subgraph-mcp/target/release/subgraph-mcp` with the actual path to the compiled binary.
+
+## Using The Graph Resource in Claude
+
+After configuring Claude Desktop:
+
+1. Restart Claude Desktop
+2. Start a new conversation
+3. Click on the context menu (top right)
+4. Add "Subgraph Server Instructions" as a resource by adding `graphql://subgraph` to your chat context
+
+> **Important**: Claude Desktop may not automatically utilize the Subgraph MCP. You must manually add "Subgraph Server Instructions" resource to your chat context for each conversation where you want to use it.
+
+## Troubleshooting
+
+To enable logs for the MCP when using the npx option, add the `--verbose true` option to your args array.
+
+## Available Subgraph Tools and Usage
+
+The Subgraph MCP provides several tools for interacting with Subgraphs:
+
+### Schema Retrieval Tools
+
+- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
+- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
+- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
+
+### Query Execution Tools
+
+- **Execute query by deployment ID/IPFS hash**: Run GraphQL queries against specific, immutable deployments
+- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
+
+### Discovery Tools
+
+- **Search subgraphs by keyword**: Find subgraphs by keyword in their display names, ordered by signal
+- **Get deployment 30-day query counts**: Get aggregate query count over the last 30 days for multiple subgraph deployments
+- **Get top Subgraph deployments for a contract**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain, ordered by query fees
+
+## Key Identifier Types
+
+- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a subgraph. Use `execute_query_by_subgraph_id` or `get_schema_by_subgraph_id`.
+- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment. Use `execute_query_by_deployment_id` or `get_schema_by_deployment_id`.
+- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific, immutable deployment. Use `execute_query_by_deployment_id` (the gateway treats it like a deployment ID for querying) or `get_schema_by_ipfs_hash`.
+
+## Benefits of Natural Language Queries
+
+One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Claude will:
+
+1. Understand your goal (lookup, find Subgraphs, query, get schema)
+2. Find relevant deployments if needed
+3. Fetch and interpret the Subgraph schema
+4. Convert your question into an appropriate GraphQL query
+5. Execute the query and present the results in a readable format
+
+### Example Natural Language Queries
+
+```
+What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
+```
+
+```
+Which tokens have the highest market cap in this Subgraph?
+```
+
+```
+Show me the most recent 5 swaps for the USDC/ETH pair
+```
+
+```
+Find the top subgraphs for contract 0x1f98431c8ad98523631ae4a59f267346ea31f984 on arbitrum-one
+```
diff --git a/website/src/pages/ur/ai-suite/subgraph-mcp/cline.mdx b/website/src/pages/ur/ai-suite/subgraph-mcp/cline.mdx
new file mode 100644
index 000000000000..eb8044bfe991
--- /dev/null
+++ b/website/src/pages/ur/ai-suite/subgraph-mcp/cline.mdx
@@ -0,0 +1,99 @@
+---
+title: Cline
+---
+
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data through natural language conversations with Cline.
+
+## Prerequisites
+
+- [Cline](https://cline.bot/) installed (latest version)
+- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
+
+## Configuration Steps
+
+### 1. Open Configuration File
+
+Create or edit your `cline_mcp_settings.json` file.
+
+> **MCP Servers** > **Installed** > **Configure MCP Servers**
+
+### 2. Add Configuration
+
+```json
+{
+  "mcpServers": {
+    "subgraph": {
+      "command": "npx",
+      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
+      "env": {
+        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
+      }
+    }
+  }
+}
+```
+
+### 3. Add Your API Key
+
+Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
+
+## Using The Graph Resource in Cline
+
+After configuring Cline:
+
+1. Restart Cline
+2. Start a new conversation
+3. Enable the Subgraph MCP from the context menu
+4. Add "Subgraph Server Instructions" as a resource to your chat context
+
+## Available Tools and Usage
+
+The Subgraph MCP provides several tools for interacting with Subgraphs:
+
+### Schema Retrieval Tools
+
+- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
+- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
+- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
+
+### Query Execution Tools
+
+- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
+- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
+
+### Discovery Tools
+
+- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
+
+## Natural Language Queries
+
+One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cline will:
+
+1. Understand your goal (lookup, find Subgraphs, query, get schema)
+2. Find relevant deployments if needed
+3. Fetch and interpret the Subgraph schema
+4. Convert your question into an appropriate GraphQL query
+5. Execute the query and present the results in a readable format
+
+### Example Natural Language Queries
+
+```
+What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
+```
+
+```
+Which tokens have the highest market cap in this Subgraph?
+```
+
+```
+Show me the most recent 5 swaps for the USDC/ETH pair
+```
+
+## Key Identifier Types
+
+When working with Subgraphs, you'll encounter different types of identifiers:
+
+- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
+- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
+- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/ur/ai-suite/subgraph-mcp/cursor.mdx b/website/src/pages/ur/ai-suite/subgraph-mcp/cursor.mdx
new file mode 100644
index 000000000000..6291caf4b06b
--- /dev/null
+++ b/website/src/pages/ur/ai-suite/subgraph-mcp/cursor.mdx
@@ -0,0 +1,94 @@
+---
+title: Cursor
+---
+
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data through natural language conversations with Cline.
+
+## Prerequisites
+
+- [Cursor](https://www.cursor.com/) installed (latest version)
+- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
+
+## Configuration Steps
+
+### 1. Open Configuration File
+
+Create or edit your `~/.cursor/mcp.json` file.
+
+> **Cursor Settings** > **MCP** > **Add new global MCP Server**
+
+### 2. Add Configuration
+
+```json
+{
+  "mcpServers": {
+    "subgraph": {
+      "command": "npx",
+      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
+      "env": {
+        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
+      }
+    }
+  }
+}
+```
+
+### 3. Add Your API Key
+
+Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
+
+### 4. Restart Cursor
+
+Restart Cursor, and start a new chat.
+
+## Available Subgraph Tools and Usage
+
+The Subgraph MCP provides several tools for interacting with Subgraphs:
+
+### Schema Retrieval Tools
+
+- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
+- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
+- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
+
+### Query Execution Tools
+
+- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
+- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
+
+### Discovery Tools
+
+- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
+
+## Benefits of Natural Language Queries
+
+One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cursor will:
+
+1. Understand your goal (lookup, find Subgraphs, query, get schema)
+2. Find relevant deployments if needed
+3. Fetch and interpret the Subgraph schema
+4. Convert your question into an appropriate GraphQL query
+5. Execute the query and present the results in a readable format
+
+### Example Natural Language Queries
+
+```
+What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
+```
+
+```
+Which tokens have the highest market cap in this Subgraph?
+```
+
+```
+Show me the most recent 5 swaps for the USDC/ETH pair
+```
+
+## Key Identifier Types
+
+When working with Subgraphs, you'll encounter different types of identifiers:
+
+- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
+- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
+- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/ur/ai-suite/subgraph-mcp/introduction.mdx b/website/src/pages/ur/ai-suite/subgraph-mcp/introduction.mdx
new file mode 100644
index 000000000000..da1272cf9a36
--- /dev/null
+++ b/website/src/pages/ur/ai-suite/subgraph-mcp/introduction.mdx
@@ -0,0 +1,22 @@
+---
+title: Subgraph MCP Introduction
+sidebarTitle: 'Introduction'
+---
+
+Subgraph MCP server is an open-source implementation of [Anthropic's Model Context Protocol](https://modelcontextprotocol.io/introduction).
+
+It presents The Graph's Subgraph data through a set of MCP tools that any MCP-compatible client can call. With these tools, clients can search for relevant Subgraphs, inspect GraphQL schemas, and run queries against specific deployments on The Graph Network all within a single, standardized interface.
+
+The server itself does not hold a language model. Instead, it translates incoming MCP requests into Subgraph queries and returns the structured results, allowing the client's LLM to transform a natural-language prompt into actionable blockchain data.
+
+Think of it as a USB-C hub: it standardizes the plug-and-play connection between AI agents and The Graph's Subgraph ecosystem.
+
+## What You Can Do
+
+- Access GraphQL schemas for any Subgraph on The Graph Network
+- Run GraphQL queries on any Subgraph deployment
+- Discover top Subgraph deployments by keyword or contract address
+- Retrieve 30-day query volumes for Subgraph deployments
+- Ask questions about Subgraph data without writing GraphQL manually
+
+The Subgraph MCP server allows smooth integration with [Claude](/ai-suite/subgraph-mcp/claude/), [Cline](/ai-suite/subgraph-mcp/cline/), or [Cursor](/ai-suite/subgraph-mcp/cursor/), making blockchain data queries with The Graph Network a conversational experience.
diff --git a/website/src/pages/ur/ai-suite/token-api-mcp/_meta.js b/website/src/pages/ur/ai-suite/token-api-mcp/_meta.js
new file mode 100644
index 000000000000..6f527b4e53e4
--- /dev/null
+++ b/website/src/pages/ur/ai-suite/token-api-mcp/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  introduction: '',
+  claude: '',
+  cline: '',
+  cursor: '',
+}
diff --git a/website/src/pages/ur/ai-suite/token-api-mcp/claude.mdx b/website/src/pages/ur/ai-suite/token-api-mcp/claude.mdx
new file mode 100644
index 000000000000..3e21f4d7e165
--- /dev/null
+++ b/website/src/pages/ur/ai-suite/token-api-mcp/claude.mdx
@@ -0,0 +1,58 @@
+---
+title: Using Claude Desktop to Access the Token API via MCP
+sidebarTitle: Claude Desktop
+---
+
+## Prerequisites
+
+- [Claude Desktop](https://claude.ai/download) installed.
+- A [JWT token](/token-api/quick-start) from [The Graph Market](https://thegraph.market/).
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path.
+- The `@pinax/mcp` package requires Node 18+, as it relies on built-in `fetch()` / `Headers`, which are not available in Node 17 or older. You may need to specify an exact path to an up-to-date Node version, or uninstall previous versions of Node to ensure `@pinax/mcp` uses the correct version.
+
+![Screenshot of Claude Desktop's settings panel showing the MCP server configuration option.](/img/claude-preview-token-api.png)
+
+## Configuration
+
+Create or edit your `claude_desktop_config.json` file.
+
+> **Settings** > **Developer** > **Edit Config**
+
+- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
+- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
+- Linux: `.config/Claude/claude_desktop_config.json`
+
+```json label="claude_desktop_config.json"
+{
+  "mcpServers": {
+    "token-api": {
+      "command": "npx",
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
+      "env": {
+        "ACCESS_TOKEN": "<https://thegraph.market JWT Access Token>"
+      }
+    }
+  }
+}
+```
+
+## Troubleshooting
+
+To enable logs for the MCP, use the `--verbose true` option.
+
+### ENOENT
+
+![Error dialog in Claude Desktop showing 'ENOENT' system error, indicating the npx/bunx command wasn't found in the system path.](/img/claude-ENOENT.png)
+
+Try to use the full path of the command instead:
+
+- Run `which npx` or `which bunx` to get the path of the command.
+- Replace `npx` or `bunx` in the configuration file with the full path (e.g. `/home/user/bin/bunx`).
+
+### Server disconnected
+
+![Connection error notification in Claude Desktop displaying 'Server disconnected' message.](/img/claude-server-disconnect.png)
+
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
+
+> You can always have a look at the full logs under `Claude/logs/mcp.log` and `Claude/logs/mcp-server-pinax.log` for more details.
diff --git a/website/src/pages/ur/ai-suite/token-api-mcp/cline.mdx b/website/src/pages/ur/ai-suite/token-api-mcp/cline.mdx
new file mode 100644
index 000000000000..e885d21366cd
--- /dev/null
+++ b/website/src/pages/ur/ai-suite/token-api-mcp/cline.mdx
@@ -0,0 +1,52 @@
+---
+title: Using Cline to Access the Token API via MCP
+sidebarTitle: Cline
+---
+
+## Prerequisites
+
+- [Cline](https://cline.bot/) installed.
+- A [JWT token](/token-api/quick-start) from [The Graph Market](https://thegraph.market/).
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path.
+- The `@pinax/mcp` package requires Node 18+, as it relies on built-in `fetch()` / `Headers`, which are not available in Node 17 or older. You may need to specify an exact path to an up-to-date Node version, or uninstall previous versions of Node to ensure `@pinax/mcp` uses the correct version.
+
+![Screenshot of Cline's MCP server configuration interface displaying the JSON settings file with mcp-pinax server details visible.](/img/cline-preview-token-api.png)
+
+## Configuration
+
+Create or edit your `cline_mcp_settings.json` file.
+
+> **MCP Servers** > **Installed** > **Configure MCP Servers**
+
+```json label="cline_mcp_settings.json"
+{
+  "mcpServers": {
+    "mcp-pinax": {
+      "command": "npx",
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
+      "env": {
+        "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
+      }
+    }
+  }
+}
+```
+
+## Troubleshooting
+
+To enable logs for the MCP, use the `--verbose true` option.
+
+### ENOENT
+
+![Cline error dialog showing 'ENOENT' system alert.](/img/cline-error.png)
+
+Try to use the full path of the command instead:
+
+- Run `which npx` or `which bunx` to get the path of the command.
+- Replace `npx` or `bunx` in the configuration file with the full path (e.g. `/home/user/bin/bunx`).
+
+### Server disconnected
+
+![Cline connection error notification displaying server disconnection warning.](/img/cline-missing-variables.png)
+
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/ur/ai-suite/token-api-mcp/cursor.mdx b/website/src/pages/ur/ai-suite/token-api-mcp/cursor.mdx
new file mode 100644
index 000000000000..68fe2fdb201c
--- /dev/null
+++ b/website/src/pages/ur/ai-suite/token-api-mcp/cursor.mdx
@@ -0,0 +1,50 @@
+---
+title: Using Cursor to Access the Token API via MCP
+sidebarTitle: Cursor
+---
+
+## Prerequisites
+
+- [Cursor](https://www.cursor.com/) installed.
+- A [JWT token](/token-api/quick-start) from [The Graph Market](https://thegraph.market/).
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path.
+- The `@pinax/mcp` package requires Node 18+, as it relies on built-in `fetch()` / `Headers`, which are not available in Node 17 or older. You may need to specify an exact path to an up-to-date Node version, or uninstall previous versions of Node to ensure `@pinax/mcp` uses the correct version.
+
+![Screenshot of Cursor's MCP configuration panel.](/img/cursor-preview-token-api.png)
+
+## Configuration
+
+Create or edit your `~/.cursor/mcp.json` file.
+
+> **Cursor Settings** > **MCP** > **Add new global MCP Server**
+
+```json label="mcp.json"
+{
+  "mcpServers": {
+    "mcp-pinax": {
+      "command": "npx",
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
+      "env": {
+        "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
+      }
+    }
+  }
+}
+```
+
+## Troubleshooting
+
+![Cursor IDE error notification that reads, "Failed to create client"](/img/cursor-error.png)
+
+To enable logs for the MCP, use the `--verbose true` option.
+
+### ENOENT
+
+Try to use the full path of the command instead:
+
+- Run `which npx` or `which bunx` to get the path of the command.
+- Replace `npx` or `bunx` in the configuration file with the full path (e.g. `/home/user/bin/bunx`).
+
+### Server disconnected
+
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/ur/ai-suite/token-api-mcp/introduction.mdx b/website/src/pages/ur/ai-suite/token-api-mcp/introduction.mdx
new file mode 100644
index 000000000000..b61ad0a1c485
--- /dev/null
+++ b/website/src/pages/ur/ai-suite/token-api-mcp/introduction.mdx
@@ -0,0 +1,23 @@
+---
+title: Token API MCP Introduction
+sidebarTitle: 'Introduction'
+---
+
+Token API MCP server is an open-source implementation of [Anthropic's Model Context Protocol](https://modelcontextprotocol.io/introduction).
+
+This MCP server makes on-chain token data, including metadata, balances, transfers, and holder statistics, accessible through a set of MCP tools. Any compatible client can use these tools to fetch and analyze token information through a standardized interface. It connects to The Graph's hosted Token API database, enabling AI assistants to query real-time blockchain data using natural language requests that get translated into optimized SQL queries.
+
+The server itself does not host any language model. It simply converts MCP calls into data look-ups and returns structured results, letting the client's own LLM incorporate the results.
+
+Think of it as a USB-C hub: it standardizes the plug-and-play connection between AI agents and The Graph's Token API data.
+
+## What You Can Do
+
+- Retrieve token metadata including name, symbol, decimals, total supply, and contract address
+- Get token balances for any wallet address holding a supported ERC-20 token
+- Fetch token transfer activity including sender, receiver, amount, and timestamp
+- Identify top holders and analyze token distribution
+- Ask natural language questions about token data without writing smart contract calls
+- Access historical transfer data to analyze token movement over time
+
+The Token MCP server provides [Claude](/ai-suite/token-api-mcp/claude/), [Cline](/ai-suite/token-api-mcp/cline/), and [Cursor](/ai-suite/token-api-mcp/cursor/) with direct, conversational access to onchain token data.
diff --git a/website/src/pages/ur/resources/_meta.js b/website/src/pages/ur/resources/_meta.js
index aa8e2d0ec6a8..38c56cf56c43 100644
--- a/website/src/pages/ur/resources/_meta.js
+++ b/website/src/pages/ur/resources/_meta.js
@@ -7,5 +7,4 @@ export default {
   roles: titles.roles ?? '',
   'migration-guides': titles['migration-guides'] ?? '',
   'subgraph-studio-faq': '',
-  'claude-mcp': '',
 }
diff --git a/website/src/pages/ur/resources/claude-mcp.mdx b/website/src/pages/ur/resources/claude-mcp.mdx
deleted file mode 100644
index 44ed075cffda..000000000000
--- a/website/src/pages/ur/resources/claude-mcp.mdx
+++ /dev/null
@@ -1,122 +0,0 @@
----
-title: Claude MCP
----
-
-This guide walks you through configuring Claude Desktop to use The Graph ecosystem's [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) resources: Token API and Subgraph. These integrations allow you to interact with blockchain data through natural language conversations with Claude.
-
-## What You Can Do
-
-With these integrations, you can:
-
-- **Token API**: Access token and wallet information across multiple blockchains
-- **Subgraph**: Find relevant Subgraphs for specific keywords and contracts, explore Subgraph schemas, and execute GraphQL queries
-
-## Prerequisites
-
-- [Node.js](https://nodejs.org/en/download/) installed and available in your path
-- [Claude Desktop](https://claude.ai/download) installed
-- API keys:
-  - Token API key from [The Graph Market](https://thegraph.market/)
-  - Gateway API key from [Subgraph Studio](https://thegraph.com/studio/apikeys/)
-
-## Configuration Steps
-
-### 1. Open Configuration File
-
-Navigate to your `claude_desktop_config.json` file:
-
-> **Claude Desktop** > **Settings** > **Developer** > **Edit Config**
-
-Paths by operating system:
-
-- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
-- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
-- Linux: `.config/Claude/claude_desktop_config.json`
-
-### 2. Add Configuration
-
-Replace the contents of the existing config file with:
-
-```json
-{
-  "mcpServers": {
-    "token-api": {
-      "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
-      "env": {
-        "ACCESS_TOKEN": "ACCESS_TOKEN"
-      }
-    },
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-### 3. Add Your API Keys
-
-Replace:
-
-- `ACCESS_TOKEN` with your Token API key from [The Graph Market](https://thegraph.market/)
-- `GATEWAY_API_KEY` with your Gateway API key from [Subgraph Studio](https://thegraph.com/studio/apikeys/)
-
-### 4. Save and Restart
-
-- Save the configuration file
-- Restart Claude Desktop
-
-### 5. Add The Graph Resources in Claude
-
-After configuration:
-
-1. Start a new conversation in Claude Desktop
-2. Click on the context menu (top right)
-3. Add "Subgraph Server Instructions" as a resource by entering `graphql://subgraph` for Subgraph MCP
-
-> **Important**: You must manually add The Graph resources to your chat context for each conversation where you want to use them.
-
-### 6. Run Queries
-
-Here are some example queries you can try after setting up the resources:
-
-### Subgraph Queries
-
-```
-What are the top pools in Uniswap?
-```
-
-```
-Who are the top Delegators of The Graph Protocol?
-```
-
-```
-Please make a bar chart for the number of active loans in Compound for the last 7 days
-```
-
-### Token API Queries
-
-```
-Show me the current price of ETH
-```
-
-```
-What are the top tokens by market cap on Ethereum?
-```
-
-```
-Analyze this wallet address: 0x...
-```
-
-## Troubleshooting
-
-If you encounter issues:
-
-1. **Verify Node.js Installation**: Ensure Node.js is correctly installed by running `node -v` in your terminal
-2. **Check API Keys**: Verify that your API keys are correctly entered in the configuration file
-3. **Enable Verbose Logging**: Add `--verbose true` to the args array in your configuration to see detailed logs
-4. **Restart Claude Desktop**: After making changes to the configuration, always restart Claude Desktop
diff --git a/website/src/pages/ur/subgraphs/_meta.js b/website/src/pages/ur/subgraphs/_meta.js
index 4365293ffc72..45841d5f3355 100644
--- a/website/src/pages/ur/subgraphs/_meta.js
+++ b/website/src/pages/ur/subgraphs/_meta.js
@@ -6,7 +6,6 @@ export default {
   querying: titles.querying ?? '',
   developing: titles.developing ?? '',
   billing: '',
-  mcp: titles.mcp ?? '',
   guides: titles.guides,
   'best-practices': titles['best-practices'],
   'fair-use-policy': '',
diff --git a/website/src/pages/ur/subgraphs/mcp/_meta.js b/website/src/pages/ur/subgraphs/mcp/_meta.js
deleted file mode 100644
index 8630d4da27b3..000000000000
--- a/website/src/pages/ur/subgraphs/mcp/_meta.js
+++ /dev/null
@@ -1,5 +0,0 @@
-export default {
-  claude: '',
-  cline: '',
-  cursor: '',
-}
diff --git a/website/src/pages/ur/subgraphs/mcp/claude.mdx b/website/src/pages/ur/subgraphs/mcp/claude.mdx
deleted file mode 100644
index 027b272cb942..000000000000
--- a/website/src/pages/ur/subgraphs/mcp/claude.mdx
+++ /dev/null
@@ -1,179 +0,0 @@
----
-title: Claude Desktop
----
-
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Claude to interact directly with Subgraphs on The Graph Network. This integration allows you to find relevant Subgraphs for specific keywords and contracts, explore Subgraph schemas, and execute GraphQL queries—all through natural language conversations with Claude.
-
-## What You Can Do
-
-The Subgraph MCP integration enables you to:
-
-- Access the GraphQL schema for any Subgraph on The Graph Network
-- Execute GraphQL queries against any Subgraph deployment
-- Find top Subgraph deployments for a given keyword or contract address
-- Get 30-day query volume for Subgraph deployments
-- Ask natural language questions about Subgraph data without writing GraphQL queries manually
-
-## Prerequisites
-
-- [Node.js](https://nodejs.org/en) installed and available in your path
-- [Claude Desktop](https://claude.ai/download) installed (latest version)
-- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
-
-## Installation Options
-
-### Option 1: Using npx (Recommended)
-
-#### Configuration Steps using npx
-
-#### 1. Open Configuration File
-
-Navigate to your `claude_desktop_config.json` file:
-
-> **Settings** > **Developer** > **Edit Config**
-
-- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
-- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
-- Linux: `.config/Claude/claude_desktop_config.json`
-
-#### 2. Add Configuration
-
-Paste the following settings into your config file:
-
-```json
-{
-  "mcpServers": {
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-#### 3. Add Your Gateway API Key
-
-Replace `GATEWAY_API_KEY` with your API key from [Subgraph Studio](https://thegraph.com/studio/).
-
-#### 4. Save and Restart
-
-Once you've entered your Gateway API key into your settings, save the file and restart Claude Desktop.
-
-### Option 2: Building from Source
-
-#### Requirements
-
-- Rust (latest stable version recommended: 1.75+)
-  ```bash
-  curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
-  ```
-  Follow the on-screen instructions. For other platforms, see the [official Rust installation guide](https://www.rust-lang.org/tools/install).
-
-#### Installation Steps
-
-1. **Clone and Build the Repository**
-
-   ```bash
-   git clone git@github.com:graphops/subgraph-mcp.git
-   cd subgraph-mcp
-   cargo build --release
-   ```
-
-2. **Find the Command Path**
-
-   After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory.
-   - Navigate to your `subgraph-mcp` directory in terminal
-   - Run `pwd` to get the full path
-   - Combine the output with `/target/release/subgraph-mcp`
-
-3. **Configure Claude Desktop**
-
-   Open your `claude_desktop_config.json` file as described above and add:
-
-   ```json
-   {
-     "mcpServers": {
-       "subgraph": {
-         "command": "/path/to/your/subgraph-mcp/target/release/subgraph-mcp",
-         "env": {
-           "GATEWAY_API_KEY": "your-api-key-here"
-         }
-       }
-     }
-   }
-   ```
-
-   Replace `/path/to/your/subgraph-mcp/target/release/subgraph-mcp` with the actual path to the compiled binary.
-
-## Using The Graph Resource in Claude
-
-After configuring Claude Desktop:
-
-1. Restart Claude Desktop
-2. Start a new conversation
-3. Click on the context menu (top right)
-4. Add "Subgraph Server Instructions" as a resource by adding `graphql://subgraph` to your chat context
-
-> **Important**: Claude Desktop may not automatically utilize the Subgraph MCP. You must manually add "Subgraph Server Instructions" resource to your chat context for each conversation where you want to use it.
-
-## Troubleshooting
-
-To enable logs for the MCP when using the npx option, add the `--verbose true` option to your args array.
-
-## Available Subgraph Tools and Usage
-
-The Subgraph MCP provides several tools for interacting with Subgraphs:
-
-### Schema Retrieval Tools
-
-- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
-- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
-- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
-
-### Query Execution Tools
-
-- **Execute query by deployment ID/IPFS hash**: Run GraphQL queries against specific, immutable deployments
-- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
-
-### Discovery Tools
-
-- **Search subgraphs by keyword**: Find subgraphs by keyword in their display names, ordered by signal
-- **Get deployment 30-day query counts**: Get aggregate query count over the last 30 days for multiple subgraph deployments
-- **Get top Subgraph deployments for a contract**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain, ordered by query fees
-
-## Key Identifier Types
-
-- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a subgraph. Use `execute_query_by_subgraph_id` or `get_schema_by_subgraph_id`.
-- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment. Use `execute_query_by_deployment_id` or `get_schema_by_deployment_id`.
-- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific, immutable deployment. Use `execute_query_by_deployment_id` (the gateway treats it like a deployment ID for querying) or `get_schema_by_ipfs_hash`.
-
-## Benefits of Natural Language Queries
-
-One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Claude will:
-
-1. Understand your goal (lookup, find Subgraphs, query, get schema)
-2. Find relevant deployments if needed
-3. Fetch and interpret the Subgraph schema
-4. Convert your question into an appropriate GraphQL query
-5. Execute the query and present the results in a readable format
-
-### Example Natural Language Queries
-
-```
-What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
-```
-
-```
-Which tokens have the highest market cap in this Subgraph?
-```
-
-```
-Show me the most recent 5 swaps for the USDC/ETH pair
-```
-
-```
-Find the top subgraphs for contract 0x1f98431c8ad98523631ae4a59f267346ea31f984 on arbitrum-one
-```
diff --git a/website/src/pages/ur/subgraphs/mcp/cline.mdx b/website/src/pages/ur/subgraphs/mcp/cline.mdx
deleted file mode 100644
index 156221d9a127..000000000000
--- a/website/src/pages/ur/subgraphs/mcp/cline.mdx
+++ /dev/null
@@ -1,99 +0,0 @@
----
-title: Cline
----
-
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Cline to interact directly with Subgraphs on The Graph Network. This integration allows you to explore Subgraph schemas, execute GraphQL queries, and find relevant Subgraphs for specific contracts—all through natural language conversations with Cline.
-
-## Prerequisites
-
-- [Cline](https://cline.bot/) installed (latest version)
-- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
-
-## Configuration Steps
-
-### 1. Open Configuration File
-
-Create or edit your `cline_mcp_settings.json` file.
-
-> **MCP Servers** > **Installed** > **Configure MCP Servers**
-
-### 2. Add Configuration
-
-```json
-{
-  "mcpServers": {
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-### 3. Add Your API Key
-
-Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
-
-## Using The Graph Resource in Cline
-
-After configuring Cline:
-
-1. Restart Cline
-2. Start a new conversation
-3. Enable the Subgraph MCP from the context menu
-4. Add "Subgraph Server Instructions" as a resource to your chat context
-
-## Available Tools and Usage
-
-The Subgraph MCP provides several tools for interacting with Subgraphs:
-
-### Schema Retrieval Tools
-
-- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
-- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
-- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
-
-### Query Execution Tools
-
-- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
-- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
-
-### Discovery Tools
-
-- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
-
-## Natural Language Queries
-
-One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cline will:
-
-1. Understand your goal (lookup, find Subgraphs, query, get schema)
-2. Find relevant deployments if needed
-3. Fetch and interpret the Subgraph schema
-4. Convert your question into an appropriate GraphQL query
-5. Execute the query and present the results in a readable format
-
-### Example Natural Language Queries
-
-```
-What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
-```
-
-```
-Which tokens have the highest market cap in this Subgraph?
-```
-
-```
-Show me the most recent 5 swaps for the USDC/ETH pair
-```
-
-## Key Identifier Types
-
-When working with Subgraphs, you'll encounter different types of identifiers:
-
-- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
-- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
-- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/ur/subgraphs/mcp/cursor.mdx b/website/src/pages/ur/subgraphs/mcp/cursor.mdx
deleted file mode 100644
index 298f43ece048..000000000000
--- a/website/src/pages/ur/subgraphs/mcp/cursor.mdx
+++ /dev/null
@@ -1,94 +0,0 @@
----
-title: Cursor
----
-
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Cursor to interact directly with Subgraphs on The Graph Network. This integration allows you to explore Subgraph schemas, execute GraphQL queries, and find relevant Subgraphs for specific contracts—all through natural language conversations with Cursor.
-
-## Prerequisites
-
-- [Cursor](https://www.cursor.com/) installed (latest version)
-- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
-
-## Configuration Steps
-
-### 1. Open Configuration File
-
-Create or edit your `~/.cursor/mcp.json` file.
-
-> **Cursor Settings** > **MCP** > **Add new global MCP Server**
-
-### 2. Add Configuration
-
-```json
-{
-  "mcpServers": {
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-### 3. Add Your API Key
-
-Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
-
-### 4. Restart Cursor
-
-Restart Cursor, and start a new chat.
-
-## Available Subgraph Tools and Usage
-
-The Subgraph MCP provides several tools for interacting with Subgraphs:
-
-### Schema Retrieval Tools
-
-- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
-- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
-- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
-
-### Query Execution Tools
-
-- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
-- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
-
-### Discovery Tools
-
-- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
-
-## Benefits of Natural Language Queries
-
-One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cursor will:
-
-1. Understand your goal (lookup, find Subgraphs, query, get schema)
-2. Find relevant deployments if needed
-3. Fetch and interpret the Subgraph schema
-4. Convert your question into an appropriate GraphQL query
-5. Execute the query and present the results in a readable format
-
-### Example Natural Language Queries
-
-```
-What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
-```
-
-```
-Which tokens have the highest market cap in this Subgraph?
-```
-
-```
-Show me the most recent 5 swaps for the USDC/ETH pair
-```
-
-## Key Identifier Types
-
-When working with Subgraphs, you'll encounter different types of identifiers:
-
-- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
-- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
-- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/ur/substreams/_meta.js b/website/src/pages/ur/substreams/_meta.js
index a8ee04618eae..658bb8c213c6 100644
--- a/website/src/pages/ur/substreams/_meta.js
+++ b/website/src/pages/ur/substreams/_meta.js
@@ -5,5 +5,4 @@ export default {
   introduction: '',
   developing: titles.developing ?? '',
   publishing: '',
-  sps: titles.sps ?? '',
 }
diff --git a/website/src/pages/ur/token-api/_meta-titles.json b/website/src/pages/ur/token-api/_meta-titles.json
index 7ed31e0af95d..3108ecd3ebfd 100644
--- a/website/src/pages/ur/token-api/_meta-titles.json
+++ b/website/src/pages/ur/token-api/_meta-titles.json
@@ -1,6 +1,7 @@
 {
   "mcp": "MCP",
   "evm": "EVM Endpoints",
+  "svm": "SVM Endpoints",
   "monitoring": "Monitoring Endpoints",
   "faq": "FAQ"
 }
diff --git a/website/src/pages/ur/token-api/_meta.js b/website/src/pages/ur/token-api/_meta.js
index f67576d7f612..fb7f7334ea0c 100644
--- a/website/src/pages/ur/token-api/_meta.js
+++ b/website/src/pages/ur/token-api/_meta.js
@@ -2,8 +2,8 @@ import titles from './_meta-titles.json'
 
 export default {
   'quick-start': '',
-  mcp: titles.mcp ?? '',
   evm: titles.evm ?? '',
+  svm: titles.svm ?? '',
   monitoring: titles.monitoring ?? '',
   faq: '',
 }
diff --git a/website/src/pages/ur/token-api/mcp/_meta.js b/website/src/pages/ur/token-api/mcp/_meta.js
deleted file mode 100644
index 8630d4da27b3..000000000000
--- a/website/src/pages/ur/token-api/mcp/_meta.js
+++ /dev/null
@@ -1,5 +0,0 @@
-export default {
-  claude: '',
-  cline: '',
-  cursor: '',
-}
diff --git a/website/src/pages/ur/token-api/mcp/claude.mdx b/website/src/pages/ur/token-api/mcp/claude.mdx
deleted file mode 100644
index 62db0553be05..000000000000
--- a/website/src/pages/ur/token-api/mcp/claude.mdx
+++ /dev/null
@@ -1,58 +0,0 @@
----
-title: Using Claude Desktop to Access the Token API via MCP
-sidebarTitle: Claude Desktop
----
-
-## Prerequisites
-
-- [Claude Desktop](https://claude.ai/download) installed.
-- A [JWT token](/token-api/quick-start) from [The Graph Market](https://thegraph.market/).
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path.
-- The `@pinax/mcp` package requires Node 18+, as it relies on built-in `fetch()` / `Headers`, which are not available in Node 17 or older. You may need to specify an exact path to an up-to-date Node version, or uninstall previous versions of Node to ensure `@pinax/mcp` uses the correct version.
-
-![Screenshot of Claude Desktop's settings panel showing the MCP server configuration option.](/img/claude-preview-token-api.png)
-
-## کنفیگریشن
-
-Create or edit your `claude_desktop_config.json` file.
-
-> **Settings** > **Developer** > **Edit Config**
-
-- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
-- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
-- Linux: `.config/Claude/claude_desktop_config.json`
-
-```json label="claude_desktop_config.json"
-{
-  "mcpServers": {
-    "token-api": {
-      "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
-      "env": {
-        "ACCESS_TOKEN": "<https://thegraph.market JWT Access Token>"
-      }
-    }
-  }
-}
-```
-
-## Troubleshooting
-
-To enable logs for the MCP, use the `--verbose true` option.
-
-### ENOENT
-
-![Error dialog in Claude Desktop showing 'ENOENT' system error, indicating the npx/bunx command wasn't found in the system path.](/img/claude-ENOENT.png)
-
-Try to use the full path of the command instead:
-
-- Run `which npx` or `which bunx` to get the path of the command.
-- Replace `npx` or `bunx` in the configuration file with the full path (e.g. `/home/user/bin/bunx`).
-
-### Server disconnected
-
-![Connection error notification in Claude Desktop displaying 'Server disconnected' message.](/img/claude-server-disconnect.png)
-
-Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
-
-> You can always have a look at the full logs under `Claude/logs/mcp.log` and `Claude/logs/mcp-server-pinax.log` for more details.
diff --git a/website/src/pages/ur/token-api/mcp/cline.mdx b/website/src/pages/ur/token-api/mcp/cline.mdx
deleted file mode 100644
index a39dfd6d2400..000000000000
--- a/website/src/pages/ur/token-api/mcp/cline.mdx
+++ /dev/null
@@ -1,52 +0,0 @@
----
-title: Using Cline to Access the Token API via MCP
-sidebarTitle: Cline
----
-
-## Prerequisites
-
-- [Cline](https://cline.bot/) installed.
-- A [JWT token](/token-api/quick-start) from [The Graph Market](https://thegraph.market/).
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path.
-- The `@pinax/mcp` package requires Node 18+, as it relies on built-in `fetch()` / `Headers`, which are not available in Node 17 or older. You may need to specify an exact path to an up-to-date Node version, or uninstall previous versions of Node to ensure `@pinax/mcp` uses the correct version.
-
-![Screenshot of Cline's MCP server configuration interface displaying the JSON settings file with mcp-pinax server details visible.](/img/cline-preview-token-api.png)
-
-## کنفیگریشن
-
-Create or edit your `cline_mcp_settings.json` file.
-
-> **MCP Servers** > **Installed** > **Configure MCP Servers**
-
-```json label="cline_mcp_settings.json"
-{
-  "mcpServers": {
-    "mcp-pinax": {
-      "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
-      "env": {
-        "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
-      }
-    }
-  }
-}
-```
-
-## Troubleshooting
-
-To enable logs for the MCP, use the `--verbose true` option.
-
-### ENOENT
-
-![Cline error dialog showing 'ENOENT' system alert.](/img/cline-error.png)
-
-Try to use the full path of the command instead:
-
-- Run `which npx` or `which bunx` to get the path of the command.
-- Replace `npx` or `bunx` in the configuration file with the full path (e.g. `/home/user/bin/bunx`).
-
-### Server disconnected
-
-![Cline connection error notification displaying server disconnection warning.](/img/cline-missing-variables.png)
-
-Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/ur/token-api/mcp/cursor.mdx b/website/src/pages/ur/token-api/mcp/cursor.mdx
deleted file mode 100644
index 58afdbc0b33c..000000000000
--- a/website/src/pages/ur/token-api/mcp/cursor.mdx
+++ /dev/null
@@ -1,50 +0,0 @@
----
-title: Using Cursor to Access the Token API via MCP
-sidebarTitle: Cursor
----
-
-## Prerequisites
-
-- [Cursor](https://www.cursor.com/) installed.
-- A [JWT token](/token-api/quick-start) from [The Graph Market](https://thegraph.market/).
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path.
-- The `@pinax/mcp` package requires Node 18+, as it relies on built-in `fetch()` / `Headers`, which are not available in Node 17 or older. You may need to specify an exact path to an up-to-date Node version, or uninstall previous versions of Node to ensure `@pinax/mcp` uses the correct version.
-
-![Screenshot of Cursor's MCP configuration panel.](/img/cursor-preview-token-api.png)
-
-## کنفیگریشن
-
-Create or edit your `~/.cursor/mcp.json` file.
-
-> **Cursor Settings** > **MCP** > **Add new global MCP Server**
-
-```json label="mcp.json"
-{
-  "mcpServers": {
-    "mcp-pinax": {
-      "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
-      "env": {
-        "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
-      }
-    }
-  }
-}
-```
-
-## Troubleshooting
-
-![Cursor IDE error notification that reads, "Failed to create client"](/img/cursor-error.png)
-
-To enable logs for the MCP, use the `--verbose true` option.
-
-### ENOENT
-
-Try to use the full path of the command instead:
-
-- Run `which npx` or `which bunx` to get the path of the command.
-- Replace `npx` or `bunx` in the configuration file with the full path (e.g. `/home/user/bin/bunx`).
-
-### Server disconnected
-
-Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/ur/token-api/svm/_meta.js b/website/src/pages/ur/token-api/svm/_meta.js
new file mode 100644
index 000000000000..1a48b82fcbf1
--- /dev/null
+++ b/website/src/pages/ur/token-api/svm/_meta.js
@@ -0,0 +1,5 @@
+export default {
+  'get-balances-svm': '',
+  'get-transfers-svm': '',
+  'get-swaps-svm': '',
+}
diff --git a/website/src/pages/ur/token-api/svm/get-balances-svm.mdx b/website/src/pages/ur/token-api/svm/get-balances-svm.mdx
new file mode 100644
index 000000000000..c2946c190bf9
--- /dev/null
+++ b/website/src/pages/ur/token-api/svm/get-balances-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Balances
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getBalancesSvm
+---
+
+Provides Solana tokens balances by token account address.
diff --git a/website/src/pages/ur/token-api/svm/get-swaps-svm.mdx b/website/src/pages/ur/token-api/svm/get-swaps-svm.mdx
new file mode 100644
index 000000000000..95282a38ac9f
--- /dev/null
+++ b/website/src/pages/ur/token-api/svm/get-swaps-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Swap Events
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getSwapsSvm
+---
+
+Provides Raydium swap events.
diff --git a/website/src/pages/ur/token-api/svm/get-transfers-svm.mdx b/website/src/pages/ur/token-api/svm/get-transfers-svm.mdx
new file mode 100644
index 000000000000..5335cdddf418
--- /dev/null
+++ b/website/src/pages/ur/token-api/svm/get-transfers-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Transfers Events
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getTransfersSvm
+---
+
+Provides SVM transfer events.
diff --git a/website/src/pages/vi/ai-suite/_meta-titles.json b/website/src/pages/vi/ai-suite/_meta-titles.json
new file mode 100644
index 000000000000..5eb482a7092b
--- /dev/null
+++ b/website/src/pages/vi/ai-suite/_meta-titles.json
@@ -0,0 +1,6 @@
+{
+  "graph-assistant": "Graph Assistant",
+  "ai-introduction": "The Graph's AI",
+  "subgraph-mcp": "Subgraph MCP",
+  "token-api-mcp": "Token API MCP"
+}
diff --git a/website/src/pages/vi/ai-suite/_meta.js b/website/src/pages/vi/ai-suite/_meta.js
new file mode 100644
index 000000000000..c9e51dfd35fb
--- /dev/null
+++ b/website/src/pages/vi/ai-suite/_meta.js
@@ -0,0 +1,8 @@
+import titles from './_meta-titles.json'
+
+export default {
+  'ai-introduction': titles['ai-introduction'],
+  'graph-assistant': titles['graph-assistant'],
+  'subgraph-mcp': titles['subgraph-mcp'],
+  'token-api-mcp': titles['token-api-mcp'],
+}
diff --git a/website/src/pages/vi/ai-suite/ai-introduction.mdx b/website/src/pages/vi/ai-suite/ai-introduction.mdx
new file mode 100644
index 000000000000..d25cc9f77358
--- /dev/null
+++ b/website/src/pages/vi/ai-suite/ai-introduction.mdx
@@ -0,0 +1,58 @@
+---
+title: The Graph's AI
+---
+
+Build with speed and scale faster with The Graph's AI.
+
+## Using AI on The Graph
+
+Instead of relying on static datasets or centralized APIs, you can now access live blockchain data through our **agentic** app, [Graph Assistant](/ai-suite/graph-assistant/introduction/), and use our AI-native tooling, [Subgraph MCP](/ai-suite/subgraph-mcp/introduction/), and [Token API MCP](/ai-suite/token-api-mcp/introduction/).
+
+### Why Use Onchain Data with AI?
+
+Using onchain data with AI unlocks powerful new ways to interact with and understand blockchain ecosystems.
+
+- **AI for Non-Technical End Users**: AI can turn complex onchain data into accessible insights. Assistants powered by AI enable you to explore and analyze blockchain data without coding.
+- **AI for Developers**: You can use AI to interact directly with The Graph's data through your agents or build AI-powered applications on top of it. This streamlines development and opens up more intuitive, dynamic use cases.
+
+## AI for Non-Technical/End Users
+
+[Graph Assistant](/ai-suite/graph-assistant/introduction/) is a powerful **agentic** application that empowers users to easily interact with blockchain data. Ask questions in simple, natural language and get rich, AI powered insights. Both technical developers and non-technical product teams can move faster, make smarter decisions, and gain a clearer understanding than ever before.
+
+### Benefits of Using Graph Assistant
+
+- **Natural language Input**: You don't need to write complex queries or sift through dashboards. Simply ask your question in plain English and get clear, structured results.
+- **Multi-source support**: Works across multiple Subgraphs and Token API. The Assistant automatically determines which data source to use, so you don't have to switch tools or manage endpoints.
+- **Schema-free access**: You don't need to understand the schema. You can refer to tokens, protocols, dates, or addresses using natural language. The Assistant takes care of the rest.
+
+### Conversational Querying with Graph Assistant
+
+**Example queries:**
+
+- "List the top-5 swaps by USD value in the last 24 hours."
+- "Give me the daily volume on Uniswap."
+- "List the 20 most recently registered .eth names."
+
+[Graph Assistant](/ai-suite/graph-assistant/introduction/) will eventually be a one-stop shop for interacting with The Graph. Right now, it's an agentic AI app that uses state-of-the-art AI techniques, LLMs, and MCPs to understand and answer your questions about [Subgraphs](/subgraphs/developing/subgraphs/) and [Token API](/token-api/quick-start/) data.
+
+## AI for Developers
+
+### Enable Natural Language Access to Onchain Data
+
+[Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) servers connect to Claude, Cline, and Cursor. They enable models to understand, query, and interact with structured onchain data using natural language. MCPs remove the need to write low-level queries or interact with APIs directly.
+
+### Subgraph MCP
+
+The [Subgraph MCP](/ai-suite/subgraph-mcp/introduction/) server connects models to Subgraphs on The Graph Network. It allows language models to explore Subgraph schemas, execute GraphQL queries, find relevant Subgraphs by keyword or contract, and surface usage metrics using natural language.
+
+### Token API MCP
+
+The [Token API MCP](/ai-suite/token-api-mcp/introduction/) MCP server enables models to access onchain token data. It supports querying token metadata, wallet balances, transfer history, and top token holders through simple prompts.
+
+#### Benefits of Using Subgraph and Token API MCPs
+
+- Query Subgraphs and token data using natural language
+- Access GraphQL schemas and token metadata without manual queries
+- Find Subgraphs by keyword or contract and check 30-day usage
+- Retrieve real-time data from The Graph and onchain token sources
+- Get wallet balances, transfer history, and top token holders
diff --git a/website/src/pages/vi/ai-suite/graph-assistant/_meta.js b/website/src/pages/vi/ai-suite/graph-assistant/_meta.js
new file mode 100644
index 000000000000..74da5e0686a7
--- /dev/null
+++ b/website/src/pages/vi/ai-suite/graph-assistant/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  'quick-start': '',
+  introduction: '',
+  'how-to-guide': '',
+  faq: '',
+}
diff --git a/website/src/pages/vi/ai-suite/graph-assistant/faq.mdx b/website/src/pages/vi/ai-suite/graph-assistant/faq.mdx
new file mode 100644
index 000000000000..8addf9935524
--- /dev/null
+++ b/website/src/pages/vi/ai-suite/graph-assistant/faq.mdx
@@ -0,0 +1,26 @@
+---
+title: Graph Assistant FAQ
+sidebarTitle: 'FAQ'
+---
+
+This page summarizes some of the most common questions for developers using Graph Assistant.
+
+1. What is The Graph Assistant?
+
+The Graph Assistant is an AI-powered chat interface that lets you query blockchain data in plain English. Under the hood, it translates your questions into GraphQL calls against Subgraphs and the Token API, then returns results, no coding required.
+
+2. What is an agentic application?
+
+An agentic application combines AI-driven reasoning with external data sources or APIs to take autonomous actions on your behalf. In this case, Graph Assistant acts as an “agent” that interprets your natural-language prompts, builds and dispatches GraphQL queries, and formats the results so that you don't need to write or manage queries yourself.
+
+3. Which networks and data does Graph Assistant support?
+
+The Assistant has access to Subgraphs across multiple chains. If a Subgraph is published to The Graph Network and is being indexed, the Assistant can automatically route queries to it. The Assistant also has access to the Token API on Ethereum Mainnet, BSC, Unichain, Arbitrum-One, Optimism, and Polygon.
+
+4. Is there a usage limit or quota?
+
+Yes, 10 questions per hour.
+
+5. What if the Assistant can't interpret my question?
+
+When the Assistant fails to parse your intent (for example, ambiguous token name, missing context, or an unsupported request), it will prompt you for clarification. For instance, it might ask, “Did you mean XYZ on Ethereum or XYZ on Arbitrum?” or “Please specify a date range for this query.” If you continue to see parsing errors, check that you're using correct token symbols or specifying networks and time frames clearly.
diff --git a/website/src/pages/vi/ai-suite/graph-assistant/how-to-guide.mdx b/website/src/pages/vi/ai-suite/graph-assistant/how-to-guide.mdx
new file mode 100644
index 000000000000..463130894ad8
--- /dev/null
+++ b/website/src/pages/vi/ai-suite/graph-assistant/how-to-guide.mdx
@@ -0,0 +1,56 @@
+---
+title: How To Use The Graph Assistant
+sidebarTitle: 'How-to Guide'
+---
+
+## Overview
+
+You type a natural language question into the chat interface, such as:
+
+```yaml
+'On Uniswap, return the top-10 pools by total value locked in USD.'
+```
+
+> [!IMPORTANT] All users can process 10 free queries per user per hour.
+
+> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the underlying agents. Do not share sensitive, personal, or private information.
+
+### Behind the Scenes
+
+The Assistant:
+
+1. Interprets your intent
+2. Maps it to the correct Subgraphs or Token API endpoint
+3. Executes optimized queries
+4. Returns clean, structured results
+
+You don't need to write queries or understand a Subgraph's schema, you simply ask.
+
+### Example Use Cases
+
+**Protocol Analytics**
+
+- “Compare daily active users on Aave vs. Compound in May 2025.”
+- “Show me the total value locked (TVL) for XYZDAO over the last quarter.”
+
+**Token Insights**
+
+- “What are the top 10 tokens by market cap on Ethereum right now?”
+- “How many XYZ did I receive between May 1 and May 15?”
+
+**Historical Data Retrieval**
+
+- “Fetch the token price history of XYZ for the last six months.”
+- “What was the average gas price on Ethereum during April?”
+
+**Portfolio Monitoring**
+
+- “List my wallet’s current token balances and their USD equivalents.”
+- “Calculate profit/loss on XYZ since xyz date.”
+
+**Cross-Chain Comparison**
+
+- “Show me the 7-day trading volume of XYZ on Ethereum vs. Polygon.”
+- “How many XYZ swaps occurred on Arbitrum yesterday?”
+
+To get started follow the [quickstart](/ai-suite/graph-assistant/quick-start/) and explore its capabilities.
diff --git a/website/src/pages/vi/ai-suite/graph-assistant/introduction.mdx b/website/src/pages/vi/ai-suite/graph-assistant/introduction.mdx
new file mode 100644
index 000000000000..65fdf0f96028
--- /dev/null
+++ b/website/src/pages/vi/ai-suite/graph-assistant/introduction.mdx
@@ -0,0 +1,31 @@
+---
+title: Introduction
+---
+
+> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime.
+
+[Graph Assistant](https://thegraph.com/graph-assistant) (Beta) gives instant, code-free access to blockchain data, transforming natural language into precise, AI-powered queries without the need to code.
+
+## Overview
+
+[Graph Assistant](https://thegraph.com/graph-assistant) is an advanced, [agentic](/en/ai-suite/graph-assistant/faq/) easy-to-use chat interface for querying blockchain data using natural language. Unlike a basic chatbot, Graph Assistant can understand your intent, build complex queries, and execute them automatically. This gives you rich, AI-powered insights from onchain data without writing any code.
+
+- **Automatically** interprets user intent, generates precise queries, executes them via The Graph's Subgraphs and Token API, and presents structured, AI-powered answers without requiring any code.
+- **Removes** the technical complexity found in traditional dashboards or chatbots. It provides composable insights directly from indexed Subgraphs and Token datasets.
+
+## Core Features
+
+| Feature | Description |
+| --- | --- |
+| **Friendly Interface** | Conversational access to blockchain data via natural language. You simply ask questions, the Assistant fetches the answer, and renders results. |
+| **Backed by Subgraphs** | Uses subgraphs to index protocol-specific data like transactions, events, and protocol metrics. |
+| **Backed by Token API** | Uses Token API for token-level information like balances, transfers, and metadata. |
+| **No Setup Required** | No need to configure data sources or write queries. |
+| **Automatic Query Building** | The Assistant performs complex queries such as fetching historical token volumes, protocol analytics, or cross-chain data and handles filtering, pagination, and joins across Subgraphs automatically. |
+
+## Help Shape What's Next
+
+This is in **beta**, and community input is essential. If you have ideas, questions, or run into anything unexpected, we'd love to hear from you:
+
+- Join the community on [Discord](https://discord.com/invite/graphprotocol): Provide feedback and stay in the loop with other builders. You'll be able to join the `#graph-assistant` channel to share your experience directly.
+- Interested in going deeper? Reach out to become a dedicated beta tester so your specific use case can be better supported.
diff --git a/website/src/pages/vi/ai-suite/graph-assistant/quick-start.mdx b/website/src/pages/vi/ai-suite/graph-assistant/quick-start.mdx
new file mode 100644
index 000000000000..13f8478b8d2b
--- /dev/null
+++ b/website/src/pages/vi/ai-suite/graph-assistant/quick-start.mdx
@@ -0,0 +1,44 @@
+---
+title: Quick Start
+---
+
+> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime.
+
+This guide provides step-by-step instructions for getting started with Graph Assistant quickly.
+
+## Step-by Step
+
+### Step 1. Create an Account
+
+Go to: [Graph Assistant](https://thegraph.com/graph-assistant)
+
+- Click Sign Up (or Log In if you already have an account).
+- Use your Google, GitHub, X, email or wallet credentials to log in.
+- No additional setup is required.
+
+### Step 2. Open the Assistant Chat
+
+After logging in:
+
+- You'll see Graph Assistant's interface.
+- At the bottom of the page, you will find a chat input bar. This is where you will interact with the Assistant.
+
+### Step 3: Ask Your First Question
+
+> [!IMPORTANT] All users can process 10 free queries per user per hour.
+
+In the input bar, type a natural-language query (everyday language).
+
+Example:
+
+```yaml
+Show me the 24-hour trading volume of XYZ token on Ethereum
+```
+
+> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the AI interface. Do not share sensitive, personal, or private information.
+
+The Assistant will:
+
+- Digest your question
+- Fetch onchain data using Subgraphs or the Token API
+- Return a clean, formatted response with the data you need
diff --git a/website/src/pages/vi/ai-suite/subgraph-mcp/_meta.js b/website/src/pages/vi/ai-suite/subgraph-mcp/_meta.js
new file mode 100644
index 000000000000..6f527b4e53e4
--- /dev/null
+++ b/website/src/pages/vi/ai-suite/subgraph-mcp/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  introduction: '',
+  claude: '',
+  cline: '',
+  cursor: '',
+}
diff --git a/website/src/pages/vi/ai-suite/subgraph-mcp/claude.mdx b/website/src/pages/vi/ai-suite/subgraph-mcp/claude.mdx
new file mode 100644
index 000000000000..ff3caa4e3e7f
--- /dev/null
+++ b/website/src/pages/vi/ai-suite/subgraph-mcp/claude.mdx
@@ -0,0 +1,169 @@
+---
+title: Claude Desktop
+---
+
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data via natural language conversations with Claude.
+
+## Prerequisites
+
+- [Node.js](https://nodejs.org/en) installed and available in your path
+- [Claude Desktop](https://claude.ai/download) installed (latest version)
+- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
+
+## Installation Options
+
+### Option 1: Using npx (Recommended)
+
+#### Configuration Steps using npx
+
+#### 1. Open Configuration File
+
+Navigate to your `claude_desktop_config.json` file:
+
+> **Settings** > **Developer** > **Edit Config**
+
+- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
+- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
+- Linux: `.config/Claude/claude_desktop_config.json`
+
+#### 2. Add Configuration
+
+Paste the following settings into your config file:
+
+```json
+{
+  "mcpServers": {
+    "subgraph": {
+      "command": "npx",
+      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
+      "env": {
+        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
+      }
+    }
+  }
+}
+```
+
+#### 3. Add Your Gateway API Key
+
+Replace `GATEWAY_API_KEY` with your API key from [Subgraph Studio](https://thegraph.com/studio/).
+
+#### 4. Save and Restart
+
+Once you've entered your Gateway API key into your settings, save the file and restart Claude Desktop.
+
+### Option 2: Building from Source
+
+#### Requirements
+
+- Rust (latest stable version recommended: 1.75+)
+  ```bash
+  curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
+  ```
+  Follow the on-screen instructions. For other platforms, see the [official Rust installation guide](https://www.rust-lang.org/tools/install).
+
+#### Installation Steps
+
+1. **Clone and Build the Repository**
+
+   ```bash
+   git clone git@github.com:graphops/subgraph-mcp.git
+   cd subgraph-mcp
+   cargo build --release
+   ```
+
+2. **Find the Command Path**
+
+   After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory.
+   - Navigate to your `subgraph-mcp` directory in terminal
+   - Run `pwd` to get the full path
+   - Combine the output with `/target/release/subgraph-mcp`
+
+3. **Configure Claude Desktop**
+
+   Open your `claude_desktop_config.json` file as described above and add:
+
+   ```json
+   {
+     "mcpServers": {
+       "subgraph": {
+         "command": "/path/to/your/subgraph-mcp/target/release/subgraph-mcp",
+         "env": {
+           "GATEWAY_API_KEY": "your-api-key-here"
+         }
+       }
+     }
+   }
+   ```
+
+   Replace `/path/to/your/subgraph-mcp/target/release/subgraph-mcp` with the actual path to the compiled binary.
+
+## Using The Graph Resource in Claude
+
+After configuring Claude Desktop:
+
+1. Restart Claude Desktop
+2. Start a new conversation
+3. Click on the context menu (top right)
+4. Add "Subgraph Server Instructions" as a resource by adding `graphql://subgraph` to your chat context
+
+> **Important**: Claude Desktop may not automatically utilize the Subgraph MCP. You must manually add "Subgraph Server Instructions" resource to your chat context for each conversation where you want to use it.
+
+## Troubleshooting
+
+To enable logs for the MCP when using the npx option, add the `--verbose true` option to your args array.
+
+## Available Subgraph Tools and Usage
+
+The Subgraph MCP provides several tools for interacting with Subgraphs:
+
+### Schema Retrieval Tools
+
+- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
+- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
+- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
+
+### Query Execution Tools
+
+- **Execute query by deployment ID/IPFS hash**: Run GraphQL queries against specific, immutable deployments
+- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
+
+### Discovery Tools
+
+- **Search subgraphs by keyword**: Find subgraphs by keyword in their display names, ordered by signal
+- **Get deployment 30-day query counts**: Get aggregate query count over the last 30 days for multiple subgraph deployments
+- **Get top Subgraph deployments for a contract**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain, ordered by query fees
+
+## Key Identifier Types
+
+- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a subgraph. Use `execute_query_by_subgraph_id` or `get_schema_by_subgraph_id`.
+- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment. Use `execute_query_by_deployment_id` or `get_schema_by_deployment_id`.
+- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific, immutable deployment. Use `execute_query_by_deployment_id` (the gateway treats it like a deployment ID for querying) or `get_schema_by_ipfs_hash`.
+
+## Benefits of Natural Language Queries
+
+One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Claude will:
+
+1. Understand your goal (lookup, find Subgraphs, query, get schema)
+2. Find relevant deployments if needed
+3. Fetch and interpret the Subgraph schema
+4. Convert your question into an appropriate GraphQL query
+5. Execute the query and present the results in a readable format
+
+### Example Natural Language Queries
+
+```
+What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
+```
+
+```
+Which tokens have the highest market cap in this Subgraph?
+```
+
+```
+Show me the most recent 5 swaps for the USDC/ETH pair
+```
+
+```
+Find the top subgraphs for contract 0x1f98431c8ad98523631ae4a59f267346ea31f984 on arbitrum-one
+```
diff --git a/website/src/pages/vi/ai-suite/subgraph-mcp/cline.mdx b/website/src/pages/vi/ai-suite/subgraph-mcp/cline.mdx
new file mode 100644
index 000000000000..eb8044bfe991
--- /dev/null
+++ b/website/src/pages/vi/ai-suite/subgraph-mcp/cline.mdx
@@ -0,0 +1,99 @@
+---
+title: Cline
+---
+
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data through natural language conversations with Cline.
+
+## Prerequisites
+
+- [Cline](https://cline.bot/) installed (latest version)
+- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
+
+## Configuration Steps
+
+### 1. Open Configuration File
+
+Create or edit your `cline_mcp_settings.json` file.
+
+> **MCP Servers** > **Installed** > **Configure MCP Servers**
+
+### 2. Add Configuration
+
+```json
+{
+  "mcpServers": {
+    "subgraph": {
+      "command": "npx",
+      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
+      "env": {
+        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
+      }
+    }
+  }
+}
+```
+
+### 3. Add Your API Key
+
+Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
+
+## Using The Graph Resource in Cline
+
+After configuring Cline:
+
+1. Restart Cline
+2. Start a new conversation
+3. Enable the Subgraph MCP from the context menu
+4. Add "Subgraph Server Instructions" as a resource to your chat context
+
+## Available Tools and Usage
+
+The Subgraph MCP provides several tools for interacting with Subgraphs:
+
+### Schema Retrieval Tools
+
+- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
+- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
+- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
+
+### Query Execution Tools
+
+- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
+- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
+
+### Discovery Tools
+
+- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
+
+## Natural Language Queries
+
+One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cline will:
+
+1. Understand your goal (lookup, find Subgraphs, query, get schema)
+2. Find relevant deployments if needed
+3. Fetch and interpret the Subgraph schema
+4. Convert your question into an appropriate GraphQL query
+5. Execute the query and present the results in a readable format
+
+### Example Natural Language Queries
+
+```
+What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
+```
+
+```
+Which tokens have the highest market cap in this Subgraph?
+```
+
+```
+Show me the most recent 5 swaps for the USDC/ETH pair
+```
+
+## Key Identifier Types
+
+When working with Subgraphs, you'll encounter different types of identifiers:
+
+- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
+- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
+- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/vi/ai-suite/subgraph-mcp/cursor.mdx b/website/src/pages/vi/ai-suite/subgraph-mcp/cursor.mdx
new file mode 100644
index 000000000000..6291caf4b06b
--- /dev/null
+++ b/website/src/pages/vi/ai-suite/subgraph-mcp/cursor.mdx
@@ -0,0 +1,94 @@
+---
+title: Cursor
+---
+
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data through natural language conversations with Cline.
+
+## Prerequisites
+
+- [Cursor](https://www.cursor.com/) installed (latest version)
+- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
+
+## Configuration Steps
+
+### 1. Open Configuration File
+
+Create or edit your `~/.cursor/mcp.json` file.
+
+> **Cursor Settings** > **MCP** > **Add new global MCP Server**
+
+### 2. Add Configuration
+
+```json
+{
+  "mcpServers": {
+    "subgraph": {
+      "command": "npx",
+      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
+      "env": {
+        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
+      }
+    }
+  }
+}
+```
+
+### 3. Add Your API Key
+
+Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
+
+### 4. Restart Cursor
+
+Restart Cursor, and start a new chat.
+
+## Available Subgraph Tools and Usage
+
+The Subgraph MCP provides several tools for interacting with Subgraphs:
+
+### Schema Retrieval Tools
+
+- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
+- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
+- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
+
+### Query Execution Tools
+
+- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
+- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
+
+### Discovery Tools
+
+- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
+
+## Benefits of Natural Language Queries
+
+One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cursor will:
+
+1. Understand your goal (lookup, find Subgraphs, query, get schema)
+2. Find relevant deployments if needed
+3. Fetch and interpret the Subgraph schema
+4. Convert your question into an appropriate GraphQL query
+5. Execute the query and present the results in a readable format
+
+### Example Natural Language Queries
+
+```
+What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
+```
+
+```
+Which tokens have the highest market cap in this Subgraph?
+```
+
+```
+Show me the most recent 5 swaps for the USDC/ETH pair
+```
+
+## Key Identifier Types
+
+When working with Subgraphs, you'll encounter different types of identifiers:
+
+- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
+- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
+- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/vi/ai-suite/subgraph-mcp/introduction.mdx b/website/src/pages/vi/ai-suite/subgraph-mcp/introduction.mdx
new file mode 100644
index 000000000000..da1272cf9a36
--- /dev/null
+++ b/website/src/pages/vi/ai-suite/subgraph-mcp/introduction.mdx
@@ -0,0 +1,22 @@
+---
+title: Subgraph MCP Introduction
+sidebarTitle: 'Introduction'
+---
+
+Subgraph MCP server is an open-source implementation of [Anthropic's Model Context Protocol](https://modelcontextprotocol.io/introduction).
+
+It presents The Graph's Subgraph data through a set of MCP tools that any MCP-compatible client can call. With these tools, clients can search for relevant Subgraphs, inspect GraphQL schemas, and run queries against specific deployments on The Graph Network all within a single, standardized interface.
+
+The server itself does not hold a language model. Instead, it translates incoming MCP requests into Subgraph queries and returns the structured results, allowing the client's LLM to transform a natural-language prompt into actionable blockchain data.
+
+Think of it as a USB-C hub: it standardizes the plug-and-play connection between AI agents and The Graph's Subgraph ecosystem.
+
+## What You Can Do
+
+- Access GraphQL schemas for any Subgraph on The Graph Network
+- Run GraphQL queries on any Subgraph deployment
+- Discover top Subgraph deployments by keyword or contract address
+- Retrieve 30-day query volumes for Subgraph deployments
+- Ask questions about Subgraph data without writing GraphQL manually
+
+The Subgraph MCP server allows smooth integration with [Claude](/ai-suite/subgraph-mcp/claude/), [Cline](/ai-suite/subgraph-mcp/cline/), or [Cursor](/ai-suite/subgraph-mcp/cursor/), making blockchain data queries with The Graph Network a conversational experience.
diff --git a/website/src/pages/vi/ai-suite/token-api-mcp/_meta.js b/website/src/pages/vi/ai-suite/token-api-mcp/_meta.js
new file mode 100644
index 000000000000..6f527b4e53e4
--- /dev/null
+++ b/website/src/pages/vi/ai-suite/token-api-mcp/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  introduction: '',
+  claude: '',
+  cline: '',
+  cursor: '',
+}
diff --git a/website/src/pages/vi/ai-suite/token-api-mcp/claude.mdx b/website/src/pages/vi/ai-suite/token-api-mcp/claude.mdx
new file mode 100644
index 000000000000..3e21f4d7e165
--- /dev/null
+++ b/website/src/pages/vi/ai-suite/token-api-mcp/claude.mdx
@@ -0,0 +1,58 @@
+---
+title: Using Claude Desktop to Access the Token API via MCP
+sidebarTitle: Claude Desktop
+---
+
+## Prerequisites
+
+- [Claude Desktop](https://claude.ai/download) installed.
+- A [JWT token](/token-api/quick-start) from [The Graph Market](https://thegraph.market/).
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path.
+- The `@pinax/mcp` package requires Node 18+, as it relies on built-in `fetch()` / `Headers`, which are not available in Node 17 or older. You may need to specify an exact path to an up-to-date Node version, or uninstall previous versions of Node to ensure `@pinax/mcp` uses the correct version.
+
+![Screenshot of Claude Desktop's settings panel showing the MCP server configuration option.](/img/claude-preview-token-api.png)
+
+## Configuration
+
+Create or edit your `claude_desktop_config.json` file.
+
+> **Settings** > **Developer** > **Edit Config**
+
+- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
+- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
+- Linux: `.config/Claude/claude_desktop_config.json`
+
+```json label="claude_desktop_config.json"
+{
+  "mcpServers": {
+    "token-api": {
+      "command": "npx",
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
+      "env": {
+        "ACCESS_TOKEN": "<https://thegraph.market JWT Access Token>"
+      }
+    }
+  }
+}
+```
+
+## Troubleshooting
+
+To enable logs for the MCP, use the `--verbose true` option.
+
+### ENOENT
+
+![Error dialog in Claude Desktop showing 'ENOENT' system error, indicating the npx/bunx command wasn't found in the system path.](/img/claude-ENOENT.png)
+
+Try to use the full path of the command instead:
+
+- Run `which npx` or `which bunx` to get the path of the command.
+- Replace `npx` or `bunx` in the configuration file with the full path (e.g. `/home/user/bin/bunx`).
+
+### Server disconnected
+
+![Connection error notification in Claude Desktop displaying 'Server disconnected' message.](/img/claude-server-disconnect.png)
+
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
+
+> You can always have a look at the full logs under `Claude/logs/mcp.log` and `Claude/logs/mcp-server-pinax.log` for more details.
diff --git a/website/src/pages/vi/ai-suite/token-api-mcp/cline.mdx b/website/src/pages/vi/ai-suite/token-api-mcp/cline.mdx
new file mode 100644
index 000000000000..e885d21366cd
--- /dev/null
+++ b/website/src/pages/vi/ai-suite/token-api-mcp/cline.mdx
@@ -0,0 +1,52 @@
+---
+title: Using Cline to Access the Token API via MCP
+sidebarTitle: Cline
+---
+
+## Prerequisites
+
+- [Cline](https://cline.bot/) installed.
+- A [JWT token](/token-api/quick-start) from [The Graph Market](https://thegraph.market/).
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path.
+- The `@pinax/mcp` package requires Node 18+, as it relies on built-in `fetch()` / `Headers`, which are not available in Node 17 or older. You may need to specify an exact path to an up-to-date Node version, or uninstall previous versions of Node to ensure `@pinax/mcp` uses the correct version.
+
+![Screenshot of Cline's MCP server configuration interface displaying the JSON settings file with mcp-pinax server details visible.](/img/cline-preview-token-api.png)
+
+## Configuration
+
+Create or edit your `cline_mcp_settings.json` file.
+
+> **MCP Servers** > **Installed** > **Configure MCP Servers**
+
+```json label="cline_mcp_settings.json"
+{
+  "mcpServers": {
+    "mcp-pinax": {
+      "command": "npx",
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
+      "env": {
+        "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
+      }
+    }
+  }
+}
+```
+
+## Troubleshooting
+
+To enable logs for the MCP, use the `--verbose true` option.
+
+### ENOENT
+
+![Cline error dialog showing 'ENOENT' system alert.](/img/cline-error.png)
+
+Try to use the full path of the command instead:
+
+- Run `which npx` or `which bunx` to get the path of the command.
+- Replace `npx` or `bunx` in the configuration file with the full path (e.g. `/home/user/bin/bunx`).
+
+### Server disconnected
+
+![Cline connection error notification displaying server disconnection warning.](/img/cline-missing-variables.png)
+
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/vi/ai-suite/token-api-mcp/cursor.mdx b/website/src/pages/vi/ai-suite/token-api-mcp/cursor.mdx
new file mode 100644
index 000000000000..68fe2fdb201c
--- /dev/null
+++ b/website/src/pages/vi/ai-suite/token-api-mcp/cursor.mdx
@@ -0,0 +1,50 @@
+---
+title: Using Cursor to Access the Token API via MCP
+sidebarTitle: Cursor
+---
+
+## Prerequisites
+
+- [Cursor](https://www.cursor.com/) installed.
+- A [JWT token](/token-api/quick-start) from [The Graph Market](https://thegraph.market/).
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path.
+- The `@pinax/mcp` package requires Node 18+, as it relies on built-in `fetch()` / `Headers`, which are not available in Node 17 or older. You may need to specify an exact path to an up-to-date Node version, or uninstall previous versions of Node to ensure `@pinax/mcp` uses the correct version.
+
+![Screenshot of Cursor's MCP configuration panel.](/img/cursor-preview-token-api.png)
+
+## Configuration
+
+Create or edit your `~/.cursor/mcp.json` file.
+
+> **Cursor Settings** > **MCP** > **Add new global MCP Server**
+
+```json label="mcp.json"
+{
+  "mcpServers": {
+    "mcp-pinax": {
+      "command": "npx",
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
+      "env": {
+        "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
+      }
+    }
+  }
+}
+```
+
+## Troubleshooting
+
+![Cursor IDE error notification that reads, "Failed to create client"](/img/cursor-error.png)
+
+To enable logs for the MCP, use the `--verbose true` option.
+
+### ENOENT
+
+Try to use the full path of the command instead:
+
+- Run `which npx` or `which bunx` to get the path of the command.
+- Replace `npx` or `bunx` in the configuration file with the full path (e.g. `/home/user/bin/bunx`).
+
+### Server disconnected
+
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/vi/ai-suite/token-api-mcp/introduction.mdx b/website/src/pages/vi/ai-suite/token-api-mcp/introduction.mdx
new file mode 100644
index 000000000000..b61ad0a1c485
--- /dev/null
+++ b/website/src/pages/vi/ai-suite/token-api-mcp/introduction.mdx
@@ -0,0 +1,23 @@
+---
+title: Token API MCP Introduction
+sidebarTitle: 'Introduction'
+---
+
+Token API MCP server is an open-source implementation of [Anthropic's Model Context Protocol](https://modelcontextprotocol.io/introduction).
+
+This MCP server makes on-chain token data, including metadata, balances, transfers, and holder statistics, accessible through a set of MCP tools. Any compatible client can use these tools to fetch and analyze token information through a standardized interface. It connects to The Graph's hosted Token API database, enabling AI assistants to query real-time blockchain data using natural language requests that get translated into optimized SQL queries.
+
+The server itself does not host any language model. It simply converts MCP calls into data look-ups and returns structured results, letting the client's own LLM incorporate the results.
+
+Think of it as a USB-C hub: it standardizes the plug-and-play connection between AI agents and The Graph's Token API data.
+
+## What You Can Do
+
+- Retrieve token metadata including name, symbol, decimals, total supply, and contract address
+- Get token balances for any wallet address holding a supported ERC-20 token
+- Fetch token transfer activity including sender, receiver, amount, and timestamp
+- Identify top holders and analyze token distribution
+- Ask natural language questions about token data without writing smart contract calls
+- Access historical transfer data to analyze token movement over time
+
+The Token MCP server provides [Claude](/ai-suite/token-api-mcp/claude/), [Cline](/ai-suite/token-api-mcp/cline/), and [Cursor](/ai-suite/token-api-mcp/cursor/) with direct, conversational access to onchain token data.
diff --git a/website/src/pages/vi/resources/_meta.js b/website/src/pages/vi/resources/_meta.js
index aa8e2d0ec6a8..38c56cf56c43 100644
--- a/website/src/pages/vi/resources/_meta.js
+++ b/website/src/pages/vi/resources/_meta.js
@@ -7,5 +7,4 @@ export default {
   roles: titles.roles ?? '',
   'migration-guides': titles['migration-guides'] ?? '',
   'subgraph-studio-faq': '',
-  'claude-mcp': '',
 }
diff --git a/website/src/pages/vi/resources/claude-mcp.mdx b/website/src/pages/vi/resources/claude-mcp.mdx
deleted file mode 100644
index 44ed075cffda..000000000000
--- a/website/src/pages/vi/resources/claude-mcp.mdx
+++ /dev/null
@@ -1,122 +0,0 @@
----
-title: Claude MCP
----
-
-This guide walks you through configuring Claude Desktop to use The Graph ecosystem's [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) resources: Token API and Subgraph. These integrations allow you to interact with blockchain data through natural language conversations with Claude.
-
-## What You Can Do
-
-With these integrations, you can:
-
-- **Token API**: Access token and wallet information across multiple blockchains
-- **Subgraph**: Find relevant Subgraphs for specific keywords and contracts, explore Subgraph schemas, and execute GraphQL queries
-
-## Prerequisites
-
-- [Node.js](https://nodejs.org/en/download/) installed and available in your path
-- [Claude Desktop](https://claude.ai/download) installed
-- API keys:
-  - Token API key from [The Graph Market](https://thegraph.market/)
-  - Gateway API key from [Subgraph Studio](https://thegraph.com/studio/apikeys/)
-
-## Configuration Steps
-
-### 1. Open Configuration File
-
-Navigate to your `claude_desktop_config.json` file:
-
-> **Claude Desktop** > **Settings** > **Developer** > **Edit Config**
-
-Paths by operating system:
-
-- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
-- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
-- Linux: `.config/Claude/claude_desktop_config.json`
-
-### 2. Add Configuration
-
-Replace the contents of the existing config file with:
-
-```json
-{
-  "mcpServers": {
-    "token-api": {
-      "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
-      "env": {
-        "ACCESS_TOKEN": "ACCESS_TOKEN"
-      }
-    },
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-### 3. Add Your API Keys
-
-Replace:
-
-- `ACCESS_TOKEN` with your Token API key from [The Graph Market](https://thegraph.market/)
-- `GATEWAY_API_KEY` with your Gateway API key from [Subgraph Studio](https://thegraph.com/studio/apikeys/)
-
-### 4. Save and Restart
-
-- Save the configuration file
-- Restart Claude Desktop
-
-### 5. Add The Graph Resources in Claude
-
-After configuration:
-
-1. Start a new conversation in Claude Desktop
-2. Click on the context menu (top right)
-3. Add "Subgraph Server Instructions" as a resource by entering `graphql://subgraph` for Subgraph MCP
-
-> **Important**: You must manually add The Graph resources to your chat context for each conversation where you want to use them.
-
-### 6. Run Queries
-
-Here are some example queries you can try after setting up the resources:
-
-### Subgraph Queries
-
-```
-What are the top pools in Uniswap?
-```
-
-```
-Who are the top Delegators of The Graph Protocol?
-```
-
-```
-Please make a bar chart for the number of active loans in Compound for the last 7 days
-```
-
-### Token API Queries
-
-```
-Show me the current price of ETH
-```
-
-```
-What are the top tokens by market cap on Ethereum?
-```
-
-```
-Analyze this wallet address: 0x...
-```
-
-## Troubleshooting
-
-If you encounter issues:
-
-1. **Verify Node.js Installation**: Ensure Node.js is correctly installed by running `node -v` in your terminal
-2. **Check API Keys**: Verify that your API keys are correctly entered in the configuration file
-3. **Enable Verbose Logging**: Add `--verbose true` to the args array in your configuration to see detailed logs
-4. **Restart Claude Desktop**: After making changes to the configuration, always restart Claude Desktop
diff --git a/website/src/pages/vi/subgraphs/_meta.js b/website/src/pages/vi/subgraphs/_meta.js
index 4365293ffc72..45841d5f3355 100644
--- a/website/src/pages/vi/subgraphs/_meta.js
+++ b/website/src/pages/vi/subgraphs/_meta.js
@@ -6,7 +6,6 @@ export default {
   querying: titles.querying ?? '',
   developing: titles.developing ?? '',
   billing: '',
-  mcp: titles.mcp ?? '',
   guides: titles.guides,
   'best-practices': titles['best-practices'],
   'fair-use-policy': '',
diff --git a/website/src/pages/vi/subgraphs/mcp/_meta.js b/website/src/pages/vi/subgraphs/mcp/_meta.js
deleted file mode 100644
index 8630d4da27b3..000000000000
--- a/website/src/pages/vi/subgraphs/mcp/_meta.js
+++ /dev/null
@@ -1,5 +0,0 @@
-export default {
-  claude: '',
-  cline: '',
-  cursor: '',
-}
diff --git a/website/src/pages/vi/subgraphs/mcp/claude.mdx b/website/src/pages/vi/subgraphs/mcp/claude.mdx
deleted file mode 100644
index 027b272cb942..000000000000
--- a/website/src/pages/vi/subgraphs/mcp/claude.mdx
+++ /dev/null
@@ -1,179 +0,0 @@
----
-title: Claude Desktop
----
-
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Claude to interact directly with Subgraphs on The Graph Network. This integration allows you to find relevant Subgraphs for specific keywords and contracts, explore Subgraph schemas, and execute GraphQL queries—all through natural language conversations with Claude.
-
-## What You Can Do
-
-The Subgraph MCP integration enables you to:
-
-- Access the GraphQL schema for any Subgraph on The Graph Network
-- Execute GraphQL queries against any Subgraph deployment
-- Find top Subgraph deployments for a given keyword or contract address
-- Get 30-day query volume for Subgraph deployments
-- Ask natural language questions about Subgraph data without writing GraphQL queries manually
-
-## Prerequisites
-
-- [Node.js](https://nodejs.org/en) installed and available in your path
-- [Claude Desktop](https://claude.ai/download) installed (latest version)
-- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
-
-## Installation Options
-
-### Option 1: Using npx (Recommended)
-
-#### Configuration Steps using npx
-
-#### 1. Open Configuration File
-
-Navigate to your `claude_desktop_config.json` file:
-
-> **Settings** > **Developer** > **Edit Config**
-
-- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
-- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
-- Linux: `.config/Claude/claude_desktop_config.json`
-
-#### 2. Add Configuration
-
-Paste the following settings into your config file:
-
-```json
-{
-  "mcpServers": {
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-#### 3. Add Your Gateway API Key
-
-Replace `GATEWAY_API_KEY` with your API key from [Subgraph Studio](https://thegraph.com/studio/).
-
-#### 4. Save and Restart
-
-Once you've entered your Gateway API key into your settings, save the file and restart Claude Desktop.
-
-### Option 2: Building from Source
-
-#### Requirements
-
-- Rust (latest stable version recommended: 1.75+)
-  ```bash
-  curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
-  ```
-  Follow the on-screen instructions. For other platforms, see the [official Rust installation guide](https://www.rust-lang.org/tools/install).
-
-#### Installation Steps
-
-1. **Clone and Build the Repository**
-
-   ```bash
-   git clone git@github.com:graphops/subgraph-mcp.git
-   cd subgraph-mcp
-   cargo build --release
-   ```
-
-2. **Find the Command Path**
-
-   After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory.
-   - Navigate to your `subgraph-mcp` directory in terminal
-   - Run `pwd` to get the full path
-   - Combine the output with `/target/release/subgraph-mcp`
-
-3. **Configure Claude Desktop**
-
-   Open your `claude_desktop_config.json` file as described above and add:
-
-   ```json
-   {
-     "mcpServers": {
-       "subgraph": {
-         "command": "/path/to/your/subgraph-mcp/target/release/subgraph-mcp",
-         "env": {
-           "GATEWAY_API_KEY": "your-api-key-here"
-         }
-       }
-     }
-   }
-   ```
-
-   Replace `/path/to/your/subgraph-mcp/target/release/subgraph-mcp` with the actual path to the compiled binary.
-
-## Using The Graph Resource in Claude
-
-After configuring Claude Desktop:
-
-1. Restart Claude Desktop
-2. Start a new conversation
-3. Click on the context menu (top right)
-4. Add "Subgraph Server Instructions" as a resource by adding `graphql://subgraph` to your chat context
-
-> **Important**: Claude Desktop may not automatically utilize the Subgraph MCP. You must manually add "Subgraph Server Instructions" resource to your chat context for each conversation where you want to use it.
-
-## Troubleshooting
-
-To enable logs for the MCP when using the npx option, add the `--verbose true` option to your args array.
-
-## Available Subgraph Tools and Usage
-
-The Subgraph MCP provides several tools for interacting with Subgraphs:
-
-### Schema Retrieval Tools
-
-- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
-- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
-- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
-
-### Query Execution Tools
-
-- **Execute query by deployment ID/IPFS hash**: Run GraphQL queries against specific, immutable deployments
-- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
-
-### Discovery Tools
-
-- **Search subgraphs by keyword**: Find subgraphs by keyword in their display names, ordered by signal
-- **Get deployment 30-day query counts**: Get aggregate query count over the last 30 days for multiple subgraph deployments
-- **Get top Subgraph deployments for a contract**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain, ordered by query fees
-
-## Key Identifier Types
-
-- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a subgraph. Use `execute_query_by_subgraph_id` or `get_schema_by_subgraph_id`.
-- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment. Use `execute_query_by_deployment_id` or `get_schema_by_deployment_id`.
-- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific, immutable deployment. Use `execute_query_by_deployment_id` (the gateway treats it like a deployment ID for querying) or `get_schema_by_ipfs_hash`.
-
-## Benefits of Natural Language Queries
-
-One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Claude will:
-
-1. Understand your goal (lookup, find Subgraphs, query, get schema)
-2. Find relevant deployments if needed
-3. Fetch and interpret the Subgraph schema
-4. Convert your question into an appropriate GraphQL query
-5. Execute the query and present the results in a readable format
-
-### Example Natural Language Queries
-
-```
-What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
-```
-
-```
-Which tokens have the highest market cap in this Subgraph?
-```
-
-```
-Show me the most recent 5 swaps for the USDC/ETH pair
-```
-
-```
-Find the top subgraphs for contract 0x1f98431c8ad98523631ae4a59f267346ea31f984 on arbitrum-one
-```
diff --git a/website/src/pages/vi/subgraphs/mcp/cline.mdx b/website/src/pages/vi/subgraphs/mcp/cline.mdx
deleted file mode 100644
index 156221d9a127..000000000000
--- a/website/src/pages/vi/subgraphs/mcp/cline.mdx
+++ /dev/null
@@ -1,99 +0,0 @@
----
-title: Cline
----
-
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Cline to interact directly with Subgraphs on The Graph Network. This integration allows you to explore Subgraph schemas, execute GraphQL queries, and find relevant Subgraphs for specific contracts—all through natural language conversations with Cline.
-
-## Prerequisites
-
-- [Cline](https://cline.bot/) installed (latest version)
-- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
-
-## Configuration Steps
-
-### 1. Open Configuration File
-
-Create or edit your `cline_mcp_settings.json` file.
-
-> **MCP Servers** > **Installed** > **Configure MCP Servers**
-
-### 2. Add Configuration
-
-```json
-{
-  "mcpServers": {
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-### 3. Add Your API Key
-
-Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
-
-## Using The Graph Resource in Cline
-
-After configuring Cline:
-
-1. Restart Cline
-2. Start a new conversation
-3. Enable the Subgraph MCP from the context menu
-4. Add "Subgraph Server Instructions" as a resource to your chat context
-
-## Available Tools and Usage
-
-The Subgraph MCP provides several tools for interacting with Subgraphs:
-
-### Schema Retrieval Tools
-
-- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
-- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
-- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
-
-### Query Execution Tools
-
-- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
-- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
-
-### Discovery Tools
-
-- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
-
-## Natural Language Queries
-
-One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cline will:
-
-1. Understand your goal (lookup, find Subgraphs, query, get schema)
-2. Find relevant deployments if needed
-3. Fetch and interpret the Subgraph schema
-4. Convert your question into an appropriate GraphQL query
-5. Execute the query and present the results in a readable format
-
-### Example Natural Language Queries
-
-```
-What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
-```
-
-```
-Which tokens have the highest market cap in this Subgraph?
-```
-
-```
-Show me the most recent 5 swaps for the USDC/ETH pair
-```
-
-## Key Identifier Types
-
-When working with Subgraphs, you'll encounter different types of identifiers:
-
-- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
-- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
-- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/vi/subgraphs/mcp/cursor.mdx b/website/src/pages/vi/subgraphs/mcp/cursor.mdx
deleted file mode 100644
index 298f43ece048..000000000000
--- a/website/src/pages/vi/subgraphs/mcp/cursor.mdx
+++ /dev/null
@@ -1,94 +0,0 @@
----
-title: Cursor
----
-
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Cursor to interact directly with Subgraphs on The Graph Network. This integration allows you to explore Subgraph schemas, execute GraphQL queries, and find relevant Subgraphs for specific contracts—all through natural language conversations with Cursor.
-
-## Prerequisites
-
-- [Cursor](https://www.cursor.com/) installed (latest version)
-- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
-
-## Configuration Steps
-
-### 1. Open Configuration File
-
-Create or edit your `~/.cursor/mcp.json` file.
-
-> **Cursor Settings** > **MCP** > **Add new global MCP Server**
-
-### 2. Add Configuration
-
-```json
-{
-  "mcpServers": {
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-### 3. Add Your API Key
-
-Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
-
-### 4. Restart Cursor
-
-Restart Cursor, and start a new chat.
-
-## Available Subgraph Tools and Usage
-
-The Subgraph MCP provides several tools for interacting with Subgraphs:
-
-### Schema Retrieval Tools
-
-- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
-- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
-- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
-
-### Query Execution Tools
-
-- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
-- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
-
-### Discovery Tools
-
-- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
-
-## Benefits of Natural Language Queries
-
-One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cursor will:
-
-1. Understand your goal (lookup, find Subgraphs, query, get schema)
-2. Find relevant deployments if needed
-3. Fetch and interpret the Subgraph schema
-4. Convert your question into an appropriate GraphQL query
-5. Execute the query and present the results in a readable format
-
-### Example Natural Language Queries
-
-```
-What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
-```
-
-```
-Which tokens have the highest market cap in this Subgraph?
-```
-
-```
-Show me the most recent 5 swaps for the USDC/ETH pair
-```
-
-## Key Identifier Types
-
-When working with Subgraphs, you'll encounter different types of identifiers:
-
-- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
-- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
-- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/vi/substreams/_meta.js b/website/src/pages/vi/substreams/_meta.js
index a8ee04618eae..658bb8c213c6 100644
--- a/website/src/pages/vi/substreams/_meta.js
+++ b/website/src/pages/vi/substreams/_meta.js
@@ -5,5 +5,4 @@ export default {
   introduction: '',
   developing: titles.developing ?? '',
   publishing: '',
-  sps: titles.sps ?? '',
 }
diff --git a/website/src/pages/vi/token-api/_meta-titles.json b/website/src/pages/vi/token-api/_meta-titles.json
index 7ed31e0af95d..3108ecd3ebfd 100644
--- a/website/src/pages/vi/token-api/_meta-titles.json
+++ b/website/src/pages/vi/token-api/_meta-titles.json
@@ -1,6 +1,7 @@
 {
   "mcp": "MCP",
   "evm": "EVM Endpoints",
+  "svm": "SVM Endpoints",
   "monitoring": "Monitoring Endpoints",
   "faq": "FAQ"
 }
diff --git a/website/src/pages/vi/token-api/_meta.js b/website/src/pages/vi/token-api/_meta.js
index f67576d7f612..fb7f7334ea0c 100644
--- a/website/src/pages/vi/token-api/_meta.js
+++ b/website/src/pages/vi/token-api/_meta.js
@@ -2,8 +2,8 @@ import titles from './_meta-titles.json'
 
 export default {
   'quick-start': '',
-  mcp: titles.mcp ?? '',
   evm: titles.evm ?? '',
+  svm: titles.svm ?? '',
   monitoring: titles.monitoring ?? '',
   faq: '',
 }
diff --git a/website/src/pages/vi/token-api/mcp/_meta.js b/website/src/pages/vi/token-api/mcp/_meta.js
deleted file mode 100644
index 8630d4da27b3..000000000000
--- a/website/src/pages/vi/token-api/mcp/_meta.js
+++ /dev/null
@@ -1,5 +0,0 @@
-export default {
-  claude: '',
-  cline: '',
-  cursor: '',
-}
diff --git a/website/src/pages/vi/token-api/svm/_meta.js b/website/src/pages/vi/token-api/svm/_meta.js
new file mode 100644
index 000000000000..1a48b82fcbf1
--- /dev/null
+++ b/website/src/pages/vi/token-api/svm/_meta.js
@@ -0,0 +1,5 @@
+export default {
+  'get-balances-svm': '',
+  'get-transfers-svm': '',
+  'get-swaps-svm': '',
+}
diff --git a/website/src/pages/vi/token-api/svm/get-balances-svm.mdx b/website/src/pages/vi/token-api/svm/get-balances-svm.mdx
new file mode 100644
index 000000000000..c2946c190bf9
--- /dev/null
+++ b/website/src/pages/vi/token-api/svm/get-balances-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Balances
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getBalancesSvm
+---
+
+Provides Solana tokens balances by token account address.
diff --git a/website/src/pages/vi/token-api/svm/get-swaps-svm.mdx b/website/src/pages/vi/token-api/svm/get-swaps-svm.mdx
new file mode 100644
index 000000000000..95282a38ac9f
--- /dev/null
+++ b/website/src/pages/vi/token-api/svm/get-swaps-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Swap Events
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getSwapsSvm
+---
+
+Provides Raydium swap events.
diff --git a/website/src/pages/vi/token-api/svm/get-transfers-svm.mdx b/website/src/pages/vi/token-api/svm/get-transfers-svm.mdx
new file mode 100644
index 000000000000..5335cdddf418
--- /dev/null
+++ b/website/src/pages/vi/token-api/svm/get-transfers-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Transfers Events
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getTransfersSvm
+---
+
+Provides SVM transfer events.
diff --git a/website/src/pages/zh/ai-suite/_meta-titles.json b/website/src/pages/zh/ai-suite/_meta-titles.json
new file mode 100644
index 000000000000..5eb482a7092b
--- /dev/null
+++ b/website/src/pages/zh/ai-suite/_meta-titles.json
@@ -0,0 +1,6 @@
+{
+  "graph-assistant": "Graph Assistant",
+  "ai-introduction": "The Graph's AI",
+  "subgraph-mcp": "Subgraph MCP",
+  "token-api-mcp": "Token API MCP"
+}
diff --git a/website/src/pages/zh/ai-suite/_meta.js b/website/src/pages/zh/ai-suite/_meta.js
new file mode 100644
index 000000000000..c9e51dfd35fb
--- /dev/null
+++ b/website/src/pages/zh/ai-suite/_meta.js
@@ -0,0 +1,8 @@
+import titles from './_meta-titles.json'
+
+export default {
+  'ai-introduction': titles['ai-introduction'],
+  'graph-assistant': titles['graph-assistant'],
+  'subgraph-mcp': titles['subgraph-mcp'],
+  'token-api-mcp': titles['token-api-mcp'],
+}
diff --git a/website/src/pages/zh/ai-suite/ai-introduction.mdx b/website/src/pages/zh/ai-suite/ai-introduction.mdx
new file mode 100644
index 000000000000..d25cc9f77358
--- /dev/null
+++ b/website/src/pages/zh/ai-suite/ai-introduction.mdx
@@ -0,0 +1,58 @@
+---
+title: The Graph's AI
+---
+
+Build with speed and scale faster with The Graph's AI.
+
+## Using AI on The Graph
+
+Instead of relying on static datasets or centralized APIs, you can now access live blockchain data through our **agentic** app, [Graph Assistant](/ai-suite/graph-assistant/introduction/), and use our AI-native tooling, [Subgraph MCP](/ai-suite/subgraph-mcp/introduction/), and [Token API MCP](/ai-suite/token-api-mcp/introduction/).
+
+### Why Use Onchain Data with AI?
+
+Using onchain data with AI unlocks powerful new ways to interact with and understand blockchain ecosystems.
+
+- **AI for Non-Technical End Users**: AI can turn complex onchain data into accessible insights. Assistants powered by AI enable you to explore and analyze blockchain data without coding.
+- **AI for Developers**: You can use AI to interact directly with The Graph's data through your agents or build AI-powered applications on top of it. This streamlines development and opens up more intuitive, dynamic use cases.
+
+## AI for Non-Technical/End Users
+
+[Graph Assistant](/ai-suite/graph-assistant/introduction/) is a powerful **agentic** application that empowers users to easily interact with blockchain data. Ask questions in simple, natural language and get rich, AI powered insights. Both technical developers and non-technical product teams can move faster, make smarter decisions, and gain a clearer understanding than ever before.
+
+### Benefits of Using Graph Assistant
+
+- **Natural language Input**: You don't need to write complex queries or sift through dashboards. Simply ask your question in plain English and get clear, structured results.
+- **Multi-source support**: Works across multiple Subgraphs and Token API. The Assistant automatically determines which data source to use, so you don't have to switch tools or manage endpoints.
+- **Schema-free access**: You don't need to understand the schema. You can refer to tokens, protocols, dates, or addresses using natural language. The Assistant takes care of the rest.
+
+### Conversational Querying with Graph Assistant
+
+**Example queries:**
+
+- "List the top-5 swaps by USD value in the last 24 hours."
+- "Give me the daily volume on Uniswap."
+- "List the 20 most recently registered .eth names."
+
+[Graph Assistant](/ai-suite/graph-assistant/introduction/) will eventually be a one-stop shop for interacting with The Graph. Right now, it's an agentic AI app that uses state-of-the-art AI techniques, LLMs, and MCPs to understand and answer your questions about [Subgraphs](/subgraphs/developing/subgraphs/) and [Token API](/token-api/quick-start/) data.
+
+## AI for Developers
+
+### Enable Natural Language Access to Onchain Data
+
+[Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) servers connect to Claude, Cline, and Cursor. They enable models to understand, query, and interact with structured onchain data using natural language. MCPs remove the need to write low-level queries or interact with APIs directly.
+
+### Subgraph MCP
+
+The [Subgraph MCP](/ai-suite/subgraph-mcp/introduction/) server connects models to Subgraphs on The Graph Network. It allows language models to explore Subgraph schemas, execute GraphQL queries, find relevant Subgraphs by keyword or contract, and surface usage metrics using natural language.
+
+### Token API MCP
+
+The [Token API MCP](/ai-suite/token-api-mcp/introduction/) MCP server enables models to access onchain token data. It supports querying token metadata, wallet balances, transfer history, and top token holders through simple prompts.
+
+#### Benefits of Using Subgraph and Token API MCPs
+
+- Query Subgraphs and token data using natural language
+- Access GraphQL schemas and token metadata without manual queries
+- Find Subgraphs by keyword or contract and check 30-day usage
+- Retrieve real-time data from The Graph and onchain token sources
+- Get wallet balances, transfer history, and top token holders
diff --git a/website/src/pages/zh/ai-suite/graph-assistant/_meta.js b/website/src/pages/zh/ai-suite/graph-assistant/_meta.js
new file mode 100644
index 000000000000..74da5e0686a7
--- /dev/null
+++ b/website/src/pages/zh/ai-suite/graph-assistant/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  'quick-start': '',
+  introduction: '',
+  'how-to-guide': '',
+  faq: '',
+}
diff --git a/website/src/pages/zh/ai-suite/graph-assistant/faq.mdx b/website/src/pages/zh/ai-suite/graph-assistant/faq.mdx
new file mode 100644
index 000000000000..8addf9935524
--- /dev/null
+++ b/website/src/pages/zh/ai-suite/graph-assistant/faq.mdx
@@ -0,0 +1,26 @@
+---
+title: Graph Assistant FAQ
+sidebarTitle: 'FAQ'
+---
+
+This page summarizes some of the most common questions for developers using Graph Assistant.
+
+1. What is The Graph Assistant?
+
+The Graph Assistant is an AI-powered chat interface that lets you query blockchain data in plain English. Under the hood, it translates your questions into GraphQL calls against Subgraphs and the Token API, then returns results, no coding required.
+
+2. What is an agentic application?
+
+An agentic application combines AI-driven reasoning with external data sources or APIs to take autonomous actions on your behalf. In this case, Graph Assistant acts as an “agent” that interprets your natural-language prompts, builds and dispatches GraphQL queries, and formats the results so that you don't need to write or manage queries yourself.
+
+3. Which networks and data does Graph Assistant support?
+
+The Assistant has access to Subgraphs across multiple chains. If a Subgraph is published to The Graph Network and is being indexed, the Assistant can automatically route queries to it. The Assistant also has access to the Token API on Ethereum Mainnet, BSC, Unichain, Arbitrum-One, Optimism, and Polygon.
+
+4. Is there a usage limit or quota?
+
+Yes, 10 questions per hour.
+
+5. What if the Assistant can't interpret my question?
+
+When the Assistant fails to parse your intent (for example, ambiguous token name, missing context, or an unsupported request), it will prompt you for clarification. For instance, it might ask, “Did you mean XYZ on Ethereum or XYZ on Arbitrum?” or “Please specify a date range for this query.” If you continue to see parsing errors, check that you're using correct token symbols or specifying networks and time frames clearly.
diff --git a/website/src/pages/zh/ai-suite/graph-assistant/how-to-guide.mdx b/website/src/pages/zh/ai-suite/graph-assistant/how-to-guide.mdx
new file mode 100644
index 000000000000..463130894ad8
--- /dev/null
+++ b/website/src/pages/zh/ai-suite/graph-assistant/how-to-guide.mdx
@@ -0,0 +1,56 @@
+---
+title: How To Use The Graph Assistant
+sidebarTitle: 'How-to Guide'
+---
+
+## Overview
+
+You type a natural language question into the chat interface, such as:
+
+```yaml
+'On Uniswap, return the top-10 pools by total value locked in USD.'
+```
+
+> [!IMPORTANT] All users can process 10 free queries per user per hour.
+
+> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the underlying agents. Do not share sensitive, personal, or private information.
+
+### Behind the Scenes
+
+The Assistant:
+
+1. Interprets your intent
+2. Maps it to the correct Subgraphs or Token API endpoint
+3. Executes optimized queries
+4. Returns clean, structured results
+
+You don't need to write queries or understand a Subgraph's schema, you simply ask.
+
+### Example Use Cases
+
+**Protocol Analytics**
+
+- “Compare daily active users on Aave vs. Compound in May 2025.”
+- “Show me the total value locked (TVL) for XYZDAO over the last quarter.”
+
+**Token Insights**
+
+- “What are the top 10 tokens by market cap on Ethereum right now?”
+- “How many XYZ did I receive between May 1 and May 15?”
+
+**Historical Data Retrieval**
+
+- “Fetch the token price history of XYZ for the last six months.”
+- “What was the average gas price on Ethereum during April?”
+
+**Portfolio Monitoring**
+
+- “List my wallet’s current token balances and their USD equivalents.”
+- “Calculate profit/loss on XYZ since xyz date.”
+
+**Cross-Chain Comparison**
+
+- “Show me the 7-day trading volume of XYZ on Ethereum vs. Polygon.”
+- “How many XYZ swaps occurred on Arbitrum yesterday?”
+
+To get started follow the [quickstart](/ai-suite/graph-assistant/quick-start/) and explore its capabilities.
diff --git a/website/src/pages/zh/ai-suite/graph-assistant/introduction.mdx b/website/src/pages/zh/ai-suite/graph-assistant/introduction.mdx
new file mode 100644
index 000000000000..65fdf0f96028
--- /dev/null
+++ b/website/src/pages/zh/ai-suite/graph-assistant/introduction.mdx
@@ -0,0 +1,31 @@
+---
+title: Introduction
+---
+
+> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime.
+
+[Graph Assistant](https://thegraph.com/graph-assistant) (Beta) gives instant, code-free access to blockchain data, transforming natural language into precise, AI-powered queries without the need to code.
+
+## Overview
+
+[Graph Assistant](https://thegraph.com/graph-assistant) is an advanced, [agentic](/en/ai-suite/graph-assistant/faq/) easy-to-use chat interface for querying blockchain data using natural language. Unlike a basic chatbot, Graph Assistant can understand your intent, build complex queries, and execute them automatically. This gives you rich, AI-powered insights from onchain data without writing any code.
+
+- **Automatically** interprets user intent, generates precise queries, executes them via The Graph's Subgraphs and Token API, and presents structured, AI-powered answers without requiring any code.
+- **Removes** the technical complexity found in traditional dashboards or chatbots. It provides composable insights directly from indexed Subgraphs and Token datasets.
+
+## Core Features
+
+| Feature | Description |
+| --- | --- |
+| **Friendly Interface** | Conversational access to blockchain data via natural language. You simply ask questions, the Assistant fetches the answer, and renders results. |
+| **Backed by Subgraphs** | Uses subgraphs to index protocol-specific data like transactions, events, and protocol metrics. |
+| **Backed by Token API** | Uses Token API for token-level information like balances, transfers, and metadata. |
+| **No Setup Required** | No need to configure data sources or write queries. |
+| **Automatic Query Building** | The Assistant performs complex queries such as fetching historical token volumes, protocol analytics, or cross-chain data and handles filtering, pagination, and joins across Subgraphs automatically. |
+
+## Help Shape What's Next
+
+This is in **beta**, and community input is essential. If you have ideas, questions, or run into anything unexpected, we'd love to hear from you:
+
+- Join the community on [Discord](https://discord.com/invite/graphprotocol): Provide feedback and stay in the loop with other builders. You'll be able to join the `#graph-assistant` channel to share your experience directly.
+- Interested in going deeper? Reach out to become a dedicated beta tester so your specific use case can be better supported.
diff --git a/website/src/pages/zh/ai-suite/graph-assistant/quick-start.mdx b/website/src/pages/zh/ai-suite/graph-assistant/quick-start.mdx
new file mode 100644
index 000000000000..13f8478b8d2b
--- /dev/null
+++ b/website/src/pages/zh/ai-suite/graph-assistant/quick-start.mdx
@@ -0,0 +1,44 @@
+---
+title: Quick Start
+---
+
+> [!IMPORTANT] Graph Assistant is still in **beta**. Expect breaking changes, rate limits, and potential downtime.
+
+This guide provides step-by-step instructions for getting started with Graph Assistant quickly.
+
+## Step-by Step
+
+### Step 1. Create an Account
+
+Go to: [Graph Assistant](https://thegraph.com/graph-assistant)
+
+- Click Sign Up (or Log In if you already have an account).
+- Use your Google, GitHub, X, email or wallet credentials to log in.
+- No additional setup is required.
+
+### Step 2. Open the Assistant Chat
+
+After logging in:
+
+- You'll see Graph Assistant's interface.
+- At the bottom of the page, you will find a chat input bar. This is where you will interact with the Assistant.
+
+### Step 3: Ask Your First Question
+
+> [!IMPORTANT] All users can process 10 free queries per user per hour.
+
+In the input bar, type a natural-language query (everyday language).
+
+Example:
+
+```yaml
+Show me the 24-hour trading volume of XYZ token on Ethereum
+```
+
+> [!NOTE] Disclaimer: By using Graph Assistant, you acknowledge that your requests may be logged and used to improve the performance of the AI interface. Do not share sensitive, personal, or private information.
+
+The Assistant will:
+
+- Digest your question
+- Fetch onchain data using Subgraphs or the Token API
+- Return a clean, formatted response with the data you need
diff --git a/website/src/pages/zh/ai-suite/subgraph-mcp/_meta.js b/website/src/pages/zh/ai-suite/subgraph-mcp/_meta.js
new file mode 100644
index 000000000000..6f527b4e53e4
--- /dev/null
+++ b/website/src/pages/zh/ai-suite/subgraph-mcp/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  introduction: '',
+  claude: '',
+  cline: '',
+  cursor: '',
+}
diff --git a/website/src/pages/zh/ai-suite/subgraph-mcp/claude.mdx b/website/src/pages/zh/ai-suite/subgraph-mcp/claude.mdx
new file mode 100644
index 000000000000..ff3caa4e3e7f
--- /dev/null
+++ b/website/src/pages/zh/ai-suite/subgraph-mcp/claude.mdx
@@ -0,0 +1,169 @@
+---
+title: Claude Desktop
+---
+
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data via natural language conversations with Claude.
+
+## Prerequisites
+
+- [Node.js](https://nodejs.org/en) installed and available in your path
+- [Claude Desktop](https://claude.ai/download) installed (latest version)
+- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
+
+## Installation Options
+
+### Option 1: Using npx (Recommended)
+
+#### Configuration Steps using npx
+
+#### 1. Open Configuration File
+
+Navigate to your `claude_desktop_config.json` file:
+
+> **Settings** > **Developer** > **Edit Config**
+
+- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
+- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
+- Linux: `.config/Claude/claude_desktop_config.json`
+
+#### 2. Add Configuration
+
+Paste the following settings into your config file:
+
+```json
+{
+  "mcpServers": {
+    "subgraph": {
+      "command": "npx",
+      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
+      "env": {
+        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
+      }
+    }
+  }
+}
+```
+
+#### 3. Add Your Gateway API Key
+
+Replace `GATEWAY_API_KEY` with your API key from [Subgraph Studio](https://thegraph.com/studio/).
+
+#### 4. Save and Restart
+
+Once you've entered your Gateway API key into your settings, save the file and restart Claude Desktop.
+
+### Option 2: Building from Source
+
+#### Requirements
+
+- Rust (latest stable version recommended: 1.75+)
+  ```bash
+  curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
+  ```
+  Follow the on-screen instructions. For other platforms, see the [official Rust installation guide](https://www.rust-lang.org/tools/install).
+
+#### Installation Steps
+
+1. **Clone and Build the Repository**
+
+   ```bash
+   git clone git@github.com:graphops/subgraph-mcp.git
+   cd subgraph-mcp
+   cargo build --release
+   ```
+
+2. **Find the Command Path**
+
+   After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory.
+   - Navigate to your `subgraph-mcp` directory in terminal
+   - Run `pwd` to get the full path
+   - Combine the output with `/target/release/subgraph-mcp`
+
+3. **Configure Claude Desktop**
+
+   Open your `claude_desktop_config.json` file as described above and add:
+
+   ```json
+   {
+     "mcpServers": {
+       "subgraph": {
+         "command": "/path/to/your/subgraph-mcp/target/release/subgraph-mcp",
+         "env": {
+           "GATEWAY_API_KEY": "your-api-key-here"
+         }
+       }
+     }
+   }
+   ```
+
+   Replace `/path/to/your/subgraph-mcp/target/release/subgraph-mcp` with the actual path to the compiled binary.
+
+## Using The Graph Resource in Claude
+
+After configuring Claude Desktop:
+
+1. Restart Claude Desktop
+2. Start a new conversation
+3. Click on the context menu (top right)
+4. Add "Subgraph Server Instructions" as a resource by adding `graphql://subgraph` to your chat context
+
+> **Important**: Claude Desktop may not automatically utilize the Subgraph MCP. You must manually add "Subgraph Server Instructions" resource to your chat context for each conversation where you want to use it.
+
+## Troubleshooting
+
+To enable logs for the MCP when using the npx option, add the `--verbose true` option to your args array.
+
+## Available Subgraph Tools and Usage
+
+The Subgraph MCP provides several tools for interacting with Subgraphs:
+
+### Schema Retrieval Tools
+
+- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
+- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
+- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
+
+### Query Execution Tools
+
+- **Execute query by deployment ID/IPFS hash**: Run GraphQL queries against specific, immutable deployments
+- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
+
+### Discovery Tools
+
+- **Search subgraphs by keyword**: Find subgraphs by keyword in their display names, ordered by signal
+- **Get deployment 30-day query counts**: Get aggregate query count over the last 30 days for multiple subgraph deployments
+- **Get top Subgraph deployments for a contract**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain, ordered by query fees
+
+## Key Identifier Types
+
+- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a subgraph. Use `execute_query_by_subgraph_id` or `get_schema_by_subgraph_id`.
+- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment. Use `execute_query_by_deployment_id` or `get_schema_by_deployment_id`.
+- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific, immutable deployment. Use `execute_query_by_deployment_id` (the gateway treats it like a deployment ID for querying) or `get_schema_by_ipfs_hash`.
+
+## Benefits of Natural Language Queries
+
+One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Claude will:
+
+1. Understand your goal (lookup, find Subgraphs, query, get schema)
+2. Find relevant deployments if needed
+3. Fetch and interpret the Subgraph schema
+4. Convert your question into an appropriate GraphQL query
+5. Execute the query and present the results in a readable format
+
+### Example Natural Language Queries
+
+```
+What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
+```
+
+```
+Which tokens have the highest market cap in this Subgraph?
+```
+
+```
+Show me the most recent 5 swaps for the USDC/ETH pair
+```
+
+```
+Find the top subgraphs for contract 0x1f98431c8ad98523631ae4a59f267346ea31f984 on arbitrum-one
+```
diff --git a/website/src/pages/zh/ai-suite/subgraph-mcp/cline.mdx b/website/src/pages/zh/ai-suite/subgraph-mcp/cline.mdx
new file mode 100644
index 000000000000..eb8044bfe991
--- /dev/null
+++ b/website/src/pages/zh/ai-suite/subgraph-mcp/cline.mdx
@@ -0,0 +1,99 @@
+---
+title: Cline
+---
+
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data through natural language conversations with Cline.
+
+## Prerequisites
+
+- [Cline](https://cline.bot/) installed (latest version)
+- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
+
+## Configuration Steps
+
+### 1. Open Configuration File
+
+Create or edit your `cline_mcp_settings.json` file.
+
+> **MCP Servers** > **Installed** > **Configure MCP Servers**
+
+### 2. Add Configuration
+
+```json
+{
+  "mcpServers": {
+    "subgraph": {
+      "command": "npx",
+      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
+      "env": {
+        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
+      }
+    }
+  }
+}
+```
+
+### 3. Add Your API Key
+
+Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
+
+## Using The Graph Resource in Cline
+
+After configuring Cline:
+
+1. Restart Cline
+2. Start a new conversation
+3. Enable the Subgraph MCP from the context menu
+4. Add "Subgraph Server Instructions" as a resource to your chat context
+
+## Available Tools and Usage
+
+The Subgraph MCP provides several tools for interacting with Subgraphs:
+
+### Schema Retrieval Tools
+
+- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
+- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
+- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
+
+### Query Execution Tools
+
+- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
+- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
+
+### Discovery Tools
+
+- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
+
+## Natural Language Queries
+
+One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cline will:
+
+1. Understand your goal (lookup, find Subgraphs, query, get schema)
+2. Find relevant deployments if needed
+3. Fetch and interpret the Subgraph schema
+4. Convert your question into an appropriate GraphQL query
+5. Execute the query and present the results in a readable format
+
+### Example Natural Language Queries
+
+```
+What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
+```
+
+```
+Which tokens have the highest market cap in this Subgraph?
+```
+
+```
+Show me the most recent 5 swaps for the USDC/ETH pair
+```
+
+## Key Identifier Types
+
+When working with Subgraphs, you'll encounter different types of identifiers:
+
+- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
+- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
+- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/zh/ai-suite/subgraph-mcp/cursor.mdx b/website/src/pages/zh/ai-suite/subgraph-mcp/cursor.mdx
new file mode 100644
index 000000000000..6291caf4b06b
--- /dev/null
+++ b/website/src/pages/zh/ai-suite/subgraph-mcp/cursor.mdx
@@ -0,0 +1,94 @@
+---
+title: Cursor
+---
+
+This guide walks you through the integration of Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) to access Subgraph data through natural language conversations with Cline.
+
+## Prerequisites
+
+- [Cursor](https://www.cursor.com/) installed (latest version)
+- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
+
+## Configuration Steps
+
+### 1. Open Configuration File
+
+Create or edit your `~/.cursor/mcp.json` file.
+
+> **Cursor Settings** > **MCP** > **Add new global MCP Server**
+
+### 2. Add Configuration
+
+```json
+{
+  "mcpServers": {
+    "subgraph": {
+      "command": "npx",
+      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
+      "env": {
+        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
+      }
+    }
+  }
+}
+```
+
+### 3. Add Your API Key
+
+Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
+
+### 4. Restart Cursor
+
+Restart Cursor, and start a new chat.
+
+## Available Subgraph Tools and Usage
+
+The Subgraph MCP provides several tools for interacting with Subgraphs:
+
+### Schema Retrieval Tools
+
+- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
+- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
+- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
+
+### Query Execution Tools
+
+- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
+- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
+
+### Discovery Tools
+
+- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
+
+## Benefits of Natural Language Queries
+
+One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cursor will:
+
+1. Understand your goal (lookup, find Subgraphs, query, get schema)
+2. Find relevant deployments if needed
+3. Fetch and interpret the Subgraph schema
+4. Convert your question into an appropriate GraphQL query
+5. Execute the query and present the results in a readable format
+
+### Example Natural Language Queries
+
+```
+What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
+```
+
+```
+Which tokens have the highest market cap in this Subgraph?
+```
+
+```
+Show me the most recent 5 swaps for the USDC/ETH pair
+```
+
+## Key Identifier Types
+
+When working with Subgraphs, you'll encounter different types of identifiers:
+
+- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
+- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
+- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/zh/ai-suite/subgraph-mcp/introduction.mdx b/website/src/pages/zh/ai-suite/subgraph-mcp/introduction.mdx
new file mode 100644
index 000000000000..da1272cf9a36
--- /dev/null
+++ b/website/src/pages/zh/ai-suite/subgraph-mcp/introduction.mdx
@@ -0,0 +1,22 @@
+---
+title: Subgraph MCP Introduction
+sidebarTitle: 'Introduction'
+---
+
+Subgraph MCP server is an open-source implementation of [Anthropic's Model Context Protocol](https://modelcontextprotocol.io/introduction).
+
+It presents The Graph's Subgraph data through a set of MCP tools that any MCP-compatible client can call. With these tools, clients can search for relevant Subgraphs, inspect GraphQL schemas, and run queries against specific deployments on The Graph Network all within a single, standardized interface.
+
+The server itself does not hold a language model. Instead, it translates incoming MCP requests into Subgraph queries and returns the structured results, allowing the client's LLM to transform a natural-language prompt into actionable blockchain data.
+
+Think of it as a USB-C hub: it standardizes the plug-and-play connection between AI agents and The Graph's Subgraph ecosystem.
+
+## What You Can Do
+
+- Access GraphQL schemas for any Subgraph on The Graph Network
+- Run GraphQL queries on any Subgraph deployment
+- Discover top Subgraph deployments by keyword or contract address
+- Retrieve 30-day query volumes for Subgraph deployments
+- Ask questions about Subgraph data without writing GraphQL manually
+
+The Subgraph MCP server allows smooth integration with [Claude](/ai-suite/subgraph-mcp/claude/), [Cline](/ai-suite/subgraph-mcp/cline/), or [Cursor](/ai-suite/subgraph-mcp/cursor/), making blockchain data queries with The Graph Network a conversational experience.
diff --git a/website/src/pages/zh/ai-suite/token-api-mcp/_meta.js b/website/src/pages/zh/ai-suite/token-api-mcp/_meta.js
new file mode 100644
index 000000000000..6f527b4e53e4
--- /dev/null
+++ b/website/src/pages/zh/ai-suite/token-api-mcp/_meta.js
@@ -0,0 +1,6 @@
+export default {
+  introduction: '',
+  claude: '',
+  cline: '',
+  cursor: '',
+}
diff --git a/website/src/pages/zh/ai-suite/token-api-mcp/claude.mdx b/website/src/pages/zh/ai-suite/token-api-mcp/claude.mdx
new file mode 100644
index 000000000000..3e21f4d7e165
--- /dev/null
+++ b/website/src/pages/zh/ai-suite/token-api-mcp/claude.mdx
@@ -0,0 +1,58 @@
+---
+title: Using Claude Desktop to Access the Token API via MCP
+sidebarTitle: Claude Desktop
+---
+
+## Prerequisites
+
+- [Claude Desktop](https://claude.ai/download) installed.
+- A [JWT token](/token-api/quick-start) from [The Graph Market](https://thegraph.market/).
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path.
+- The `@pinax/mcp` package requires Node 18+, as it relies on built-in `fetch()` / `Headers`, which are not available in Node 17 or older. You may need to specify an exact path to an up-to-date Node version, or uninstall previous versions of Node to ensure `@pinax/mcp` uses the correct version.
+
+![Screenshot of Claude Desktop's settings panel showing the MCP server configuration option.](/img/claude-preview-token-api.png)
+
+## Configuration
+
+Create or edit your `claude_desktop_config.json` file.
+
+> **Settings** > **Developer** > **Edit Config**
+
+- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
+- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
+- Linux: `.config/Claude/claude_desktop_config.json`
+
+```json label="claude_desktop_config.json"
+{
+  "mcpServers": {
+    "token-api": {
+      "command": "npx",
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
+      "env": {
+        "ACCESS_TOKEN": "<https://thegraph.market JWT Access Token>"
+      }
+    }
+  }
+}
+```
+
+## Troubleshooting
+
+To enable logs for the MCP, use the `--verbose true` option.
+
+### ENOENT
+
+![Error dialog in Claude Desktop showing 'ENOENT' system error, indicating the npx/bunx command wasn't found in the system path.](/img/claude-ENOENT.png)
+
+Try to use the full path of the command instead:
+
+- Run `which npx` or `which bunx` to get the path of the command.
+- Replace `npx` or `bunx` in the configuration file with the full path (e.g. `/home/user/bin/bunx`).
+
+### Server disconnected
+
+![Connection error notification in Claude Desktop displaying 'Server disconnected' message.](/img/claude-server-disconnect.png)
+
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
+
+> You can always have a look at the full logs under `Claude/logs/mcp.log` and `Claude/logs/mcp-server-pinax.log` for more details.
diff --git a/website/src/pages/zh/ai-suite/token-api-mcp/cline.mdx b/website/src/pages/zh/ai-suite/token-api-mcp/cline.mdx
new file mode 100644
index 000000000000..e885d21366cd
--- /dev/null
+++ b/website/src/pages/zh/ai-suite/token-api-mcp/cline.mdx
@@ -0,0 +1,52 @@
+---
+title: Using Cline to Access the Token API via MCP
+sidebarTitle: Cline
+---
+
+## Prerequisites
+
+- [Cline](https://cline.bot/) installed.
+- A [JWT token](/token-api/quick-start) from [The Graph Market](https://thegraph.market/).
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path.
+- The `@pinax/mcp` package requires Node 18+, as it relies on built-in `fetch()` / `Headers`, which are not available in Node 17 or older. You may need to specify an exact path to an up-to-date Node version, or uninstall previous versions of Node to ensure `@pinax/mcp` uses the correct version.
+
+![Screenshot of Cline's MCP server configuration interface displaying the JSON settings file with mcp-pinax server details visible.](/img/cline-preview-token-api.png)
+
+## Configuration
+
+Create or edit your `cline_mcp_settings.json` file.
+
+> **MCP Servers** > **Installed** > **Configure MCP Servers**
+
+```json label="cline_mcp_settings.json"
+{
+  "mcpServers": {
+    "mcp-pinax": {
+      "command": "npx",
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
+      "env": {
+        "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
+      }
+    }
+  }
+}
+```
+
+## Troubleshooting
+
+To enable logs for the MCP, use the `--verbose true` option.
+
+### ENOENT
+
+![Cline error dialog showing 'ENOENT' system alert.](/img/cline-error.png)
+
+Try to use the full path of the command instead:
+
+- Run `which npx` or `which bunx` to get the path of the command.
+- Replace `npx` or `bunx` in the configuration file with the full path (e.g. `/home/user/bin/bunx`).
+
+### Server disconnected
+
+![Cline connection error notification displaying server disconnection warning.](/img/cline-missing-variables.png)
+
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/zh/ai-suite/token-api-mcp/cursor.mdx b/website/src/pages/zh/ai-suite/token-api-mcp/cursor.mdx
new file mode 100644
index 000000000000..68fe2fdb201c
--- /dev/null
+++ b/website/src/pages/zh/ai-suite/token-api-mcp/cursor.mdx
@@ -0,0 +1,50 @@
+---
+title: Using Cursor to Access the Token API via MCP
+sidebarTitle: Cursor
+---
+
+## Prerequisites
+
+- [Cursor](https://www.cursor.com/) installed.
+- A [JWT token](/token-api/quick-start) from [The Graph Market](https://thegraph.market/).
+- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path.
+- The `@pinax/mcp` package requires Node 18+, as it relies on built-in `fetch()` / `Headers`, which are not available in Node 17 or older. You may need to specify an exact path to an up-to-date Node version, or uninstall previous versions of Node to ensure `@pinax/mcp` uses the correct version.
+
+![Screenshot of Cursor's MCP configuration panel.](/img/cursor-preview-token-api.png)
+
+## Configuration
+
+Create or edit your `~/.cursor/mcp.json` file.
+
+> **Cursor Settings** > **MCP** > **Add new global MCP Server**
+
+```json label="mcp.json"
+{
+  "mcpServers": {
+    "mcp-pinax": {
+      "command": "npx",
+      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
+      "env": {
+        "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
+      }
+    }
+  }
+}
+```
+
+## Troubleshooting
+
+![Cursor IDE error notification that reads, "Failed to create client"](/img/cursor-error.png)
+
+To enable logs for the MCP, use the `--verbose true` option.
+
+### ENOENT
+
+Try to use the full path of the command instead:
+
+- Run `which npx` or `which bunx` to get the path of the command.
+- Replace `npx` or `bunx` in the configuration file with the full path (e.g. `/home/user/bin/bunx`).
+
+### Server disconnected
+
+Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
diff --git a/website/src/pages/zh/ai-suite/token-api-mcp/introduction.mdx b/website/src/pages/zh/ai-suite/token-api-mcp/introduction.mdx
new file mode 100644
index 000000000000..b61ad0a1c485
--- /dev/null
+++ b/website/src/pages/zh/ai-suite/token-api-mcp/introduction.mdx
@@ -0,0 +1,23 @@
+---
+title: Token API MCP Introduction
+sidebarTitle: 'Introduction'
+---
+
+Token API MCP server is an open-source implementation of [Anthropic's Model Context Protocol](https://modelcontextprotocol.io/introduction).
+
+This MCP server makes on-chain token data, including metadata, balances, transfers, and holder statistics, accessible through a set of MCP tools. Any compatible client can use these tools to fetch and analyze token information through a standardized interface. It connects to The Graph's hosted Token API database, enabling AI assistants to query real-time blockchain data using natural language requests that get translated into optimized SQL queries.
+
+The server itself does not host any language model. It simply converts MCP calls into data look-ups and returns structured results, letting the client's own LLM incorporate the results.
+
+Think of it as a USB-C hub: it standardizes the plug-and-play connection between AI agents and The Graph's Token API data.
+
+## What You Can Do
+
+- Retrieve token metadata including name, symbol, decimals, total supply, and contract address
+- Get token balances for any wallet address holding a supported ERC-20 token
+- Fetch token transfer activity including sender, receiver, amount, and timestamp
+- Identify top holders and analyze token distribution
+- Ask natural language questions about token data without writing smart contract calls
+- Access historical transfer data to analyze token movement over time
+
+The Token MCP server provides [Claude](/ai-suite/token-api-mcp/claude/), [Cline](/ai-suite/token-api-mcp/cline/), and [Cursor](/ai-suite/token-api-mcp/cursor/) with direct, conversational access to onchain token data.
diff --git a/website/src/pages/zh/resources/_meta.js b/website/src/pages/zh/resources/_meta.js
index aa8e2d0ec6a8..38c56cf56c43 100644
--- a/website/src/pages/zh/resources/_meta.js
+++ b/website/src/pages/zh/resources/_meta.js
@@ -7,5 +7,4 @@ export default {
   roles: titles.roles ?? '',
   'migration-guides': titles['migration-guides'] ?? '',
   'subgraph-studio-faq': '',
-  'claude-mcp': '',
 }
diff --git a/website/src/pages/zh/resources/claude-mcp.mdx b/website/src/pages/zh/resources/claude-mcp.mdx
deleted file mode 100644
index 44ed075cffda..000000000000
--- a/website/src/pages/zh/resources/claude-mcp.mdx
+++ /dev/null
@@ -1,122 +0,0 @@
----
-title: Claude MCP
----
-
-This guide walks you through configuring Claude Desktop to use The Graph ecosystem's [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) resources: Token API and Subgraph. These integrations allow you to interact with blockchain data through natural language conversations with Claude.
-
-## What You Can Do
-
-With these integrations, you can:
-
-- **Token API**: Access token and wallet information across multiple blockchains
-- **Subgraph**: Find relevant Subgraphs for specific keywords and contracts, explore Subgraph schemas, and execute GraphQL queries
-
-## Prerequisites
-
-- [Node.js](https://nodejs.org/en/download/) installed and available in your path
-- [Claude Desktop](https://claude.ai/download) installed
-- API keys:
-  - Token API key from [The Graph Market](https://thegraph.market/)
-  - Gateway API key from [Subgraph Studio](https://thegraph.com/studio/apikeys/)
-
-## Configuration Steps
-
-### 1. Open Configuration File
-
-Navigate to your `claude_desktop_config.json` file:
-
-> **Claude Desktop** > **Settings** > **Developer** > **Edit Config**
-
-Paths by operating system:
-
-- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
-- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
-- Linux: `.config/Claude/claude_desktop_config.json`
-
-### 2. Add Configuration
-
-Replace the contents of the existing config file with:
-
-```json
-{
-  "mcpServers": {
-    "token-api": {
-      "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
-      "env": {
-        "ACCESS_TOKEN": "ACCESS_TOKEN"
-      }
-    },
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-### 3. Add Your API Keys
-
-Replace:
-
-- `ACCESS_TOKEN` with your Token API key from [The Graph Market](https://thegraph.market/)
-- `GATEWAY_API_KEY` with your Gateway API key from [Subgraph Studio](https://thegraph.com/studio/apikeys/)
-
-### 4. Save and Restart
-
-- Save the configuration file
-- Restart Claude Desktop
-
-### 5. Add The Graph Resources in Claude
-
-After configuration:
-
-1. Start a new conversation in Claude Desktop
-2. Click on the context menu (top right)
-3. Add "Subgraph Server Instructions" as a resource by entering `graphql://subgraph` for Subgraph MCP
-
-> **Important**: You must manually add The Graph resources to your chat context for each conversation where you want to use them.
-
-### 6. Run Queries
-
-Here are some example queries you can try after setting up the resources:
-
-### Subgraph Queries
-
-```
-What are the top pools in Uniswap?
-```
-
-```
-Who are the top Delegators of The Graph Protocol?
-```
-
-```
-Please make a bar chart for the number of active loans in Compound for the last 7 days
-```
-
-### Token API Queries
-
-```
-Show me the current price of ETH
-```
-
-```
-What are the top tokens by market cap on Ethereum?
-```
-
-```
-Analyze this wallet address: 0x...
-```
-
-## Troubleshooting
-
-If you encounter issues:
-
-1. **Verify Node.js Installation**: Ensure Node.js is correctly installed by running `node -v` in your terminal
-2. **Check API Keys**: Verify that your API keys are correctly entered in the configuration file
-3. **Enable Verbose Logging**: Add `--verbose true` to the args array in your configuration to see detailed logs
-4. **Restart Claude Desktop**: After making changes to the configuration, always restart Claude Desktop
diff --git a/website/src/pages/zh/subgraphs/_meta.js b/website/src/pages/zh/subgraphs/_meta.js
index 4365293ffc72..45841d5f3355 100644
--- a/website/src/pages/zh/subgraphs/_meta.js
+++ b/website/src/pages/zh/subgraphs/_meta.js
@@ -6,7 +6,6 @@ export default {
   querying: titles.querying ?? '',
   developing: titles.developing ?? '',
   billing: '',
-  mcp: titles.mcp ?? '',
   guides: titles.guides,
   'best-practices': titles['best-practices'],
   'fair-use-policy': '',
diff --git a/website/src/pages/zh/subgraphs/mcp/_meta.js b/website/src/pages/zh/subgraphs/mcp/_meta.js
deleted file mode 100644
index 8630d4da27b3..000000000000
--- a/website/src/pages/zh/subgraphs/mcp/_meta.js
+++ /dev/null
@@ -1,5 +0,0 @@
-export default {
-  claude: '',
-  cline: '',
-  cursor: '',
-}
diff --git a/website/src/pages/zh/subgraphs/mcp/claude.mdx b/website/src/pages/zh/subgraphs/mcp/claude.mdx
deleted file mode 100644
index 027b272cb942..000000000000
--- a/website/src/pages/zh/subgraphs/mcp/claude.mdx
+++ /dev/null
@@ -1,179 +0,0 @@
----
-title: Claude Desktop
----
-
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Claude to interact directly with Subgraphs on The Graph Network. This integration allows you to find relevant Subgraphs for specific keywords and contracts, explore Subgraph schemas, and execute GraphQL queries—all through natural language conversations with Claude.
-
-## What You Can Do
-
-The Subgraph MCP integration enables you to:
-
-- Access the GraphQL schema for any Subgraph on The Graph Network
-- Execute GraphQL queries against any Subgraph deployment
-- Find top Subgraph deployments for a given keyword or contract address
-- Get 30-day query volume for Subgraph deployments
-- Ask natural language questions about Subgraph data without writing GraphQL queries manually
-
-## Prerequisites
-
-- [Node.js](https://nodejs.org/en) installed and available in your path
-- [Claude Desktop](https://claude.ai/download) installed (latest version)
-- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
-
-## Installation Options
-
-### Option 1: Using npx (Recommended)
-
-#### Configuration Steps using npx
-
-#### 1. Open Configuration File
-
-Navigate to your `claude_desktop_config.json` file:
-
-> **Settings** > **Developer** > **Edit Config**
-
-- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
-- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
-- Linux: `.config/Claude/claude_desktop_config.json`
-
-#### 2. Add Configuration
-
-Paste the following settings into your config file:
-
-```json
-{
-  "mcpServers": {
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-#### 3. Add Your Gateway API Key
-
-Replace `GATEWAY_API_KEY` with your API key from [Subgraph Studio](https://thegraph.com/studio/).
-
-#### 4. Save and Restart
-
-Once you've entered your Gateway API key into your settings, save the file and restart Claude Desktop.
-
-### Option 2: Building from Source
-
-#### Requirements
-
-- Rust (latest stable version recommended: 1.75+)
-  ```bash
-  curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
-  ```
-  Follow the on-screen instructions. For other platforms, see the [official Rust installation guide](https://www.rust-lang.org/tools/install).
-
-#### Installation Steps
-
-1. **Clone and Build the Repository**
-
-   ```bash
-   git clone git@github.com:graphops/subgraph-mcp.git
-   cd subgraph-mcp
-   cargo build --release
-   ```
-
-2. **Find the Command Path**
-
-   After building, the executable will be located at `target/release/subgraph-mcp` inside your project directory.
-   - Navigate to your `subgraph-mcp` directory in terminal
-   - Run `pwd` to get the full path
-   - Combine the output with `/target/release/subgraph-mcp`
-
-3. **Configure Claude Desktop**
-
-   Open your `claude_desktop_config.json` file as described above and add:
-
-   ```json
-   {
-     "mcpServers": {
-       "subgraph": {
-         "command": "/path/to/your/subgraph-mcp/target/release/subgraph-mcp",
-         "env": {
-           "GATEWAY_API_KEY": "your-api-key-here"
-         }
-       }
-     }
-   }
-   ```
-
-   Replace `/path/to/your/subgraph-mcp/target/release/subgraph-mcp` with the actual path to the compiled binary.
-
-## Using The Graph Resource in Claude
-
-After configuring Claude Desktop:
-
-1. Restart Claude Desktop
-2. Start a new conversation
-3. Click on the context menu (top right)
-4. Add "Subgraph Server Instructions" as a resource by adding `graphql://subgraph` to your chat context
-
-> **Important**: Claude Desktop may not automatically utilize the Subgraph MCP. You must manually add "Subgraph Server Instructions" resource to your chat context for each conversation where you want to use it.
-
-## Troubleshooting
-
-To enable logs for the MCP when using the npx option, add the `--verbose true` option to your args array.
-
-## Available Subgraph Tools and Usage
-
-The Subgraph MCP provides several tools for interacting with Subgraphs:
-
-### Schema Retrieval Tools
-
-- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
-- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
-- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
-
-### Query Execution Tools
-
-- **Execute query by deployment ID/IPFS hash**: Run GraphQL queries against specific, immutable deployments
-- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
-
-### Discovery Tools
-
-- **Search subgraphs by keyword**: Find subgraphs by keyword in their display names, ordered by signal
-- **Get deployment 30-day query counts**: Get aggregate query count over the last 30 days for multiple subgraph deployments
-- **Get top Subgraph deployments for a contract**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain, ordered by query fees
-
-## Key Identifier Types
-
-- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a subgraph. Use `execute_query_by_subgraph_id` or `get_schema_by_subgraph_id`.
-- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment. Use `execute_query_by_deployment_id` or `get_schema_by_deployment_id`.
-- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific, immutable deployment. Use `execute_query_by_deployment_id` (the gateway treats it like a deployment ID for querying) or `get_schema_by_ipfs_hash`.
-
-## Benefits of Natural Language Queries
-
-One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Claude will:
-
-1. Understand your goal (lookup, find Subgraphs, query, get schema)
-2. Find relevant deployments if needed
-3. Fetch and interpret the Subgraph schema
-4. Convert your question into an appropriate GraphQL query
-5. Execute the query and present the results in a readable format
-
-### Example Natural Language Queries
-
-```
-What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
-```
-
-```
-Which tokens have the highest market cap in this Subgraph?
-```
-
-```
-Show me the most recent 5 swaps for the USDC/ETH pair
-```
-
-```
-Find the top subgraphs for contract 0x1f98431c8ad98523631ae4a59f267346ea31f984 on arbitrum-one
-```
diff --git a/website/src/pages/zh/subgraphs/mcp/cline.mdx b/website/src/pages/zh/subgraphs/mcp/cline.mdx
deleted file mode 100644
index 156221d9a127..000000000000
--- a/website/src/pages/zh/subgraphs/mcp/cline.mdx
+++ /dev/null
@@ -1,99 +0,0 @@
----
-title: Cline
----
-
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Cline to interact directly with Subgraphs on The Graph Network. This integration allows you to explore Subgraph schemas, execute GraphQL queries, and find relevant Subgraphs for specific contracts—all through natural language conversations with Cline.
-
-## Prerequisites
-
-- [Cline](https://cline.bot/) installed (latest version)
-- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
-
-## Configuration Steps
-
-### 1. Open Configuration File
-
-Create or edit your `cline_mcp_settings.json` file.
-
-> **MCP Servers** > **Installed** > **Configure MCP Servers**
-
-### 2. Add Configuration
-
-```json
-{
-  "mcpServers": {
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-### 3. Add Your API Key
-
-Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
-
-## Using The Graph Resource in Cline
-
-After configuring Cline:
-
-1. Restart Cline
-2. Start a new conversation
-3. Enable the Subgraph MCP from the context menu
-4. Add "Subgraph Server Instructions" as a resource to your chat context
-
-## Available Tools and Usage
-
-The Subgraph MCP provides several tools for interacting with Subgraphs:
-
-### Schema Retrieval Tools
-
-- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
-- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
-- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
-
-### Query Execution Tools
-
-- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
-- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
-
-### Discovery Tools
-
-- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
-
-## Natural Language Queries
-
-One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cline will:
-
-1. Understand your goal (lookup, find Subgraphs, query, get schema)
-2. Find relevant deployments if needed
-3. Fetch and interpret the Subgraph schema
-4. Convert your question into an appropriate GraphQL query
-5. Execute the query and present the results in a readable format
-
-### Example Natural Language Queries
-
-```
-What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
-```
-
-```
-Which tokens have the highest market cap in this Subgraph?
-```
-
-```
-Show me the most recent 5 swaps for the USDC/ETH pair
-```
-
-## Key Identifier Types
-
-When working with Subgraphs, you'll encounter different types of identifiers:
-
-- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
-- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
-- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/zh/subgraphs/mcp/cursor.mdx b/website/src/pages/zh/subgraphs/mcp/cursor.mdx
deleted file mode 100644
index 298f43ece048..000000000000
--- a/website/src/pages/zh/subgraphs/mcp/cursor.mdx
+++ /dev/null
@@ -1,94 +0,0 @@
----
-title: Cursor
----
-
-The Subgraph [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server enables Cursor to interact directly with Subgraphs on The Graph Network. This integration allows you to explore Subgraph schemas, execute GraphQL queries, and find relevant Subgraphs for specific contracts—all through natural language conversations with Cursor.
-
-## Prerequisites
-
-- [Cursor](https://www.cursor.com/) installed (latest version)
-- A Gateway API key from [Subgraph Studio](https://thegraph.com/studio/)
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path
-
-## Configuration Steps
-
-### 1. Open Configuration File
-
-Create or edit your `~/.cursor/mcp.json` file.
-
-> **Cursor Settings** > **MCP** > **Add new global MCP Server**
-
-### 2. Add Configuration
-
-```json
-{
-  "mcpServers": {
-    "subgraph": {
-      "command": "npx",
-      "args": ["mcp-remote", "--header", "Authorization:${AUTH_HEADER}", "https://subgraphs.mcp.thegraph.com/sse"],
-      "env": {
-        "AUTH_HEADER": "Bearer GATEWAY_API_KEY"
-      }
-    }
-  }
-}
-```
-
-### 3. Add Your API Key
-
-Replace `GATEWAY_API_KEY` with your API key from Subgraph Studio.
-
-### 4. Restart Cursor
-
-Restart Cursor, and start a new chat.
-
-## Available Subgraph Tools and Usage
-
-The Subgraph MCP provides several tools for interacting with Subgraphs:
-
-### Schema Retrieval Tools
-
-- **Get schema by deployment ID**: Access the GraphQL schema using a deployment ID (0x...)
-- **Get schema by Subgraph ID**: Access the schema for the current deployment of a Subgraph (5zvR82...)
-- **Get schema by IPFS hash**: Access the schema using a Subgraph's IPFS manifest hash (Qm...)
-
-### Query Execution Tools
-
-- **Execute query by deployment ID**: Run GraphQL queries against specific, immutable deployments
-- **Execute query by Subgraph ID**: Run GraphQL queries against the latest version of a Subgraph
-
-### Discovery Tools
-
-- **Get top Subgraph deployments**: Find the top 3 Subgraph deployments indexing a specific contract on a particular chain
-
-## Benefits of Natural Language Queries
-
-One of the most powerful features of the Subgraph MCP integration is the ability to ask questions in natural language. Cursor will:
-
-1. Understand your goal (lookup, find Subgraphs, query, get schema)
-2. Find relevant deployments if needed
-3. Fetch and interpret the Subgraph schema
-4. Convert your question into an appropriate GraphQL query
-5. Execute the query and present the results in a readable format
-
-### Example Natural Language Queries
-
-```
-What are the pairs with maximum volume on deployment 0xde0a7b5368f846f7d863d9f64949b688ad9818243151d488b4c6b206145b9ea3?
-```
-
-```
-Which tokens have the highest market cap in this Subgraph?
-```
-
-```
-Show me the most recent 5 swaps for the USDC/ETH pair
-```
-
-## Key Identifier Types
-
-When working with Subgraphs, you'll encounter different types of identifiers:
-
-- **Subgraph ID** (e.g., `5zvR82...`): Logical identifier for a Subgraph
-- **Deployment ID** (e.g., `0x4d7c...`): Identifier for a specific, immutable deployment
-- **IPFS Hash** (e.g., `QmTZ8e...`): Identifier for the manifest of a specific deployment
diff --git a/website/src/pages/zh/substreams/_meta.js b/website/src/pages/zh/substreams/_meta.js
index a8ee04618eae..658bb8c213c6 100644
--- a/website/src/pages/zh/substreams/_meta.js
+++ b/website/src/pages/zh/substreams/_meta.js
@@ -5,5 +5,4 @@ export default {
   introduction: '',
   developing: titles.developing ?? '',
   publishing: '',
-  sps: titles.sps ?? '',
 }
diff --git a/website/src/pages/zh/token-api/_meta-titles.json b/website/src/pages/zh/token-api/_meta-titles.json
index b14132282d69..5a0cde8be5a5 100644
--- a/website/src/pages/zh/token-api/_meta-titles.json
+++ b/website/src/pages/zh/token-api/_meta-titles.json
@@ -1,6 +1,7 @@
 {
   "mcp": "MCP",
   "evm": "EVM端点",
+  "svm": "SVM Endpoints",
   "monitoring": "监控端点",
   "faq": "常见问题"
 }
diff --git a/website/src/pages/zh/token-api/_meta.js b/website/src/pages/zh/token-api/_meta.js
index f67576d7f612..fb7f7334ea0c 100644
--- a/website/src/pages/zh/token-api/_meta.js
+++ b/website/src/pages/zh/token-api/_meta.js
@@ -2,8 +2,8 @@ import titles from './_meta-titles.json'
 
 export default {
   'quick-start': '',
-  mcp: titles.mcp ?? '',
   evm: titles.evm ?? '',
+  svm: titles.svm ?? '',
   monitoring: titles.monitoring ?? '',
   faq: '',
 }
diff --git a/website/src/pages/zh/token-api/mcp/_meta.js b/website/src/pages/zh/token-api/mcp/_meta.js
deleted file mode 100644
index 8630d4da27b3..000000000000
--- a/website/src/pages/zh/token-api/mcp/_meta.js
+++ /dev/null
@@ -1,5 +0,0 @@
-export default {
-  claude: '',
-  cline: '',
-  cursor: '',
-}
diff --git a/website/src/pages/zh/token-api/mcp/claude.mdx b/website/src/pages/zh/token-api/mcp/claude.mdx
deleted file mode 100644
index 276fb287cbd1..000000000000
--- a/website/src/pages/zh/token-api/mcp/claude.mdx
+++ /dev/null
@@ -1,58 +0,0 @@
----
-title: 使用 Claude 桌面通过 MCP 访问 Token API
-sidebarTitle: Claude 桌面
----
-
-## 先决条件
-
-- [Claude Desktop](https://claude.ai/download) 已安装。
-- 一个来自[The Graph市场]的[JWT 代币](/token-api/quick-start) (https://thegraph.market/)。
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) 或 [`bunx`](https://bun.sh/) 已安装并在您的路径中可用。
-- `@pinax/mcp`软件包需要 Node 18+，因为它依赖于内置的`fetch()` / `Headers`，这些软件包在Node 17或更高版本中不可用。 您可能需要指定一个到最新节点版本的确切路径， 或卸载以前版本的节点以确保`@pinax/mcp`使用正确版本。
-
-![Claude Desktop的设置面板显示MCP服务器配置选项。](/img/claude-preview-token-api.png)
-
-## 配置
-
-创建或编辑您的 `claude_desktop_config.json` 文件。
-
-> **设置** > **开发者** > **编辑配置**
-
-- OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
-- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
-- Linux: `.config/Claude/claude_desktop_config.json`
-
-```json label="claude_desktop_config.json"
-{
-  "mcpServers": {
-    "token-api": {
-      "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
-      "env": {
-        "ACCESS_TOKEN": "<https://thegraph.market JWT Access Token>"
-      }
-    }
-  }
-}
-```
-
-## 故障排除
-
-要启用 MCP日志，请使用 `--verbose true` 选项。
-
-### ENOENT
-
-！[Claude Desktop中的错误对话框显示“ENOENT”系统错误，表示在系统路径中找不到npx/bunx命令。](/img/claude-ENOENT.png)
-
-请尝试使用命令的完整路径：
-
-- 运行`哪个npx` 或 `哪个bunx` 来获取命令的路径。
-- 将配置文件中的`npx`或`bunx`替换为完整路径(例如`/home/user/bin/bunx`)。
-
-### 与服务器连接已断开
-
-![Claude 桌面中显示“服务器断开连接”消息的连接错误通知。](/img/claude-server-disconnect.png)
-
-如果`https://token-api.mcp.thegraph.com/sse`，请在导航器中以其他方式检查您的 API 密钥。
-
-> 您总是可以查看`Claude/logs/mcp.log`和`Claude/logs/mcp-server-pinax.log`下的完整日志以了解更多详情。
diff --git a/website/src/pages/zh/token-api/mcp/cline.mdx b/website/src/pages/zh/token-api/mcp/cline.mdx
deleted file mode 100644
index 9f7edd2a5e5e..000000000000
--- a/website/src/pages/zh/token-api/mcp/cline.mdx
+++ /dev/null
@@ -1,52 +0,0 @@
----
-title: 通过 MCP 使用 Cline 访问代币API
-sidebarTitle: Cline
----
-
-## 先决条件
-
-- [Cline](https://cline.bot/) 已安装。
-- 一个来自[The Graph市场]的[JWT 代币](/token-api/quick-start) (https://thegraph.market/)。
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) 或 [`bunx`](https://bun.sh/) 已安装并在您的路径中可用。
-- `@pinax/mcp`软件包需要 Node 18+，因为它依赖于内置的`fetch()` / `Headers`，这些软件包在Node 17或更高版本中不可用。 您可能需要指定一个到最新节点版本的确切路径， 或卸载以前版本的节点以确保`@pinax/mcp`使用正确版本。
-
-![Screenshot of Cline's MCP server configuration interface displaying the JSON settings file with mcp-pinax server details visible.](/img/cline-preview-token-api.png)
-
-## 配置
-
-创建或编辑您的 `claude_desktop_config.json` 文件。
-
-> **MCP 服务器** > **安装** > **配置 MCP 服务器**
-
-```json label="cline_mcp_settings.json"
-{
-  "mcpServers": {
-    "mcp-pinax": {
-      "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
-      "env": {
-        "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
-      }
-    }
-  }
-}
-```
-
-## 故障排除
-
-要启用 MCP日志，请使用 `--verbose true` 选项。
-
-### ENOENT
-
-![Cline error dialog showing 'ENOENT' system alert.](/img/cline-error.png)
-
-请尝试使用命令的完整路径：
-
-- 运行`哪个npx` 或 `哪个bunx` 来获取命令的路径。
-- 将配置文件中的`npx`或`bunx`替换为完整路径(例如`/home/user/bin/bunx`)。
-
-### 与服务器连接已断开
-
-![Cline 连接错误通知显示服务器断开连接警告。](/img/cline-missing-variables.png)
-
-如果`https://token-api.mcp.thegraph.com/sse`，请在导航器中以其他方式检查您的 API 密钥。
diff --git a/website/src/pages/zh/token-api/mcp/cursor.mdx b/website/src/pages/zh/token-api/mcp/cursor.mdx
deleted file mode 100644
index 6623607e565c..000000000000
--- a/website/src/pages/zh/token-api/mcp/cursor.mdx
+++ /dev/null
@@ -1,50 +0,0 @@
----
-title: Using Cursor to Access the Token API via MCP
-sidebarTitle: Cursor
----
-
-## 先决条件
-
-- [Cursor](https://www.cursor.com/) installed.
-- 一个来自[The Graph市场]的[JWT 代币](/token-api/quick-start) (https://thegraph.market/)。
-- [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) 或 [`bunx`](https://bun.sh/) 已安装并在您的路径中可用。
-- `@pinax/mcp`软件包需要 Node 18+，因为它依赖于内置的`fetch()` / `Headers`，这些软件包在Node 17或更高版本中不可用。 您可能需要指定一个到最新节点版本的确切路径， 或卸载以前版本的节点以确保`@pinax/mcp`使用正确版本。
-
-![Screenshot of Cursor's MCP configuration panel.](/img/cursor-preview-token-api.png)
-
-## 配置
-
-Create or edit your `~/.cursor/mcp.json` file.
-
-> **Cursor Settings** > **MCP** > **Add new global MCP Server**
-
-```json label="mcp.json"
-{
-  "mcpServers": {
-    "mcp-pinax": {
-      "command": "npx",
-      "args": ["@pinax/mcp", "--sse-url", "https://token-api.mcp.thegraph.com/sse"],
-      "env": {
-        "ACCESS_TOKEN": "<JWT Token from thegraph.market>"
-      }
-    }
-  }
-}
-```
-
-## 故障排除
-
-![Cursor IDE error notification that reads, "Failed to create client"](/img/cursor-error.png)
-
-要启用 MCP日志，请使用 `--verbose true` 选项。
-
-### ENOENT
-
-请尝试使用命令的完整路径：
-
-- 运行`哪个npx` 或 `哪个bunx` 来获取命令的路径。
-- 将配置文件中的`npx`或`bunx`替换为完整路径(例如`/home/user/bin/bunx`)。
-
-### 与服务器连接已断开
-
-如果`https://token-api.mcp.thegraph.com/sse`，请在导航器中以其他方式检查您的 API 密钥。
diff --git a/website/src/pages/zh/token-api/svm/_meta.js b/website/src/pages/zh/token-api/svm/_meta.js
new file mode 100644
index 000000000000..1a48b82fcbf1
--- /dev/null
+++ b/website/src/pages/zh/token-api/svm/_meta.js
@@ -0,0 +1,5 @@
+export default {
+  'get-balances-svm': '',
+  'get-transfers-svm': '',
+  'get-swaps-svm': '',
+}
diff --git a/website/src/pages/zh/token-api/svm/get-balances-svm.mdx b/website/src/pages/zh/token-api/svm/get-balances-svm.mdx
new file mode 100644
index 000000000000..c2946c190bf9
--- /dev/null
+++ b/website/src/pages/zh/token-api/svm/get-balances-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Balances
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getBalancesSvm
+---
+
+Provides Solana tokens balances by token account address.
diff --git a/website/src/pages/zh/token-api/svm/get-swaps-svm.mdx b/website/src/pages/zh/token-api/svm/get-swaps-svm.mdx
new file mode 100644
index 000000000000..95282a38ac9f
--- /dev/null
+++ b/website/src/pages/zh/token-api/svm/get-swaps-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Swap Events
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getSwapsSvm
+---
+
+Provides Raydium swap events.
diff --git a/website/src/pages/zh/token-api/svm/get-transfers-svm.mdx b/website/src/pages/zh/token-api/svm/get-transfers-svm.mdx
new file mode 100644
index 000000000000..5335cdddf418
--- /dev/null
+++ b/website/src/pages/zh/token-api/svm/get-transfers-svm.mdx
@@ -0,0 +1,9 @@
+---
+title: Transfers Events
+template:
+  type: openApi
+  apiId: tokenApi
+  operationId: getTransfersSvm
+---
+
+Provides SVM transfer events.

From e27eff8dfddfcdae03529fa71dc7367431e30362 Mon Sep 17 00:00:00 2001
From: Andrew <36178664+UrsaPolarisRecords@users.noreply.github.com>
Date: Thu, 10 Jul 2025 09:30:46 -0700
Subject: [PATCH 21/36] Update claude.mdx (#1006)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* Update claude.mdx

- Removed outdated screenshot
- Removed outdated instructions (no more developer tab under settings, edit config file only)
- Added clarification for how to add logging in config file

* Update claude.mdx

* Update website/src/pages/en/ai-suite/token-api-mcp/claude.mdx

---------

Co-authored-by: Benoît Rouleau <benoit.rouleau@icloud.com>
---
 .../src/pages/en/ai-suite/token-api-mcp/claude.mdx   | 12 +++---------
 1 file changed, 3 insertions(+), 9 deletions(-)

diff --git a/website/src/pages/en/ai-suite/token-api-mcp/claude.mdx b/website/src/pages/en/ai-suite/token-api-mcp/claude.mdx
index 3e21f4d7e165..4fe6f0318776 100644
--- a/website/src/pages/en/ai-suite/token-api-mcp/claude.mdx
+++ b/website/src/pages/en/ai-suite/token-api-mcp/claude.mdx
@@ -10,14 +10,10 @@ sidebarTitle: Claude Desktop
 - [`npx`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [`bunx`](https://bun.sh/) installed and available in your path.
 - The `@pinax/mcp` package requires Node 18+, as it relies on built-in `fetch()` / `Headers`, which are not available in Node 17 or older. You may need to specify an exact path to an up-to-date Node version, or uninstall previous versions of Node to ensure `@pinax/mcp` uses the correct version.
 
-![Screenshot of Claude Desktop's settings panel showing the MCP server configuration option.](/img/claude-preview-token-api.png)
-
 ## Configuration
 
 Create or edit your `claude_desktop_config.json` file.
 
-> **Settings** > **Developer** > **Edit Config**
-
 - OSX: `~/Library/Application Support/Claude/claude_desktop_config.json`
 - Windows: `%APPDATA%\Claude\claude_desktop_config.json`
 - Linux: `.config/Claude/claude_desktop_config.json`
@@ -38,7 +34,7 @@ Create or edit your `claude_desktop_config.json` file.
 
 ## Troubleshooting
 
-To enable logs for the MCP, use the `--verbose true` option.
+To enable logs for the MCP, add the option `"--verbose": "true"` under `"args"`.
 
 ### ENOENT
 
@@ -46,13 +42,11 @@ To enable logs for the MCP, use the `--verbose true` option.
 
 Try to use the full path of the command instead:
 
-- Run `which npx` or `which bunx` to get the path of the command.
+- Run `which npx` or `which bunx` in the command line interface to get the path of the command.
 - Replace `npx` or `bunx` in the configuration file with the full path (e.g. `/home/user/bin/bunx`).
 
 ### Server disconnected
 
 ![Connection error notification in Claude Desktop displaying 'Server disconnected' message.](/img/claude-server-disconnect.png)
 
-Double-check your API key otherwise look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.
-
-> You can always have a look at the full logs under `Claude/logs/mcp.log` and `Claude/logs/mcp-server-pinax.log` for more details.
+Double-check your API key. Otherwise, look in your navigator if `https://token-api.mcp.thegraph.com/sse` is reachable.

From bf65e7552efe9823209bad26fb03243bc22e5f59 Mon Sep 17 00:00:00 2001
From: Nathan <58645278+nathan-websculpt@users.noreply.github.com>
Date: Thu, 10 Jul 2025 12:03:39 -0500
Subject: [PATCH 22/36] Docs/patch 2 (#1003)

* mistake in: 'with the ability to run integrate with any GraphQL' -- 'run' removed

* misuse of apostrophe in: its

* fixed two mistakes in: "We can ship a several built-in strategies, along with a simple interfaces to allow developers to write their own."

* typo fix: 'streame'

* fixed: "Recent versions of the Graph CLI supports" - versions is the subject, so 'supports' becomes 'support'

* 'command' being the subject - 'creates' becomes 'create'

* missing 'you' - 'allows' needs a noun

* 'handler will be run every block' changed to 'handler will be run on every block'

* 'does' changed to 'do'

* 'contain' changed to 'contains'

* pluralization of 'depend'

* subject/verbs were off

* fixed sentence

* fixed sentence

* api page typo: 'created withing a block'

* api: missing period
---
 .../pages/en/subgraphs/developing/creating/advanced.mdx   | 2 +-
 .../en/subgraphs/developing/creating/graph-ts/api.mdx     | 4 ++--
 .../en/subgraphs/developing/creating/install-the-cli.mdx  | 4 ++--
 .../pages/en/subgraphs/developing/creating/ql-schema.mdx  | 2 +-
 .../subgraphs/developing/creating/subgraph-manifest.mdx   | 8 ++++----
 .../en/subgraphs/querying/graph-client/architecture.md    | 6 +++---
 .../src/pages/en/subgraphs/querying/graph-client/live.md  | 2 +-
 7 files changed, 14 insertions(+), 14 deletions(-)

diff --git a/website/src/pages/en/subgraphs/developing/creating/advanced.mdx b/website/src/pages/en/subgraphs/developing/creating/advanced.mdx
index 5f6031d97c98..57007f5dfee1 100644
--- a/website/src/pages/en/subgraphs/developing/creating/advanced.mdx
+++ b/website/src/pages/en/subgraphs/developing/creating/advanced.mdx
@@ -4,7 +4,7 @@ title: Advanced Subgraph Features
 
 ## Overview
 
-Add and implement advanced Subgraph features to enhanced your Subgraph's built.
+Add and implement advanced Subgraph features to enhance your Subgraph's build.
 
 Starting from `specVersion` `0.0.4`, Subgraph features must be explicitly declared in the `features` section at the top level of the manifest file, using their `camelCase` name, as listed in the table below:
 
diff --git a/website/src/pages/en/subgraphs/developing/creating/graph-ts/api.mdx b/website/src/pages/en/subgraphs/developing/creating/graph-ts/api.mdx
index c36983307869..253184b50fac 100644
--- a/website/src/pages/en/subgraphs/developing/creating/graph-ts/api.mdx
+++ b/website/src/pages/en/subgraphs/developing/creating/graph-ts/api.mdx
@@ -270,7 +270,7 @@ As the entity may not exist in the store yet, the `load` method returns a value
 
 > Note: Loading entities is only necessary if the changes made in the mapping depend on the previous data of an entity. See the next section for the two ways of updating existing entities.
 
-#### Looking up entities created withing a block
+#### Looking up entities created within a block
 
 As of `graph-node` v0.31.0, `@graphprotocol/graph-ts` v0.30.0 and `@graphprotocol/graph-cli` v0.49.0 the `loadInBlock` method is available on all entity types.
 
@@ -496,7 +496,7 @@ export function handleTransfer(event: TransferEvent) {
 }
 ```
 
-`Transfer` is aliased to `TransferEvent` here to avoid a naming conflict with the entity type
+`Transfer` is aliased to `TransferEvent` here to avoid a naming conflict with the entity type.
 
 As long as the `ERC20Contract` on Ethereum has a public read-only function called `symbol`, it can be called with `.symbol()`. For public state variables a method with the same name is created automatically.
 
diff --git a/website/src/pages/en/subgraphs/developing/creating/install-the-cli.mdx b/website/src/pages/en/subgraphs/developing/creating/install-the-cli.mdx
index 904aa6cd172b..eeb82acd8c98 100644
--- a/website/src/pages/en/subgraphs/developing/creating/install-the-cli.mdx
+++ b/website/src/pages/en/subgraphs/developing/creating/install-the-cli.mdx
@@ -68,7 +68,7 @@ graph init <SUBGRAPH_SLUG> --from-example=example-subgraph
 
 `dataSources` are key components of Subgraphs. They define the sources of data that the Subgraph indexes and processes. A `dataSource` specifies which smart contract to listen to, which events to process, and how to handle them.
 
-Recent versions of the Graph CLI supports adding new `dataSources` to an existing Subgraph through the `graph add` command:
+Recent versions of the Graph CLI support adding new `dataSources` to an existing Subgraph through the `graph add` command:
 
 ```sh
 graph add <address> [<subgraph-manifest default: "./subgraph.yaml">]
@@ -83,7 +83,7 @@ Options:
 
 #### Specifics
 
-The `graph add` command will fetch the ABI from Etherscan (unless an ABI path is specified with the `--abi` option) and creates a new `dataSource`, similar to how the `graph init` command creates a `dataSource` `--from-contract`, updating the schema and mappings accordingly. This allows you to index implementation contracts from their proxy contracts.
+The `graph add` command will fetch the ABI from Etherscan (unless an ABI path is specified with the `--abi` option) and create a new `dataSource`, similar to how the `graph init` command creates a `dataSource` `--from-contract`, updating the schema and mappings accordingly. This allows you to index implementation contracts from their proxy contracts.
 
 - The `--merge-entities` option identifies how the developer would like to handle `entity` and `event` name conflicts:
   - If `true`: the new `dataSource` should use existing `eventHandlers` & `entities`.
diff --git a/website/src/pages/en/subgraphs/developing/creating/ql-schema.mdx b/website/src/pages/en/subgraphs/developing/creating/ql-schema.mdx
index 7e0f889447c5..2552e08e8d9e 100644
--- a/website/src/pages/en/subgraphs/developing/creating/ql-schema.mdx
+++ b/website/src/pages/en/subgraphs/developing/creating/ql-schema.mdx
@@ -62,7 +62,7 @@ Entity fields can be defined as required or optional. Required fields are indica
 Null value resolved for non-null field 'name'
 ```
 
-Each entity must have an `id` field, which must be of type `Bytes!` or `String!`. It is generally recommended to use `Bytes!`, unless the `id` contains human-readable text, since entities with `Bytes!` id's will be faster to write and query as those with a `String!` `id`. The `id` field serves as the primary key, and needs to be unique among all entities of the same type. For historical reasons, the type `ID!` is also accepted and is a synonym for `String!`.
+Each entity must have an `id` field, which must be of type `Bytes!` or `String!`. It is generally recommended to use `Bytes!`, unless the `id` contains human-readable text, since entities with `Bytes!` id's will be faster to write and query than those with a `String!` `id`. The `id` field serves as the primary key, and needs to be unique among all entities of the same type. For historical reasons, the type `ID!` is also accepted and is a synonym for `String!`.
 
 For some entity types the `id` for `Bytes!` is constructed from the id's of two other entities; that is possible using `concat`, e.g., `let id = left.id.concat(right.id) ` to form the id from the id's of `left` and `right`. Similarly, to construct an id from the id of an existing entity and a counter `count`, `let id = left.id.concatI32(count)` can be used. The concatenation is guaranteed to produce unique id's as long as the length of `left` is the same for all such entities, for example, because `left.id` is an `Address`.
 
diff --git a/website/src/pages/en/subgraphs/developing/creating/subgraph-manifest.mdx b/website/src/pages/en/subgraphs/developing/creating/subgraph-manifest.mdx
index 7273c0a30fc9..88d6f1d87a82 100644
--- a/website/src/pages/en/subgraphs/developing/creating/subgraph-manifest.mdx
+++ b/website/src/pages/en/subgraphs/developing/creating/subgraph-manifest.mdx
@@ -93,7 +93,7 @@ The important entries to update for the manifest are:
 
 - `indexerHints.prune`: Defines the retention of historical block data for a Subgraph. See [prune](#prune) in [indexerHints](#indexer-hints) section.
 
-- `dataSources.source`: the address of the smart contract the Subgraph sources, and the ABI of the smart contract to use. The address is optional; omitting it allows to index matching events from all contracts.
+- `dataSources.source`: the address of the smart contract the Subgraph sources, and the ABI of the smart contract to use. The address is optional; omitting it allows you to index matching events from all contracts.
 
 - `dataSources.source.startBlock`: the optional number of the block that the data source starts indexing from. In most cases, we suggest using the block in which the contract was created.
 
@@ -109,7 +109,7 @@ The important entries to update for the manifest are:
 
 - `dataSources.mapping.callHandlers`: lists the smart contract functions this Subgraph reacts to and handlers in the mapping that transform the inputs and outputs to function calls into entities in the store.
 
-- `dataSources.mapping.blockHandlers`: lists the blocks this Subgraph reacts to and handlers in the mapping to run when a block is appended to the chain. Without a filter, the block handler will be run every block. An optional call-filter can be provided by adding a `filter` field with `kind: call` to the handler. This will only run the handler if the block contains at least one call to the data source contract.
+- `dataSources.mapping.blockHandlers`: lists the blocks this Subgraph reacts to and handlers in the mapping to run when a block is appended to the chain. Without a filter, the block handler will be run on every block. An optional call-filter can be provided by adding a `filter` field with `kind: call` to the handler. This will only run the handler if the block contains at least one call to the data source contract.
 
 A single Subgraph can index data from multiple smart contracts. Add an entry for each contract from which data needs to be indexed to the `dataSources` array.
 
@@ -153,7 +153,7 @@ While events provide an effective way to collect relevant changes to the state o
 
 Call handlers will only trigger in one of two cases: when the function specified is called by an account other than the contract itself or when it is marked as external in Solidity and called as part of another function in the same contract.
 
-> **Note:** Call handlers currently depend on the Parity tracing API. Certain networks, such as BNB chain and Arbitrum, does not support this API. If a Subgraph indexing one of these networks contain one or more call handlers, it will not start syncing. Subgraph developers should instead use event handlers. These are far more performant than call handlers, and are supported on every evm network.
+> **Note:** Call handlers currently depend on the Parity tracing API. Certain networks, such as BNB chain and Arbitrum, do not support this API. If a Subgraph indexing one of these networks contains one or more call handlers, it will not start syncing. Subgraph developers should instead use event handlers. These are far more performant than call handlers, and are supported on every evm network.
 
 ### Defining a Call Handler
 
@@ -218,7 +218,7 @@ filter:
 
 _The defined handler will be called once for every block which contains a call to the contract (data source) the handler is defined under._
 
-> **Note:** The `call` filter currently depend on the Parity tracing API. Certain networks, such as BNB chain and Arbitrum, does not support this API. If a Subgraph indexing one of these networks contain one or more block handlers with a `call` filter, it will not start syncing.
+> **Note:** The `call` filter currently depends on the Parity tracing API. Certain networks, such as BNB chain and Arbitrum, do not support this API. If a Subgraph indexing one of these networks contains one or more block handlers with a `call` filter, it will not start syncing.
 
 The absence of a filter for a block handler will ensure that the handler is called every block. A data source can only contain one block handler for each filter type.
 
diff --git a/website/src/pages/en/subgraphs/querying/graph-client/architecture.md b/website/src/pages/en/subgraphs/querying/graph-client/architecture.md
index 99098cd77b95..af38feb8923e 100644
--- a/website/src/pages/en/subgraphs/querying/graph-client/architecture.md
+++ b/website/src/pages/en/subgraphs/querying/graph-client/architecture.md
@@ -5,7 +5,7 @@ To address the need to support a distributed network, we plan to take several ac
 1. Compose multiple Subgraphs (on the client-side)
 2. Fallback to multiple indexers/sources/hosted services
 3. Automatic/Manual source picking strategy
-4. Agnostic core, with the ability to run integrate with any GraphQL client
+4. Agnostic core, with the ability to integrate with any GraphQL client
 
 ## Standalone mode
 
@@ -44,7 +44,7 @@ graph LR;
 
 ## Subgraph Execution Strategies
 
-Within every Subgraph defined as source, there will be a way to define it's source(s) indexer and the querying strategy, here are a few options:
+Within every Subgraph defined as source, there will be a way to define its source(s) indexer and the querying strategy, here are a few options:
 
 ```mermaid
 graph LR;
@@ -85,7 +85,7 @@ graph LR;
     end
 ```
 
-> We can ship a several built-in strategies, along with a simple interfaces to allow developers to write their own.
+> We can ship several built-in strategies, along with a simple interface to allow developers to write their own.
 
 To take the concept of strategies to the extreme, we can even build a magical layer that does subscription-as-query, with any hook, and provide a smooth DX for dapps:
 
diff --git a/website/src/pages/en/subgraphs/querying/graph-client/live.md b/website/src/pages/en/subgraphs/querying/graph-client/live.md
index e6f726cb4352..761f788c75a7 100644
--- a/website/src/pages/en/subgraphs/querying/graph-client/live.md
+++ b/website/src/pages/en/subgraphs/querying/graph-client/live.md
@@ -38,6 +38,6 @@ query ExampleQuery @live(interval: 5000) {
 
 ## Integrations
 
-Since the entire network layer (along with the `@live` mechanism) is implemented inside `graph-client` core, you can use Live queries with every GraphQL client (such as Urql or Apollo-Client), as long as it supports streame responses (`AsyncIterable`).
+Since the entire network layer (along with the `@live` mechanism) is implemented inside `graph-client` core, you can use Live queries with every GraphQL client (such as Urql or Apollo-Client), as long as it supports streamed responses (`AsyncIterable`).
 
 No additional setup is required for GraphQL clients cache updates.

From e609a757df15be54fd23295aa5ed04a91b0e33cb Mon Sep 17 00:00:00 2001
From: Nathan <58645278+nathan-websculpt@users.noreply.github.com>
Date: Thu, 10 Jul 2025 12:34:01 -0500
Subject: [PATCH 23/36] Docs/patch 1 (#1001)

* explorer.mdx mistake: 'In the The Curators table'

* best-practices: fixed 'handled by the GraphQL server The GraphQL'

* best-practices: "Dos" is a simple plural (not possessive) - apostrophe removed

* best-practices: removed extra article

* querying-graph-client: sentence had extra words

* 'tools provided' are plural and then described as singular. It was written more like 'this repo' was the subject. Fixed.

* querying-graph-client: fixed comma misuse.

* querying-graph-client: cleaned a sentence up to read more efficiently.

* 'As long as there a no conflicts' changed to 'As long as there are no conflicts'

* 'has' becomes 'have' because 'client libraries like...' is pluralizing the subject.

* 'a' changed to 'an'
---
 website/src/pages/en/subgraphs/explorer.mdx        |  2 +-
 .../pages/en/subgraphs/querying/best-practices.mdx |  6 +++---
 .../en/subgraphs/querying/graph-client/README.md   | 14 +++++++-------
 3 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/website/src/pages/en/subgraphs/explorer.mdx b/website/src/pages/en/subgraphs/explorer.mdx
index 8562562cf357..facd8bb2bad5 100644
--- a/website/src/pages/en/subgraphs/explorer.mdx
+++ b/website/src/pages/en/subgraphs/explorer.mdx
@@ -116,7 +116,7 @@ Curators analyze Subgraphs to identify which Subgraphs are of the highest qualit
   - By depositing GRT, Curators mint curation shares of a Subgraph. As a result, they can earn a portion of the query fees generated by the Subgraph they have signaled on.
   - The bonding curve incentivizes Curators to curate the highest quality data sources.
 
-In the The Curator table listed below you can see:
+In the Curators table listed below you can see:
 
 - The date the Curator started curating
 - The number of GRT that was deposited
diff --git a/website/src/pages/en/subgraphs/querying/best-practices.mdx b/website/src/pages/en/subgraphs/querying/best-practices.mdx
index ec7d4070c18d..f10b57eb4624 100644
--- a/website/src/pages/en/subgraphs/querying/best-practices.mdx
+++ b/website/src/pages/en/subgraphs/querying/best-practices.mdx
@@ -154,7 +154,7 @@ const result = await execute(query, {
 Static strings have several **key advantages**:
 
 - Queries are easier to read, manage, and debug.
-- Variable sanitization is handled by the GraphQL server The GraphQL.
+- Variable sanitization is handled by the GraphQL server.
 - Variables can be cached at the server level.
 - Queries can be statically analyzed by tools (see [GraphQL Essential Tools](/subgraphs/querying/best-practices/#graphql-essential-tools-guides)).
 
@@ -362,9 +362,9 @@ When using the types generation tool, the above query will generate a proper `De
 
 ## GraphQL Fragment Guidelines
 
-### Do's and Don'ts for Fragments
+### Dos and Don'ts for Fragments
 
-1. Fragments cannot be based on a non-applicable types (types without fields).
+1. Fragments cannot be based on non-applicable types (types without fields).
 2. `BigInt` cannot be used as a fragment's base because it's a **scalar** (native "plain" type).
 
 Example:
diff --git a/website/src/pages/en/subgraphs/querying/graph-client/README.md b/website/src/pages/en/subgraphs/querying/graph-client/README.md
index 416cadc13c6f..c6dd72b133d7 100644
--- a/website/src/pages/en/subgraphs/querying/graph-client/README.md
+++ b/website/src/pages/en/subgraphs/querying/graph-client/README.md
@@ -4,7 +4,7 @@ This repo is the home for [The Graph](https://thegraph.com) consumer-side tools
 
 ## Background
 
-The tools provided in this repo are intended to enrich and extend the DX, and add the additional layer required for dApps in order to implement distributed applications.
+The tools provided in this repo are intended to enrich and extend the DX, and add the additional layer required for dApps to implement distributed applications.
 
 Developers who consume data from [The Graph](https://thegraph.com) GraphQL API often need peripherals for making data consumption easier, and also tools that allow using multiple indexers at the same time.
 
@@ -12,7 +12,7 @@ Developers who consume data from [The Graph](https://thegraph.com) GraphQL API o
 
 This library is intended to simplify the network aspect of data consumption for dApps. The tools provided within this repository are intended to run at build time, in order to make execution faster and performant at runtime.
 
-> The tools provided in this repo can be used as standalone, but you can also use it with any existing GraphQL Client!
+> The tools provided in this repo can be used as standalones, but you can also use them with any existing GraphQL Client!
 
 | Status | Feature                                                          | Notes                                                                                                                            |
 | :----: | ---------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
@@ -67,7 +67,7 @@ graphclient build
 
 > Note: you need to run this with `yarn` prefix, or add that as a script in your `package.json`.
 
-This should produce a ready-to-use standalone `execute` function, that you can use for running your application GraphQL operations, you should have an output similar to the following:
+This should produce a ready-to-use standalone `execute` function that you can use for running your application GraphQL operations. You should have an output similar to the following:
 
 ```sh
 GraphClient: Cleaning existing artifacts
@@ -80,7 +80,7 @@ GraphClient: Reading the configuration
 🕸️: Done! => .graphclient
 ```
 
-Now, the `.graphclient` artifact is generated for you, and you can import it directly from your code, and run your queries:
+Now that the `.graphclient` artifact is generated for you, you can import it directly from your code, and run your queries:
 
 ```ts
 import { execute } from '../.graphclient'
@@ -449,7 +449,7 @@ sources:
         endpoint: https://api.thegraph.com/subgraphs/name/graphprotocol/compound-v2
 ```
 
-As long as there a no conflicts across the composed schemas, you can compose it, and then run a single query to both Subgraphs:
+As long as there are no conflicts across the composed schemas, you can compose it, and then run a single query to both Subgraphs:
 
 ```graphql
 query myQuery {
@@ -482,7 +482,7 @@ For advanced use-cases with composition, please refer to the following resources
 
 If your project is written in TypeScript, you can leverage the power of [`TypedDocumentNode`](https://the-guild.dev/blog/typed-document-node) and have a fully-typed GraphQL client experience.
 
-The standalone mode of The GraphQL, and popular GraphQL client libraries like Apollo-Client and urql has built-in support for `TypedDocumentNode`!
+The standalone mode of The GraphQL, and popular GraphQL client libraries like Apollo-Client and urql have built-in support for `TypedDocumentNode`!
 
 The Graph Client CLI comes with a ready-to-use configuration for [GraphQL Code Generator](https://graphql-code-generator.com), and it can generate `TypedDocumentNode` based on your GraphQL operations.
 
@@ -530,7 +530,7 @@ This is helpful since you can implement custom code as part of your GraphQL sche
 
 > This document explains how to add custom mutations, but in fact you can add any GraphQL operation (query/mutation/subscriptions). See [Extending the unified schema article](https://graphql-mesh.com/docs/guides/extending-unified-schema) for more information about this feature.
 
-To get started, define a `additionalTypeDefs` section in your config file:
+To get started, define an `additionalTypeDefs` section in your config file:
 
 ```yaml
 additionalTypeDefs: |

From 15b9e327e9c8cedbcc73f1affdfe3aece4708b63 Mon Sep 17 00:00:00 2001
From: Mitchell Spencer <48880504+mitchhs12@users.noreply.github.com>
Date: Thu, 10 Jul 2025 12:34:23 -0500
Subject: [PATCH 24/36] Updated prices from $40/million to $20/million queries
 in docs (#952)

updated prices from $40/million to $20/million queries
---
 website/src/pages/ar/resources/benefits.mdx | 6 +++---
 website/src/pages/cs/resources/benefits.mdx | 6 +++---
 website/src/pages/de/resources/benefits.mdx | 6 +++---
 website/src/pages/en/resources/benefits.mdx | 6 +++---
 website/src/pages/es/resources/benefits.mdx | 6 +++---
 website/src/pages/fr/resources/benefits.mdx | 4 ++--
 website/src/pages/hi/resources/benefits.mdx | 6 +++---
 website/src/pages/it/resources/benefits.mdx | 6 +++---
 website/src/pages/ja/resources/benefits.mdx | 6 +++---
 website/src/pages/ko/resources/benefits.mdx | 6 +++---
 website/src/pages/mr/resources/benefits.mdx | 6 +++---
 website/src/pages/nl/resources/benefits.mdx | 6 +++---
 website/src/pages/pl/resources/benefits.mdx | 6 +++---
 website/src/pages/pt/resources/benefits.mdx | 6 +++---
 website/src/pages/ro/resources/benefits.mdx | 6 +++---
 website/src/pages/ru/resources/benefits.mdx | 6 +++---
 website/src/pages/sv/resources/benefits.mdx | 6 +++---
 website/src/pages/tr/resources/benefits.mdx | 6 +++---
 website/src/pages/uk/resources/benefits.mdx | 6 +++---
 website/src/pages/ur/resources/benefits.mdx | 6 +++---
 website/src/pages/vi/resources/benefits.mdx | 6 +++---
 website/src/pages/zh/resources/benefits.mdx | 6 +++---
 22 files changed, 65 insertions(+), 65 deletions(-)

diff --git a/website/src/pages/ar/resources/benefits.mdx b/website/src/pages/ar/resources/benefits.mdx
index 00a32f92a1a3..87bd1adc9cdd 100644
--- a/website/src/pages/ar/resources/benefits.mdx
+++ b/website/src/pages/ar/resources/benefits.mdx
@@ -21,7 +21,7 @@ Here is an analysis:
 
 ### Lower & more Flexible Cost Structure
 
-No contracts. No monthly fees. Only pay for the queries you use—with an average cost-per-query of $40 per million queries (~$0.00004 per query). Queries are priced in USD and paid in GRT or credit card.
+No contracts. No monthly fees. Only pay for the queries you use—with an average cost-per-query of $20 per million queries (~$0.00002 per query). Queries are priced in USD and paid in GRT or credit card.
 
 Query costs may vary; the quoted cost is the average at time of publication (March 2024).
 
@@ -47,7 +47,7 @@ Query costs may vary; the quoted cost is the average at time of publication (Mar
 | Query costs | $500 per month | $120 per month |
 | Engineering time<sup>†</sup> | $800 per month | None, built into the network with globally distributed Indexers |
 | Queries per month | Limited to infra capabilities | ~3,000,000 |
-| Cost per query | $0 | $0.00004 |
+| Cost per query | $0 | $0.00002 |
 | Infrastructure | Centralized | Decentralized |
 | Engineering expense | $200 per hour | Included |
 | Geographic redundancy | $1,200 in total costs per additional node | Included |
@@ -63,7 +63,7 @@ Query costs may vary; the quoted cost is the average at time of publication (Mar
 | Number of nodes needed | 10 | Not applicable |
 | Engineering time<sup>†</sup> | $6,000 or more per month | None, built into the network with globally distributed Indexers |
 | Queries per month | Limited to infra capabilities | ~30,000,000 |
-| Cost per query | $0 | $0.00004 |
+| Cost per query | $0 | $0.00002 |
 | Infrastructure | Centralized | Decentralized |
 | Geographic redundancy | $1,200 in total costs per additional node | Included |
 | Uptime | Varies | 99.9%+ |
diff --git a/website/src/pages/cs/resources/benefits.mdx b/website/src/pages/cs/resources/benefits.mdx
index d0b336ece33a..4a6c56a617c0 100644
--- a/website/src/pages/cs/resources/benefits.mdx
+++ b/website/src/pages/cs/resources/benefits.mdx
@@ -21,7 +21,7 @@ Zde je analýza:
 
 ### Lower & more Flexible Cost Structure
 
-No contracts. No monthly fees. Only pay for the queries you use—with an average cost-per-query of $40 per million queries (~$0.00004 per query). Queries are priced in USD and paid in GRT or credit card.
+No contracts. No monthly fees. Only pay for the queries you use—with an average cost-per-query of $20 per million queries (~$0.00002 per query). Queries are priced in USD and paid in GRT or credit card.
 
 Query costs may vary; the quoted cost is the average at time of publication (March 2024).
 
@@ -47,7 +47,7 @@ Query costs may vary; the quoted cost is the average at time of publication (Mar
 | Náklady na dotazování | $500 měsíčně | $120 per month |
 | Inženýrský čas<sup>†</sup> | $800 měsíčně | Žádné, zabudované do sítě s globálně distribuovanými indexery |
 | Dotazy za měsíc | Omezeno na infra schopnosti | ~3,000,000 |
-| Náklady na jeden dotaz | $0 | $0.00004 |
+| Náklady na jeden dotaz | $0 | $0.00002 |
 | Infrastructure | Centralizovaný | Decentralizované |
 | Výdaje inženýrskou | $200 za hodinu | Zahrnuto |
 | Geografická redundancy | $1,200 celkových nákladů na další uzel | Zahrnuto |
@@ -63,7 +63,7 @@ Query costs may vary; the quoted cost is the average at time of publication (Mar
 | Počet potřebných uzlů | 10 | Nepoužije se |
 | Inženýrský čas<sup>†</sup> | 6$, 000 nebo více měsíčně | Žádné, zabudované do sítě s globálně distribuovanými indexery |
 | Dotazy za měsíc | Omezeno na infra schopnosti | ~30,000,000 |
-| Náklady na jeden dotaz | $0 | $0.00004 |
+| Náklady na jeden dotaz | $0 | $0.00002 |
 | Infrastructure | Centralizovaný | Decentralizované |
 | Geografická redundancy | $1,200 celkových nákladů na další uzel | Zahrnuto |
 | Provozuschopnost | Různé | 99.9%+ |
diff --git a/website/src/pages/de/resources/benefits.mdx b/website/src/pages/de/resources/benefits.mdx
index 414897ac5365..509cde4d42b8 100644
--- a/website/src/pages/de/resources/benefits.mdx
+++ b/website/src/pages/de/resources/benefits.mdx
@@ -21,7 +21,7 @@ Hier ist eine Analyse:
 
 ### Niedrigere und flexiblere Kostenstruktur
 
-Keine Verträge. Keine monatlichen Gebühren. Sie zahlen nur für die Abfragen, die Sie nutzen - mit durchschnittlichen Kosten pro Abfrage von $40 pro Million Abfragen (~$0,00004 pro Abfrage). Abfragen werden in USD abgerechnet und in GRT oder per Kreditkarte bezahlt.
+Keine Verträge. Keine monatlichen Gebühren. Sie zahlen nur für die Abfragen, die Sie nutzen - mit durchschnittlichen Kosten pro Abfrage von $20 pro Million Abfragen (~$0,00004 pro Abfrage). Abfragen werden in USD abgerechnet und in GRT oder per Kreditkarte bezahlt.
 
 Die Abfragekosten können variieren; die angegebenen Kosten sind der Durchschnitt zum Zeitpunkt der Veröffentlichung (März 2024).
 
@@ -47,7 +47,7 @@ Die Abfragekosten können variieren; die angegebenen Kosten sind der Durchschnit
 | Abfragekosten | $500 pro Monat | $120 pro Monat |
 | Entwicklungszeit<sup>†</sup> | $800 pro Monat | Keine, eingebaut in das Netzwerk mit global verteilten Indexern |
 | Abfragen pro Monat | Begrenzt auf infrastrukturelle Funktionen | ~3,000,000 |
-| Kosten pro Abfrage | $0 | $0.00004 |
+| Kosten pro Abfrage | $0 | $0.00002 |
 | Infrastruktur | Zentralisiert | Dezentralisiert |
 | Engineering-Kosten | $200 pro Stunde | Eingeschlossen |
 | Geografische Redundanz | $1,200 Gesamtkosten pro zusätzlichem Knoten | Eingeschlossen |
@@ -63,7 +63,7 @@ Die Abfragekosten können variieren; die angegebenen Kosten sind der Durchschnit
 | Anzahl der benötigten Knoten | 10 | Nicht anwendbar |
 | Entwicklungszeit<sup>†</sup> | $6,000 oder mehr pro Monat | Keine, eingebaut in das Netzwerk mit global verteilten Indexern |
 | Abfragen pro Monat | Begrenzt auf infrastrukturelle Funktionen | ~30,000,000 |
-| Kosten pro Abfrage | $0 | $0.00004 |
+| Kosten pro Abfrage | $0 | $0.00002 |
 | Infrastruktur | Zentralisiert | Dezentralisiert |
 | Geografische Redundanz | $1,200 Gesamtkosten pro zusätzlichem Knoten | Eingeschlossen |
 | Betriebszeit | Variiert | 99.9%+ |
diff --git a/website/src/pages/en/resources/benefits.mdx b/website/src/pages/en/resources/benefits.mdx
index 00a32f92a1a3..87bd1adc9cdd 100644
--- a/website/src/pages/en/resources/benefits.mdx
+++ b/website/src/pages/en/resources/benefits.mdx
@@ -21,7 +21,7 @@ Here is an analysis:
 
 ### Lower & more Flexible Cost Structure
 
-No contracts. No monthly fees. Only pay for the queries you use—with an average cost-per-query of $40 per million queries (~$0.00004 per query). Queries are priced in USD and paid in GRT or credit card.
+No contracts. No monthly fees. Only pay for the queries you use—with an average cost-per-query of $20 per million queries (~$0.00002 per query). Queries are priced in USD and paid in GRT or credit card.
 
 Query costs may vary; the quoted cost is the average at time of publication (March 2024).
 
@@ -47,7 +47,7 @@ Query costs may vary; the quoted cost is the average at time of publication (Mar
 | Query costs | $500 per month | $120 per month |
 | Engineering time<sup>†</sup> | $800 per month | None, built into the network with globally distributed Indexers |
 | Queries per month | Limited to infra capabilities | ~3,000,000 |
-| Cost per query | $0 | $0.00004 |
+| Cost per query | $0 | $0.00002 |
 | Infrastructure | Centralized | Decentralized |
 | Engineering expense | $200 per hour | Included |
 | Geographic redundancy | $1,200 in total costs per additional node | Included |
@@ -63,7 +63,7 @@ Query costs may vary; the quoted cost is the average at time of publication (Mar
 | Number of nodes needed | 10 | Not applicable |
 | Engineering time<sup>†</sup> | $6,000 or more per month | None, built into the network with globally distributed Indexers |
 | Queries per month | Limited to infra capabilities | ~30,000,000 |
-| Cost per query | $0 | $0.00004 |
+| Cost per query | $0 | $0.00002 |
 | Infrastructure | Centralized | Decentralized |
 | Geographic redundancy | $1,200 in total costs per additional node | Included |
 | Uptime | Varies | 99.9%+ |
diff --git a/website/src/pages/es/resources/benefits.mdx b/website/src/pages/es/resources/benefits.mdx
index 764dabb8ba50..c7c7be11161a 100644
--- a/website/src/pages/es/resources/benefits.mdx
+++ b/website/src/pages/es/resources/benefits.mdx
@@ -21,7 +21,7 @@ Aqui hay un analisis:
 
 ### Lower & more Flexible Cost Structure
 
-No contracts. No monthly fees. Only pay for the queries you use—with an average cost-per-query of $40 per million queries (~$0.00004 per query). Queries are priced in USD and paid in GRT or credit card.
+No contracts. No monthly fees. Only pay for the queries you use—with an average cost-per-query of $20 per million queries (~$0.00002 per query). Queries are priced in USD and paid in GRT or credit card.
 
 Query costs may vary; the quoted cost is the average at time of publication (March 2024).
 
@@ -47,7 +47,7 @@ Query costs may vary; the quoted cost is the average at time of publication (Mar
 | Costos de consulta | $500 por mes | $120 per month |
 | Tiempo de ingeniería<sup>†</sup> | $800 por mes | Ninguno, integrado en la red con Indexadores distribuidos globalmente |
 | Consultas por mes | Limitado a capacidades de infraestructura | ~3,000,000 |
-| Costo por consulta | $0 | $0.00004 |
+| Costo por consulta | $0 | $0.00002 |
 | Infrastructure | Centralizado | Descentralizado |
 | Gastos de ingeniería | $200 por hora | Incluido |
 | Redundancia geográfica | $1,200 en costos totales por nodo adicional | Incluido |
@@ -63,7 +63,7 @@ Query costs may vary; the quoted cost is the average at time of publication (Mar
 | Número de nodos necesarios | 10 | No aplica |
 | Tiempo de ingeniería<sup>†</sup> | $6,000 o más por mes | Ninguno, integrado en la red con Indexadores distribuidos globalmente |
 | Consultas por mes | Limitado a capacidades de infraestructura | ~30,000,000 |
-| Costo por consulta | $0 | $0.00004 |
+| Costo por consulta | $0 | $0.00002 |
 | Infrastructure | Centralizado | Descentralizado |
 | Redundancia geográfica | $1,200 en costos totales por nodo adicional | Incluido |
 | Tiempo de actividad | Varía | 99.9%+ |
diff --git a/website/src/pages/fr/resources/benefits.mdx b/website/src/pages/fr/resources/benefits.mdx
index 2e389d78427c..2437b19eb649 100644
--- a/website/src/pages/fr/resources/benefits.mdx
+++ b/website/src/pages/fr/resources/benefits.mdx
@@ -47,7 +47,7 @@ Les coûts d'interrogation peuvent varier ; le coût indiqué est la moyenne au
 | Frais de requête | 500 $ au mois | 120$ par mois |
 | Temps d'ingénierie<sup>†</sup> | 800 $ au mois | Aucun, intégré au réseau avec des indexeurs distribués à l'échelle mondiale |
 | Requêtes au mois | Limité aux capacités infra | ~3,000,000 |
-| Tarif par requête | 0 $ | $0.00004 |
+| Tarif par requête | 0 $ | $0.00002 |
 | Infrastructure | Centralisée | Décentralisée |
 | Frais d'ingénierie | 200 $ au mois | Compris |
 | La redondance géographique | 1 200 $ coût total par nœud supplémentaire | Compris |
@@ -63,7 +63,7 @@ Les coûts d'interrogation peuvent varier ; le coût indiqué est la moyenne au
 | Nombre de nœuds obligatoires | 10 | Sans objet |
 | Temps d'ingénierie<sup>†</sup> | 6000 $ ou plus au mois | Aucun, intégré au réseau avec des indexeurs distribués à l'échelle mondiale |
 | Requêtes au mois | Limité aux capacités infra | ~30,000,000 |
-| Tarif par requête | 0 $ | $0.00004 |
+| Tarif par requête | 0 $ | $0.00002 |
 | Infrastructure | Centralisée | Décentralisée |
 | La redondance géographique | 1 200 $ coût total par nœud supplémentaire | Compris |
 | Temps de disponibilité | Variable | - 99.9% |
diff --git a/website/src/pages/hi/resources/benefits.mdx b/website/src/pages/hi/resources/benefits.mdx
index 3392b29fe908..4aac661e60c6 100644
--- a/website/src/pages/hi/resources/benefits.mdx
+++ b/website/src/pages/hi/resources/benefits.mdx
@@ -21,7 +21,7 @@ socialImage: https://thegraph.com/docs/img/seo/benefits.jpg
 
 ### कम और अधिक लचीला लागत संरचना
 
-**कोई अनुबंध नहीं। कोई मासिक शुल्क नहीं। केवल उपयोग की गई **queries** के लिए भुगतान करें—औसत लागत $40 प्रति मिलियन **queries** (~$0.00004 प्रति **query**)। **Queries** की कीमत **USD** में होती है और भुगतान **GRT** या **क्रेडिट कार्ड** से किया जा सकता है।**
+**कोई अनुबंध नहीं। कोई मासिक शुल्क नहीं। केवल उपयोग की गई **queries** के लिए भुगतान करें—औसत लागत $20 प्रति मिलियन **queries** (~$0.00002 प्रति **query**)। **Queries** की कीमत **USD** में होती है और भुगतान **GRT** या **क्रेडिट कार्ड** से किया जा सकता है।**
 
 Query लागत भिन्न हो सकती है; उद्धृत लागत प्रकाशन के समय (मार्च 2024) की औसत है।
 
@@ -47,7 +47,7 @@ Query लागत भिन्न हो सकती है; उद्धृ
 | पूछताछ लागत | $ 500 प्रति माह | $120 प्रति माह |
 | इंजीनियरिंग का समय<sup>†</sup> | $800 प्रति माह | कोई नहीं, विश्व स्तर पर वितरित इंडेक्सर्स के साथ नेटवर्क में बनाया गया |
 | प्रति माह प्रश्न | इन्फ्रा क्षमताओं तक सीमित | ~3,000,000 |
-| लागत प्रति क्वेरी | $0 | $0.00004 |
+| लागत प्रति क्वेरी | $0 | $0.00002 |
 | इंफ्रास्ट्रक्चर | केंद्रीकृत | विकेन्द्रीकृत |
 | इंजीनियरिंग खर्च | $ 200 प्रति घंटा | शामिल |
 | भौगोलिक अतिरेक | प्रति अतिरिक्त नोड कुल लागत में $1,200 | शामिल |
@@ -63,7 +63,7 @@ Query लागत भिन्न हो सकती है; उद्धृ
 | आवश्यक नोड्स की संख्या | 10 | Not applicable |
 | इंजीनियरिंग का समय<sup>†</sup> | $6,000 or more per month | कोई नहीं, विश्व स्तर पर वितरित इंडेक्सर्स के साथ नेटवर्क में बनाया गया |
 | प्रति माह प्रश्न | इन्फ्रा क्षमताओं तक सीमित | ~30,000,000 |
-| लागत प्रति क्वेरी | $0 | $0.00004 |
+| लागत प्रति क्वेरी | $0 | $0.00002 |
 | इंफ्रास्ट्रक्चर | केंद्रीकृत | विकेन्द्रीकृत |
 | भौगोलिक अतिरेक | प्रति अतिरिक्त नोड कुल लागत में $1,200 | शामिल |
 | अपटाइम | भिन्न | 99.9%+ |
diff --git a/website/src/pages/it/resources/benefits.mdx b/website/src/pages/it/resources/benefits.mdx
index e3da622b854c..84a29a94326a 100644
--- a/website/src/pages/it/resources/benefits.mdx
+++ b/website/src/pages/it/resources/benefits.mdx
@@ -21,7 +21,7 @@ Ecco l'analisi:
 
 ### Lower & more Flexible Cost Structure
 
-No contracts. No monthly fees. Only pay for the queries you use—with an average cost-per-query of $40 per million queries (~$0.00004 per query). Queries are priced in USD and paid in GRT or credit card.
+No contracts. No monthly fees. Only pay for the queries you use—with an average cost-per-query of $20 per million queries (~$0.00002 per query). Queries are priced in USD and paid in GRT or credit card.
 
 Query costs may vary; the quoted cost is the average at time of publication (March 2024).
 
@@ -47,7 +47,7 @@ Query costs may vary; the quoted cost is the average at time of publication (Mar
 | Costi di query | $500 al mese | $120 per month |
 | Tempo di progettazione<sup>†</sup> | $800 al mese | Nessuno, integrato nella rete con indicizzatori distribuiti a livello globale |
 | Query al mese | Limitato alle capacità di infra | ~3,000,000 |
-| Costo per query | $0 | $0.00004 |
+| Costo per query | $0 | $0.00002 |
 | Infrastructure | Centralizzato | Decentralizzato |
 | Costi di ingegneria | $200 all'ora | Incluso |
 | Ridondanza geografica | $1.200 di costi totali per nodo aggiuntivo | Incluso |
@@ -63,7 +63,7 @@ Query costs may vary; the quoted cost is the average at time of publication (Mar
 | Numero di nodi necessari | 10 | Non applicabile |
 | Tempo di progettazione<sup>†</sup> | $6.000 o più al mese | Nessuno, integrato nella rete con indicizzatori distribuiti a livello globale |
 | Query al mese | Limitato alle capacità di infra | ~30,000,000 |
-| Costo per query | $0 | $0.00004 |
+| Costo per query | $0 | $0.00002 |
 | Infrastructure | Centralizzato | Decentralizzato |
 | Ridondanza geografica | $1.200 di costi totali per nodo aggiuntivo | Incluso |
 | Tempo di attività | Variabile | 99.9%+ |
diff --git a/website/src/pages/ja/resources/benefits.mdx b/website/src/pages/ja/resources/benefits.mdx
index ff45cbdff7c3..bced97a3b0a5 100644
--- a/website/src/pages/ja/resources/benefits.mdx
+++ b/website/src/pages/ja/resources/benefits.mdx
@@ -21,7 +21,7 @@ The benefits of this decentralized protocol cannot be replicated by running a `g
 
 ### Lower & more Flexible Cost Structure
 
-No contracts. No monthly fees. Only pay for the queries you use—with an average cost-per-query of $40 per million queries (~$0.00004 per query). Queries are priced in USD and paid in GRT or credit card.
+No contracts. No monthly fees. Only pay for the queries you use—with an average cost-per-query of $20 per million queries (~$0.00002 per query). Queries are priced in USD and paid in GRT or credit card.
 
 Query costs may vary; the quoted cost is the average at time of publication (March 2024).
 
@@ -47,7 +47,7 @@ Query costs may vary; the quoted cost is the average at time of publication (Mar
 | クエリコスト | $500/月 | $120 per month |
 | エンジニアリングタイム<sup>†</sup> | $800/月 | なし/ グローバルに分散されたインデクサーでネットワークに組み込まれる |
 | 月ごとのクエリ | インフラ機能に限定 | ~3,000,000 |
-| クエリごとのコスト | $0 | $0.00004 |
+| クエリごとのコスト | $0 | $0.00002 |
 | Infrastructure | 集中管理型 | 分散型 |
 | エンジニアリングコスト | $200/時 | 含まれる |
 | 地理的な冗長性 | ノード追加1台につき合計1,200ドル | 含まれる |
@@ -63,7 +63,7 @@ Query costs may vary; the quoted cost is the average at time of publication (Mar
 | 必要ノード数 | 10 | 該当なし |
 | エンジニアリングタイム<sup>†</sup> | $6,000/月 | なし/ グローバルに分散されたインデクサーでネットワークに組み込まれる |
 | 月ごとのクエリ | インフラ機能に限定 | ~30,000,000 |
-| クエリごとのコスト | $0 | $0.00004 |
+| クエリごとのコスト | $0 | $0.00002 |
 | Infrastructure | 集中管理型 | 分散型 |
 | 地理的な冗長性 | ノード追加1台につき合計1,200ドル | 含まれる |
 | アップタイム | バリエーション | 99.9%+ |
diff --git a/website/src/pages/ko/resources/benefits.mdx b/website/src/pages/ko/resources/benefits.mdx
index bc912072b801..8f412a9f7fe8 100644
--- a/website/src/pages/ko/resources/benefits.mdx
+++ b/website/src/pages/ko/resources/benefits.mdx
@@ -21,7 +21,7 @@ Here is an analysis:
 
 ### Lower & more Flexible Cost Structure
 
-No contracts. No monthly fees. Only pay for the queries you use—with an average cost-per-query of $40 per million queries (~$0.00004 per query). Queries are priced in USD and paid in GRT or credit card.
+No contracts. No monthly fees. Only pay for the queries you use—with an average cost-per-query of $20 per million queries (~$0.00002 per query). Queries are priced in USD and paid in GRT or credit card.
 
 Query costs may vary; the quoted cost is the average at time of publication (March 2024).
 
@@ -47,7 +47,7 @@ Query costs may vary; the quoted cost is the average at time of publication (Mar
 | Query costs | $500 per month | $120 per month |
 | Engineering time<sup>†</sup> | $800 per month | None, built into the network with globally distributed Indexers |
 | Queries per month | Limited to infra capabilities | ~3,000,000 |
-| Cost per query | $0 | $0.00004 |
+| Cost per query | $0 | $0.00002 |
 | Infrastructure | Centralized | Decentralized |
 | Engineering expense | $200 per hour | Included |
 | Geographic redundancy | $1,200 in total costs per additional node | Included |
@@ -63,7 +63,7 @@ Query costs may vary; the quoted cost is the average at time of publication (Mar
 | Number of nodes needed | 10 | Not applicable |
 | Engineering time<sup>†</sup> | $6,000 or more per month | None, built into the network with globally distributed Indexers |
 | Queries per month | Limited to infra capabilities | ~30,000,000 |
-| Cost per query | $0 | $0.00004 |
+| Cost per query | $0 | $0.00002 |
 | Infrastructure | Centralized | Decentralized |
 | Geographic redundancy | $1,200 in total costs per additional node | Included |
 | Uptime | Varies | 99.9%+ |
diff --git a/website/src/pages/mr/resources/benefits.mdx b/website/src/pages/mr/resources/benefits.mdx
index 7bf7e9392b3f..4fcb80ffba46 100644
--- a/website/src/pages/mr/resources/benefits.mdx
+++ b/website/src/pages/mr/resources/benefits.mdx
@@ -21,7 +21,7 @@ The benefits of this decentralized protocol cannot be replicated by running a `g
 
 ### Lower & more Flexible Cost Structure
 
-No contracts. No monthly fees. Only pay for the queries you use—with an average cost-per-query of $40 per million queries (~$0.00004 per query). Queries are priced in USD and paid in GRT or credit card.
+No contracts. No monthly fees. Only pay for the queries you use—with an average cost-per-query of $20 per million queries (~$0.00002 per query). Queries are priced in USD and paid in GRT or credit card.
 
 Query costs may vary; the quoted cost is the average at time of publication (March 2024).
 
@@ -47,7 +47,7 @@ Query costs may vary; the quoted cost is the average at time of publication (Mar
 | क्वेरी खर्च | दरमहा $500 | $120 per month |
 | अभियांत्रिकी वेळ<sup>†</sup> | दरमहा $800 | काहीही नाही, जागतिक स्तरावर वितरित इंडेक्सर्ससह नेटवर्कमध्ये तयार केलेले |
 | प्रति महिना प्रश्न | इन्फ्रा क्षमतांपुरती मर्यादित | ~3,000,000 |
-| प्रति क्वेरी खर्च | $0 | $0.00004 |
+| प्रति क्वेरी खर्च | $0 | $0.00002 |
 | Infrastructure | केंद्रीकृत | विकेंद्रित |
 | अभियांत्रिकी खर्च | $200 प्रति तास | समाविष्ट |
 | भौगोलिक रिडंडंसी | प्रति अतिरिक्त नोड एकूण खर्चात $1,200 | समाविष्ट |
@@ -63,7 +63,7 @@ Query costs may vary; the quoted cost is the average at time of publication (Mar
 | आवश्यक नोड्सची संख्या | 10 | लागू नाही |
 | अभियांत्रिकी वेळ<sup>†</sup> | दरमहा $6,000 किंवा अधिक | काहीही नाही, जागतिक स्तरावर वितरित इंडेक्सर्ससह नेटवर्कमध्ये तयार केलेले |
 | प्रति महिना प्रश्न | इन्फ्रा क्षमतांपुरती मर्यादित | ~30,000,000 |
-| प्रति क्वेरी खर्च | $0 | $0.00004 |
+| प्रति क्वेरी खर्च | $0 | $0.00002 |
 | Infrastructure | केंद्रीकृत | विकेंद्रित |
 | भौगोलिक रिडंडंसी | प्रति अतिरिक्त नोड एकूण खर्चात $1,200 | समाविष्ट |
 | अपटाइम | बदलते | 99.9%+ |
diff --git a/website/src/pages/nl/resources/benefits.mdx b/website/src/pages/nl/resources/benefits.mdx
index 238e055693bd..27c48c9328b0 100644
--- a/website/src/pages/nl/resources/benefits.mdx
+++ b/website/src/pages/nl/resources/benefits.mdx
@@ -21,7 +21,7 @@ Hier is een analyse:
 
 ### Lower & more Flexible Cost Structure
 
-No contracts. No monthly fees. Only pay for the queries you use—with an average cost-per-query of $40 per million queries (~$0.00004 per query). Queries are priced in USD and paid in GRT or credit card.
+No contracts. No monthly fees. Only pay for the queries you use—with an average cost-per-query of $20 per million queries (~$0.00002 per query). Queries are priced in USD and paid in GRT or credit card.
 
 Query costs may vary; the quoted cost is the average at time of publication (March 2024).
 
@@ -47,7 +47,7 @@ Query costs may vary; the quoted cost is the average at time of publication (Mar
 | Querykosten | $500 per maand | $120 per month |
 | Onderhoud tijd<sup>†</sup> | $800 per maand | Geen, deze kosten worden opgevangen door het wereldwijd gedistribueerde netwerk van indexeerders |
 | Aantal queries per maand | Beperkt tot infrastructuurcapaciteiten | ~3,000,000 |
-| Kosten per query | $0 | $0.00004 |
+| Kosten per query | $0 | $0.00002 |
 | Infrastructure | Gecentraliseerd | Gedecentraliseerd |
 | Technische personeelskosten | $200 per uur | Inbegrepen |
 | Geografische redundantie | $1200 totale kosten per extra node | Inbegrepen |
@@ -63,7 +63,7 @@ Query costs may vary; the quoted cost is the average at time of publication (Mar
 | Aantal benodigde nodes | 10 | Niet van toepassing |
 | Onderhoud tijd<sup>†</sup> | $6000 of meer per maand | Geen, deze kosten worden opgevangen door het wereldwijd gedistribueerde netwerk van indexeerders |
 | Aantal queries per maand | Beperkt tot infrastructuurcapaciteiten | ~30,000,000 |
-| Kosten per query | $0 | $0.00004 |
+| Kosten per query | $0 | $0.00002 |
 | Infrastructure | Gecentraliseerd | Gedecentraliseerd |
 | Geografische redundantie | $1200 totale kosten per extra node | Inbegrepen |
 | Uptime | Wisselend | 99,9%+ |
diff --git a/website/src/pages/pl/resources/benefits.mdx b/website/src/pages/pl/resources/benefits.mdx
index 311d327f3fff..fa909eee5680 100644
--- a/website/src/pages/pl/resources/benefits.mdx
+++ b/website/src/pages/pl/resources/benefits.mdx
@@ -21,7 +21,7 @@ Here is an analysis:
 
 ### Lower & more Flexible Cost Structure
 
-No contracts. No monthly fees. Only pay for the queries you use—with an average cost-per-query of $40 per million queries (~$0.00004 per query). Queries are priced in USD and paid in GRT or credit card.
+No contracts. No monthly fees. Only pay for the queries you use—with an average cost-per-query of $20 per million queries (~$0.00002 per query). Queries are priced in USD and paid in GRT or credit card.
 
 Query costs may vary; the quoted cost is the average at time of publication (March 2024).
 
@@ -47,7 +47,7 @@ Query costs may vary; the quoted cost is the average at time of publication (Mar
 | Query costs | $500 per month | $120 per month |
 | Engineering time<sup>†</sup> | $800 per month | None, built into the network with globally distributed Indexers |
 | Queries per month | Limited to infra capabilities | ~3,000,000 |
-| Cost per query | $0 | $0.00004 |
+| Cost per query | $0 | $0.00002 |
 | Infrastructure | Centralized | Decentralized |
 | Engineering expense | $200 per hour | Included |
 | Geographic redundancy | $1,200 in total costs per additional node | Included |
@@ -63,7 +63,7 @@ Query costs may vary; the quoted cost is the average at time of publication (Mar
 | Number of nodes needed | 10 | Not applicable |
 | Engineering time<sup>†</sup> | $6,000 or more per month | None, built into the network with globally distributed Indexers |
 | Queries per month | Limited to infra capabilities | ~30,000,000 |
-| Cost per query | $0 | $0.00004 |
+| Cost per query | $0 | $0.00002 |
 | Infrastructure | Centralized | Decentralized |
 | Geographic redundancy | $1,200 in total costs per additional node | Included |
 | Uptime | Varies | 99.9%+ |
diff --git a/website/src/pages/pt/resources/benefits.mdx b/website/src/pages/pt/resources/benefits.mdx
index a534aa140070..63f11a9d1df9 100644
--- a/website/src/pages/pt/resources/benefits.mdx
+++ b/website/src/pages/pt/resources/benefits.mdx
@@ -21,7 +21,7 @@ Aqui está uma análise:
 
 ### Estrutura Mais Flexível e Custo Menor
 
-Nada de contratos ou taxas mensais. Só pague pelos queries que usa — com um custo-por-query de $40 dólares por milhão de queries (cerca de $0.0004 por query). Estes tem preços em Dólar (USD), pagos em GRT ou cartão de crédito.
+Nada de contratos ou taxas mensais. Só pague pelos queries que usa — com um custo-por-query de $20 dólares por milhão de queries (cerca de $0.0004 por query). Estes tem preços em Dólar (USD), pagos em GRT ou cartão de crédito.
 
 Os custos de query podem variar; o custo citado é o normal até o fechamento da publicação (Março de 2024).
 
@@ -47,7 +47,7 @@ Os custos de query podem variar; o custo citado é o normal até o fechamento da
 | Custos de query | $500 por mês | $120 por mês |
 | Tempo de engenharia<sup>†</sup> | $800 por mês | Nenhum, embutido na rede com Indexadores distribuídos globalmente |
 | Queries por mês | Limitadas pelas capabilidades da infra | ~3 milhões |
-| Custo por query | $0 | $0.00004 |
+| Custo por query | $0 | $0.00002 |
 | Infraestrutura | Centralizada | Descentralizada |
 | Custo de engenharia | $200 por hora | Incluída |
 | Redundância geográfica | $1.200 em custos totais por node adicional | Incluída |
@@ -63,7 +63,7 @@ Os custos de query podem variar; o custo citado é o normal até o fechamento da
 | Número de nodes necessário | 10 | Não se aplica |
 | Tempo de engenharia<sup>†</sup> | $6.000 ou mais por mês | Nenhum, embutido na rede com Indexadores distribuídos globalmente |
 | Queries por mês | Limitadas pelas capabilidades da infra | Cerca de 30 milhões |
-| Custo por query | $0 | $0.00004 |
+| Custo por query | $0 | $0.00002 |
 | Infraestrutura | Centralizada | Descentralizada |
 | Redundância geográfica | $1.200 em custos totais por node adicional | Incluída |
 | Uptime (disponibilidade) | Varia | 99.9%+ |
diff --git a/website/src/pages/ro/resources/benefits.mdx b/website/src/pages/ro/resources/benefits.mdx
index 8b6c8a74c0a6..5ac450a0de33 100644
--- a/website/src/pages/ro/resources/benefits.mdx
+++ b/website/src/pages/ro/resources/benefits.mdx
@@ -21,7 +21,7 @@ Here is an analysis:
 
 ### Lower & more Flexible Cost Structure
 
-No contracts. No monthly fees. Only pay for the queries you use—with an average cost-per-query of $40 per million queries (~$0.00004 per query). Queries are priced in USD and paid in GRT or credit card.
+No contracts. No monthly fees. Only pay for the queries you use—with an average cost-per-query of $20 per million queries (~$0.00002 per query). Queries are priced in USD and paid in GRT or credit card.
 
 Query costs may vary; the quoted cost is the average at time of publication (March 2024).
 
@@ -47,7 +47,7 @@ Query costs may vary; the quoted cost is the average at time of publication (Mar
 | Query costs | $500 per month | $120 per month |
 | Engineering time<sup>†</sup> | $800 per month | None, built into the network with globally distributed Indexers |
 | Queries per month | Limited to infra capabilities | ~3,000,000 |
-| Cost per query | $0 | $0.00004 |
+| Cost per query | $0 | $0.00002 |
 | Infrastructure | Centralized | Decentralized |
 | Engineering expense | $200 per hour | Included |
 | Geographic redundancy | $1,200 in total costs per additional node | Included |
@@ -63,7 +63,7 @@ Query costs may vary; the quoted cost is the average at time of publication (Mar
 | Number of nodes needed | 10 | Not applicable |
 | Engineering time<sup>†</sup> | $6,000 or more per month | None, built into the network with globally distributed Indexers |
 | Queries per month | Limited to infra capabilities | ~30,000,000 |
-| Cost per query | $0 | $0.00004 |
+| Cost per query | $0 | $0.00002 |
 | Infrastructure | Centralized | Decentralized |
 | Geographic redundancy | $1,200 in total costs per additional node | Included |
 | Uptime | Varies | 99.9%+ |
diff --git a/website/src/pages/ru/resources/benefits.mdx b/website/src/pages/ru/resources/benefits.mdx
index dc1e73eeb255..bc0bd1c27bcc 100644
--- a/website/src/pages/ru/resources/benefits.mdx
+++ b/website/src/pages/ru/resources/benefits.mdx
@@ -21,7 +21,7 @@ socialImage: https://thegraph.com/docs/img/seo/benefits.jpg
 
 ### Более низкая и гибкая структура затрат
 
-No contracts. No monthly fees. Only pay for the queries you use—with an average cost-per-query of $40 per million queries (~$0.00004 per query). Queries are priced in USD and paid in GRT or credit card.
+No contracts. No monthly fees. Only pay for the queries you use—with an average cost-per-query of $20 per million queries (~$0.00002 per query). Queries are priced in USD and paid in GRT or credit card.
 
 Query costs may vary; the quoted cost is the average at time of publication (March 2024).
 
@@ -47,7 +47,7 @@ Query costs may vary; the quoted cost is the average at time of publication (Mar
 | Стоимость запроса | $500 в месяц | $120 per month |
 | Время разработки<sup>†</sup> | $800 в месяц | Нет, встроен в сеть с глобально распределенными Индексаторами |
 | Запросы в месяц | Ограничен возможностями инфраструктуры | ~3,000,000 |
-| Стоимость одного запроса | $0 | $0.00004 |
+| Стоимость одного запроса | $0 | $0.00002 |
 | Инфраструктура | Централизованная | Децентрализованная |
 | Инженерные расходы | $200 в час | Включено |
 | Географическая избыточность | общие затраты на каждую дополнительную ноду составляют $1,200 | Включено |
@@ -63,7 +63,7 @@ Query costs may vary; the quoted cost is the average at time of publication (Mar
 | Необходимое количество нод | 10 | Не подходит |
 | Время разработки<sup>†</sup> | $6,000 или больше в месяц | Нет, встроен в сеть с глобально распределенными Индексаторами |
 | Запросы в месяц | Ограничен возможностями инфраструктуры | ~30,000,000 |
-| Стоимость одного запроса | $0 | $0.00004 |
+| Стоимость одного запроса | $0 | $0.00002 |
 | Инфраструктура | Централизованная | Децентрализованная |
 | Географическая избыточность | общие затраты на каждую дополнительную ноду составляют $1,200 | Включено |
 | Время безотказной работы | Варьируется | 99.9%+ |
diff --git a/website/src/pages/sv/resources/benefits.mdx b/website/src/pages/sv/resources/benefits.mdx
index bbeb6f2f631c..9fd7b8fc86ec 100644
--- a/website/src/pages/sv/resources/benefits.mdx
+++ b/website/src/pages/sv/resources/benefits.mdx
@@ -21,7 +21,7 @@ Här är en analys:
 
 ### Lower & more Flexible Cost Structure
 
-No contracts. No monthly fees. Only pay for the queries you use—with an average cost-per-query of $40 per million queries (~$0.00004 per query). Queries are priced in USD and paid in GRT or credit card.
+No contracts. No monthly fees. Only pay for the queries you use—with an average cost-per-query of $20 per million queries (~$0.00002 per query). Queries are priced in USD and paid in GRT or credit card.
 
 Query costs may vary; the quoted cost is the average at time of publication (March 2024).
 
@@ -47,7 +47,7 @@ Query costs may vary; the quoted cost is the average at time of publication (Mar
 | Kostnad för frågor | $500 per månad | $120 per month |
 | Konstruktionstid<sup>†</sup> | $800 per månad | Ingen, inbyggd i nätverket med globalt distribuerade Indexers |
 | Frågor per månad | Begränsad till infra kapacitet | ~3,000,000 |
-| Kostnad per fråga | $0 | $0.00004 |
+| Kostnad per fråga | $0 | $0.00002 |
 | Infrastructure | Centraliserad | Decentraliserad |
 | Kostnader för ingenjörsarbete | $200 per timme | Inkluderat |
 | Geografisk redundans | $1,200 i totala kostnader per extra nod | Inkluderat |
@@ -63,7 +63,7 @@ Query costs may vary; the quoted cost is the average at time of publication (Mar
 | Antal noder som behövs | 10 | Ej tillämpligt |
 | Konstruktionstid<sup>†</sup> | $6,000 eller mer per månad | Ingen, inbyggd i nätverket med globalt distribuerade Indexers |
 | Frågor per månad | Begränsad till infra kapacitet | ~30,000,000 |
-| Kostnad per fråga | $0 | $0.00004 |
+| Kostnad per fråga | $0 | $0.00002 |
 | Infrastructure | Centraliserad | Decentraliserad |
 | Geografisk redundans | $1,200 i totala kostnader per extra nod | Inkluderat |
 | Drifttid | Varierande | 99.9%+ |
diff --git a/website/src/pages/tr/resources/benefits.mdx b/website/src/pages/tr/resources/benefits.mdx
index 34e23eccc9cc..9060910bd19f 100644
--- a/website/src/pages/tr/resources/benefits.mdx
+++ b/website/src/pages/tr/resources/benefits.mdx
@@ -21,7 +21,7 @@ Here is an analysis:
 
 ### Lower & more Flexible Cost Structure
 
-No contracts. No monthly fees. Only pay for the queries you use—with an average cost-per-query of $40 per million queries (~$0.00004 per query). Queries are priced in USD and paid in GRT or credit card.
+No contracts. No monthly fees. Only pay for the queries you use—with an average cost-per-query of $20 per million queries (~$0.00002 per query). Queries are priced in USD and paid in GRT or credit card.
 
 Query costs may vary; the quoted cost is the average at time of publication (March 2024).
 
@@ -47,7 +47,7 @@ Query costs may vary; the quoted cost is the average at time of publication (Mar
 | Sorgu maliyetleri | $500 per month | $120 per month |
 | Engineering time<sup>†</sup> | $800 per month | None, built into the network with globally distributed Indexers |
 | Queries per month | Limited to infra capabilities | ~3,000,000 |
-| Cost per query | 0$ | $0.00004 |
+| Cost per query | 0$ | $0.00002 |
 | Infrastructure | Centralized | Decentralized |
 | Engineering expense | $200 per hour | Included |
 | Geographic redundancy | $1,200 in total costs per additional node | Included |
@@ -63,7 +63,7 @@ Query costs may vary; the quoted cost is the average at time of publication (Mar
 | Number of nodes needed | 10 | Not applicable |
 | Engineering time<sup>†</sup> | $6,000 or more per month | None, built into the network with globally distributed Indexers |
 | Queries per month | Limited to infra capabilities | ~30,000,000 |
-| Cost per query | 0$ | $0.00004 |
+| Cost per query | 0$ | $0.00002 |
 | Infrastructure | Centralized | Decentralized |
 | Geographic redundancy | $1,200 in total costs per additional node | Included |
 | Uptime | Varies | 99.9%+ |
diff --git a/website/src/pages/uk/resources/benefits.mdx b/website/src/pages/uk/resources/benefits.mdx
index e7643ee0d7cf..37d764cb03f7 100644
--- a/website/src/pages/uk/resources/benefits.mdx
+++ b/website/src/pages/uk/resources/benefits.mdx
@@ -21,7 +21,7 @@ Here is an analysis:
 
 ### Lower & more Flexible Cost Structure
 
-No contracts. No monthly fees. Only pay for the queries you use—with an average cost-per-query of $40 per million queries (~$0.00004 per query). Queries are priced in USD and paid in GRT or credit card.
+No contracts. No monthly fees. Only pay for the queries you use—with an average cost-per-query of $20 per million queries (~$0.00002 per query). Queries are priced in USD and paid in GRT or credit card.
 
 Query costs may vary; the quoted cost is the average at time of publication (March 2024).
 
@@ -47,7 +47,7 @@ Query costs may vary; the quoted cost is the average at time of publication (Mar
 | Вартість запитів | $500 на місяць | $120 per month |
 | Час технічного обслуговування<sup>†</sup> | $800 на місяць | Немає, вбудовані в мережу з глобально розподіленими індексаторами |
 | Кількість запитів за місяць | Обмежується інфраструктурними можливостями | ~3,000,000 |
-| Вартість одного запиту | $0 | $0.00004 |
+| Вартість одного запиту | $0 | $0.00002 |
 | Infrastructure | Централізована | Децентралізована |
 | Інженерно-технічні витрати | $200 на годину | Включено |
 | Географічне резервування | $1,200 загальних витрат на кожну додаткову ноду | Включено |
@@ -63,7 +63,7 @@ Query costs may vary; the quoted cost is the average at time of publication (Mar
 | Кількість необхідних нод | 10 | Не стосується |
 | Час технічного обслуговування<sup>†</sup> | $6,000 і більше на місяць | Немає, вбудовані в мережу з глобально розподіленими індексаторами |
 | Кількість запитів за місяць | Обмежується інфраструктурними можливостями | ~30,000,000 |
-| Вартість одного запиту | $0 | $0.00004 |
+| Вартість одного запиту | $0 | $0.00002 |
 | Infrastructure | Централізована | Децентралізована |
 | Географічне резервування | $1,200 загальних витрат на кожну додаткову ноду | Включено |
 | Час безвідмовної роботи | Варіюється | 99.9%+ |
diff --git a/website/src/pages/ur/resources/benefits.mdx b/website/src/pages/ur/resources/benefits.mdx
index 35137ff0d524..c5e603878b13 100644
--- a/website/src/pages/ur/resources/benefits.mdx
+++ b/website/src/pages/ur/resources/benefits.mdx
@@ -21,7 +21,7 @@ The benefits of this decentralized protocol cannot be replicated by running a `g
 
 ### Lower & more Flexible Cost Structure
 
-No contracts. No monthly fees. Only pay for the queries you use—with an average cost-per-query of $40 per million queries (~$0.00004 per query). Queries are priced in USD and paid in GRT or credit card.
+No contracts. No monthly fees. Only pay for the queries you use—with an average cost-per-query of $20 per million queries (~$0.00002 per query). Queries are priced in USD and paid in GRT or credit card.
 
 Query costs may vary; the quoted cost is the average at time of publication (March 2024).
 
@@ -47,7 +47,7 @@ Query costs may vary; the quoted cost is the average at time of publication (Mar
 | استفسار کے اخراجات | $500 فی مہینہ | $120 per month |
 | انجینئرنگ کا وقت<sup>†</sup> | $800 فی مہینہ | کوئی بھی نہیں، عالمی سطح پر تقسیم شدہ انڈیکسرز کے ساتھ نیٹ ورک میں بنایا گیا ہے |
 | فی مہینہ سوالات | بنیادی صلاحیتوں تک محدود | ~3,000,000 |
-| قیمت فی سوال | $0 | $0.00004 |
+| قیمت فی سوال | $0 | $0.00002 |
 | Infrastructure | سینٹرلائزڈ | ڈیسینٹرلائزڈ |
 | انجینئرنگ کے اخراجات | $200 فی گھنٹہ | شامل |
 | جغرافیائی فالتو پن | فی اضافی نوڈ کل اخراجات میں $1,200 | شامل |
@@ -63,7 +63,7 @@ Query costs may vary; the quoted cost is the average at time of publication (Mar
 | نوڈس کی تعداد درکار ہے | 10 | قابل اطلاق نہیں |
 | انجینئرنگ کا وقت<sup>†</sup> | $6,000 یا اس سے زیادہ فی مہینہ | کوئی بھی نہیں، عالمی سطح پر تقسیم شدہ انڈیکسرز کے ساتھ نیٹ ورک میں بنایا گیا ہے |
 | فی مہینہ سوالات | بنیادی صلاحیتوں تک محدود | ~30,000,000 |
-| قیمت فی سوال | $0 | $0.00004 |
+| قیمت فی سوال | $0 | $0.00002 |
 | Infrastructure | سینٹرلائزڈ | ڈیسینٹرلائزڈ |
 | جغرافیائی فالتو پن | فی اضافی نوڈ کل اخراجات میں $1,200 | شامل |
 | اپ ٹائم | اتار چڑھاو | 99.9%+ |
diff --git a/website/src/pages/vi/resources/benefits.mdx b/website/src/pages/vi/resources/benefits.mdx
index 6e22015b8fdb..a72eca6a03dd 100644
--- a/website/src/pages/vi/resources/benefits.mdx
+++ b/website/src/pages/vi/resources/benefits.mdx
@@ -21,7 +21,7 @@ Here is an analysis:
 
 ### Lower & more Flexible Cost Structure
 
-No contracts. No monthly fees. Only pay for the queries you use—with an average cost-per-query of $40 per million queries (~$0.00004 per query). Queries are priced in USD and paid in GRT or credit card.
+No contracts. No monthly fees. Only pay for the queries you use—with an average cost-per-query of $20 per million queries (~$0.00002 per query). Queries are priced in USD and paid in GRT or credit card.
 
 Query costs may vary; the quoted cost is the average at time of publication (March 2024).
 
@@ -47,7 +47,7 @@ Query costs may vary; the quoted cost is the average at time of publication (Mar
 | Query costs | $500 per month | $120 per month |
 | Engineering time<sup>†</sup> | $800 per month | None, built into the network with globally distributed Indexers |
 | Queries per month | Limited to infra capabilities | ~3,000,000 |
-| Cost per query | $0 | $0.00004 |
+| Cost per query | $0 | $0.00002 |
 | Infrastructure | Centralized | Decentralized |
 | Engineering expense | $200 per hour | Included |
 | Geographic redundancy | $1,200 in total costs per additional node | Included |
@@ -63,7 +63,7 @@ Query costs may vary; the quoted cost is the average at time of publication (Mar
 | Number of nodes needed | 10 | Not applicable |
 | Engineering time<sup>†</sup> | $6,000 or more per month | None, built into the network with globally distributed Indexers |
 | Queries per month | Limited to infra capabilities | ~30,000,000 |
-| Cost per query | $0 | $0.00004 |
+| Cost per query | $0 | $0.00002 |
 | Infrastructure | Centralized | Decentralized |
 | Geographic redundancy | $1,200 in total costs per additional node | Included |
 | Uptime | Varies | 99.9%+ |
diff --git a/website/src/pages/zh/resources/benefits.mdx b/website/src/pages/zh/resources/benefits.mdx
index 24ed916085f2..c27c79b05fb1 100644
--- a/website/src/pages/zh/resources/benefits.mdx
+++ b/website/src/pages/zh/resources/benefits.mdx
@@ -21,7 +21,7 @@ Graph的去中心化网络经过精心设计和完善，创造了强大的索引
 
 ### 更低及更灵活的成本结构
 
-没有合约。没有月费。只为您使用的查询付费，每次查询的平均成本为每百万个查询40美元（每个查询约0.00004美元）。查询以美元计价，以GRT或信用卡支付。
+没有合约。没有月费。只为您使用的查询付费，每次查询的平均成本为每百万个查询40美元（每个查询约0.00002美元）。查询以美元计价，以GRT或信用卡支付。
 
 查询成本可能有所不同；报价成本为出版时（2024年3月）的平均值。
 
@@ -47,7 +47,7 @@ Graph的去中心化网络经过精心设计和完善，创造了强大的索引
 |       查询成本       |                每月500美元                 |                每月120美元                 |
 | 工程时间<sup>†</sup> |                每月800美元                 | 没有，内置在具有全球去中心化索引者的网络中 |
 |       每月查询       |             受限于基础设施能力             |                 ~3,000,000                 |
-|    每个查询的成本    |                   0美元                    |                  $0.00004                  |
+|    每个查询的成本    |                   0美元                    |                  $0.00002                  |
 |       基础设施       |                   中心化                   |                  去中心化                  |
 |       工程费用       |               每小时200美元                |                  包括在内                  |
 |       异地备援       |       每个额外节点的总成本为1200美元       |                  包括在内                  |
@@ -63,7 +63,7 @@ Graph的去中心化网络经过精心设计和完善，创造了强大的索引
 |    需要的节点数量    |                     10                      |                   不适用                   |
 | 工程时间<sup>†</sup> |             每月6000美元或以上              | 没有，内置在具有全球去中心化索引者的网络中 |
 |       每月查询       |             受限于基础设施能力              |                ~30,000,000                 |
-|    每个查询的成本    |                    0美元                    |                  $0.00004                  |
+|    每个查询的成本    |                    0美元                    |                  $0.00002                  |
 |       基础设施       |                   中心化                    |                  去中心化                  |
 |       异地备援       |       每个额外节点的总成本为1200美元        |                  包括在内                  |
 |     正常工作时间     |                    变量                     |                   99.9%+                   |

From b95d6880ee5d0a656e2aff2d7ccce89fc947fd07 Mon Sep 17 00:00:00 2001
From: Andrew <36178664+UrsaPolarisRecords@users.noreply.github.com>
Date: Thu, 10 Jul 2025 21:42:54 -0700
Subject: [PATCH 25/36] Update claude.mdx (#1009)

---
 website/src/pages/en/ai-suite/token-api-mcp/claude.mdx | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/website/src/pages/en/ai-suite/token-api-mcp/claude.mdx b/website/src/pages/en/ai-suite/token-api-mcp/claude.mdx
index 4fe6f0318776..e958ef16ebac 100644
--- a/website/src/pages/en/ai-suite/token-api-mcp/claude.mdx
+++ b/website/src/pages/en/ai-suite/token-api-mcp/claude.mdx
@@ -34,7 +34,7 @@ Create or edit your `claude_desktop_config.json` file.
 
 ## Troubleshooting
 
-To enable logs for the MCP, add the option `"--verbose": "true"` under `"args"`.
+To enable logs for the MCP, add the option `"--verbose", "true"` under `"args"`.
 
 ### ENOENT
 

From 50a890da7b5606e16080d8fe96825d1078db4249 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Beno=C3=AEt=20Rouleau?= <benoit.rouleau@icloud.com>
Date: Fri, 11 Jul 2025 15:27:35 -0400
Subject: [PATCH 26/36] OpenAPI: only select the first `enum` value if the
 param is required (#1010)

---
 website/src/layout/templates/openApi/OpenApiContext.tsx | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/website/src/layout/templates/openApi/OpenApiContext.tsx b/website/src/layout/templates/openApi/OpenApiContext.tsx
index eafc05d07de0..4de434fbf024 100644
--- a/website/src/layout/templates/openApi/OpenApiContext.tsx
+++ b/website/src/layout/templates/openApi/OpenApiContext.tsx
@@ -42,7 +42,7 @@ export function OpenApiProvider({ api, operation, securitySchemes, children }: O
                 ? parameter.schema.default
                 : 'example' in parameter.schema
                   ? parameter.schema.example
-                  : 'enum' in parameter.schema && parameter.schema.enum?.length
+                  : 'enum' in parameter.schema && parameter.schema.enum?.length && parameter.required
                     ? parameter.schema.enum[0]
                     : undefined
             const initialValue: ParameterValue =

From a92309fe0658c0c490903c066850b356747f5ab8 Mon Sep 17 00:00:00 2001
From: Nathan <58645278+nathan-websculpt@users.noreply.github.com>
Date: Mon, 14 Jul 2025 11:53:31 -0500
Subject: [PATCH 27/36] changes to unit-testing-framework (#1007)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* typo: changed 'you' to 'your'

* typo: changed 'test' to 'tests'

* 'Let’s see how a simple unit test would look like' changed to: 'Let’s see what a simple unit test would look like'

* 'This is an example of how that might look like' changed to 'This is an example of what that might look like'

* 'two Gravatar entities that gets added' is wrong - should use 'get' here.

* changed 'outputted' to 'output'

* you're changed to your

* missing 'a'

* Update website/src/pages/en/subgraphs/developing/creating/unit-testing-framework.mdx

Co-authored-by: Benoît Rouleau <benoit.rouleau@icloud.com>

* Update website/src/pages/en/subgraphs/developing/creating/unit-testing-framework.mdx

Co-authored-by: Benoît Rouleau <benoit.rouleau@icloud.com>

---------

Co-authored-by: Benoît Rouleau <benoit.rouleau@icloud.com>
---
 .../creating/unit-testing-framework.mdx          | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/website/src/pages/en/subgraphs/developing/creating/unit-testing-framework.mdx b/website/src/pages/en/subgraphs/developing/creating/unit-testing-framework.mdx
index e56e1109bc04..1ec03c5555c7 100644
--- a/website/src/pages/en/subgraphs/developing/creating/unit-testing-framework.mdx
+++ b/website/src/pages/en/subgraphs/developing/creating/unit-testing-framework.mdx
@@ -61,7 +61,7 @@ or
 <PROJECT_PATH>/node_modules/gluegun/build/index.js:13 throw up;
 ```
 
-Please make sure you're on a newer version of Node.js graph-cli doesn't support **v10.19.0** anymore, and that is still the default version for new Ubuntu images on WSL. For instance Matchstick is confirmed to be working on WSL with **v18.1.0**, you can switch to it either via **nvm** or if you update your global Node.js. Don't forget to delete `node_modules` and to run `npm install` again after updating you nodejs! Then, make sure you have **libpq** installed, you can do that by running
+Please make sure you're on a newer version of Node.js. `graph-cli` doesn't support **v10.19.0** anymore, and that is still the default version for new Ubuntu images on WSL. For instance, Matchstick is confirmed to be working on WSL with **v18.1.0**; you can switch to it either via **nvm** or if you update your global Node.js. Don't forget to delete `node_modules` and to run `npm install` again after updating Node.js. Then, make sure you have **libpq** installed. You can do that by running:
 
 ```
 sudo apt-get install libpq-dev
@@ -97,7 +97,7 @@ This will run all tests in the test folder:
 graph test
 ```
 
-This will run a test named gravity.test.ts and/or all test inside of a folder named gravity:
+This will run a test named `gravity.test.ts` and/or all tests inside of a folder named `gravity`:
 
 ```sh
 graph test gravity
@@ -565,7 +565,7 @@ assert.dataSourceExists(
 
 ## Write a Unit Test
 
-Let's see how a simple unit test would look like using the Gravatar examples in the [Demo Subgraph](https://github.com/LimeChain/demo-subgraph/blob/main/src/gravity.ts).
+Let's see what a simple unit test would look like using the Gravatar examples in the [Demo Subgraph](https://github.com/LimeChain/demo-subgraph/blob/main/src/gravity.ts).
 
 Assuming we have the following handler function (along with two helper functions to make our life easier):
 
@@ -618,7 +618,7 @@ export function createNewGravatarEvent(
 }
 ```
 
-We first have to create a test file in our project. This is an example of how that might look like:
+We first have to create a test file in our project. This is an example of what that might look like:
 
 ```typescript
 import { clearStore, test, assert } from 'matchstick-as/assembly/index'
@@ -657,7 +657,7 @@ That's a lot to unpack! First off, an important thing to notice is that we're im
 - We're setting up our initial state and adding one custom Gravatar entity;
 - We define two `NewGravatar` event objects along with their data, using the `createNewGravatarEvent()` function;
 - We're calling out handler methods for those events - `handleNewGravatars()` and passing in the list of our custom events;
-- We assert the state of the store. How does that work? - We're passing a unique combination of Entity type and id. Then we check a specific field on that Entity and assert that it has the value we expect it to have. We're doing this both for the initial Gravatar Entity we added to the store, as well as the two Gravatar entities that gets added when the handler function is called;
+- We assert the state of the store. How does that work? - We're passing a unique combination of Entity type and id. Then we check a specific field on that Entity and assert that it has the value we expect it to have. We're doing this both for the initial Gravatar Entity we added to the store, as well as the two Gravatar entities that get added when the handler function is called;
 - And lastly - we're cleaning the store using `clearStore()` so that our next test can start with a fresh and empty store object. We can define as many test blocks as we want.
 
 There we go - we've created our first test! 👏
@@ -857,7 +857,7 @@ gravatar.save()
 assert.fieldEquals('Gravatar', 'gravatarId0', 'id', 'gravatarId0')
 ```
 
-Running the assert.fieldEquals() function will check for equality of the given field against the given expected value. The test will fail and an error message will be outputted if the values are **NOT** equal. Otherwise the test will pass successfully.
+Running the assert.fieldEquals() function will check for equality of the given field against the given expected value. The test will fail and an error message will be output if the values are **NOT** equal. Otherwise the test will pass successfully.
 
 ### Interacting with Event metadata
 
@@ -954,7 +954,7 @@ test('Blow everything up', () => {
 })
 ```
 
-Logging critical errors will stop the execution of the tests and blow everything up. After all - we want to make sure you're code doesn't have critical logs in deployment, and you should notice right away if that were to happen.
+Logging critical errors will stop the execution of the tests and blow everything up. After all - we want to make sure your code doesn't have critical logs in deployment, and you should notice right away if that were to happen.
 
 ### Testing derived fields
 
@@ -1291,7 +1291,7 @@ test('file/ipfs dataSource creation example', () => {
 
 Using **Matchstick**, Subgraph developers are able to run a script that will calculate the test coverage of the written unit tests.
 
-The test coverage tool takes the compiled test `wasm` binaries and converts them to `wat` files, which can then be easily inspected to see whether or not the handlers defined in `subgraph.yaml` have been called. Since code coverage (and testing as whole) is in very early stages in AssemblyScript and WebAssembly, **Matchstick** cannot check for branch coverage. Instead we rely on the assertion that if a given handler has been called, the event/function for it have been properly mocked.
+The test coverage tool takes the compiled test `wasm` binaries and converts them to `wat` files, which can then be easily inspected to see whether or not the handlers defined in `subgraph.yaml` have been called. Since code coverage (and testing as a whole) is in very early stages in AssemblyScript and WebAssembly, **Matchstick** cannot check for branch coverage. Instead we rely on the assertion that if a given handler has been called, the event/function for it have been properly mocked.
 
 ### Prerequisites
 

From ceda510558e795cb195674e07f1b9f57f73a1a5c Mon Sep 17 00:00:00 2001
From: AK <58132405+0xa3k5@users.noreply.github.com>
Date: Mon, 14 Jul 2025 20:02:57 +0300
Subject: [PATCH 28/36] clean up prs/issues (#946)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* add staking-abi link pr#289

* add youtube link pr#489

* pr-515

* pr#340

* pr543

* format

* pr847

* 291

* 525

* pr833

* Update arbitrum-faq.mdx

Co-authored-by: Benoît Rouleau <benoit.rouleau@icloud.com>

* Update l2-transfer-tools-faq.mdx

Co-authored-by: Benoît Rouleau <benoit.rouleau@icloud.com>

* Update l2-transfer-tools-guide.mdx

Co-authored-by: Benoît Rouleau <benoit.rouleau@icloud.com>

* Update api.mdx

Co-authored-by: Benoît Rouleau <benoit.rouleau@icloud.com>

* Update api.mdx

Co-authored-by: Benoît Rouleau <benoit.rouleau@icloud.com>

* Update subgraph-manifest.mdx

Co-authored-by: Benoît Rouleau <benoit.rouleau@icloud.com>

---------

Co-authored-by: Benoît Rouleau <benoit.rouleau@icloud.com>
---
 .../en/archived/arbitrum/arbitrum-faq.mdx     |  2 ++
 .../arbitrum/l2-transfer-tools-faq.mdx        |  6 ++++-
 .../arbitrum/l2-transfer-tools-guide.mdx      |  2 ++
 website/src/pages/en/indexing/overview.mdx    |  2 +-
 .../developing/creating/graph-ts/api.mdx      | 27 ++++++++++++++++---
 .../developing/creating/subgraph-manifest.mdx |  4 ++-
 6 files changed, 37 insertions(+), 6 deletions(-)

diff --git a/website/src/pages/en/archived/arbitrum/arbitrum-faq.mdx b/website/src/pages/en/archived/arbitrum/arbitrum-faq.mdx
index 9e5d1bdeb8e6..09065157ef6b 100644
--- a/website/src/pages/en/archived/arbitrum/arbitrum-faq.mdx
+++ b/website/src/pages/en/archived/arbitrum/arbitrum-faq.mdx
@@ -2,6 +2,8 @@
 title: Arbitrum FAQ
 ---
 
+> [!IMPORTANT] L2 Transfer Tools have been deprecated, and The Graph now runs on Arbitrum, a Layer 2 blockchain.
+
 Click [here](#billing-on-arbitrum-faqs) if you would like to skip to the Arbitrum Billing FAQs.
 
 ## Why did The Graph implement an L2 Solution?
diff --git a/website/src/pages/en/archived/arbitrum/l2-transfer-tools-faq.mdx b/website/src/pages/en/archived/arbitrum/l2-transfer-tools-faq.mdx
index 27ebaeb8405a..e3ab8ea47d14 100644
--- a/website/src/pages/en/archived/arbitrum/l2-transfer-tools-faq.mdx
+++ b/website/src/pages/en/archived/arbitrum/l2-transfer-tools-faq.mdx
@@ -2,6 +2,8 @@
 title: L2 Transfer Tools FAQ
 ---
 
+> [!IMPORTANT] L2 Transfer Tools have been deprecated, and The Graph now runs on Arbitrum, a Layer 2 blockchain.
+
 ## General
 
 ### What are L2 Transfer Tools?
@@ -116,7 +118,9 @@ To transfer your delegation, you will need to complete the following steps:
 
 ### What happens to my rewards if I initiate a transfer with an open allocation on Ethereum mainnet?
 
-If the Indexer to whom you're delegating is still operating on L1, when you transfer to Arbitrum you will forfeit any delegation rewards from open allocations on Ethereum mainnet. This means that you will lose the rewards from, at most, the last 28-day period. If you time the transfer right after the Indexer has closed allocations you can make sure this is the least amount possible. If you have a communication channel with your Indexer(s), consider discussing with them to find the best time to do your transfer.
+If the Indexer to whom you're delegating has started transferring stake to L2 but is still operating on L1, when you transfer to Arbitrum you will forfeit any delegation rewards from open allocations on Ethereum mainnet. This means that you will lose the rewards from, at most, the last 28-day period. If you time the transfer right after the Indexer has closed allocations you can make sure this is the least amount possible. If you have a communication channel with your Indexer(s), consider discussing with them to find the best time to do your transfer. Other than this, your unrealized rewards will be transferred to L2 with the delegation.
+
+If the Indexer has transferred all their stake to L2, they will not have open allocations on L1 and therefore all your rewards will be transferred to L2 with the delegation transfer.
 
 ### What happens if the Indexer I currently delegate to isn't on Arbitrum One?
 
diff --git a/website/src/pages/en/archived/arbitrum/l2-transfer-tools-guide.mdx b/website/src/pages/en/archived/arbitrum/l2-transfer-tools-guide.mdx
index 4a34da9bad0e..5c8aa0b30a65 100644
--- a/website/src/pages/en/archived/arbitrum/l2-transfer-tools-guide.mdx
+++ b/website/src/pages/en/archived/arbitrum/l2-transfer-tools-guide.mdx
@@ -2,6 +2,8 @@
 title: L2 Transfer Tools Guide
 ---
 
+> [!IMPORTANT] L2 Transfer Tools have been deprecated, and The Graph now runs on Arbitrum, a Layer 2 blockchain.
+
 The Graph has made it easy to move to L2 on Arbitrum One. For each protocol participant, there are a set of L2 Transfer Tools to make transferring to L2 seamless for all network participants. These tools will require you to follow a specific set of steps depending on what you are transferring.
 
 Some frequent questions about these tools are answered in the [L2 Transfer Tools FAQ](/archived/arbitrum/l2-transfer-tools-faq/). The FAQs contain in-depth explanations of how to use the tools, how they work, and things to keep in mind when using them.
diff --git a/website/src/pages/en/indexing/overview.mdx b/website/src/pages/en/indexing/overview.mdx
index b508456397c0..2ff92033e2f9 100644
--- a/website/src/pages/en/indexing/overview.mdx
+++ b/website/src/pages/en/indexing/overview.mdx
@@ -733,7 +733,7 @@ Once an Indexer has staked GRT in the protocol, the [Indexer components](/indexi
 
 1. Open the [Remix app](https://remix.ethereum.org/) in a browser
 
-2. In the `File Explorer` create a file named **Staking.abi** with the staking ABI.
+2. In the `File Explorer` create a file named **Staking.abi** with the [staking ABI](https://raw.githubusercontent.com/graphprotocol/contracts/mainnet-deploy-build/build/abis/Staking.json).
 
 3. With `Staking.abi` selected and open in the editor, switch to the `Deploy and run transactions` section in the Remix interface.
 
diff --git a/website/src/pages/en/subgraphs/developing/creating/graph-ts/api.mdx b/website/src/pages/en/subgraphs/developing/creating/graph-ts/api.mdx
index 253184b50fac..3cfb1b9fcc27 100644
--- a/website/src/pages/en/subgraphs/developing/creating/graph-ts/api.mdx
+++ b/website/src/pages/en/subgraphs/developing/creating/graph-ts/api.mdx
@@ -500,7 +500,25 @@ export function handleTransfer(event: TransferEvent) {
 
 As long as the `ERC20Contract` on Ethereum has a public read-only function called `symbol`, it can be called with `.symbol()`. For public state variables a method with the same name is created automatically.
 
-Any other contract that is part of the Subgraph can be imported from the generated code and can be bound to a valid address.
+Any other contract that is part of the subgraph can be imported from the generated code and can be bound to a valid address. An example of that is presented within the steps below:
+
+- Extend `subgraph.yaml` file with desired ABI file:
+
+```yaml
+mapping:
+  kind: ethereum/events
+  apiVersion: 0.0.6
+  language: wasm/assemblyscript
+  entities:
+    - Gravatar
+  abis:
+    - name: Gravity
+      file: ./abis/Gravity.json
+    - name: OtherContract
+      file: ./abis/OtherContract.json
+```
+
+- Import and bind to the contract using its address
 
 #### Handling Reverted Calls
 
@@ -660,6 +678,8 @@ export function handleSomeEvent(event: SomeEvent): void {
 }
 ```
 
+<VideoEmbed title="How to Use Logging to Debug a Subgraph Mappins Error" youtube="7H3bm87u5Jw" />
+
 ### IPFS API
 
 ```typescript
@@ -772,6 +792,7 @@ When the type of a value is certain, it can be converted to a [built-in type](#b
 | BigInt               | BigDecimal           | s.toBigDecimal()             |
 | BigInt               | String (hexadecimal) | s.toHexString() or s.toHex() |
 | BigInt               | String (unicode)     | s.toString()                 |
+| BigInt               | Bytes                | s.fromBigInt()               |
 | BigInt               | i32                  | s.toI32()                    |
 | Boolean              | Boolean              | none                         |
 | Bytes (signed)       | BigInt               | BigInt.fromSignedBytes(s)    |
@@ -800,8 +821,8 @@ When the type of a value is certain, it can be converted to a [built-in type](#b
 | Bytes                | Address              | Address.fromBytes(s)         |
 | String               | BigInt               | BigInt.fromString(s)         |
 | String               | BigDecimal           | BigDecimal.fromString(s)     |
-| String (hexadecimal) | Bytes                | ByteArray.fromHexString(s)   |
-| String (UTF-8)       | Bytes                | ByteArray.fromUTF8(s)        |
+| String (hexadecimal) | Bytes                | Bytes.fromHexString(s)       |
+| String (UTF-8)       | Bytes                | Bytes.fromUTF8(s)            |
 
 ### Data Source Metadata
 
diff --git a/website/src/pages/en/subgraphs/developing/creating/subgraph-manifest.mdx b/website/src/pages/en/subgraphs/developing/creating/subgraph-manifest.mdx
index 88d6f1d87a82..6df8dd98d66f 100644
--- a/website/src/pages/en/subgraphs/developing/creating/subgraph-manifest.mdx
+++ b/website/src/pages/en/subgraphs/developing/creating/subgraph-manifest.mdx
@@ -218,7 +218,7 @@ filter:
 
 _The defined handler will be called once for every block which contains a call to the contract (data source) the handler is defined under._
 
-> **Note:** The `call` filter currently depends on the Parity tracing API. Certain networks, such as BNB chain and Arbitrum, do not support this API. If a Subgraph indexing one of these networks contains one or more block handlers with a `call` filter, it will not start syncing.
+> **Note:** The `call` filter currently depends on the Parity tracing API. Certain networks, such as BNB chain, Arbitrum, Polygon, and Optimism do not support this API. If a Subgraph indexing one of these networks contains one or more block handlers with a `call` filter, it will not start syncing.
 
 The absence of a filter for a block handler will ensure that the handler is called every block. A data source can only contain one block handler for each filter type.
 
@@ -452,6 +452,8 @@ let tradingPair = context.getString('tradingPair')
 
 There are setters and getters like `setString` and `getString` for all value types.
 
+> Referencing an entity is done via ID in GraphQL. That ID can be passed into the instantiated data source by setting it in the context and then accessed within the mapping of the template. An example can be found in the [documentation of `graph-ts`](https://github.com/graphprotocol/graph-tooling/tree/main/packages/ts#api).
+
 ## Start Blocks
 
 The `startBlock` is an optional setting that allows you to define from which block in the chain the data source will start indexing. Setting the start block allows the data source to skip potentially millions of blocks that are irrelevant. Typically, a Subgraph developer will set `startBlock` to the block in which the smart contract of the data source was created.

From cc31b442b2568933de84599dfa258bac543c665c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Beno=C3=AEt=20Rouleau?= <benoit.rouleau@icloud.com>
Date: Wed, 16 Jul 2025 10:21:55 -0400
Subject: [PATCH 29/36] =?UTF-8?q?Supported=20Networks:=20=E2=80=9CSubgraph?=
 =?UTF-8?q?=20Studio=E2=80=9D=20=3D>=20=E2=80=9CHosted=E2=80=9D=20+=20add?=
 =?UTF-8?q?=20provider=20tooltip=20(#1012)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* Update dependencies

* Supported Networks: “Subgraph Studio” => “Hosted”

+ add provider tooltip + refactoring
---
 package.json                                  |   2 +-
 pnpm-lock.yaml                                | 704 +++++++++---------
 website/package.json                          |  10 +-
 website/src/pages/en/index.json               |   8 +-
 .../supportedNetworks/NetworkDetailsPage.tsx  |  10 +-
 .../src/supportedNetworks/NetworksTable.tsx   |  21 +-
 website/src/supportedNetworks/utils.ts        | 103 ++-
 7 files changed, 442 insertions(+), 416 deletions(-)

diff --git a/package.json b/package.json
index 1e10dc53a916..c59eaa415e43 100644
--- a/package.json
+++ b/package.json
@@ -21,7 +21,7 @@
   },
   "devDependencies": {
     "@edgeandnode/eslint-config": "^2.0.3",
-    "@types/node": "^22.16.2",
+    "@types/node": "^22.16.4",
     "eslint": "^8.57.1",
     "eslint-plugin-mdx": "^3.6.2",
     "prettier": "^3.6.2",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 6700a4587de8..a14f42b2e2c8 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -15,8 +15,8 @@ importers:
         specifier: ^2.0.3
         version: 2.0.3(eslint@8.57.1)(typescript@5.8.3)
       '@types/node':
-        specifier: ^22.16.2
-        version: 22.16.2
+        specifier: ^22.16.4
+        version: 22.16.4
       eslint:
         specifier: ^8.57.1
         version: 8.57.1
@@ -68,7 +68,7 @@ importers:
     devDependencies:
       '@cloudflare/workers-types':
         specifier: ^4.20250710.0
-        version: 4.20250710.0
+        version: 4.20250715.0
       '@types/react':
         specifier: ^18.3.23
         version: 18.3.23
@@ -83,10 +83,10 @@ importers:
         version: 5.8.3
       vitest:
         specifier: ^2.1.9
-        version: 2.1.9(@types/node@22.16.2)(jsdom@24.1.3)
+        version: 2.1.9(@types/node@22.16.4)(jsdom@24.1.3)
       wrangler:
         specifier: ^3.114.11
-        version: 3.114.11(@cloudflare/workers-types@4.20250710.0)
+        version: 3.114.11(@cloudflare/workers-types@4.20250715.0)
 
   packages/remark-lint-restrict-elements:
     dependencies:
@@ -101,16 +101,16 @@ importers:
     dependencies:
       '@docsearch/react':
         specifier: ^3.9.0
-        version: 3.9.0(@algolia/client-search@5.32.0)(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)
+        version: 3.9.0(@algolia/client-search@5.33.0)(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)
       '@edgeandnode/common':
         specifier: ^7.0.4
         version: 7.0.4(hardhat@2.25.0(typescript@5.8.3))
       '@edgeandnode/gds':
-        specifier: ^6.7.0
-        version: 6.7.0(@emotion/is-prop-valid@0.8.8)(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(@theme-ui/core@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(dayjs@1.11.13)(hardhat@2.25.0(typescript@5.8.3))(next@14.2.30(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)(theme-ui@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(typescript@5.8.3)
+        specifier: ^6.7.1
+        version: 6.7.1(@emotion/is-prop-valid@0.8.8)(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(@theme-ui/core@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(dayjs@1.11.13)(hardhat@2.25.0(typescript@5.8.3))(next@14.2.30(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)(theme-ui@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(typescript@5.8.3)
       '@edgeandnode/go':
-        specifier: ^10.3.0
-        version: 10.3.0(df7a60f2b2bbf39644b6c2833d03ec2d)
+        specifier: ^10.3.1
+        version: 10.3.1(442dd4704c05a99a69d6fa587fe6972c)
       '@emotion/react':
         specifier: ^11.14.0
         version: 11.14.0(@types/react@18.3.23)(react@18.3.1)
@@ -127,8 +127,8 @@ importers:
         specifier: ^11.0.0
         version: 11.0.0
       '@readme/openapi-parser':
-        specifier: ^4.1.0
-        version: 4.1.0(openapi-types@12.1.3)
+        specifier: ^4.1.1
+        version: 4.1.2(openapi-types@12.1.3)
       fetch-har:
         specifier: ^11.1.1
         version: 11.1.1
@@ -151,8 +151,8 @@ importers:
         specifier: ^2.66.0
         version: 2.66.0
       motion:
-        specifier: ^12.23.1
-        version: 12.23.1(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+        specifier: ^12.23.6
+        version: 12.23.6(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       next:
         specifier: ^14.2.30
         version: 14.2.30(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -209,8 +209,8 @@ importers:
         specifier: ^2.60.0
         version: 2.60.0
       '@types/node':
-        specifier: ^22.16.2
-        version: 22.16.2
+        specifier: ^22.16.4
+        version: 22.16.4
       '@types/react':
         specifier: ^18.3.23
         version: 18.3.23
@@ -267,56 +267,56 @@ packages:
       '@algolia/client-search': '>= 4.9.1 < 6'
       algoliasearch: '>= 4.9.1 < 6'
 
-  '@algolia/client-abtesting@5.32.0':
-    resolution: {integrity: sha512-HG/6Eib6DnJYm/B2ijWFXr4txca/YOuA4K7AsEU0JBrOZSB+RU7oeDyNBPi3c0v0UDDqlkBqM3vBU/auwZlglA==}
+  '@algolia/client-abtesting@5.33.0':
+    resolution: {integrity: sha512-Pyv+iHkkq7BJWFKzdrXm/JSbcTGvrGqJnIMwHYYlKDjuEBWhYt/z4WDLP9MbFZ9cTKb4qe8OvzEmS/0ERW3ibg==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/client-analytics@5.32.0':
-    resolution: {integrity: sha512-8Y9MLU72WFQOW3HArYv16+Wvm6eGmsqbxxM1qxtm0hvSASJbxCm+zQAZe5stqysTlcWo4BJ82KEH1PfgHbJAmQ==}
+  '@algolia/client-analytics@5.33.0':
+    resolution: {integrity: sha512-qkRc7ovjWQQJng6U1yM5esLPNDB0leGCaOh3FEfeWRyLB0xnjLsBEUkKanYq9GrewPvi17l78nDhkqB2SYzTCw==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/client-common@5.32.0':
-    resolution: {integrity: sha512-w8L+rgyXMCPBKmEdOT+RfgMrF0mT6HK60vPYWLz8DBs/P7yFdGo7urn99XCJvVLMSKXrIbZ2FMZ/i50nZTXnuQ==}
+  '@algolia/client-common@5.33.0':
+    resolution: {integrity: sha512-Gq8Z4Fv0DkqDkf/bZl7ZwIF7PSCnRFwpyQoNDnUg+s4SwerXx6VwZJlIx/t5b9+l7vwWsjnKVivCfM4Ab5gw+g==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/client-insights@5.32.0':
-    resolution: {integrity: sha512-AdWfynhUeX7jz/LTiFU3wwzJembTbdLkQIOLs4n7PyBuxZ3jz4azV1CWbIP8AjUOFmul6uXbmYza+KqyS5CzOA==}
+  '@algolia/client-insights@5.33.0':
+    resolution: {integrity: sha512-/tp1oWD3lpSXhAC4n8j0GMDbmN6pd+pATeO1GeURAFP5TVF+2Jz+NbQ1et0uCTzdazOfjEjSIv0fQSLo7bqSgA==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/client-personalization@5.32.0':
-    resolution: {integrity: sha512-bTupJY4xzGZYI4cEQcPlSjjIEzMvv80h7zXGrXY1Y0KC/n/SLiMv84v7Uy+B6AG1Kiy9FQm2ADChBLo1uEhGtQ==}
+  '@algolia/client-personalization@5.33.0':
+    resolution: {integrity: sha512-hZNSqe2BXkrBQ04t5NSlqsNl4u0QrFfhXHbjO5iZ14TWt5jyOdtFMBxF3Qc0o0sqTVYnFIp0xtUbEi+/HkGeyQ==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/client-query-suggestions@5.32.0':
-    resolution: {integrity: sha512-if+YTJw1G3nDKL2omSBjQltCHUQzbaHADkcPQrGFnIGhVyHU3Dzq4g46uEv8mrL5sxL8FjiS9LvekeUlL2NRqw==}
+  '@algolia/client-query-suggestions@5.33.0':
+    resolution: {integrity: sha512-kpu2hCIR+848T0lcf3W1GCMe+HQp/LcHceIglA6Dyw6i+y9wH3w8kmXqIV2Svv6JQ9ojEqIL8Knk7NEvD3xIBg==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/client-search@5.32.0':
-    resolution: {integrity: sha512-kmK5nVkKb4DSUgwbveMKe4X3xHdMsPsOVJeEzBvFJ+oS7CkBPmpfHAEq+CcmiPJs20YMv6yVtUT9yPWL5WgAhg==}
+  '@algolia/client-search@5.33.0':
+    resolution: {integrity: sha512-Z5SAqPLxF8KyE9YPO4tAdHrXyb87DUJ0lXhFrcrG+dl/AQT9nqycQhtqDqdcQnfZrj02PImSWZQpxQj34nGZKw==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/ingestion@1.32.0':
-    resolution: {integrity: sha512-PZTqjJbx+fmPuT2ud1n4vYDSF1yrT//vOGI9HNYKNA0PM0xGUBWigf5gRivHsXa3oBnUlTyHV9j7Kqx5BHbVHQ==}
+  '@algolia/ingestion@1.33.0':
+    resolution: {integrity: sha512-KNJI60N+twnDLiIY+oGO2Q+syS+yBNOmNdhsB5vCzzrhi3CYs+bufnJ67/BUUfnt+T5+3VlnkvUgDkGBmmZXmA==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/monitoring@1.32.0':
-    resolution: {integrity: sha512-kYYoOGjvNQAmHDS1v5sBj+0uEL9RzYqH/TAdq8wmcV+/22weKt/fjh+6LfiqkS1SCZFYYrwGnirrUhUM36lBIQ==}
+  '@algolia/monitoring@1.33.0':
+    resolution: {integrity: sha512-47R0kMDTSj8Q7rCUgIRv5Xc518tCBBS0KIZ5oRKg+hspQaJmEO+fxwGLrIIwp5JiaK6y+5sbS7bhtaajelJhpg==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/recommend@5.32.0':
-    resolution: {integrity: sha512-jyIBLdskjPAL7T1g57UMfUNx+PzvYbxKslwRUKBrBA6sNEsYCFdxJAtZSLUMmw6MC98RDt4ksmEl5zVMT5bsuw==}
+  '@algolia/recommend@5.33.0':
+    resolution: {integrity: sha512-HpeLoVQuv5kW9xL0RSq1exa8ueNwyx+9B02dzFonlQzKTaSedM0jiWo6m3nWpi1hChAKqjzkL40FkxrgyrWTSg==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/requester-browser-xhr@5.32.0':
-    resolution: {integrity: sha512-eDp14z92Gt6JlFgiexImcWWH+Lk07s/FtxcoDaGrE4UVBgpwqOO6AfQM6dXh1pvHxlDFbMJihHc/vj3gBhPjqQ==}
+  '@algolia/requester-browser-xhr@5.33.0':
+    resolution: {integrity: sha512-uOqDkvY7s9c9rkaZ4+n69LkTmZ5ax3el+8u6ipvODfj1P3HzrGvMUVFy/nGSXxw+XITKcIRphPQcyqn15b02dA==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/requester-fetch@5.32.0':
-    resolution: {integrity: sha512-rnWVglh/K75hnaLbwSc2t7gCkbq1ldbPgeIKDUiEJxZ4mlguFgcltWjzpDQ/t1LQgxk9HdIFcQfM17Hid3aQ6Q==}
+  '@algolia/requester-fetch@5.33.0':
+    resolution: {integrity: sha512-NzTEGjwjPhUXPsrjj9nXM43+jtBVeL6UgGNBTQKsxjpqJ3EEAQ2Kq5g7DRK6mVDTQiTBWvBLKChJpn4qxwtLsg==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/requester-node-http@5.32.0':
-    resolution: {integrity: sha512-LbzQ04+VLkzXY4LuOzgyjqEv/46Gwrk55PldaglMJ4i4eDXSRXGKkwJpXFwsoU+c1HMQlHIyjJBhrfsfdyRmyQ==}
+  '@algolia/requester-node-http@5.33.0':
+    resolution: {integrity: sha512-FhEE19ScAYuXL3VLj2I3KhL7683gZwZoa+BQZUEnA05vSbVBhCAqUBQgiVu7j2RF3VceqLX3+GEeY0bHs4y7eA==}
     engines: {node: '>= 14.0.0'}
 
   '@alloc/quick-lru@5.2.0':
@@ -377,8 +377,8 @@ packages:
     resolution: {integrity: sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==}
     engines: {node: '>=6.9.0'}
 
-  '@babel/types@7.28.0':
-    resolution: {integrity: sha512-jYnje+JyZG5YThjHiF28oT4SIZLnYOcSBb6+SDaFIyzDVSkXQmQQYclJ2R+YxcdmK0AX6x1E5OQNtuh3jHDrUg==}
+  '@babel/types@7.28.1':
+    resolution: {integrity: sha512-x0LvFTekgSX+83TI28Y9wYPUfzrnl2aT5+5QLnO6v7mSJYtEEevuDRN0F0uSHRk1G1IWZC43o00Y0xDDrpBGPQ==}
     engines: {node: '>=6.9.0'}
 
   '@base-ui-components/react@1.0.0-alpha.7':
@@ -457,8 +457,8 @@ packages:
     cpu: [x64]
     os: [win32]
 
-  '@cloudflare/workers-types@4.20250710.0':
-    resolution: {integrity: sha512-o055XFgW/ZinLnxDDlm4Q4b2yEmP2x5kekOka/E86blax/RGXj51mBQV/Co3VNog1CePzOA9S/CEOthoIirWRA==}
+  '@cloudflare/workers-types@4.20250715.0':
+    resolution: {integrity: sha512-uMp+ClvvhNlk3ojIgWuIB5Zteq4YVmZcyX16hpJ8eCeCX3izagfEZwXe/vETlv4cc5vtM3xAOMdV//0BD0E98g==}
 
   '@corex/deepmerge@4.0.43':
     resolution: {integrity: sha512-N8uEMrMPL0cu/bdboEWpQYb/0i2K5Qn8eCsxzOmxSggJbbQte7ljMRoXm917AbntqTGOzdTu+vP3KOOzoC70HQ==}
@@ -532,8 +532,8 @@ packages:
       typescript:
         optional: true
 
-  '@edgeandnode/gds@6.7.0':
-    resolution: {integrity: sha512-mQNzBOkXf0QytAZwKRkibdGmUhjzJNFvEOh3mtlk4t1lrLHyZy3lfxmj9DZYcqTjGKhcy92hV03qVncsZLCKyw==}
+  '@edgeandnode/gds@6.7.1':
+    resolution: {integrity: sha512-4AhN0IMUJuQMnV3k/vJ6wRkdT4ZPEYmG/cSkHBrT/Elaz1/x/erOrlgYwCusWGKBwjsQAlAxNA6QJaL13zxgyw==}
     peerDependencies:
       '@emotion/react': ^11
       dayjs: ^1.11
@@ -545,12 +545,12 @@ packages:
       next:
         optional: true
 
-  '@edgeandnode/go@10.3.0':
-    resolution: {integrity: sha512-qd04ZJcHXDRDsFTgM/hjJwyriBQzpFCIB6zS/ArG61dTdvYWZfU4ugbsm+WVTrf/gxOEl9EFWej3oazM6gwWkg==}
+  '@edgeandnode/go@10.3.1':
+    resolution: {integrity: sha512-fwUnJdm4MWps1ILvJ9ft7zYQx1noSsQwSDa8sWJ2Pkeml4UKP3m65KCovo/M5Xvi4fp1vr+fvIWDzWa8mo7IqA==}
     peerDependencies:
       '@edgeandnode/common': ^7.0.4
       '@edgeandnode/ens': ^2.3.0
-      '@edgeandnode/gds': ^6.7.0
+      '@edgeandnode/gds': ^6.7.1
       '@emotion/react': ^11
       '@tanstack/react-query': ^5
       graphql: '>=16.9'
@@ -1534,8 +1534,8 @@ packages:
     resolution: {integrity: sha512-jMxvwzkKzd3cXo2EB9GM2ic0eYo2rP/BS6gJt6HnWbsDO1O8GSD4k7o2Cpr2YERtMpGF/MGcDfsfj2EbQPtrXw==}
     engines: {node: '>= 10'}
 
-  '@napi-rs/wasm-runtime@0.2.11':
-    resolution: {integrity: sha512-9DPkXtvHydrcOsopiYpUgPHpmj0HWZKMUnL2dZqpvC42lsratuBG06V5ipyno0fUek5VlFsNQ+AcFATSrJXgMA==}
+  '@napi-rs/wasm-runtime@0.2.12':
+    resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==}
 
   '@next/env@13.5.11':
     resolution: {integrity: sha512-fbb2C7HChgM7CemdCY+y3N1n8pcTKdqtQLbC7/EQtPdLvlMUT9JX/dBYl8MMZAtYG4uVMyPFHXckb68q/NRwqg==}
@@ -2759,8 +2759,8 @@ packages:
     resolution: {integrity: sha512-XSyaAsJkZfmMO9R4WDlVJARZgd4wlImftSkMkKclidniXA1h6DTya9iTqJenQo9mHQLh3u6kAC3CDRaIV+LbLw==}
     engines: {node: '>=18'}
 
-  '@readme/openapi-parser@4.1.0':
-    resolution: {integrity: sha512-zZaGaOJ+0bYPGkPK4ekspE1BoO1iifxe5d3rsAE6AqFCoyHCjt/xMDtmJpy4slFdd1YtEv/VHhBpB1FlNClCNw==}
+  '@readme/openapi-parser@4.1.2':
+    resolution: {integrity: sha512-lAFH88r/CHs5VZDUocEda0OSMSQsr6801sziIjOKyVA+0hSFN+BPuelPF5XvkMROHecnPd+XEJN1iNQqCgER/g==}
     engines: {node: '>=20'}
     peerDependencies:
       openapi-types: '>=7'
@@ -2773,103 +2773,103 @@ packages:
     resolution: {integrity: sha512-FqALmHI8D4o6lk/LRWDnhw95z5eO+eAa6ORjVg09YRR7BkcM6oPHU9uyC0gtQG5vpFLvgpeU4+zEAz2H8APHNw==}
     engines: {node: '>= 10'}
 
-  '@rollup/rollup-android-arm-eabi@4.44.2':
-    resolution: {integrity: sha512-g0dF8P1e2QYPOj1gu7s/3LVP6kze9A7m6x0BZ9iTdXK8N5c2V7cpBKHV3/9A4Zd8xxavdhK0t4PnqjkqVmUc9Q==}
+  '@rollup/rollup-android-arm-eabi@4.45.1':
+    resolution: {integrity: sha512-NEySIFvMY0ZQO+utJkgoMiCAjMrGvnbDLHvcmlA33UXJpYBCvlBEbMMtV837uCkS+plG2umfhn0T5mMAxGrlRA==}
     cpu: [arm]
     os: [android]
 
-  '@rollup/rollup-android-arm64@4.44.2':
-    resolution: {integrity: sha512-Yt5MKrOosSbSaAK5Y4J+vSiID57sOvpBNBR6K7xAaQvk3MkcNVV0f9fE20T+41WYN8hDn6SGFlFrKudtx4EoxA==}
+  '@rollup/rollup-android-arm64@4.45.1':
+    resolution: {integrity: sha512-ujQ+sMXJkg4LRJaYreaVx7Z/VMgBBd89wGS4qMrdtfUFZ+TSY5Rs9asgjitLwzeIbhwdEhyj29zhst3L1lKsRQ==}
     cpu: [arm64]
     os: [android]
 
-  '@rollup/rollup-darwin-arm64@4.44.2':
-    resolution: {integrity: sha512-EsnFot9ZieM35YNA26nhbLTJBHD0jTwWpPwmRVDzjylQT6gkar+zenfb8mHxWpRrbn+WytRRjE0WKsfaxBkVUA==}
+  '@rollup/rollup-darwin-arm64@4.45.1':
+    resolution: {integrity: sha512-FSncqHvqTm3lC6Y13xncsdOYfxGSLnP+73k815EfNmpewPs+EyM49haPS105Rh4aF5mJKywk9X0ogzLXZzN9lA==}
     cpu: [arm64]
     os: [darwin]
 
-  '@rollup/rollup-darwin-x64@4.44.2':
-    resolution: {integrity: sha512-dv/t1t1RkCvJdWWxQ2lWOO+b7cMsVw5YFaS04oHpZRWehI1h0fV1gF4wgGCTyQHHjJDfbNpwOi6PXEafRBBezw==}
+  '@rollup/rollup-darwin-x64@4.45.1':
+    resolution: {integrity: sha512-2/vVn/husP5XI7Fsf/RlhDaQJ7x9zjvC81anIVbr4b/f0xtSmXQTFcGIQ/B1cXIYM6h2nAhJkdMHTnD7OtQ9Og==}
     cpu: [x64]
     os: [darwin]
 
-  '@rollup/rollup-freebsd-arm64@4.44.2':
-    resolution: {integrity: sha512-W4tt4BLorKND4qeHElxDoim0+BsprFTwb+vriVQnFFtT/P6v/xO5I99xvYnVzKWrK6j7Hb0yp3x7V5LUbaeOMg==}
+  '@rollup/rollup-freebsd-arm64@4.45.1':
+    resolution: {integrity: sha512-4g1kaDxQItZsrkVTdYQ0bxu4ZIQ32cotoQbmsAnW1jAE4XCMbcBPDirX5fyUzdhVCKgPcrwWuucI8yrVRBw2+g==}
     cpu: [arm64]
     os: [freebsd]
 
-  '@rollup/rollup-freebsd-x64@4.44.2':
-    resolution: {integrity: sha512-tdT1PHopokkuBVyHjvYehnIe20fxibxFCEhQP/96MDSOcyjM/shlTkZZLOufV3qO6/FQOSiJTBebhVc12JyPTA==}
+  '@rollup/rollup-freebsd-x64@4.45.1':
+    resolution: {integrity: sha512-L/6JsfiL74i3uK1Ti2ZFSNsp5NMiM4/kbbGEcOCps99aZx3g8SJMO1/9Y0n/qKlWZfn6sScf98lEOUe2mBvW9A==}
     cpu: [x64]
     os: [freebsd]
 
-  '@rollup/rollup-linux-arm-gnueabihf@4.44.2':
-    resolution: {integrity: sha512-+xmiDGGaSfIIOXMzkhJ++Oa0Gwvl9oXUeIiwarsdRXSe27HUIvjbSIpPxvnNsRebsNdUo7uAiQVgBD1hVriwSQ==}
+  '@rollup/rollup-linux-arm-gnueabihf@4.45.1':
+    resolution: {integrity: sha512-RkdOTu2jK7brlu+ZwjMIZfdV2sSYHK2qR08FUWcIoqJC2eywHbXr0L8T/pONFwkGukQqERDheaGTeedG+rra6Q==}
     cpu: [arm]
     os: [linux]
 
-  '@rollup/rollup-linux-arm-musleabihf@4.44.2':
-    resolution: {integrity: sha512-bDHvhzOfORk3wt8yxIra8N4k/N0MnKInCW5OGZaeDYa/hMrdPaJzo7CSkjKZqX4JFUWjUGm88lI6QJLCM7lDrA==}
+  '@rollup/rollup-linux-arm-musleabihf@4.45.1':
+    resolution: {integrity: sha512-3kJ8pgfBt6CIIr1o+HQA7OZ9mp/zDk3ctekGl9qn/pRBgrRgfwiffaUmqioUGN9hv0OHv2gxmvdKOkARCtRb8Q==}
     cpu: [arm]
     os: [linux]
 
-  '@rollup/rollup-linux-arm64-gnu@4.44.2':
-    resolution: {integrity: sha512-NMsDEsDiYghTbeZWEGnNi4F0hSbGnsuOG+VnNvxkKg0IGDvFh7UVpM/14mnMwxRxUf9AdAVJgHPvKXf6FpMB7A==}
+  '@rollup/rollup-linux-arm64-gnu@4.45.1':
+    resolution: {integrity: sha512-k3dOKCfIVixWjG7OXTCOmDfJj3vbdhN0QYEqB+OuGArOChek22hn7Uy5A/gTDNAcCy5v2YcXRJ/Qcnm4/ma1xw==}
     cpu: [arm64]
     os: [linux]
 
-  '@rollup/rollup-linux-arm64-musl@4.44.2':
-    resolution: {integrity: sha512-lb5bxXnxXglVq+7imxykIp5xMq+idehfl+wOgiiix0191av84OqbjUED+PRC5OA8eFJYj5xAGcpAZ0pF2MnW+A==}
+  '@rollup/rollup-linux-arm64-musl@4.45.1':
+    resolution: {integrity: sha512-PmI1vxQetnM58ZmDFl9/Uk2lpBBby6B6rF4muJc65uZbxCs0EA7hhKCk2PKlmZKuyVSHAyIw3+/SiuMLxKxWog==}
     cpu: [arm64]
     os: [linux]
 
-  '@rollup/rollup-linux-loongarch64-gnu@4.44.2':
-    resolution: {integrity: sha512-Yl5Rdpf9pIc4GW1PmkUGHdMtbx0fBLE1//SxDmuf3X0dUC57+zMepow2LK0V21661cjXdTn8hO2tXDdAWAqE5g==}
+  '@rollup/rollup-linux-loongarch64-gnu@4.45.1':
+    resolution: {integrity: sha512-9UmI0VzGmNJ28ibHW2GpE2nF0PBQqsyiS4kcJ5vK+wuwGnV5RlqdczVocDSUfGX/Na7/XINRVoUgJyFIgipoRg==}
     cpu: [loong64]
     os: [linux]
 
-  '@rollup/rollup-linux-powerpc64le-gnu@4.44.2':
-    resolution: {integrity: sha512-03vUDH+w55s680YYryyr78jsO1RWU9ocRMaeV2vMniJJW/6HhoTBwyyiiTPVHNWLnhsnwcQ0oH3S9JSBEKuyqw==}
+  '@rollup/rollup-linux-powerpc64le-gnu@4.45.1':
+    resolution: {integrity: sha512-7nR2KY8oEOUTD3pBAxIBBbZr0U7U+R9HDTPNy+5nVVHDXI4ikYniH1oxQz9VoB5PbBU1CZuDGHkLJkd3zLMWsg==}
     cpu: [ppc64]
     os: [linux]
 
-  '@rollup/rollup-linux-riscv64-gnu@4.44.2':
-    resolution: {integrity: sha512-iYtAqBg5eEMG4dEfVlkqo05xMOk6y/JXIToRca2bAWuqjrJYJlx/I7+Z+4hSrsWU8GdJDFPL4ktV3dy4yBSrzg==}
+  '@rollup/rollup-linux-riscv64-gnu@4.45.1':
+    resolution: {integrity: sha512-nlcl3jgUultKROfZijKjRQLUu9Ma0PeNv/VFHkZiKbXTBQXhpytS8CIj5/NfBeECZtY2FJQubm6ltIxm/ftxpw==}
     cpu: [riscv64]
     os: [linux]
 
-  '@rollup/rollup-linux-riscv64-musl@4.44.2':
-    resolution: {integrity: sha512-e6vEbgaaqz2yEHqtkPXa28fFuBGmUJ0N2dOJK8YUfijejInt9gfCSA7YDdJ4nYlv67JfP3+PSWFX4IVw/xRIPg==}
+  '@rollup/rollup-linux-riscv64-musl@4.45.1':
+    resolution: {integrity: sha512-HJV65KLS51rW0VY6rvZkiieiBnurSzpzore1bMKAhunQiECPuxsROvyeaot/tcK3A3aGnI+qTHqisrpSgQrpgA==}
     cpu: [riscv64]
     os: [linux]
 
-  '@rollup/rollup-linux-s390x-gnu@4.44.2':
-    resolution: {integrity: sha512-evFOtkmVdY3udE+0QKrV5wBx7bKI0iHz5yEVx5WqDJkxp9YQefy4Mpx3RajIVcM6o7jxTvVd/qpC1IXUhGc1Mw==}
+  '@rollup/rollup-linux-s390x-gnu@4.45.1':
+    resolution: {integrity: sha512-NITBOCv3Qqc6hhwFt7jLV78VEO/il4YcBzoMGGNxznLgRQf43VQDae0aAzKiBeEPIxnDrACiMgbqjuihx08OOw==}
     cpu: [s390x]
     os: [linux]
 
-  '@rollup/rollup-linux-x64-gnu@4.44.2':
-    resolution: {integrity: sha512-/bXb0bEsWMyEkIsUL2Yt5nFB5naLAwyOWMEviQfQY1x3l5WsLKgvZf66TM7UTfED6erckUVUJQ/jJ1FSpm3pRQ==}
+  '@rollup/rollup-linux-x64-gnu@4.45.1':
+    resolution: {integrity: sha512-+E/lYl6qu1zqgPEnTrs4WysQtvc/Sh4fC2nByfFExqgYrqkKWp1tWIbe+ELhixnenSpBbLXNi6vbEEJ8M7fiHw==}
     cpu: [x64]
     os: [linux]
 
-  '@rollup/rollup-linux-x64-musl@4.44.2':
-    resolution: {integrity: sha512-3D3OB1vSSBXmkGEZR27uiMRNiwN08/RVAcBKwhUYPaiZ8bcvdeEwWPvbnXvvXHY+A/7xluzcN+kaiOFNiOZwWg==}
+  '@rollup/rollup-linux-x64-musl@4.45.1':
+    resolution: {integrity: sha512-a6WIAp89p3kpNoYStITT9RbTbTnqarU7D8N8F2CV+4Cl9fwCOZraLVuVFvlpsW0SbIiYtEnhCZBPLoNdRkjQFw==}
     cpu: [x64]
     os: [linux]
 
-  '@rollup/rollup-win32-arm64-msvc@4.44.2':
-    resolution: {integrity: sha512-VfU0fsMK+rwdK8mwODqYeM2hDrF2WiHaSmCBrS7gColkQft95/8tphyzv2EupVxn3iE0FI78wzffoULH1G+dkw==}
+  '@rollup/rollup-win32-arm64-msvc@4.45.1':
+    resolution: {integrity: sha512-T5Bi/NS3fQiJeYdGvRpTAP5P02kqSOpqiopwhj0uaXB6nzs5JVi2XMJb18JUSKhCOX8+UE1UKQufyD6Or48dJg==}
     cpu: [arm64]
     os: [win32]
 
-  '@rollup/rollup-win32-ia32-msvc@4.44.2':
-    resolution: {integrity: sha512-+qMUrkbUurpE6DVRjiJCNGZBGo9xM4Y0FXU5cjgudWqIBWbcLkjE3XprJUsOFgC6xjBClwVa9k6O3A7K3vxb5Q==}
+  '@rollup/rollup-win32-ia32-msvc@4.45.1':
+    resolution: {integrity: sha512-lxV2Pako3ujjuUe9jiU3/s7KSrDfH6IgTSQOnDWr9aJ92YsFd7EurmClK0ly/t8dzMkDtd04g60WX6yl0sGfdw==}
     cpu: [ia32]
     os: [win32]
 
-  '@rollup/rollup-win32-x64-msvc@4.44.2':
-    resolution: {integrity: sha512-3+QZROYfJ25PDcxFF66UEk8jGWigHJeecZILvkPkyQN7oc5BvFo4YEXFkOs154j3FTMp9mn9Ky8RCOwastduEA==}
+  '@rollup/rollup-win32-x64-msvc@4.45.1':
+    resolution: {integrity: sha512-M/fKi4sasCdM8i0aWJjCSFm2qEnYRR8AMLG2kxp6wD13+tMGA4Z1tVAuHkNRjud5SW2EM3naLuK35w9twvf6aA==}
     cpu: [x64]
     os: [win32]
 
@@ -2940,32 +2940,32 @@ packages:
   '@shikijs/core@1.29.2':
     resolution: {integrity: sha512-vju0lY9r27jJfOY4Z7+Rt/nIOjzJpZ3y+nYpqtUZInVoXQ/TJZcfGnNOGnKjFdVZb8qexiCuSlZRKcGfhhTTZQ==}
 
-  '@shikijs/core@3.7.0':
-    resolution: {integrity: sha512-yilc0S9HvTPyahHpcum8eonYrQtmGTU0lbtwxhA6jHv4Bm1cAdlPFRCJX4AHebkCm75aKTjjRAW+DezqD1b/cg==}
+  '@shikijs/core@3.8.0':
+    resolution: {integrity: sha512-gWt8NNZFurL6FMESO4lEsmspDh0H1fyUibhx1NnEH/S3kOXgYiWa6ZFqy+dcjBLhZqCXsepuUaL1QFXk6PrpsQ==}
 
   '@shikijs/engine-javascript@1.29.2':
     resolution: {integrity: sha512-iNEZv4IrLYPv64Q6k7EPpOCE/nuvGiKl7zxdq0WFuRPF5PAE9PRo2JGq/d8crLusM59BRemJ4eOqrFrC4wiQ+A==}
 
-  '@shikijs/engine-javascript@3.7.0':
-    resolution: {integrity: sha512-0t17s03Cbv+ZcUvv+y33GtX75WBLQELgNdVghnsdhTgU3hVcWcMsoP6Lb0nDTl95ZJfbP1mVMO0p3byVh3uuzA==}
+  '@shikijs/engine-javascript@3.8.0':
+    resolution: {integrity: sha512-IBULFFpQ1N5Cg/C7jPCGnjIKz72CcRtD0BIbNhSuXPUOxLG0bF1URsP/uLfxQFQ9ORfunCQwL7UuSX1RSRBwUQ==}
 
   '@shikijs/engine-oniguruma@1.29.2':
     resolution: {integrity: sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA==}
 
-  '@shikijs/engine-oniguruma@3.7.0':
-    resolution: {integrity: sha512-5BxcD6LjVWsGu4xyaBC5bu8LdNgPCVBnAkWTtOCs/CZxcB22L8rcoWfv7Hh/3WooVjBZmFtyxhgvkQFedPGnFw==}
+  '@shikijs/engine-oniguruma@3.8.0':
+    resolution: {integrity: sha512-Tx7kR0oFzqa+rY7t80LjN8ZVtHO3a4+33EUnBVx2qYP3fGxoI9H0bvnln5ySelz9SIUTsS0/Qn+9dg5zcUMsUw==}
 
   '@shikijs/langs@1.29.2':
     resolution: {integrity: sha512-FIBA7N3LZ+223U7cJDUYd5shmciFQlYkFXlkKVaHsCPgfVLiO+e12FmQE6Tf9vuyEsFe3dIl8qGWKXgEHL9wmQ==}
 
-  '@shikijs/langs@3.7.0':
-    resolution: {integrity: sha512-1zYtdfXLr9xDKLTGy5kb7O0zDQsxXiIsw1iIBcNOO8Yi5/Y1qDbJ+0VsFoqTlzdmneO8Ij35g7QKF8kcLyznCQ==}
+  '@shikijs/langs@3.8.0':
+    resolution: {integrity: sha512-mfGYuUgjQ5GgXinB5spjGlBVhG2crKRpKkfADlp8r9k/XvZhtNXxyOToSnCEnF0QNiZnJjlt5MmU9PmhRdwAbg==}
 
   '@shikijs/themes@1.29.2':
     resolution: {integrity: sha512-i9TNZlsq4uoyqSbluIcZkmPL9Bfi3djVxRnofUHwvx/h6SRW3cwgBC5SML7vsDcWyukY0eCzVN980rqP6qNl9g==}
 
-  '@shikijs/themes@3.7.0':
-    resolution: {integrity: sha512-VJx8497iZPy5zLiiCTSIaOChIcKQwR0FebwE9S3rcN0+J/GTWwQ1v/bqhTbpbY3zybPKeO8wdammqkpXc4NVjQ==}
+  '@shikijs/themes@3.8.0':
+    resolution: {integrity: sha512-yaZiLuyO23sXe16JFU76KyUMTZCJi4EMQKIrdQt7okoTzI4yAaJhVXT2Uy4k8yBIEFRiia5dtD7gC1t8m6y3oQ==}
 
   '@shikijs/twoslash@1.29.2':
     resolution: {integrity: sha512-2S04ppAEa477tiaLfGEn1QJWbZUmbk8UoPbAEw4PifsrxkBXtAtOflIZJNtuCwz8ptc/TPxy7CO7gW4Uoi6o/g==}
@@ -2973,8 +2973,8 @@ packages:
   '@shikijs/types@1.29.2':
     resolution: {integrity: sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw==}
 
-  '@shikijs/types@3.7.0':
-    resolution: {integrity: sha512-MGaLeaRlSWpnP0XSAum3kP3a8vtcTsITqoEPYdt3lQG3YCdQH4DnEhodkYcNMcU0uW0RffhoD1O3e0vG5eSBBg==}
+  '@shikijs/types@3.8.0':
+    resolution: {integrity: sha512-I/b/aNg0rP+kznVDo7s3UK8jMcqEGTtoPDdQ+JlQ2bcJIyu/e2iRvl42GLIDMK03/W1YOHOuhlhQ7aM+XbKUeg==}
 
   '@shikijs/vscode-textmate@10.0.2':
     resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==}
@@ -3046,11 +3046,11 @@ packages:
       react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
       react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
 
-  '@tanstack/query-core@5.82.0':
-    resolution: {integrity: sha512-JrjoVuaajBQtnoWSg8iaPHaT4mW73lK2t+exxHNOSMqy0+13eKLqJgTKXKImLejQIfdAHQ6Un0njEhOvUtOd5w==}
+  '@tanstack/query-core@5.83.0':
+    resolution: {integrity: sha512-0M8dA+amXUkyz5cVUm/B+zSk3xkQAcuXuz5/Q/LveT4ots2rBpPTZOzd7yJa2Utsf8D2Upl5KyjhHRY+9lB/XA==}
 
-  '@tanstack/react-query@5.82.0':
-    resolution: {integrity: sha512-mnk8/ofKEthFeMdhV1dV8YXRf+9HqvXAcciXkoo755d/ocfWq7N/Y9jGOzS3h7ZW9dDGwSIhs3/HANWUBsyqYg==}
+  '@tanstack/react-query@5.83.0':
+    resolution: {integrity: sha512-/XGYhZ3foc5H0VM2jLSD/NyBRIOK4q9kfeml4+0x2DlL6xVuAcVEW+hTlTapAmejObg0i3eNqhkr2dT+eciwoQ==}
     peerDependencies:
       react: ^18 || ^19
 
@@ -3117,8 +3117,8 @@ packages:
   '@ts-morph/common@0.24.0':
     resolution: {integrity: sha512-c1xMmNHWpNselmpIqursHeOHHBTIsJLbB+NuovbTTRCNiTLEr/U9dbJ8qy0jd/O2x5pc3seWuOUN5R2IoOTp8A==}
 
-  '@tybys/wasm-util@0.9.0':
-    resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==}
+  '@tybys/wasm-util@0.10.0':
+    resolution: {integrity: sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ==}
 
   '@types/bn.js@5.2.0':
     resolution: {integrity: sha512-DLbJ1BPqxvQhIGbeu8VbUC1DiAiahHtAYvA0ZEAa4P31F7IaArc8z3C3BRQdWX4mtLQuABG4yzp76ZrS02Ui1Q==}
@@ -3276,8 +3276,8 @@ packages:
   '@types/nlcst@2.0.3':
     resolution: {integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==}
 
-  '@types/node@22.16.2':
-    resolution: {integrity: sha512-Cdqa/eJTvt4fC4wmq1Mcc0CPUjp/Qy2FGqLza3z3pKymsI969TcZ54diNJv8UYUgeWxyb8FSbCkhdR6WqmUFhA==}
+  '@types/node@22.16.4':
+    resolution: {integrity: sha512-PYRhNtZdm2wH/NT2k/oAJ6/f2VD2N2Dag0lGlx2vWgMSJXGNmlce5MiTQzoWAiIJtso30mjnfQCOKVH+kAQC/g==}
 
   '@types/parse-json@4.0.2':
     resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==}
@@ -3549,13 +3549,13 @@ packages:
   '@vitest/utils@2.1.9':
     resolution: {integrity: sha512-v0psaMSkNJ3A2NMrUEHFRzJtDPFn+/VWZ5WxImB21T9fjucJRmS7xCS3ppEnARb9y11OAzaD+P2Ps+b+BGX5iQ==}
 
-  '@web3icons/common@0.11.14':
-    resolution: {integrity: sha512-TEqInrR1fCW9V6bI5AbmZjxsTGbyF7jF0XJS9dsS3PAokVnkGGNKAP8J2wiqyFZ7kZSpcnnNLqarsliIvEUSIA==}
+  '@web3icons/common@0.11.15':
+    resolution: {integrity: sha512-ahTk6hf3tSXDplWwaM2TKqemKWhSeb1Wajg9t5rJ4tR29gOUx7s3yxXEkMgRwow0svg9ZHtrJOoVuttgl9KNBw==}
     peerDependencies:
       typescript: ^5.0.0
 
-  '@web3icons/react@4.0.17':
-    resolution: {integrity: sha512-es05+Oy+mb1wnFossmdK2orTI0rb5BMUUBdRchrTgtlPS9zrDgGtTNwYNciQFfKOSx0AQtwwzdBYmDSAxduagw==}
+  '@web3icons/react@4.0.19':
+    resolution: {integrity: sha512-+FqWm9+1SqIuf0H7PCZl5l0bpZWUgAW8ORIhjaGbOiD0U/gwH9L3DWbVHISq3VxIgB24H4tm1mygHBm0KF8vGw==}
     peerDependencies:
       react: ^18.2.0
 
@@ -3645,8 +3645,8 @@ packages:
   ajv@8.17.1:
     resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==}
 
-  algoliasearch@5.32.0:
-    resolution: {integrity: sha512-84xBncKNPBK8Ae89F65+SyVcOihrIbm/3N7to+GpRBHEUXGjA3ydWTMpcRW6jmFzkBQ/eqYy/y+J+NBpJWYjBg==}
+  algoliasearch@5.33.0:
+    resolution: {integrity: sha512-WdgSkmyTec5n2W2FA2/7Q7TCSajCV0X6w57u3H5GHnw0UCp/G5xb33/Jx1FX3uMtz17P3wGEzMCP82d0LJqMow==}
     engines: {node: '>= 14.0.0'}
 
   ansi-align@3.0.1:
@@ -4465,8 +4465,8 @@ packages:
   eastasianwidth@0.2.0:
     resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
 
-  electron-to-chromium@1.5.181:
-    resolution: {integrity: sha512-+ISMj8OIQ+0qEeDj14Rt8WwcTOiqHyAB+5bnK1K7xNNLjBJ4hRCQfUkw8RWtcLbfBzDwc15ZnKH0c7SNOfwiyA==}
+  electron-to-chromium@1.5.184:
+    resolution: {integrity: sha512-zlaUk/wwnR/27FHNarzOtMgfxD1Q0/2Aby7PnURumQTal7yauqQ3c2HHcG/pjLFTvF3AWv44kMWyArVlfHeDlw==}
 
   elliptic@6.6.1:
     resolution: {integrity: sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==}
@@ -4901,8 +4901,8 @@ packages:
   fraction.js@4.3.7:
     resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==}
 
-  framer-motion@12.23.1:
-    resolution: {integrity: sha512-7P1t2DnKEUXvPxVZJu9Hd4gfdoUF6z9U3w3/MUXCVFNHiFV+iSoboqeK4/ZCCpa49/ZiVEWfaaYCPscqPPsOVQ==}
+  framer-motion@12.23.6:
+    resolution: {integrity: sha512-dsJ389QImVE3lQvM8Mnk99/j8tiZDM/7706PCqvkQ8sSCnpmWxsgX+g0lj7r5OBVL0U36pIecCTBoIWcM2RuKw==}
     peerDependencies:
       '@emotion/is-prop-valid': '*'
       react: ^18.0.0 || ^19.0.0
@@ -5993,14 +5993,14 @@ packages:
     engines: {node: '>= 14.0.0'}
     hasBin: true
 
-  motion-dom@12.23.1:
-    resolution: {integrity: sha512-kcMDS8yhUZgO7iu3FB0UYZpHUymZlj4aoEqH0Vf0k3JtZA0xfYIrmbDlKn6X7+INXV3hDAIBUf4aT5jEUHvvWQ==}
+  motion-dom@12.23.6:
+    resolution: {integrity: sha512-G2w6Nw7ZOVSzcQmsdLc0doMe64O/Sbuc2bVAbgMz6oP/6/pRStKRiVRV4bQfHp5AHYAKEGhEdVHTM+R3FDgi5w==}
 
-  motion-utils@12.23.1:
-    resolution: {integrity: sha512-coqLmHUTBA1KyBNEO64sTCWlduDV5Q6Yv0szjxnHVzZmcFYpVowyP6S38iOUlhocannaCCHlZ06lyLWQe/jheQ==}
+  motion-utils@12.23.6:
+    resolution: {integrity: sha512-eAWoPgr4eFEOFfg2WjIsMoqJTW6Z8MTUCgn/GZ3VRpClWBdnbjryiA3ZSNLyxCTmCQx4RmYX6jX1iWHbenUPNQ==}
 
-  motion@12.23.1:
-    resolution: {integrity: sha512-VuvoiZp6inGTYXzle/EXxCxFDgd0hlplRH2pcF7OIFXvbojpSDrYQVQShOScGYru9jKlavjDq1E9owm/p3ARtQ==}
+  motion@12.23.6:
+    resolution: {integrity: sha512-6U55IW5i6Vut2ryKEhrZKg55490k9d6qdGXZoNSf98oQgDj5D7bqTnVJotQ6UW3AS6QfbW6KSLa7/e1gy+a07g==}
     peerDependencies:
       '@emotion/is-prop-valid': '*'
       react: ^18.0.0 || ^19.0.0
@@ -6350,8 +6350,8 @@ packages:
     resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
     engines: {node: '>=8.6'}
 
-  picomatch@4.0.2:
-    resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==}
+  picomatch@4.0.3:
+    resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==}
     engines: {node: '>=12'}
 
   pify@2.3.0:
@@ -6652,8 +6652,8 @@ packages:
       react: '>=18.0.0'
       react-is: '>=18.0.0'
 
-  react-medium-image-zoom@5.2.14:
-    resolution: {integrity: sha512-nfTVYcAUnBzXQpPDcZL+cG/e6UceYUIG+zDcnemL7jtAqbJjVVkA85RgneGtJeni12dTyiRPZVM6Szkmwd/o8w==}
+  react-medium-image-zoom@5.3.0:
+    resolution: {integrity: sha512-RCIzVlsKqy3BYgGgYbolUfuvx0aSKC7YhX/IJGEp+WJxsqdIVYJHkBdj++FAj6VD7RiWj6VVmdCfa/9vJE9hZg==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
       react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
@@ -6911,8 +6911,8 @@ packages:
   rollup-pluginutils@2.8.2:
     resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==}
 
-  rollup@4.44.2:
-    resolution: {integrity: sha512-PVoapzTwSEcelaWGth3uR66u7ZRo6qhPHc0f2uRO9fX6XDVNrIiGYS0Pj9+R8yIIYSD/mCx2b16Ws9itljKSPg==}
+  rollup@4.45.1:
+    resolution: {integrity: sha512-4iya7Jb76fVpQyLoiVpzUrsjQ12r3dM7fIVz+4NwoYvZOShknRmiv+iu9CClZml5ZLGb0XMcYLutK6w9tgxHDw==}
     engines: {node: '>=18.0.0', npm: '>=8.0.0'}
     hasBin: true
 
@@ -7029,8 +7029,8 @@ packages:
   shiki@1.29.2:
     resolution: {integrity: sha512-njXuliz/cP+67jU2hukkxCNuH1yUi4QfdZZY+sMr5PPrIyXSu5iTb/qYC4BiWWB0vZ+7TbdvYUCeL23zpwCfbg==}
 
-  shiki@3.7.0:
-    resolution: {integrity: sha512-ZcI4UT9n6N2pDuM2n3Jbk0sR4Swzq43nLPgS/4h0E3B/NrFn2HKElrDtceSf8Zx/OWYOo7G1SAtBLypCp+YXqg==}
+  shiki@3.8.0:
+    resolution: {integrity: sha512-yPqK0y68t20aakv+3aMTpUMJZd6UHaBY2/SBUDowh9M70gVUwqT0bf7Kz5CWG0AXfHtFvXCHhBBHVAzdp0ILoQ==}
 
   side-channel-list@1.0.0:
     resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==}
@@ -8052,11 +8052,11 @@ packages:
   youch@3.3.4:
     resolution: {integrity: sha512-UeVBXie8cA35DS6+nBkls68xaBBXCye0CNznrhszZjTbRVnJKQuNsyLKBTTL4ln1o1rh2PKtv35twV7irj5SEg==}
 
-  zod-validation-error@3.5.2:
-    resolution: {integrity: sha512-mdi7YOLtram5dzJ5aDtm1AG9+mxRma1iaMrZdYIpFO7epdKBUwLHIxTF8CPDeCQ828zAXYtizrKlEJAtzgfgrw==}
+  zod-validation-error@3.5.3:
+    resolution: {integrity: sha512-OT5Y8lbUadqVZCsnyFaTQ4/O2mys4tj7PqhdbBCp7McPwvIEKfPtdA6QfPeFQK2/Rz5LgwmAXRJTugBNBi0btw==}
     engines: {node: '>=18.0.0'}
     peerDependencies:
-      zod: ^3.25.0
+      zod: ^3.25.0 || ^4.0.0
 
   zod@3.22.3:
     resolution: {integrity: sha512-EjIevzuJRiRPbVH4mGc8nApb/lVLKVpmUhAaR5R5doKGfAnGJ6Gr3CViAVjP+4FWSxCsybeWQdcgCtbX+7oZug==}
@@ -8076,110 +8076,110 @@ snapshots:
 
   '@adraffy/ens-normalize@1.11.0': {}
 
-  '@algolia/autocomplete-core@1.17.9(@algolia/client-search@5.32.0)(algoliasearch@5.32.0)(search-insights@2.17.3)':
+  '@algolia/autocomplete-core@1.17.9(@algolia/client-search@5.33.0)(algoliasearch@5.33.0)(search-insights@2.17.3)':
     dependencies:
-      '@algolia/autocomplete-plugin-algolia-insights': 1.17.9(@algolia/client-search@5.32.0)(algoliasearch@5.32.0)(search-insights@2.17.3)
-      '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.32.0)(algoliasearch@5.32.0)
+      '@algolia/autocomplete-plugin-algolia-insights': 1.17.9(@algolia/client-search@5.33.0)(algoliasearch@5.33.0)(search-insights@2.17.3)
+      '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.33.0)(algoliasearch@5.33.0)
     transitivePeerDependencies:
       - '@algolia/client-search'
       - algoliasearch
       - search-insights
 
-  '@algolia/autocomplete-plugin-algolia-insights@1.17.9(@algolia/client-search@5.32.0)(algoliasearch@5.32.0)(search-insights@2.17.3)':
+  '@algolia/autocomplete-plugin-algolia-insights@1.17.9(@algolia/client-search@5.33.0)(algoliasearch@5.33.0)(search-insights@2.17.3)':
     dependencies:
-      '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.32.0)(algoliasearch@5.32.0)
+      '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.33.0)(algoliasearch@5.33.0)
       search-insights: 2.17.3
     transitivePeerDependencies:
       - '@algolia/client-search'
       - algoliasearch
 
-  '@algolia/autocomplete-preset-algolia@1.17.9(@algolia/client-search@5.32.0)(algoliasearch@5.32.0)':
+  '@algolia/autocomplete-preset-algolia@1.17.9(@algolia/client-search@5.33.0)(algoliasearch@5.33.0)':
     dependencies:
-      '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.32.0)(algoliasearch@5.32.0)
-      '@algolia/client-search': 5.32.0
-      algoliasearch: 5.32.0
+      '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.33.0)(algoliasearch@5.33.0)
+      '@algolia/client-search': 5.33.0
+      algoliasearch: 5.33.0
 
-  '@algolia/autocomplete-shared@1.17.9(@algolia/client-search@5.32.0)(algoliasearch@5.32.0)':
+  '@algolia/autocomplete-shared@1.17.9(@algolia/client-search@5.33.0)(algoliasearch@5.33.0)':
     dependencies:
-      '@algolia/client-search': 5.32.0
-      algoliasearch: 5.32.0
+      '@algolia/client-search': 5.33.0
+      algoliasearch: 5.33.0
 
-  '@algolia/client-abtesting@5.32.0':
+  '@algolia/client-abtesting@5.33.0':
     dependencies:
-      '@algolia/client-common': 5.32.0
-      '@algolia/requester-browser-xhr': 5.32.0
-      '@algolia/requester-fetch': 5.32.0
-      '@algolia/requester-node-http': 5.32.0
+      '@algolia/client-common': 5.33.0
+      '@algolia/requester-browser-xhr': 5.33.0
+      '@algolia/requester-fetch': 5.33.0
+      '@algolia/requester-node-http': 5.33.0
 
-  '@algolia/client-analytics@5.32.0':
+  '@algolia/client-analytics@5.33.0':
     dependencies:
-      '@algolia/client-common': 5.32.0
-      '@algolia/requester-browser-xhr': 5.32.0
-      '@algolia/requester-fetch': 5.32.0
-      '@algolia/requester-node-http': 5.32.0
+      '@algolia/client-common': 5.33.0
+      '@algolia/requester-browser-xhr': 5.33.0
+      '@algolia/requester-fetch': 5.33.0
+      '@algolia/requester-node-http': 5.33.0
 
-  '@algolia/client-common@5.32.0': {}
+  '@algolia/client-common@5.33.0': {}
 
-  '@algolia/client-insights@5.32.0':
+  '@algolia/client-insights@5.33.0':
     dependencies:
-      '@algolia/client-common': 5.32.0
-      '@algolia/requester-browser-xhr': 5.32.0
-      '@algolia/requester-fetch': 5.32.0
-      '@algolia/requester-node-http': 5.32.0
+      '@algolia/client-common': 5.33.0
+      '@algolia/requester-browser-xhr': 5.33.0
+      '@algolia/requester-fetch': 5.33.0
+      '@algolia/requester-node-http': 5.33.0
 
-  '@algolia/client-personalization@5.32.0':
+  '@algolia/client-personalization@5.33.0':
     dependencies:
-      '@algolia/client-common': 5.32.0
-      '@algolia/requester-browser-xhr': 5.32.0
-      '@algolia/requester-fetch': 5.32.0
-      '@algolia/requester-node-http': 5.32.0
+      '@algolia/client-common': 5.33.0
+      '@algolia/requester-browser-xhr': 5.33.0
+      '@algolia/requester-fetch': 5.33.0
+      '@algolia/requester-node-http': 5.33.0
 
-  '@algolia/client-query-suggestions@5.32.0':
+  '@algolia/client-query-suggestions@5.33.0':
     dependencies:
-      '@algolia/client-common': 5.32.0
-      '@algolia/requester-browser-xhr': 5.32.0
-      '@algolia/requester-fetch': 5.32.0
-      '@algolia/requester-node-http': 5.32.0
+      '@algolia/client-common': 5.33.0
+      '@algolia/requester-browser-xhr': 5.33.0
+      '@algolia/requester-fetch': 5.33.0
+      '@algolia/requester-node-http': 5.33.0
 
-  '@algolia/client-search@5.32.0':
+  '@algolia/client-search@5.33.0':
     dependencies:
-      '@algolia/client-common': 5.32.0
-      '@algolia/requester-browser-xhr': 5.32.0
-      '@algolia/requester-fetch': 5.32.0
-      '@algolia/requester-node-http': 5.32.0
+      '@algolia/client-common': 5.33.0
+      '@algolia/requester-browser-xhr': 5.33.0
+      '@algolia/requester-fetch': 5.33.0
+      '@algolia/requester-node-http': 5.33.0
 
-  '@algolia/ingestion@1.32.0':
+  '@algolia/ingestion@1.33.0':
     dependencies:
-      '@algolia/client-common': 5.32.0
-      '@algolia/requester-browser-xhr': 5.32.0
-      '@algolia/requester-fetch': 5.32.0
-      '@algolia/requester-node-http': 5.32.0
+      '@algolia/client-common': 5.33.0
+      '@algolia/requester-browser-xhr': 5.33.0
+      '@algolia/requester-fetch': 5.33.0
+      '@algolia/requester-node-http': 5.33.0
 
-  '@algolia/monitoring@1.32.0':
+  '@algolia/monitoring@1.33.0':
     dependencies:
-      '@algolia/client-common': 5.32.0
-      '@algolia/requester-browser-xhr': 5.32.0
-      '@algolia/requester-fetch': 5.32.0
-      '@algolia/requester-node-http': 5.32.0
+      '@algolia/client-common': 5.33.0
+      '@algolia/requester-browser-xhr': 5.33.0
+      '@algolia/requester-fetch': 5.33.0
+      '@algolia/requester-node-http': 5.33.0
 
-  '@algolia/recommend@5.32.0':
+  '@algolia/recommend@5.33.0':
     dependencies:
-      '@algolia/client-common': 5.32.0
-      '@algolia/requester-browser-xhr': 5.32.0
-      '@algolia/requester-fetch': 5.32.0
-      '@algolia/requester-node-http': 5.32.0
+      '@algolia/client-common': 5.33.0
+      '@algolia/requester-browser-xhr': 5.33.0
+      '@algolia/requester-fetch': 5.33.0
+      '@algolia/requester-node-http': 5.33.0
 
-  '@algolia/requester-browser-xhr@5.32.0':
+  '@algolia/requester-browser-xhr@5.33.0':
     dependencies:
-      '@algolia/client-common': 5.32.0
+      '@algolia/client-common': 5.33.0
 
-  '@algolia/requester-fetch@5.32.0':
+  '@algolia/requester-fetch@5.33.0':
     dependencies:
-      '@algolia/client-common': 5.32.0
+      '@algolia/client-common': 5.33.0
 
-  '@algolia/requester-node-http@5.32.0':
+  '@algolia/requester-node-http@5.33.0':
     dependencies:
-      '@algolia/client-common': 5.32.0
+      '@algolia/client-common': 5.33.0
 
   '@alloc/quick-lru@5.2.0': {}
 
@@ -8212,7 +8212,7 @@ snapshots:
   '@babel/generator@7.28.0':
     dependencies:
       '@babel/parser': 7.28.0
-      '@babel/types': 7.28.0
+      '@babel/types': 7.28.1
       '@jridgewell/gen-mapping': 0.3.12
       '@jridgewell/trace-mapping': 0.3.29
       jsesc: 3.1.0
@@ -8222,7 +8222,7 @@ snapshots:
   '@babel/helper-module-imports@7.27.1':
     dependencies:
       '@babel/traverse': 7.28.0
-      '@babel/types': 7.28.0
+      '@babel/types': 7.28.1
     transitivePeerDependencies:
       - supports-color
 
@@ -8232,7 +8232,7 @@ snapshots:
 
   '@babel/parser@7.28.0':
     dependencies:
-      '@babel/types': 7.28.0
+      '@babel/types': 7.28.1
 
   '@babel/runtime@7.27.6': {}
 
@@ -8240,7 +8240,7 @@ snapshots:
     dependencies:
       '@babel/code-frame': 7.27.1
       '@babel/parser': 7.28.0
-      '@babel/types': 7.28.0
+      '@babel/types': 7.28.1
 
   '@babel/traverse@7.28.0':
     dependencies:
@@ -8249,12 +8249,12 @@ snapshots:
       '@babel/helper-globals': 7.28.0
       '@babel/parser': 7.28.0
       '@babel/template': 7.27.2
-      '@babel/types': 7.28.0
+      '@babel/types': 7.28.1
       debug: 4.4.1(supports-color@8.1.1)
     transitivePeerDependencies:
       - supports-color
 
-  '@babel/types@7.28.0':
+  '@babel/types@7.28.1':
     dependencies:
       '@babel/helper-string-parser': 7.27.1
       '@babel/helper-validator-identifier': 7.27.1
@@ -8318,7 +8318,7 @@ snapshots:
   '@cloudflare/workerd-windows-64@1.20250408.0':
     optional: true
 
-  '@cloudflare/workers-types@4.20250710.0': {}
+  '@cloudflare/workers-types@4.20250715.0': {}
 
   '@corex/deepmerge@4.0.43': {}
 
@@ -8348,12 +8348,12 @@ snapshots:
 
   '@docsearch/css@3.9.0': {}
 
-  '@docsearch/react@3.9.0(@algolia/client-search@5.32.0)(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)':
+  '@docsearch/react@3.9.0(@algolia/client-search@5.33.0)(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)':
     dependencies:
-      '@algolia/autocomplete-core': 1.17.9(@algolia/client-search@5.32.0)(algoliasearch@5.32.0)(search-insights@2.17.3)
-      '@algolia/autocomplete-preset-algolia': 1.17.9(@algolia/client-search@5.32.0)(algoliasearch@5.32.0)
+      '@algolia/autocomplete-core': 1.17.9(@algolia/client-search@5.33.0)(algoliasearch@5.33.0)(search-insights@2.17.3)
+      '@algolia/autocomplete-preset-algolia': 1.17.9(@algolia/client-search@5.33.0)(algoliasearch@5.33.0)
       '@docsearch/css': 3.9.0
-      algoliasearch: 5.32.0
+      algoliasearch: 5.33.0
     optionalDependencies:
       '@types/react': 18.3.23
       react: 18.3.1
@@ -8416,7 +8416,7 @@ snapshots:
       - eslint-plugin-import-x
       - supports-color
 
-  '@edgeandnode/gds@6.7.0(@emotion/is-prop-valid@0.8.8)(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(@theme-ui/core@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(dayjs@1.11.13)(hardhat@2.25.0(typescript@5.8.3))(next@14.2.30(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)(theme-ui@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(typescript@5.8.3)':
+  '@edgeandnode/gds@6.7.1(@emotion/is-prop-valid@0.8.8)(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(@theme-ui/core@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(dayjs@1.11.13)(hardhat@2.25.0(typescript@5.8.3))(next@14.2.30(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)(theme-ui@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(typescript@5.8.3)':
     dependencies:
       '@base-ui-components/react': 1.0.0-alpha.7(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@bramus/style-observer': 2.0.2
@@ -8444,7 +8444,7 @@ snapshots:
       '@tanem/react-nprogress': 5.0.55(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@theme-ui/css': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))
       '@theme-ui/match-media': 0.17.2(@theme-ui/core@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(@theme-ui/css@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1)))(react@18.3.1)
-      '@web3icons/react': 4.0.17(react@18.3.1)(typescript@5.8.3)
+      '@web3icons/react': 4.0.19(react@18.3.1)(typescript@5.8.3)
       '@xstate/react': 3.2.2(@types/react@18.3.23)(react@18.3.1)(xstate@4.38.3)
       color: 5.0.0
       dayjs: 1.11.13
@@ -8452,7 +8452,7 @@ snapshots:
       ethers: 5.8.0
       lodash: 4.17.21
       md5: 2.3.0
-      motion: 12.23.1(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      motion: 12.23.6(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       numeral: 2.0.6
       prism-react-renderer: 2.4.1(react@18.3.1)
       prismjs: 1.30.0
@@ -8467,7 +8467,7 @@ snapshots:
       react-transition-group: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       react-virtuoso: 4.13.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       recharts: 2.15.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      shiki: 3.7.0
+      shiki: 3.8.0
       tailwindcss: 3.4.17
       theme-ui: 0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)
       typy: 3.3.0
@@ -8491,11 +8491,11 @@ snapshots:
       - typescript
       - utf-8-validate
 
-  '@edgeandnode/go@10.3.0(df7a60f2b2bbf39644b6c2833d03ec2d)':
+  '@edgeandnode/go@10.3.1(442dd4704c05a99a69d6fa587fe6972c)':
     dependencies:
       '@edgeandnode/common': 7.0.4(hardhat@2.25.0(typescript@5.8.3))
       '@edgeandnode/ens': 2.3.0(typescript@5.8.3)(viem@2.31.7(typescript@5.8.3)(zod@3.25.76))
-      '@edgeandnode/gds': 6.7.0(@emotion/is-prop-valid@0.8.8)(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(@theme-ui/core@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(dayjs@1.11.13)(hardhat@2.25.0(typescript@5.8.3))(next@14.2.30(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)(theme-ui@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(typescript@5.8.3)
+      '@edgeandnode/gds': 6.7.1(@emotion/is-prop-valid@0.8.8)(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(@theme-ui/core@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(dayjs@1.11.13)(hardhat@2.25.0(typescript@5.8.3))(next@14.2.30(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)(theme-ui@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(typescript@5.8.3)
       '@emotion/react': 11.14.0(@types/react@18.3.23)(react@18.3.1)
       '@graphql-typed-document-node/core': 3.2.0(graphql@16.11.0)
       '@radix-ui/react-collapsible': 1.1.11(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -8503,13 +8503,13 @@ snapshots:
       '@radix-ui/react-navigation-menu': 1.2.13(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@tanstack/react-query': 5.82.0(react@18.3.1)
+      '@tanstack/react-query': 5.83.0(react@18.3.1)
       '@theme-ui/css': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))
-      '@web3icons/react': 4.0.17(react@18.3.1)(typescript@5.8.3)
+      '@web3icons/react': 4.0.19(react@18.3.1)(typescript@5.8.3)
       escape-string-regexp: 5.0.0
       graphql: 16.11.0
       graphql-request: 7.2.0(graphql@16.11.0)
-      motion: 12.23.1(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      motion: 12.23.6(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
       tailwindcss: 3.4.17
@@ -9197,7 +9197,7 @@ snapshots:
       typescript: 5.5.4
       undici: 5.29.0
       zod: 3.25.58
-      zod-validation-error: 3.5.2(zod@3.25.58)
+      zod-validation-error: 3.5.3(zod@3.25.58)
     transitivePeerDependencies:
       - bufferutil
       - canvas
@@ -9537,11 +9537,11 @@ snapshots:
       '@napi-rs/simple-git-win32-arm64-msvc': 0.1.19
       '@napi-rs/simple-git-win32-x64-msvc': 0.1.19
 
-  '@napi-rs/wasm-runtime@0.2.11':
+  '@napi-rs/wasm-runtime@0.2.12':
     dependencies:
       '@emnapi/core': 1.4.4
       '@emnapi/runtime': 1.4.4
-      '@tybys/wasm-util': 0.9.0
+      '@tybys/wasm-util': 0.10.0
     optional: true
 
   '@next/env@13.5.11': {}
@@ -11177,7 +11177,7 @@ snapshots:
       qs: 6.14.0
       stringify-object: 3.3.0
 
-  '@readme/openapi-parser@4.1.0(openapi-types@12.1.3)':
+  '@readme/openapi-parser@4.1.2(openapi-types@12.1.3)':
     dependencies:
       '@apidevtools/json-schema-ref-parser': 13.0.5
       '@readme/better-ajv-errors': 2.3.2(ajv@8.17.1)
@@ -11191,64 +11191,64 @@ snapshots:
 
   '@resvg/resvg-wasm@2.6.2': {}
 
-  '@rollup/rollup-android-arm-eabi@4.44.2':
+  '@rollup/rollup-android-arm-eabi@4.45.1':
     optional: true
 
-  '@rollup/rollup-android-arm64@4.44.2':
+  '@rollup/rollup-android-arm64@4.45.1':
     optional: true
 
-  '@rollup/rollup-darwin-arm64@4.44.2':
+  '@rollup/rollup-darwin-arm64@4.45.1':
     optional: true
 
-  '@rollup/rollup-darwin-x64@4.44.2':
+  '@rollup/rollup-darwin-x64@4.45.1':
     optional: true
 
-  '@rollup/rollup-freebsd-arm64@4.44.2':
+  '@rollup/rollup-freebsd-arm64@4.45.1':
     optional: true
 
-  '@rollup/rollup-freebsd-x64@4.44.2':
+  '@rollup/rollup-freebsd-x64@4.45.1':
     optional: true
 
-  '@rollup/rollup-linux-arm-gnueabihf@4.44.2':
+  '@rollup/rollup-linux-arm-gnueabihf@4.45.1':
     optional: true
 
-  '@rollup/rollup-linux-arm-musleabihf@4.44.2':
+  '@rollup/rollup-linux-arm-musleabihf@4.45.1':
     optional: true
 
-  '@rollup/rollup-linux-arm64-gnu@4.44.2':
+  '@rollup/rollup-linux-arm64-gnu@4.45.1':
     optional: true
 
-  '@rollup/rollup-linux-arm64-musl@4.44.2':
+  '@rollup/rollup-linux-arm64-musl@4.45.1':
     optional: true
 
-  '@rollup/rollup-linux-loongarch64-gnu@4.44.2':
+  '@rollup/rollup-linux-loongarch64-gnu@4.45.1':
     optional: true
 
-  '@rollup/rollup-linux-powerpc64le-gnu@4.44.2':
+  '@rollup/rollup-linux-powerpc64le-gnu@4.45.1':
     optional: true
 
-  '@rollup/rollup-linux-riscv64-gnu@4.44.2':
+  '@rollup/rollup-linux-riscv64-gnu@4.45.1':
     optional: true
 
-  '@rollup/rollup-linux-riscv64-musl@4.44.2':
+  '@rollup/rollup-linux-riscv64-musl@4.45.1':
     optional: true
 
-  '@rollup/rollup-linux-s390x-gnu@4.44.2':
+  '@rollup/rollup-linux-s390x-gnu@4.45.1':
     optional: true
 
-  '@rollup/rollup-linux-x64-gnu@4.44.2':
+  '@rollup/rollup-linux-x64-gnu@4.45.1':
     optional: true
 
-  '@rollup/rollup-linux-x64-musl@4.44.2':
+  '@rollup/rollup-linux-x64-musl@4.45.1':
     optional: true
 
-  '@rollup/rollup-win32-arm64-msvc@4.44.2':
+  '@rollup/rollup-win32-arm64-msvc@4.45.1':
     optional: true
 
-  '@rollup/rollup-win32-ia32-msvc@4.44.2':
+  '@rollup/rollup-win32-ia32-msvc@4.45.1':
     optional: true
 
-  '@rollup/rollup-win32-x64-msvc@4.44.2':
+  '@rollup/rollup-win32-x64-msvc@4.45.1':
     optional: true
 
   '@rrweb/types@2.0.0-alpha.18': {}
@@ -11354,9 +11354,9 @@ snapshots:
       '@types/hast': 3.0.4
       hast-util-to-html: 9.0.5
 
-  '@shikijs/core@3.7.0':
+  '@shikijs/core@3.8.0':
     dependencies:
-      '@shikijs/types': 3.7.0
+      '@shikijs/types': 3.8.0
       '@shikijs/vscode-textmate': 10.0.2
       '@types/hast': 3.0.4
       hast-util-to-html: 9.0.5
@@ -11367,9 +11367,9 @@ snapshots:
       '@shikijs/vscode-textmate': 10.0.2
       oniguruma-to-es: 2.3.0
 
-  '@shikijs/engine-javascript@3.7.0':
+  '@shikijs/engine-javascript@3.8.0':
     dependencies:
-      '@shikijs/types': 3.7.0
+      '@shikijs/types': 3.8.0
       '@shikijs/vscode-textmate': 10.0.2
       oniguruma-to-es: 4.3.3
 
@@ -11378,26 +11378,26 @@ snapshots:
       '@shikijs/types': 1.29.2
       '@shikijs/vscode-textmate': 10.0.2
 
-  '@shikijs/engine-oniguruma@3.7.0':
+  '@shikijs/engine-oniguruma@3.8.0':
     dependencies:
-      '@shikijs/types': 3.7.0
+      '@shikijs/types': 3.8.0
       '@shikijs/vscode-textmate': 10.0.2
 
   '@shikijs/langs@1.29.2':
     dependencies:
       '@shikijs/types': 1.29.2
 
-  '@shikijs/langs@3.7.0':
+  '@shikijs/langs@3.8.0':
     dependencies:
-      '@shikijs/types': 3.7.0
+      '@shikijs/types': 3.8.0
 
   '@shikijs/themes@1.29.2':
     dependencies:
       '@shikijs/types': 1.29.2
 
-  '@shikijs/themes@3.7.0':
+  '@shikijs/themes@3.8.0':
     dependencies:
-      '@shikijs/types': 3.7.0
+      '@shikijs/types': 3.8.0
 
   '@shikijs/twoslash@1.29.2(typescript@5.8.3)':
     dependencies:
@@ -11413,7 +11413,7 @@ snapshots:
       '@shikijs/vscode-textmate': 10.0.2
       '@types/hast': 3.0.4
 
-  '@shikijs/types@3.7.0':
+  '@shikijs/types@3.8.0':
     dependencies:
       '@shikijs/vscode-textmate': 10.0.2
       '@types/hast': 3.0.4
@@ -11504,11 +11504,11 @@ snapshots:
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@tanstack/query-core@5.82.0': {}
+  '@tanstack/query-core@5.83.0': {}
 
-  '@tanstack/react-query@5.82.0(react@18.3.1)':
+  '@tanstack/react-query@5.83.0(react@18.3.1)':
     dependencies:
-      '@tanstack/query-core': 5.82.0
+      '@tanstack/query-core': 5.83.0
       react: 18.3.1
 
   '@tanstack/react-virtual@3.13.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
@@ -11592,18 +11592,18 @@ snapshots:
       mkdirp: 3.0.1
       path-browserify: 1.0.1
 
-  '@tybys/wasm-util@0.9.0':
+  '@tybys/wasm-util@0.10.0':
     dependencies:
       tslib: 2.8.1
     optional: true
 
   '@types/bn.js@5.2.0':
     dependencies:
-      '@types/node': 22.16.2
+      '@types/node': 22.16.4
 
   '@types/concat-stream@2.0.3':
     dependencies:
-      '@types/node': 22.16.2
+      '@types/node': 22.16.4
 
   '@types/cookie@0.6.0': {}
 
@@ -11770,7 +11770,7 @@ snapshots:
     dependencies:
       '@types/unist': 3.0.3
 
-  '@types/node@22.16.2':
+  '@types/node@22.16.4':
     dependencies:
       undici-types: 6.21.0
 
@@ -12008,7 +12008,7 @@ snapshots:
 
   '@unrs/resolver-binding-wasm32-wasi@1.11.1':
     dependencies:
-      '@napi-rs/wasm-runtime': 0.2.11
+      '@napi-rs/wasm-runtime': 0.2.12
     optional: true
 
   '@unrs/resolver-binding-win32-arm64-msvc@1.11.1':
@@ -12029,13 +12029,13 @@ snapshots:
       chai: 5.2.1
       tinyrainbow: 1.2.0
 
-  '@vitest/mocker@2.1.9(vite@5.4.19(@types/node@22.16.2))':
+  '@vitest/mocker@2.1.9(vite@5.4.19(@types/node@22.16.4))':
     dependencies:
       '@vitest/spy': 2.1.9
       estree-walker: 3.0.3
       magic-string: 0.30.17
     optionalDependencies:
-      vite: 5.4.19(@types/node@22.16.2)
+      vite: 5.4.19(@types/node@22.16.4)
 
   '@vitest/pretty-format@2.1.9':
     dependencies:
@@ -12062,13 +12062,13 @@ snapshots:
       loupe: 3.1.4
       tinyrainbow: 1.2.0
 
-  '@web3icons/common@0.11.14(typescript@5.8.3)':
+  '@web3icons/common@0.11.15(typescript@5.8.3)':
     dependencies:
       typescript: 5.8.3
 
-  '@web3icons/react@4.0.17(react@18.3.1)(typescript@5.8.3)':
+  '@web3icons/react@4.0.19(react@18.3.1)(typescript@5.8.3)':
     dependencies:
-      '@web3icons/common': 0.11.14(typescript@5.8.3)
+      '@web3icons/common': 0.11.15(typescript@5.8.3)
       react: 18.3.1
     transitivePeerDependencies:
       - typescript
@@ -12139,21 +12139,21 @@ snapshots:
       json-schema-traverse: 1.0.0
       require-from-string: 2.0.2
 
-  algoliasearch@5.32.0:
-    dependencies:
-      '@algolia/client-abtesting': 5.32.0
-      '@algolia/client-analytics': 5.32.0
-      '@algolia/client-common': 5.32.0
-      '@algolia/client-insights': 5.32.0
-      '@algolia/client-personalization': 5.32.0
-      '@algolia/client-query-suggestions': 5.32.0
-      '@algolia/client-search': 5.32.0
-      '@algolia/ingestion': 1.32.0
-      '@algolia/monitoring': 1.32.0
-      '@algolia/recommend': 5.32.0
-      '@algolia/requester-browser-xhr': 5.32.0
-      '@algolia/requester-fetch': 5.32.0
-      '@algolia/requester-node-http': 5.32.0
+  algoliasearch@5.33.0:
+    dependencies:
+      '@algolia/client-abtesting': 5.33.0
+      '@algolia/client-analytics': 5.33.0
+      '@algolia/client-common': 5.33.0
+      '@algolia/client-insights': 5.33.0
+      '@algolia/client-personalization': 5.33.0
+      '@algolia/client-query-suggestions': 5.33.0
+      '@algolia/client-search': 5.33.0
+      '@algolia/ingestion': 1.33.0
+      '@algolia/monitoring': 1.33.0
+      '@algolia/recommend': 5.33.0
+      '@algolia/requester-browser-xhr': 5.33.0
+      '@algolia/requester-fetch': 5.33.0
+      '@algolia/requester-node-http': 5.33.0
 
   ansi-align@3.0.1:
     dependencies:
@@ -12384,7 +12384,7 @@ snapshots:
   browserslist@4.25.1:
     dependencies:
       caniuse-lite: 1.0.30001727
-      electron-to-chromium: 1.5.181
+      electron-to-chromium: 1.5.184
       node-releases: 2.0.19
       update-browserslist-db: 1.1.3(browserslist@4.25.1)
 
@@ -12978,7 +12978,7 @@ snapshots:
 
   eastasianwidth@0.2.0: {}
 
-  electron-to-chromium@1.5.181: {}
+  electron-to-chromium@1.5.184: {}
 
   elliptic@6.6.1:
     dependencies:
@@ -13611,9 +13611,9 @@ snapshots:
     dependencies:
       format: 0.2.2
 
-  fdir@6.4.6(picomatch@4.0.2):
+  fdir@6.4.6(picomatch@4.0.3):
     optionalDependencies:
-      picomatch: 4.0.2
+      picomatch: 4.0.3
 
   fetch-har@11.1.1:
     dependencies:
@@ -13645,7 +13645,7 @@ snapshots:
     dependencies:
       magic-string: 0.30.17
       mlly: 1.7.4
-      rollup: 4.44.2
+      rollup: 4.45.1
 
   flat-cache@3.2.0:
     dependencies:
@@ -13684,10 +13684,10 @@ snapshots:
 
   fraction.js@4.3.7: {}
 
-  framer-motion@12.23.1(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+  framer-motion@12.23.6(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
     dependencies:
-      motion-dom: 12.23.1
-      motion-utils: 12.23.1
+      motion-dom: 12.23.6
+      motion-utils: 12.23.6
       tslib: 2.8.1
     optionalDependencies:
       '@emotion/is-prop-valid': 0.8.8
@@ -15259,15 +15259,15 @@ snapshots:
       yargs-parser: 20.2.9
       yargs-unparser: 2.0.0
 
-  motion-dom@12.23.1:
+  motion-dom@12.23.6:
     dependencies:
-      motion-utils: 12.23.1
+      motion-utils: 12.23.6
 
-  motion-utils@12.23.1: {}
+  motion-utils@12.23.6: {}
 
-  motion@12.23.1(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+  motion@12.23.6(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
     dependencies:
-      framer-motion: 12.23.1(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      framer-motion: 12.23.6(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       tslib: 2.8.1
     optionalDependencies:
       '@emotion/is-prop-valid': 0.8.8
@@ -15360,7 +15360,7 @@ snapshots:
       p-limit: 6.2.0
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
-      react-medium-image-zoom: 5.2.14(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      react-medium-image-zoom: 5.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       rehype-katex: 7.0.1
       rehype-pretty-code: 0.14.0(shiki@1.29.2)
       rehype-raw: 7.0.0
@@ -15376,7 +15376,7 @@ snapshots:
       unist-util-visit: 5.0.0
       yaml: 2.8.0
       zod: 3.25.76
-      zod-validation-error: 3.5.2(zod@3.25.76)
+      zod-validation-error: 3.5.3(zod@3.25.76)
     transitivePeerDependencies:
       - '@types/react'
       - acorn
@@ -15667,7 +15667,7 @@ snapshots:
 
   picomatch@2.3.1: {}
 
-  picomatch@4.0.2: {}
+  picomatch@4.0.3: {}
 
   pify@2.3.0: {}
 
@@ -15914,7 +15914,7 @@ snapshots:
       react: 18.3.1
       react-is: 18.3.1
 
-  react-medium-image-zoom@5.2.14(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+  react-medium-image-zoom@5.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
     dependencies:
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
@@ -16318,30 +16318,30 @@ snapshots:
     dependencies:
       estree-walker: 0.6.1
 
-  rollup@4.44.2:
+  rollup@4.45.1:
     dependencies:
       '@types/estree': 1.0.8
     optionalDependencies:
-      '@rollup/rollup-android-arm-eabi': 4.44.2
-      '@rollup/rollup-android-arm64': 4.44.2
-      '@rollup/rollup-darwin-arm64': 4.44.2
-      '@rollup/rollup-darwin-x64': 4.44.2
-      '@rollup/rollup-freebsd-arm64': 4.44.2
-      '@rollup/rollup-freebsd-x64': 4.44.2
-      '@rollup/rollup-linux-arm-gnueabihf': 4.44.2
-      '@rollup/rollup-linux-arm-musleabihf': 4.44.2
-      '@rollup/rollup-linux-arm64-gnu': 4.44.2
-      '@rollup/rollup-linux-arm64-musl': 4.44.2
-      '@rollup/rollup-linux-loongarch64-gnu': 4.44.2
-      '@rollup/rollup-linux-powerpc64le-gnu': 4.44.2
-      '@rollup/rollup-linux-riscv64-gnu': 4.44.2
-      '@rollup/rollup-linux-riscv64-musl': 4.44.2
-      '@rollup/rollup-linux-s390x-gnu': 4.44.2
-      '@rollup/rollup-linux-x64-gnu': 4.44.2
-      '@rollup/rollup-linux-x64-musl': 4.44.2
-      '@rollup/rollup-win32-arm64-msvc': 4.44.2
-      '@rollup/rollup-win32-ia32-msvc': 4.44.2
-      '@rollup/rollup-win32-x64-msvc': 4.44.2
+      '@rollup/rollup-android-arm-eabi': 4.45.1
+      '@rollup/rollup-android-arm64': 4.45.1
+      '@rollup/rollup-darwin-arm64': 4.45.1
+      '@rollup/rollup-darwin-x64': 4.45.1
+      '@rollup/rollup-freebsd-arm64': 4.45.1
+      '@rollup/rollup-freebsd-x64': 4.45.1
+      '@rollup/rollup-linux-arm-gnueabihf': 4.45.1
+      '@rollup/rollup-linux-arm-musleabihf': 4.45.1
+      '@rollup/rollup-linux-arm64-gnu': 4.45.1
+      '@rollup/rollup-linux-arm64-musl': 4.45.1
+      '@rollup/rollup-linux-loongarch64-gnu': 4.45.1
+      '@rollup/rollup-linux-powerpc64le-gnu': 4.45.1
+      '@rollup/rollup-linux-riscv64-gnu': 4.45.1
+      '@rollup/rollup-linux-riscv64-musl': 4.45.1
+      '@rollup/rollup-linux-s390x-gnu': 4.45.1
+      '@rollup/rollup-linux-x64-gnu': 4.45.1
+      '@rollup/rollup-linux-x64-musl': 4.45.1
+      '@rollup/rollup-win32-arm64-msvc': 4.45.1
+      '@rollup/rollup-win32-ia32-msvc': 4.45.1
+      '@rollup/rollup-win32-x64-msvc': 4.45.1
       fsevents: 2.3.3
 
   roughjs@4.6.6:
@@ -16516,14 +16516,14 @@ snapshots:
       '@shikijs/vscode-textmate': 10.0.2
       '@types/hast': 3.0.4
 
-  shiki@3.7.0:
+  shiki@3.8.0:
     dependencies:
-      '@shikijs/core': 3.7.0
-      '@shikijs/engine-javascript': 3.7.0
-      '@shikijs/engine-oniguruma': 3.7.0
-      '@shikijs/langs': 3.7.0
-      '@shikijs/themes': 3.7.0
-      '@shikijs/types': 3.7.0
+      '@shikijs/core': 3.8.0
+      '@shikijs/engine-javascript': 3.8.0
+      '@shikijs/engine-oniguruma': 3.8.0
+      '@shikijs/langs': 3.8.0
+      '@shikijs/themes': 3.8.0
+      '@shikijs/types': 3.8.0
       '@shikijs/vscode-textmate': 10.0.2
       '@types/hast': 3.0.4
 
@@ -16906,8 +16906,8 @@ snapshots:
 
   tinyglobby@0.2.14:
     dependencies:
-      fdir: 6.4.6(picomatch@4.0.2)
-      picomatch: 4.0.2
+      fdir: 6.4.6(picomatch@4.0.3)
+      picomatch: 4.0.3
 
   tinypool@1.1.1: {}
 
@@ -16997,7 +16997,7 @@ snapshots:
       picocolors: 1.1.1
       postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.3)(yaml@2.8.0)
       resolve-from: 5.0.0
-      rollup: 4.44.2
+      rollup: 4.45.1
       source-map: 0.8.0-beta.0
       sucrase: 3.35.0
       tinyexec: 0.3.2
@@ -17148,7 +17148,7 @@ snapshots:
       '@types/concat-stream': 2.0.3
       '@types/debug': 4.1.12
       '@types/is-empty': 1.2.3
-      '@types/node': 22.16.2
+      '@types/node': 22.16.4
       '@types/unist': 3.0.3
       concat-stream: 2.0.0
       debug: 4.4.1(supports-color@8.1.1)
@@ -17423,13 +17423,13 @@ snapshots:
       - utf-8-validate
       - zod
 
-  vite-node@2.1.9(@types/node@22.16.2):
+  vite-node@2.1.9(@types/node@22.16.4):
     dependencies:
       cac: 6.7.14
       debug: 4.4.1(supports-color@8.1.1)
       es-module-lexer: 1.7.0
       pathe: 1.1.2
-      vite: 5.4.19(@types/node@22.16.2)
+      vite: 5.4.19(@types/node@22.16.4)
     transitivePeerDependencies:
       - '@types/node'
       - less
@@ -17441,19 +17441,19 @@ snapshots:
       - supports-color
       - terser
 
-  vite@5.4.19(@types/node@22.16.2):
+  vite@5.4.19(@types/node@22.16.4):
     dependencies:
       esbuild: 0.21.5
       postcss: 8.5.6
-      rollup: 4.44.2
+      rollup: 4.45.1
     optionalDependencies:
-      '@types/node': 22.16.2
+      '@types/node': 22.16.4
       fsevents: 2.3.3
 
-  vitest@2.1.9(@types/node@22.16.2)(jsdom@24.1.3):
+  vitest@2.1.9(@types/node@22.16.4)(jsdom@24.1.3):
     dependencies:
       '@vitest/expect': 2.1.9
-      '@vitest/mocker': 2.1.9(vite@5.4.19(@types/node@22.16.2))
+      '@vitest/mocker': 2.1.9(vite@5.4.19(@types/node@22.16.4))
       '@vitest/pretty-format': 2.1.9
       '@vitest/runner': 2.1.9
       '@vitest/snapshot': 2.1.9
@@ -17469,11 +17469,11 @@ snapshots:
       tinyexec: 0.3.2
       tinypool: 1.1.1
       tinyrainbow: 1.2.0
-      vite: 5.4.19(@types/node@22.16.2)
-      vite-node: 2.1.9(@types/node@22.16.2)
+      vite: 5.4.19(@types/node@22.16.4)
+      vite-node: 2.1.9(@types/node@22.16.4)
       why-is-node-running: 2.3.0
     optionalDependencies:
-      '@types/node': 22.16.2
+      '@types/node': 22.16.4
       jsdom: 24.1.3
     transitivePeerDependencies:
       - less
@@ -17615,7 +17615,7 @@ snapshots:
 
   workerpool@6.5.1: {}
 
-  wrangler@3.114.11(@cloudflare/workers-types@4.20250710.0):
+  wrangler@3.114.11(@cloudflare/workers-types@4.20250715.0):
     dependencies:
       '@cloudflare/kv-asset-handler': 0.3.4
       '@cloudflare/unenv-preset': 2.0.2(unenv@2.0.0-rc.14)(workerd@1.20250408.0)
@@ -17628,7 +17628,7 @@ snapshots:
       unenv: 2.0.0-rc.14
       workerd: 1.20250408.0
     optionalDependencies:
-      '@cloudflare/workers-types': 4.20250710.0
+      '@cloudflare/workers-types': 4.20250715.0
       fsevents: 2.3.3
       sharp: 0.33.5
     transitivePeerDependencies:
@@ -17700,11 +17700,11 @@ snapshots:
       mustache: 4.2.0
       stacktracey: 2.1.8
 
-  zod-validation-error@3.5.2(zod@3.25.58):
+  zod-validation-error@3.5.3(zod@3.25.58):
     dependencies:
       zod: 3.25.58
 
-  zod-validation-error@3.5.2(zod@3.25.76):
+  zod-validation-error@3.5.3(zod@3.25.76):
     dependencies:
       zod: 3.25.76
 
diff --git a/website/package.json b/website/package.json
index 02e4c97c301b..579f73206b79 100644
--- a/website/package.json
+++ b/website/package.json
@@ -19,14 +19,14 @@
   "dependencies": {
     "@docsearch/react": "^3.9.0",
     "@edgeandnode/common": "^7.0.4",
-    "@edgeandnode/gds": "^6.7.0",
-    "@edgeandnode/go": "^10.3.0",
+    "@edgeandnode/gds": "^6.7.1",
+    "@edgeandnode/go": "^10.3.1",
     "@emotion/react": "^11.14.0",
     "@graphprotocol/contracts": "^7.3.0",
     "@pinax/graph-networks-registry": "^0.7.1",
     "@react-hookz/web": "^25.1.1",
     "@readme/httpsnippet": "^11.0.0",
-    "@readme/openapi-parser": "^4.1.0",
+    "@readme/openapi-parser": "^4.1.1",
     "fetch-har": "^11.1.1",
     "hast": "^1.0.0",
     "hast-util-whitespace": "^3.0.0",
@@ -34,7 +34,7 @@
     "mdast-util-mdx-jsx": "^3.2.0",
     "mdast-util-to-hast": "^13.2.0",
     "mixpanel-browser": "^2.66.0",
-    "motion": "^12.23.1",
+    "motion": "^12.23.6",
     "next": "^14.2.30",
     "next-seo": "^6.8.0",
     "next-sitemap": "^4.2.3",
@@ -55,7 +55,7 @@
     "@types/lodash": "^4.17.20",
     "@types/mdast": "^4.0.4",
     "@types/mixpanel-browser": "^2.60.0",
-    "@types/node": "^22.16.2",
+    "@types/node": "^22.16.4",
     "@types/react": "^18.3.23",
     "@types/react-dom": "^18.3.7",
     "@types/vfile": "^4.0.0",
diff --git a/website/src/pages/en/index.json b/website/src/pages/en/index.json
index d78a77e08420..be1398f172c3 100644
--- a/website/src/pages/en/index.json
+++ b/website/src/pages/en/index.json
@@ -75,19 +75,19 @@
     },
     "tableLegend": {
       "subgraphs": {
-        "basic": "Subgraph Studio (No issuance)",
+        "basic": "Hosted (No issuance)",
         "full": "The Graph Network (Issuance)"
       },
       "substreams": {
         "basic": "Base",
-        "full": "Extended (EVM Only)"
+        "full": "Extended (EVM only)"
       },
       "firehose": {
         "basic": "Base",
-        "full": "Extended (EVM Only)"
+        "full": "Extended (EVM only)"
       },
       "tokenApi": {
-        "supported": "All endpoints supported"
+        "full": "All endpoints supported"
       },
       "icons": {
         "checkmark": "Checkmark",
diff --git a/website/src/supportedNetworks/NetworkDetailsPage.tsx b/website/src/supportedNetworks/NetworkDetailsPage.tsx
index c71c5548fa9d..3dcf79803a8b 100644
--- a/website/src/supportedNetworks/NetworkDetailsPage.tsx
+++ b/website/src/supportedNetworks/NetworkDetailsPage.tsx
@@ -11,21 +11,21 @@ import {
   nonEvmNoTokenAPICards,
   nonEvmWithTokenAPICards,
 } from './ResourceCards'
-import { getIconVariant, type SupportedNetwork } from './utils'
+import { type SupportedNetwork } from './utils'
 
 export default function NetworkDetailsPage({ network }: { network: SupportedNetwork }) {
   const { t } = useI18n()
   const cards = (() => {
     if (network.evm) {
-      if (network.subgraphs && !network.substreams) {
+      if (network.subgraphsSupportLevel !== 'none' && network.substreamsSupportLevel === 'none') {
         return evmSubgraphsOnlyCards
-      } else if (network.tokenApi) {
+      } else if (network.tokenApiSupportLevel !== 'none') {
         return evmWithTokenAPICards
       } else {
         return evmNoTokenAPICards
       }
     } else {
-      if (network.tokenApi) {
+      if (network.tokenApiSupportLevel !== 'none') {
         return nonEvmWithTokenAPICards
       } else {
         return nonEvmNoTokenAPICards
@@ -36,7 +36,7 @@ export default function NetworkDetailsPage({ network }: { network: SupportedNetw
   return (
     <div className="col-[container]">
       <div className="mb-5 mt-12 flex flex-col gap-3">
-        <NetworkIcon network={network} variant={getIconVariant(network.id)} size={10} />
+        <NetworkIcon network={network} variant={network.iconVariant} size={10} />
         <h2 className="leading-tight mt-0 text-24 text-white">{network.fullName}</h2>
       </div>
 
diff --git a/website/src/supportedNetworks/NetworksTable.tsx b/website/src/supportedNetworks/NetworksTable.tsx
index feebf4f6bd20..181d795392ec 100644
--- a/website/src/supportedNetworks/NetworksTable.tsx
+++ b/website/src/supportedNetworks/NetworksTable.tsx
@@ -9,6 +9,7 @@ import {
   ExperimentalSearch,
   ExperimentalToggleChip,
   Text,
+  Tooltip,
   useDebounce,
 } from '@edgeandnode/gds'
 import { Check, Checks, EyeClosed } from '@edgeandnode/gds/icons'
@@ -17,7 +18,7 @@ import { NetworkIcon } from '@edgeandnode/go'
 import { Callout, Table } from '@/components'
 import { useI18n } from '@/i18n'
 
-import { getIconVariant, type SupportedNetwork } from './utils'
+import { type SupportedNetwork } from './utils'
 
 export function NetworksTable({ networks }: { networks: SupportedNetwork[] }) {
   const { t } = useI18n()
@@ -109,7 +110,7 @@ export function NetworksTable({ networks }: { networks: SupportedNetwork[] }) {
             <span className="text-c10 mb-2 block text-white">Token API</span>
             <div className="flex gap-2">
               {checkmark}
-              <span className="text-14">{t('index.supportedNetworks.tableLegend.tokenApi.supported')}</span>
+              <span className="text-14">{t('index.supportedNetworks.tableLegend.tokenApi.full')}</span>
             </div>
           </div>
         </div>
@@ -182,7 +183,7 @@ export function NetworksTable({ networks }: { networks: SupportedNetwork[] }) {
                   <div className="static flex items-center justify-between gap-2">
                     <ButtonOrLink href={`/supported-networks/${network.id}`} className="static outline-none">
                       <div className="flex items-center gap-3">
-                        <NetworkIcon network={network} variant={getIconVariant(network.id)} size={5} />
+                        <NetworkIcon network={network} variant={network.iconVariant} size={5} />
                         <div className="flex flex-col">
                           <span className="text-body-xsmall leading-5 text-white">{network.shortName}</span>
                           <span className="text-body-xsmall leading-5 text-space-500">{network.id}</span>
@@ -196,11 +197,13 @@ export function NetworksTable({ networks }: { networks: SupportedNetwork[] }) {
                   </div>
                 </td>
                 <td align="center">
-                  {network.subgraphsSupportLevel === 'full'
-                    ? checkmarks
-                    : network.subgraphsSupportLevel === 'basic'
-                      ? checkmark
-                      : null}
+                  {network.subgraphsSupportLevel === 'full' ? (
+                    checkmarks
+                  ) : network.subgraphsSupportLevel === 'basic' ? (
+                    <Tooltip content={network.subgraphsProvider}>
+                      <span className="z-10">{checkmark}</span>
+                    </Tooltip>
+                  ) : null}
                 </td>
                 <td align="center">
                   {network.substreamsSupportLevel === 'full'
@@ -216,7 +219,7 @@ export function NetworksTable({ networks }: { networks: SupportedNetwork[] }) {
                       ? checkmark
                       : null}
                 </td>
-                <td align="center">{network.tokenApi ? checkmark : null}</td>
+                <td align="center">{network.tokenApiSupportLevel === 'full' ? checkmark : null}</td>
               </tr>
             ))}
           </tbody>
diff --git a/website/src/supportedNetworks/utils.ts b/website/src/supportedNetworks/utils.ts
index 3f40a5d30b2d..45725d364954 100644
--- a/website/src/supportedNetworks/utils.ts
+++ b/website/src/supportedNetworks/utils.ts
@@ -1,7 +1,7 @@
 import { type Network, NetworksRegistry } from '@pinax/graph-networks-registry'
 
 // Networks that should use the "mono" icon variant (TODO: add this feature to web3icons?)
-export const MONO_ICON_NETWORKS = [
+const MONO_ICON_NETWORKS = [
   'arweave-mainnet',
   'autonomys-taurus',
   'expchain-testnet',
@@ -25,60 +25,83 @@ export const MONO_ICON_NETWORKS = [
   'zksync-era-sepolia',
 ]
 
-export const getIconVariant = (networkId: string): 'mono' | 'branded' => {
-  return MONO_ICON_NETWORKS.includes(networkId) ? 'mono' : 'branded'
-}
-
-// Support level for services
-export const getSubgraphsSupportLevel = (network: Network) => {
-  const hasSubgraphs = Boolean(network.services.subgraphs?.length || network.services.sps?.length)
-  if (!hasSubgraphs) return 'none'
-  if (network.issuanceRewards) return 'full'
-  return 'basic'
-}
-export const getSubstreamsSupportLevel = (network: Network) => {
-  const substreamCount = network.services.substreams?.length || 0
-  if (substreamCount === 0) return 'none'
-  if (substreamCount >= 2) return 'full'
-  return 'basic'
-}
-export const getFirehoseSupportLevel = (network: Network) => {
-  const firehoseCount = network.services.firehose?.length || 0
-  if (firehoseCount === 0) return 'none'
-  if (firehoseCount >= 2) return 'full'
-  return 'basic'
-}
-
 export async function getSupportedNetworks() {
   const registry = await NetworksRegistry.fromLatestVersion()
   return registry.networks
     .flatMap((network) => {
-      const evm = network.caip2Id.startsWith('eip155:')
-      const subgraphs = Boolean(network.services.subgraphs?.length)
-      const substreams = Boolean(network.services.substreams?.length)
-      const firehose = Boolean(network.services.firehose?.length)
-      const tokenApi = Boolean(network.services.tokenApi?.length)
-      if (!subgraphs && !substreams && !firehose && !tokenApi) {
+      const [subgraphsSupportLevel, subgraphsProvider] = getSubgraphsSupportLevelAndProvider(network)
+      const substreamsSupportLevel = getSubstreamsSupportLevel(network)
+      const firehoseSupportLevel = getFirehoseSupportLevel(network)
+      const tokenApiSupportLevel = getTokenApiSupportLevel(network)
+      if (
+        subgraphsSupportLevel === 'none' &&
+        substreamsSupportLevel === 'none' &&
+        firehoseSupportLevel === 'none' &&
+        tokenApiSupportLevel === 'none'
+      ) {
         return []
       }
       return [
         {
           ...network,
-          evm,
-          subgraphs,
-          substreams,
-          firehose,
-          tokenApi,
-          rawNetwork: network,
-          subgraphsSupportLevel: getSubgraphsSupportLevel(network),
-          substreamsSupportLevel: getSubstreamsSupportLevel(network),
-          firehoseSupportLevel: getFirehoseSupportLevel(network),
+          evm: isEvm(network),
+          iconVariant: getIconVariant(network),
+          subgraphsSupportLevel,
+          subgraphsProvider,
+          substreamsSupportLevel,
+          firehoseSupportLevel,
+          tokenApiSupportLevel,
         },
       ]
     })
     .sort((a, b) => a.fullName.localeCompare(b.fullName))
 }
 
+function isEvm(network: Network) {
+  return network.caip2Id.startsWith('eip155:')
+}
+
+function getIconVariant(network: Network): 'mono' | 'branded' {
+  return MONO_ICON_NETWORKS.includes(network.id) ? 'mono' : 'branded'
+}
+
+function getSubgraphsSupportLevelAndProvider(network: Network): ['none' | 'basic' | 'full', string | null] {
+  const providers = [...new Set([...(network.services.subgraphs || []), ...(network.services.sps || [])])]
+  if (providers.length > 0) {
+    let provider = providers[0]!
+    if (providers.some((provider) => /^((https?:)?\/\/)?api\.studio\.thegraph\.com\//.test(provider))) {
+      provider = 'Subgraph Studio'
+    } else if (providers.some((provider) => /^((https?:)?\/\/)?(www\.)?streamingfast\.io\//.test(provider))) {
+      provider = 'StreamingFast'
+    }
+    if (network.issuanceRewards) {
+      return ['full', provider]
+    }
+    return ['basic', provider]
+  }
+  return ['none', null]
+}
+
+function getSubstreamsSupportLevel(network: Network): 'none' | 'basic' | 'full' {
+  const providerCount = network.services.substreams?.length || 0
+  if (providerCount >= 2) return 'full'
+  if (providerCount === 1) return 'basic'
+  return 'none'
+}
+
+function getFirehoseSupportLevel(network: Network): 'none' | 'basic' | 'full' {
+  const providerCount = network.services.firehose?.length || 0
+  if (providerCount >= 2) return 'full'
+  if (providerCount === 1) return 'basic'
+  return 'none'
+}
+
+function getTokenApiSupportLevel(network: Network): 'none' | 'full' {
+  const providerCount = network.services.tokenApi?.length || 0
+  if (providerCount >= 1) return 'full'
+  return 'none'
+}
+
 export type SupportedNetwork = Awaited<ReturnType<typeof getSupportedNetworks>>[number]
 
 export async function getSupportedNetworksStaticProps() {

From 8d7c2d9cbe5f60ac7e1344abf4c3cdf05927a5af Mon Sep 17 00:00:00 2001
From: benface <benoit.rouleau@icloud.com>
Date: Wed, 16 Jul 2025 10:58:20 -0400
Subject: [PATCH 30/36] Fix regex

---
 website/src/supportedNetworks/utils.ts | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/website/src/supportedNetworks/utils.ts b/website/src/supportedNetworks/utils.ts
index 45725d364954..ddd1a870a20c 100644
--- a/website/src/supportedNetworks/utils.ts
+++ b/website/src/supportedNetworks/utils.ts
@@ -69,9 +69,9 @@ function getSubgraphsSupportLevelAndProvider(network: Network): ['none' | 'basic
   const providers = [...new Set([...(network.services.subgraphs || []), ...(network.services.sps || [])])]
   if (providers.length > 0) {
     let provider = providers[0]!
-    if (providers.some((provider) => /^((https?:)?\/\/)?api\.studio\.thegraph\.com\//.test(provider))) {
+    if (providers.some((provider) => /^((https?:)?\/\/)?api\.studio\.thegraph\.com(\/|$)/.test(provider))) {
       provider = 'Subgraph Studio'
-    } else if (providers.some((provider) => /^((https?:)?\/\/)?(www\.)?streamingfast\.io\//.test(provider))) {
+    } else if (providers.some((provider) => /^((https?:)?\/\/)?(www\.)?streamingfast\.io(\/|$)/.test(provider))) {
       provider = 'StreamingFast'
     }
     if (network.issuanceRewards) {

From 379fe960a2a48bd1c42f5c76d49f8da34786da00 Mon Sep 17 00:00:00 2001
From: benface <benoit.rouleau@icloud.com>
Date: Wed, 16 Jul 2025 10:58:38 -0400
Subject: [PATCH 31/36] Run `prebuild:ci` and `build`

---
 website/route-lockfile.txt                    | 60 +++++++++----------
 website/src/openApi/tokenApi.json             | 20 +++----
 .../subgraphs/querying/graph-client/README.md | 14 ++---
 .../querying/graph-client/architecture.md     |  6 +-
 .../subgraphs/querying/graph-client/live.md   |  2 +-
 5 files changed, 49 insertions(+), 53 deletions(-)

diff --git a/website/route-lockfile.txt b/website/route-lockfile.txt
index bd51529eb7fe..d301b3204365 100644
--- a/website/route-lockfile.txt
+++ b/website/route-lockfile.txt
@@ -246,7 +246,8 @@
 /ar/supported-networks/xlayer-mainnet/
 /ar/supported-networks/xlayer-sepolia/
 /ar/supported-networks/zetachain/
-/ar/supported-networks/zilliqa-protomainnet/
+/ar/supported-networks/zilliqa-testnet/
+/ar/supported-networks/zilliqa/
 /ar/supported-networks/zksync-era-sepolia/
 /ar/supported-networks/zksync-era/
 /ar/supported-networks/zora/
@@ -520,7 +521,8 @@
 /cs/supported-networks/xlayer-mainnet/
 /cs/supported-networks/xlayer-sepolia/
 /cs/supported-networks/zetachain/
-/cs/supported-networks/zilliqa-protomainnet/
+/cs/supported-networks/zilliqa-testnet/
+/cs/supported-networks/zilliqa/
 /cs/supported-networks/zksync-era-sepolia/
 /cs/supported-networks/zksync-era/
 /cs/supported-networks/zora/
@@ -794,7 +796,8 @@
 /de/supported-networks/xlayer-mainnet/
 /de/supported-networks/xlayer-sepolia/
 /de/supported-networks/zetachain/
-/de/supported-networks/zilliqa-protomainnet/
+/de/supported-networks/zilliqa-testnet/
+/de/supported-networks/zilliqa/
 /de/supported-networks/zksync-era-sepolia/
 /de/supported-networks/zksync-era/
 /de/supported-networks/zora/
@@ -1068,7 +1071,8 @@
 /en/supported-networks/xlayer-mainnet/
 /en/supported-networks/xlayer-sepolia/
 /en/supported-networks/zetachain/
-/en/supported-networks/zilliqa-protomainnet/
+/en/supported-networks/zilliqa-testnet/
+/en/supported-networks/zilliqa/
 /en/supported-networks/zksync-era-sepolia/
 /en/supported-networks/zksync-era/
 /en/supported-networks/zora/
@@ -1342,7 +1346,8 @@
 /es/supported-networks/xlayer-mainnet/
 /es/supported-networks/xlayer-sepolia/
 /es/supported-networks/zetachain/
-/es/supported-networks/zilliqa-protomainnet/
+/es/supported-networks/zilliqa-testnet/
+/es/supported-networks/zilliqa/
 /es/supported-networks/zksync-era-sepolia/
 /es/supported-networks/zksync-era/
 /es/supported-networks/zora/
@@ -1616,7 +1621,8 @@
 /fr/supported-networks/xlayer-mainnet/
 /fr/supported-networks/xlayer-sepolia/
 /fr/supported-networks/zetachain/
-/fr/supported-networks/zilliqa-protomainnet/
+/fr/supported-networks/zilliqa-testnet/
+/fr/supported-networks/zilliqa/
 /fr/supported-networks/zksync-era-sepolia/
 /fr/supported-networks/zksync-era/
 /fr/supported-networks/zora/
@@ -1890,7 +1896,8 @@
 /hi/supported-networks/xlayer-mainnet/
 /hi/supported-networks/xlayer-sepolia/
 /hi/supported-networks/zetachain/
-/hi/supported-networks/zilliqa-protomainnet/
+/hi/supported-networks/zilliqa-testnet/
+/hi/supported-networks/zilliqa/
 /hi/supported-networks/zksync-era-sepolia/
 /hi/supported-networks/zksync-era/
 /hi/supported-networks/zora/
@@ -2164,7 +2171,8 @@
 /it/supported-networks/xlayer-mainnet/
 /it/supported-networks/xlayer-sepolia/
 /it/supported-networks/zetachain/
-/it/supported-networks/zilliqa-protomainnet/
+/it/supported-networks/zilliqa-testnet/
+/it/supported-networks/zilliqa/
 /it/supported-networks/zksync-era-sepolia/
 /it/supported-networks/zksync-era/
 /it/supported-networks/zora/
@@ -2438,7 +2446,8 @@
 /ja/supported-networks/xlayer-mainnet/
 /ja/supported-networks/xlayer-sepolia/
 /ja/supported-networks/zetachain/
-/ja/supported-networks/zilliqa-protomainnet/
+/ja/supported-networks/zilliqa-testnet/
+/ja/supported-networks/zilliqa/
 /ja/supported-networks/zksync-era-sepolia/
 /ja/supported-networks/zksync-era/
 /ja/supported-networks/zora/
@@ -2831,7 +2840,8 @@
 /mr/supported-networks/xlayer-mainnet/
 /mr/supported-networks/xlayer-sepolia/
 /mr/supported-networks/zetachain/
-/mr/supported-networks/zilliqa-protomainnet/
+/mr/supported-networks/zilliqa-testnet/
+/mr/supported-networks/zilliqa/
 /mr/supported-networks/zksync-era-sepolia/
 /mr/supported-networks/zksync-era/
 /mr/supported-networks/zora/
@@ -3343,7 +3353,8 @@
 /pt/supported-networks/xlayer-mainnet/
 /pt/supported-networks/xlayer-sepolia/
 /pt/supported-networks/zetachain/
-/pt/supported-networks/zilliqa-protomainnet/
+/pt/supported-networks/zilliqa-testnet/
+/pt/supported-networks/zilliqa/
 /pt/supported-networks/zksync-era-sepolia/
 /pt/supported-networks/zksync-era/
 /pt/supported-networks/zora/
@@ -3736,7 +3747,8 @@
 /ru/supported-networks/xlayer-mainnet/
 /ru/supported-networks/xlayer-sepolia/
 /ru/supported-networks/zetachain/
-/ru/supported-networks/zilliqa-protomainnet/
+/ru/supported-networks/zilliqa-testnet/
+/ru/supported-networks/zilliqa/
 /ru/supported-networks/zksync-era-sepolia/
 /ru/supported-networks/zksync-era/
 /ru/supported-networks/zora/
@@ -4010,7 +4022,8 @@
 /sv/supported-networks/xlayer-mainnet/
 /sv/supported-networks/xlayer-sepolia/
 /sv/supported-networks/zetachain/
-/sv/supported-networks/zilliqa-protomainnet/
+/sv/supported-networks/zilliqa-testnet/
+/sv/supported-networks/zilliqa/
 /sv/supported-networks/zksync-era-sepolia/
 /sv/supported-networks/zksync-era/
 /sv/supported-networks/zora/
@@ -4284,7 +4297,8 @@
 /tr/supported-networks/xlayer-mainnet/
 /tr/supported-networks/xlayer-sepolia/
 /tr/supported-networks/zetachain/
-/tr/supported-networks/zilliqa-protomainnet/
+/tr/supported-networks/zilliqa-testnet/
+/tr/supported-networks/zilliqa/
 /tr/supported-networks/zksync-era-sepolia/
 /tr/supported-networks/zksync-era/
 /tr/supported-networks/zora/
@@ -4677,7 +4691,8 @@
 /ur/supported-networks/xlayer-mainnet/
 /ur/supported-networks/xlayer-sepolia/
 /ur/supported-networks/zetachain/
-/ur/supported-networks/zilliqa-protomainnet/
+/ur/supported-networks/zilliqa-testnet/
+/ur/supported-networks/zilliqa/
 /ur/supported-networks/zksync-era-sepolia/
 /ur/supported-networks/zksync-era/
 /ur/supported-networks/zora/
@@ -4957,25 +4972,10 @@
 /zh/supported-networks/cronos/
 /zh/supported-networks/eos-evm/
 /zh/supported-networks/eos/
-/zh/supported-networks/etherlink-mainnet/
-/zh/supported-networks/etherlink-testnet/
-/zh/supported-networks/expchain-testnet/
-/zh/supported-networks/fantom-testnet/
-/zh/supported-networks/fantom/
-/zh/supported-networks/fraxtal/
 /zh/supported-networks/fuji/
-/zh/supported-networks/fuse/
-/zh/supported-networks/holesky-cl/
-/zh/supported-networks/holesky/
-/zh/supported-networks/hoodi-cl/
-/zh/supported-networks/hoodi/
 /zh/supported-networks/jungle4-evm/
 /zh/supported-networks/jungle4/
 /zh/supported-networks/kylin/
-/zh/supported-networks/mainnet-cl/
-/zh/supported-networks/mainnet/
-/zh/supported-networks/sepolia-cl/
-/zh/supported-networks/sepolia/
 /zh/token-api/evm/get-balances-evm-by-address/
 /zh/token-api/evm/get-historical-balances-evm-by-address/
 /zh/token-api/evm/get-holders-evm-by-contract/
diff --git a/website/src/openApi/tokenApi.json b/website/src/openApi/tokenApi.json
index 6a2d8a11ecab..5bc9324e4002 100644
--- a/website/src/openApi/tokenApi.json
+++ b/website/src/openApi/tokenApi.json
@@ -3,16 +3,12 @@
   "info": {
     "title": "Token API (Beta)",
     "description": "Power your apps & AI agents with real-time token data.",
-    "version": "2.2.6+153a17c (2025-07-10)"
+    "version": "2.2.10+af1bb70 (2025-07-10)"
   },
   "servers": [
     {
-      "url": "https://token-api.thegraph.com",
-      "description": "Token API - Production"
-    },
-    {
-      "url": "http://localhost:8000",
-      "description": "Token API - Local"
+      "url": "https://token-api.thegraph.com/",
+      "description": "Token API - Remote"
     }
   ],
   "components": {
@@ -2165,7 +2161,7 @@
                           "datetime": {
                             "type": "string"
                           },
-                          "address": {
+                          "contract": {
                             "type": "string",
                             "description": "Filter by address"
                           },
@@ -2223,7 +2219,7 @@
                         "required": [
                           "block_num",
                           "datetime",
-                          "address",
+                          "contract",
                           "circulating_supply",
                           "holders",
                           "network_id",
@@ -2255,7 +2251,7 @@
                     {
                       "block_num": 22589353,
                       "datetime": "2025-05-29 15:40:11",
-                      "address": "0xc944e90c64b2c07662a292be6244bdf05cda44a7",
+                      "contract": "0xc944e90c64b2c07662a292be6244bdf05cda44a7",
                       "decimals": 18,
                       "symbol": "GRT",
                       "name": "Graph Token",
@@ -4222,8 +4218,8 @@
                   ]
                 },
                 "example": {
-                  "version": "2.2.6",
-                  "commit": "153a17c",
+                  "version": "2.2.10",
+                  "commit": "af1bb70",
                   "date": "2025-07-10",
                   "repo": "pinax-network/token-api"
                 }
diff --git a/website/src/pages/en/subgraphs/querying/graph-client/README.md b/website/src/pages/en/subgraphs/querying/graph-client/README.md
index c6dd72b133d7..416cadc13c6f 100644
--- a/website/src/pages/en/subgraphs/querying/graph-client/README.md
+++ b/website/src/pages/en/subgraphs/querying/graph-client/README.md
@@ -4,7 +4,7 @@ This repo is the home for [The Graph](https://thegraph.com) consumer-side tools
 
 ## Background
 
-The tools provided in this repo are intended to enrich and extend the DX, and add the additional layer required for dApps to implement distributed applications.
+The tools provided in this repo are intended to enrich and extend the DX, and add the additional layer required for dApps in order to implement distributed applications.
 
 Developers who consume data from [The Graph](https://thegraph.com) GraphQL API often need peripherals for making data consumption easier, and also tools that allow using multiple indexers at the same time.
 
@@ -12,7 +12,7 @@ Developers who consume data from [The Graph](https://thegraph.com) GraphQL API o
 
 This library is intended to simplify the network aspect of data consumption for dApps. The tools provided within this repository are intended to run at build time, in order to make execution faster and performant at runtime.
 
-> The tools provided in this repo can be used as standalones, but you can also use them with any existing GraphQL Client!
+> The tools provided in this repo can be used as standalone, but you can also use it with any existing GraphQL Client!
 
 | Status | Feature                                                          | Notes                                                                                                                            |
 | :----: | ---------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
@@ -67,7 +67,7 @@ graphclient build
 
 > Note: you need to run this with `yarn` prefix, or add that as a script in your `package.json`.
 
-This should produce a ready-to-use standalone `execute` function that you can use for running your application GraphQL operations. You should have an output similar to the following:
+This should produce a ready-to-use standalone `execute` function, that you can use for running your application GraphQL operations, you should have an output similar to the following:
 
 ```sh
 GraphClient: Cleaning existing artifacts
@@ -80,7 +80,7 @@ GraphClient: Reading the configuration
 🕸️: Done! => .graphclient
 ```
 
-Now that the `.graphclient` artifact is generated for you, you can import it directly from your code, and run your queries:
+Now, the `.graphclient` artifact is generated for you, and you can import it directly from your code, and run your queries:
 
 ```ts
 import { execute } from '../.graphclient'
@@ -449,7 +449,7 @@ sources:
         endpoint: https://api.thegraph.com/subgraphs/name/graphprotocol/compound-v2
 ```
 
-As long as there are no conflicts across the composed schemas, you can compose it, and then run a single query to both Subgraphs:
+As long as there a no conflicts across the composed schemas, you can compose it, and then run a single query to both Subgraphs:
 
 ```graphql
 query myQuery {
@@ -482,7 +482,7 @@ For advanced use-cases with composition, please refer to the following resources
 
 If your project is written in TypeScript, you can leverage the power of [`TypedDocumentNode`](https://the-guild.dev/blog/typed-document-node) and have a fully-typed GraphQL client experience.
 
-The standalone mode of The GraphQL, and popular GraphQL client libraries like Apollo-Client and urql have built-in support for `TypedDocumentNode`!
+The standalone mode of The GraphQL, and popular GraphQL client libraries like Apollo-Client and urql has built-in support for `TypedDocumentNode`!
 
 The Graph Client CLI comes with a ready-to-use configuration for [GraphQL Code Generator](https://graphql-code-generator.com), and it can generate `TypedDocumentNode` based on your GraphQL operations.
 
@@ -530,7 +530,7 @@ This is helpful since you can implement custom code as part of your GraphQL sche
 
 > This document explains how to add custom mutations, but in fact you can add any GraphQL operation (query/mutation/subscriptions). See [Extending the unified schema article](https://graphql-mesh.com/docs/guides/extending-unified-schema) for more information about this feature.
 
-To get started, define an `additionalTypeDefs` section in your config file:
+To get started, define a `additionalTypeDefs` section in your config file:
 
 ```yaml
 additionalTypeDefs: |
diff --git a/website/src/pages/en/subgraphs/querying/graph-client/architecture.md b/website/src/pages/en/subgraphs/querying/graph-client/architecture.md
index af38feb8923e..99098cd77b95 100644
--- a/website/src/pages/en/subgraphs/querying/graph-client/architecture.md
+++ b/website/src/pages/en/subgraphs/querying/graph-client/architecture.md
@@ -5,7 +5,7 @@ To address the need to support a distributed network, we plan to take several ac
 1. Compose multiple Subgraphs (on the client-side)
 2. Fallback to multiple indexers/sources/hosted services
 3. Automatic/Manual source picking strategy
-4. Agnostic core, with the ability to integrate with any GraphQL client
+4. Agnostic core, with the ability to run integrate with any GraphQL client
 
 ## Standalone mode
 
@@ -44,7 +44,7 @@ graph LR;
 
 ## Subgraph Execution Strategies
 
-Within every Subgraph defined as source, there will be a way to define its source(s) indexer and the querying strategy, here are a few options:
+Within every Subgraph defined as source, there will be a way to define it's source(s) indexer and the querying strategy, here are a few options:
 
 ```mermaid
 graph LR;
@@ -85,7 +85,7 @@ graph LR;
     end
 ```
 
-> We can ship several built-in strategies, along with a simple interface to allow developers to write their own.
+> We can ship a several built-in strategies, along with a simple interfaces to allow developers to write their own.
 
 To take the concept of strategies to the extreme, we can even build a magical layer that does subscription-as-query, with any hook, and provide a smooth DX for dapps:
 
diff --git a/website/src/pages/en/subgraphs/querying/graph-client/live.md b/website/src/pages/en/subgraphs/querying/graph-client/live.md
index 761f788c75a7..e6f726cb4352 100644
--- a/website/src/pages/en/subgraphs/querying/graph-client/live.md
+++ b/website/src/pages/en/subgraphs/querying/graph-client/live.md
@@ -38,6 +38,6 @@ query ExampleQuery @live(interval: 5000) {
 
 ## Integrations
 
-Since the entire network layer (along with the `@live` mechanism) is implemented inside `graph-client` core, you can use Live queries with every GraphQL client (such as Urql or Apollo-Client), as long as it supports streamed responses (`AsyncIterable`).
+Since the entire network layer (along with the `@live` mechanism) is implemented inside `graph-client` core, you can use Live queries with every GraphQL client (such as Urql or Apollo-Client), as long as it supports streame responses (`AsyncIterable`).
 
 No additional setup is required for GraphQL clients cache updates.

From 9e4d9e07fadf6e50e702e0608914c5fd21879622 Mon Sep 17 00:00:00 2001
From: Idalith <126833353+idalithb@users.noreply.github.com>
Date: Fri, 18 Jul 2025 18:02:32 -0700
Subject: [PATCH 32/36] Adding Section (#1011)

* Adding Section

* Updating

* adding curl command example
---
 .../subgraphs/querying/managing-api-keys.mdx  | 34 +++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/website/src/pages/en/subgraphs/querying/managing-api-keys.mdx b/website/src/pages/en/subgraphs/querying/managing-api-keys.mdx
index 0a16fca09f15..136cbf1ef657 100644
--- a/website/src/pages/en/subgraphs/querying/managing-api-keys.mdx
+++ b/website/src/pages/en/subgraphs/querying/managing-api-keys.mdx
@@ -26,6 +26,40 @@ A new window will pop up:
 
 ![Create API Key Window](/img/create-api-key.png)
 
+## Using Your API Key
+
+> [!IMPORTANT] Always keep your API key in environment variables or a secure secrets manager. Do not hardcode it in your codebase or expose it in client-side apps.
+
+When you query The Graph from your dapp, you can use your API key in two ways:
+
+1. In the URL (optimal method for Subgraph queries):
+
+   Include the API Key directly to your query endpoint:
+
+   ```
+   https://gateway.thegraph.com/api/<YOUR_API_KEY>/subgraphs/id/<SUBGRAPH_ID>
+   ```
+
+2. As a bearer Token:
+
+   Include your API Key in the `Authorization` request header for added security:
+
+   ```
+   Authorization: Bearer <YOUR_API_KEY>
+   ```
+
+   Curl command example:
+
+   ```
+   curl -X POST \
+   -H "Content-Type: application/json" \
+   -H "Authorization: Bearer {api-key}" \
+   -d '{"query": "{ graphNetworks(first: 5) { id controller graphToken epochManager } graphAccounts(first: 5) { id names { id } defaultName { id } createdAt } }", "operationName": "Subgraphs", "variables": {}}' \
+   https://gateway.thegraph.com/api/subgraphs/id/DZz4kDTdmzWLWsV373w2bSmoar3umKKH9y82SUKr5qmp
+   ```
+
+Check out [Querying from an App](/subgraphs/querying/from-an-application) for more details.
+
 ## Manage API Keys
 
 The “API keys” table lists existing API keys and allows you to manage or delete them. For each key, you can see its status, the cost for the current period, the spending limit for the current period, and the total number of queries.

From e7e328c972025c8aaabcc1eb644a32320ef03faf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Beno=C3=AEt=20Rouleau?= <benoit.rouleau@icloud.com>
Date: Thu, 24 Jul 2025 12:23:49 -0400
Subject: [PATCH 33/36] Update Token API (#1013)

* Update dependencies

* Update Token API from staging (TODO: REVERT TO PRODUCTION BEFORE MERGING)

* Update dependencies + run `check:fix` (not sure why the class name order changed?)

* Update Token API again, using production (ready to merge?)

* Revert class order change (issue with my local setup)
---
 package.json                      |    4 +-
 packages/og-image/package.json    |    4 +-
 pnpm-lock.yaml                    | 2657 +++++-----
 website/package.json              |   10 +-
 website/src/openApi/tokenApi.json | 7982 ++++++++++++++++++++++++++---
 5 files changed, 8498 insertions(+), 2159 deletions(-)

diff --git a/package.json b/package.json
index c59eaa415e43..318c0d7b42df 100644
--- a/package.json
+++ b/package.json
@@ -21,7 +21,7 @@
   },
   "devDependencies": {
     "@edgeandnode/eslint-config": "^2.0.3",
-    "@types/node": "^22.16.4",
+    "@types/node": "^22.16.5",
     "eslint": "^8.57.1",
     "eslint-plugin-mdx": "^3.6.2",
     "prettier": "^3.6.2",
@@ -31,7 +31,7 @@
     "remark-lint-heading-increment": "^4.0.1",
     "remark-lint-no-heading-punctuation": "^4.0.1",
     "remark-lint-restrict-elements": "workspace:*",
-    "turbo": "^2.5.4",
+    "turbo": "^2.5.5",
     "typescript": "^5.8.3"
   },
   "resolutions": {
diff --git a/packages/og-image/package.json b/packages/og-image/package.json
index 00039ec94383..71eaa27b1a6b 100644
--- a/packages/og-image/package.json
+++ b/packages/og-image/package.json
@@ -12,11 +12,11 @@
   "dependencies": {
     "@resvg/resvg-wasm": "^2.6.2",
     "react": "^18.3.1",
-    "satori": "^0.15.2",
+    "satori": "^0.16.1",
     "yoga-wasm-web": "^0.3.3"
   },
   "devDependencies": {
-    "@cloudflare/workers-types": "^4.20250710.0",
+    "@cloudflare/workers-types": "^4.20250724.0",
     "@types/react": "^18.3.23",
     "jest-image-snapshot": "^6.5.1",
     "tsx": "^4.20.3",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index a14f42b2e2c8..8f3bf7a54bfe 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -15,8 +15,8 @@ importers:
         specifier: ^2.0.3
         version: 2.0.3(eslint@8.57.1)(typescript@5.8.3)
       '@types/node':
-        specifier: ^22.16.4
-        version: 22.16.4
+        specifier: ^22.16.5
+        version: 22.16.5
       eslint:
         specifier: ^8.57.1
         version: 8.57.1
@@ -45,8 +45,8 @@ importers:
         specifier: workspace:*
         version: link:packages/remark-lint-restrict-elements
       turbo:
-        specifier: ^2.5.4
-        version: 2.5.4
+        specifier: ^2.5.5
+        version: 2.5.5
       typescript:
         specifier: ^5.8.3
         version: 5.8.3
@@ -60,15 +60,15 @@ importers:
         specifier: ^18.3.1
         version: 18.3.1
       satori:
-        specifier: ^0.15.2
-        version: 0.15.2
+        specifier: ^0.16.1
+        version: 0.16.1
       yoga-wasm-web:
         specifier: ^0.3.3
         version: 0.3.3
     devDependencies:
       '@cloudflare/workers-types':
-        specifier: ^4.20250710.0
-        version: 4.20250715.0
+        specifier: ^4.20250724.0
+        version: 4.20250724.0
       '@types/react':
         specifier: ^18.3.23
         version: 18.3.23
@@ -83,10 +83,10 @@ importers:
         version: 5.8.3
       vitest:
         specifier: ^2.1.9
-        version: 2.1.9(@types/node@22.16.4)(jsdom@24.1.3)
+        version: 2.1.9(@types/node@22.16.5)(jsdom@24.1.3)
       wrangler:
         specifier: ^3.114.11
-        version: 3.114.11(@cloudflare/workers-types@4.20250715.0)
+        version: 3.114.11(@cloudflare/workers-types@4.20250724.0)
 
   packages/remark-lint-restrict-elements:
     dependencies:
@@ -101,16 +101,16 @@ importers:
     dependencies:
       '@docsearch/react':
         specifier: ^3.9.0
-        version: 3.9.0(@algolia/client-search@5.33.0)(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)
+        version: 3.9.0(@algolia/client-search@5.34.1)(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)
       '@edgeandnode/common':
         specifier: ^7.0.4
-        version: 7.0.4(hardhat@2.25.0(typescript@5.8.3))
+        version: 7.0.4(hardhat@2.26.1(typescript@5.8.3))
       '@edgeandnode/gds':
         specifier: ^6.7.1
-        version: 6.7.1(@emotion/is-prop-valid@0.8.8)(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(@theme-ui/core@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(dayjs@1.11.13)(hardhat@2.25.0(typescript@5.8.3))(next@14.2.30(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)(theme-ui@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(typescript@5.8.3)
+        version: 6.7.1(@emotion/is-prop-valid@0.8.8)(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(@theme-ui/core@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(dayjs@1.11.13)(hardhat@2.26.1(typescript@5.8.3))(next@14.2.30(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)(theme-ui@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(typescript@5.8.3)
       '@edgeandnode/go':
         specifier: ^10.3.1
-        version: 10.3.1(442dd4704c05a99a69d6fa587fe6972c)
+        version: 10.3.1(1b29eee08dfa1082e05ffae0de269dca)
       '@emotion/react':
         specifier: ^11.14.0
         version: 11.14.0(@types/react@18.3.23)(react@18.3.1)
@@ -127,7 +127,7 @@ importers:
         specifier: ^11.0.0
         version: 11.0.0
       '@readme/openapi-parser':
-        specifier: ^4.1.1
+        specifier: ^4.1.2
         version: 4.1.2(openapi-types@12.1.3)
       fetch-har:
         specifier: ^11.1.1
@@ -148,11 +148,11 @@ importers:
         specifier: ^13.2.0
         version: 13.2.0
       mixpanel-browser:
-        specifier: ^2.66.0
-        version: 2.66.0
+        specifier: ^2.67.0
+        version: 2.67.0
       motion:
-        specifier: ^12.23.6
-        version: 12.23.6(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+        specifier: ^12.23.9
+        version: 12.23.9(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       next:
         specifier: ^14.2.30
         version: 14.2.30(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -206,11 +206,11 @@ importers:
         specifier: ^4.0.4
         version: 4.0.4
       '@types/mixpanel-browser':
-        specifier: ^2.60.0
-        version: 2.60.0
+        specifier: ^2.66.0
+        version: 2.66.0
       '@types/node':
-        specifier: ^22.16.4
-        version: 22.16.4
+        specifier: ^22.16.5
+        version: 22.16.5
       '@types/react':
         specifier: ^18.3.23
         version: 18.3.23
@@ -267,56 +267,56 @@ packages:
       '@algolia/client-search': '>= 4.9.1 < 6'
       algoliasearch: '>= 4.9.1 < 6'
 
-  '@algolia/client-abtesting@5.33.0':
-    resolution: {integrity: sha512-Pyv+iHkkq7BJWFKzdrXm/JSbcTGvrGqJnIMwHYYlKDjuEBWhYt/z4WDLP9MbFZ9cTKb4qe8OvzEmS/0ERW3ibg==}
+  '@algolia/client-abtesting@5.34.1':
+    resolution: {integrity: sha512-M4zb6J7q+pg9V9Xk0k1WDgvupfCtXcxjKGTrNVYemiredLVGOmvVIPAUjg2rx4QmK7DWNApWLsieYwk7PAaOXw==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/client-analytics@5.33.0':
-    resolution: {integrity: sha512-qkRc7ovjWQQJng6U1yM5esLPNDB0leGCaOh3FEfeWRyLB0xnjLsBEUkKanYq9GrewPvi17l78nDhkqB2SYzTCw==}
+  '@algolia/client-analytics@5.34.1':
+    resolution: {integrity: sha512-h18zlL+bVUlbNE92olo1d/r6HQPkxhmP7yCpA1osERwpgC6F058kWm0O0aYdrHJIHtWBcs9aRqq7IkQSkpjPJg==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/client-common@5.33.0':
-    resolution: {integrity: sha512-Gq8Z4Fv0DkqDkf/bZl7ZwIF7PSCnRFwpyQoNDnUg+s4SwerXx6VwZJlIx/t5b9+l7vwWsjnKVivCfM4Ab5gw+g==}
+  '@algolia/client-common@5.34.1':
+    resolution: {integrity: sha512-otPWALs72KvmVuP0CN0DI6sqVx1jQWKi+/DgAiP8DysVMgiNlva3GDKTtAK6XVGlT08f4h32FNuL0yQODuCfKA==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/client-insights@5.33.0':
-    resolution: {integrity: sha512-/tp1oWD3lpSXhAC4n8j0GMDbmN6pd+pATeO1GeURAFP5TVF+2Jz+NbQ1et0uCTzdazOfjEjSIv0fQSLo7bqSgA==}
+  '@algolia/client-insights@5.34.1':
+    resolution: {integrity: sha512-SNDb5wuEpQFM6S5Shk2iytLMusvGycm9uTuYh7cGa1h3U7O65OjjjIgQ0lLY5HPybHNtmXr4Zh/EZ23pZvAJHg==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/client-personalization@5.33.0':
-    resolution: {integrity: sha512-hZNSqe2BXkrBQ04t5NSlqsNl4u0QrFfhXHbjO5iZ14TWt5jyOdtFMBxF3Qc0o0sqTVYnFIp0xtUbEi+/HkGeyQ==}
+  '@algolia/client-personalization@5.34.1':
+    resolution: {integrity: sha512-T8z9KqYJOup83Hw0mgICYWfJoLh//FNWbf4roFd95ZJzZ4v1cN/hvr7Eqml1qWMoCkJb4y/XQjrXsJ6Y9XnMLw==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/client-query-suggestions@5.33.0':
-    resolution: {integrity: sha512-kpu2hCIR+848T0lcf3W1GCMe+HQp/LcHceIglA6Dyw6i+y9wH3w8kmXqIV2Svv6JQ9ojEqIL8Knk7NEvD3xIBg==}
+  '@algolia/client-query-suggestions@5.34.1':
+    resolution: {integrity: sha512-YA0kC4CwO1mc1dliNgbFgToweRa7Uihjz3izEaV4cXninF1v4SaOrPkQUsiFPprAffjMzOUoT7vahQZ/HZyiKQ==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/client-search@5.33.0':
-    resolution: {integrity: sha512-Z5SAqPLxF8KyE9YPO4tAdHrXyb87DUJ0lXhFrcrG+dl/AQT9nqycQhtqDqdcQnfZrj02PImSWZQpxQj34nGZKw==}
+  '@algolia/client-search@5.34.1':
+    resolution: {integrity: sha512-bt5hC9vvjaKvdvsgzfXJ42Sl3qjQqoi/FD8V7HOQgtNFhwSauZOlgLwFoUiw67sM+r7ehF7QDk5WRDgY7fAkIg==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/ingestion@1.33.0':
-    resolution: {integrity: sha512-KNJI60N+twnDLiIY+oGO2Q+syS+yBNOmNdhsB5vCzzrhi3CYs+bufnJ67/BUUfnt+T5+3VlnkvUgDkGBmmZXmA==}
+  '@algolia/ingestion@1.34.1':
+    resolution: {integrity: sha512-QLxiBskQxFGzPqKZvBNEvNN95kgDCbBd2X29ZGfh6Sr2QOSU34US6Z9x2duiF4o9FwsB0i6eQ2c9vHfuH0lAQg==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/monitoring@1.33.0':
-    resolution: {integrity: sha512-47R0kMDTSj8Q7rCUgIRv5Xc518tCBBS0KIZ5oRKg+hspQaJmEO+fxwGLrIIwp5JiaK6y+5sbS7bhtaajelJhpg==}
+  '@algolia/monitoring@1.34.1':
+    resolution: {integrity: sha512-NteCvWcWXXdnPGyZH8rXHslcf2pM1WGDNMGNZFXLFtOt1Gf1Tjy2t0NZLp+Mxap3JMV4mbYmactbXrvpQf/lLA==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/recommend@5.33.0':
-    resolution: {integrity: sha512-HpeLoVQuv5kW9xL0RSq1exa8ueNwyx+9B02dzFonlQzKTaSedM0jiWo6m3nWpi1hChAKqjzkL40FkxrgyrWTSg==}
+  '@algolia/recommend@5.34.1':
+    resolution: {integrity: sha512-UdgDSrunLIBAAAxQlYLXYLnYFN4wkzkrAYx+wMLEk/pzASWyza3BkecbUFVqoYOBIgwo7Mt4iymzVtFkzL2uCQ==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/requester-browser-xhr@5.33.0':
-    resolution: {integrity: sha512-uOqDkvY7s9c9rkaZ4+n69LkTmZ5ax3el+8u6ipvODfj1P3HzrGvMUVFy/nGSXxw+XITKcIRphPQcyqn15b02dA==}
+  '@algolia/requester-browser-xhr@5.34.1':
+    resolution: {integrity: sha512-567LfFTc9VOiPtuySQohoqaWMeohYWbXK71aMSin+SLMgeKX7hz5LrVmkmMQj9udwWK6/mtHEYZGPYHSuXpLQg==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/requester-fetch@5.33.0':
-    resolution: {integrity: sha512-NzTEGjwjPhUXPsrjj9nXM43+jtBVeL6UgGNBTQKsxjpqJ3EEAQ2Kq5g7DRK6mVDTQiTBWvBLKChJpn4qxwtLsg==}
+  '@algolia/requester-fetch@5.34.1':
+    resolution: {integrity: sha512-YRbygPgGBEik5U593JvyjgxFjcsyZMR25eIQxNHvSQumdAzt5A4E4Idw3yXnwhrmMdjML54ZXT7EAjnTjWy8Xw==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/requester-node-http@5.33.0':
-    resolution: {integrity: sha512-FhEE19ScAYuXL3VLj2I3KhL7683gZwZoa+BQZUEnA05vSbVBhCAqUBQgiVu7j2RF3VceqLX3+GEeY0bHs4y7eA==}
+  '@algolia/requester-node-http@5.34.1':
+    resolution: {integrity: sha512-o0mqRYbS82Rt4DE02Od7RL6pNtV7oSxScPuIw8LW4aqO2V5eCF05Pry/SnUgcI/Vb2QCYC66hytBCqzyC/toZA==}
     engines: {node: '>= 14.0.0'}
 
   '@alloc/quick-lru@5.2.0':
@@ -365,8 +365,8 @@ packages:
     engines: {node: '>=6.0.0'}
     hasBin: true
 
-  '@babel/runtime@7.27.6':
-    resolution: {integrity: sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==}
+  '@babel/runtime@7.28.2':
+    resolution: {integrity: sha512-KHp2IflsnGywDjBWDkR9iEqiWSpc8GIi0lgTT3mOElT0PP1tG26P4tmFI2YvAdzgq9RGyoHZQEIEdZy6Ec5xCA==}
     engines: {node: '>=6.9.0'}
 
   '@babel/template@7.27.2':
@@ -377,8 +377,8 @@ packages:
     resolution: {integrity: sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==}
     engines: {node: '>=6.9.0'}
 
-  '@babel/types@7.28.1':
-    resolution: {integrity: sha512-x0LvFTekgSX+83TI28Y9wYPUfzrnl2aT5+5QLnO6v7mSJYtEEevuDRN0F0uSHRk1G1IWZC43o00Y0xDDrpBGPQ==}
+  '@babel/types@7.28.2':
+    resolution: {integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==}
     engines: {node: '>=6.9.0'}
 
   '@base-ui-components/react@1.0.0-alpha.7':
@@ -457,8 +457,8 @@ packages:
     cpu: [x64]
     os: [win32]
 
-  '@cloudflare/workers-types@4.20250715.0':
-    resolution: {integrity: sha512-uMp+ClvvhNlk3ojIgWuIB5Zteq4YVmZcyX16hpJ8eCeCX3izagfEZwXe/vETlv4cc5vtM3xAOMdV//0BD0E98g==}
+  '@cloudflare/workers-types@4.20250724.0':
+    resolution: {integrity: sha512-TRuz+kMArBpW3lR7xoPR7Ek+/ymvukE5JC7RITlaRyHbs6vWPfwpH9TWQ1dfztYFmSQl5ZiAbLcK8UDRjgiW7g==}
 
   '@corex/deepmerge@4.0.43':
     resolution: {integrity: sha512-N8uEMrMPL0cu/bdboEWpQYb/0i2K5Qn8eCsxzOmxSggJbbQte7ljMRoXm917AbntqTGOzdTu+vP3KOOzoC70HQ==}
@@ -563,14 +563,14 @@ packages:
       next:
         optional: true
 
-  '@emnapi/core@1.4.4':
-    resolution: {integrity: sha512-A9CnAbC6ARNMKcIcrQwq6HeHCjpcBZ5wSx4U01WXCqEKlrzB9F9315WDNHkrs2xbx7YjjSxbUYxuN6EQzpcY2g==}
+  '@emnapi/core@1.4.5':
+    resolution: {integrity: sha512-XsLw1dEOpkSX/WucdqUhPWP7hDxSvZiY+fsUC14h+FtQ2Ifni4znbBt8punRX+Uj2JG/uDb8nEHVKvrVlvdZ5Q==}
 
-  '@emnapi/runtime@1.4.4':
-    resolution: {integrity: sha512-hHyapA4A3gPaDCNfiqyZUStTMqIkKRshqPIuDOXv1hcBnD4U3l8cP0T1HMCfGRxQ6V64TGCcoswChANyOAwbQg==}
+  '@emnapi/runtime@1.4.5':
+    resolution: {integrity: sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg==}
 
-  '@emnapi/wasi-threads@1.0.3':
-    resolution: {integrity: sha512-8K5IFFsQqF9wQNJptGbS6FNKgUTsSRYnTqNCG1vPP8jFdjSv18n2mQfJpkt2Oibo9iBEzcDnDxNwKTzC7svlJw==}
+  '@emnapi/wasi-threads@1.0.4':
+    resolution: {integrity: sha512-PJR+bOmMOPH8AtcTGAyYNiuJ3/Fcoj2XN/gBEWzDIKh254XO+mM9XoXHk5GNEhodxeMznbg7BlRojVbKN+gC6g==}
 
   '@emotion/babel-plugin@11.13.5':
     resolution: {integrity: sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==}
@@ -656,8 +656,8 @@ packages:
     cpu: [ppc64]
     os: [aix]
 
-  '@esbuild/aix-ppc64@0.25.6':
-    resolution: {integrity: sha512-ShbM/3XxwuxjFiuVBHA+d3j5dyac0aEVVq1oluIDf71hUw0aRF59dV/efUsIwFnR6m8JNM2FjZOzmaZ8yG61kw==}
+  '@esbuild/aix-ppc64@0.25.8':
+    resolution: {integrity: sha512-urAvrUedIqEiFR3FYSLTWQgLu5tb+m0qZw0NBEasUeo6wuqatkMDaRT+1uABiGXEu5vqgPd7FGE1BhsAIy9QVA==}
     engines: {node: '>=18'}
     cpu: [ppc64]
     os: [aix]
@@ -674,8 +674,8 @@ packages:
     cpu: [arm64]
     os: [android]
 
-  '@esbuild/android-arm64@0.25.6':
-    resolution: {integrity: sha512-hd5zdUarsK6strW+3Wxi5qWws+rJhCCbMiC9QZyzoxfk5uHRIE8T287giQxzVpEvCwuJ9Qjg6bEjcRJcgfLqoA==}
+  '@esbuild/android-arm64@0.25.8':
+    resolution: {integrity: sha512-OD3p7LYzWpLhZEyATcTSJ67qB5D+20vbtr6vHlHWSQYhKtzUYrETuWThmzFpZtFsBIxRvhO07+UgVA9m0i/O1w==}
     engines: {node: '>=18'}
     cpu: [arm64]
     os: [android]
@@ -692,8 +692,8 @@ packages:
     cpu: [arm]
     os: [android]
 
-  '@esbuild/android-arm@0.25.6':
-    resolution: {integrity: sha512-S8ToEOVfg++AU/bHwdksHNnyLyVM+eMVAOf6yRKFitnwnbwwPNqKr3srzFRe7nzV69RQKb5DgchIX5pt3L53xg==}
+  '@esbuild/android-arm@0.25.8':
+    resolution: {integrity: sha512-RONsAvGCz5oWyePVnLdZY/HHwA++nxYWIX1atInlaW6SEkwq6XkP3+cb825EUcRs5Vss/lGh/2YxAb5xqc07Uw==}
     engines: {node: '>=18'}
     cpu: [arm]
     os: [android]
@@ -710,8 +710,8 @@ packages:
     cpu: [x64]
     os: [android]
 
-  '@esbuild/android-x64@0.25.6':
-    resolution: {integrity: sha512-0Z7KpHSr3VBIO9A/1wcT3NTy7EB4oNC4upJ5ye3R7taCc2GUdeynSLArnon5G8scPwaU866d3H4BCrE5xLW25A==}
+  '@esbuild/android-x64@0.25.8':
+    resolution: {integrity: sha512-yJAVPklM5+4+9dTeKwHOaA+LQkmrKFX96BM0A/2zQrbS6ENCmxc4OVoBs5dPkCCak2roAD+jKCdnmOqKszPkjA==}
     engines: {node: '>=18'}
     cpu: [x64]
     os: [android]
@@ -728,8 +728,8 @@ packages:
     cpu: [arm64]
     os: [darwin]
 
-  '@esbuild/darwin-arm64@0.25.6':
-    resolution: {integrity: sha512-FFCssz3XBavjxcFxKsGy2DYK5VSvJqa6y5HXljKzhRZ87LvEi13brPrf/wdyl/BbpbMKJNOr1Sd0jtW4Ge1pAA==}
+  '@esbuild/darwin-arm64@0.25.8':
+    resolution: {integrity: sha512-Jw0mxgIaYX6R8ODrdkLLPwBqHTtYHJSmzzd+QeytSugzQ0Vg4c5rDky5VgkoowbZQahCbsv1rT1KW72MPIkevw==}
     engines: {node: '>=18'}
     cpu: [arm64]
     os: [darwin]
@@ -746,8 +746,8 @@ packages:
     cpu: [x64]
     os: [darwin]
 
-  '@esbuild/darwin-x64@0.25.6':
-    resolution: {integrity: sha512-GfXs5kry/TkGM2vKqK2oyiLFygJRqKVhawu3+DOCk7OxLy/6jYkWXhlHwOoTb0WqGnWGAS7sooxbZowy+pK9Yg==}
+  '@esbuild/darwin-x64@0.25.8':
+    resolution: {integrity: sha512-Vh2gLxxHnuoQ+GjPNvDSDRpoBCUzY4Pu0kBqMBDlK4fuWbKgGtmDIeEC081xi26PPjn+1tct+Bh8FjyLlw1Zlg==}
     engines: {node: '>=18'}
     cpu: [x64]
     os: [darwin]
@@ -764,8 +764,8 @@ packages:
     cpu: [arm64]
     os: [freebsd]
 
-  '@esbuild/freebsd-arm64@0.25.6':
-    resolution: {integrity: sha512-aoLF2c3OvDn2XDTRvn8hN6DRzVVpDlj2B/F66clWd/FHLiHaG3aVZjxQX2DYphA5y/evbdGvC6Us13tvyt4pWg==}
+  '@esbuild/freebsd-arm64@0.25.8':
+    resolution: {integrity: sha512-YPJ7hDQ9DnNe5vxOm6jaie9QsTwcKedPvizTVlqWG9GBSq+BuyWEDazlGaDTC5NGU4QJd666V0yqCBL2oWKPfA==}
     engines: {node: '>=18'}
     cpu: [arm64]
     os: [freebsd]
@@ -782,8 +782,8 @@ packages:
     cpu: [x64]
     os: [freebsd]
 
-  '@esbuild/freebsd-x64@0.25.6':
-    resolution: {integrity: sha512-2SkqTjTSo2dYi/jzFbU9Plt1vk0+nNg8YC8rOXXea+iA3hfNJWebKYPs3xnOUf9+ZWhKAaxnQNUf2X9LOpeiMQ==}
+  '@esbuild/freebsd-x64@0.25.8':
+    resolution: {integrity: sha512-MmaEXxQRdXNFsRN/KcIimLnSJrk2r5H8v+WVafRWz5xdSVmWLoITZQXcgehI2ZE6gioE6HirAEToM/RvFBeuhw==}
     engines: {node: '>=18'}
     cpu: [x64]
     os: [freebsd]
@@ -800,8 +800,8 @@ packages:
     cpu: [arm64]
     os: [linux]
 
-  '@esbuild/linux-arm64@0.25.6':
-    resolution: {integrity: sha512-b967hU0gqKd9Drsh/UuAm21Khpoh6mPBSgz8mKRq4P5mVK8bpA+hQzmm/ZwGVULSNBzKdZPQBRT3+WuVavcWsQ==}
+  '@esbuild/linux-arm64@0.25.8':
+    resolution: {integrity: sha512-WIgg00ARWv/uYLU7lsuDK00d/hHSfES5BzdWAdAig1ioV5kaFNrtK8EqGcUBJhYqotlUByUKz5Qo6u8tt7iD/w==}
     engines: {node: '>=18'}
     cpu: [arm64]
     os: [linux]
@@ -818,8 +818,8 @@ packages:
     cpu: [arm]
     os: [linux]
 
-  '@esbuild/linux-arm@0.25.6':
-    resolution: {integrity: sha512-SZHQlzvqv4Du5PrKE2faN0qlbsaW/3QQfUUc6yO2EjFcA83xnwm91UbEEVx4ApZ9Z5oG8Bxz4qPE+HFwtVcfyw==}
+  '@esbuild/linux-arm@0.25.8':
+    resolution: {integrity: sha512-FuzEP9BixzZohl1kLf76KEVOsxtIBFwCaLupVuk4eFVnOZfU+Wsn+x5Ryam7nILV2pkq2TqQM9EZPsOBuMC+kg==}
     engines: {node: '>=18'}
     cpu: [arm]
     os: [linux]
@@ -836,8 +836,8 @@ packages:
     cpu: [ia32]
     os: [linux]
 
-  '@esbuild/linux-ia32@0.25.6':
-    resolution: {integrity: sha512-aHWdQ2AAltRkLPOsKdi3xv0mZ8fUGPdlKEjIEhxCPm5yKEThcUjHpWB1idN74lfXGnZ5SULQSgtr5Qos5B0bPw==}
+  '@esbuild/linux-ia32@0.25.8':
+    resolution: {integrity: sha512-A1D9YzRX1i+1AJZuFFUMP1E9fMaYY+GnSQil9Tlw05utlE86EKTUA7RjwHDkEitmLYiFsRd9HwKBPEftNdBfjg==}
     engines: {node: '>=18'}
     cpu: [ia32]
     os: [linux]
@@ -854,8 +854,8 @@ packages:
     cpu: [loong64]
     os: [linux]
 
-  '@esbuild/linux-loong64@0.25.6':
-    resolution: {integrity: sha512-VgKCsHdXRSQ7E1+QXGdRPlQ/e08bN6WMQb27/TMfV+vPjjTImuT9PmLXupRlC90S1JeNNW5lzkAEO/McKeJ2yg==}
+  '@esbuild/linux-loong64@0.25.8':
+    resolution: {integrity: sha512-O7k1J/dwHkY1RMVvglFHl1HzutGEFFZ3kNiDMSOyUrB7WcoHGf96Sh+64nTRT26l3GMbCW01Ekh/ThKM5iI7hQ==}
     engines: {node: '>=18'}
     cpu: [loong64]
     os: [linux]
@@ -872,8 +872,8 @@ packages:
     cpu: [mips64el]
     os: [linux]
 
-  '@esbuild/linux-mips64el@0.25.6':
-    resolution: {integrity: sha512-WViNlpivRKT9/py3kCmkHnn44GkGXVdXfdc4drNmRl15zVQ2+D2uFwdlGh6IuK5AAnGTo2qPB1Djppj+t78rzw==}
+  '@esbuild/linux-mips64el@0.25.8':
+    resolution: {integrity: sha512-uv+dqfRazte3BzfMp8PAQXmdGHQt2oC/y2ovwpTteqrMx2lwaksiFZ/bdkXJC19ttTvNXBuWH53zy/aTj1FgGw==}
     engines: {node: '>=18'}
     cpu: [mips64el]
     os: [linux]
@@ -890,8 +890,8 @@ packages:
     cpu: [ppc64]
     os: [linux]
 
-  '@esbuild/linux-ppc64@0.25.6':
-    resolution: {integrity: sha512-wyYKZ9NTdmAMb5730I38lBqVu6cKl4ZfYXIs31Baf8aoOtB4xSGi3THmDYt4BTFHk7/EcVixkOV2uZfwU3Q2Jw==}
+  '@esbuild/linux-ppc64@0.25.8':
+    resolution: {integrity: sha512-GyG0KcMi1GBavP5JgAkkstMGyMholMDybAf8wF5A70CALlDM2p/f7YFE7H92eDeH/VBtFJA5MT4nRPDGg4JuzQ==}
     engines: {node: '>=18'}
     cpu: [ppc64]
     os: [linux]
@@ -908,8 +908,8 @@ packages:
     cpu: [riscv64]
     os: [linux]
 
-  '@esbuild/linux-riscv64@0.25.6':
-    resolution: {integrity: sha512-KZh7bAGGcrinEj4qzilJ4hqTY3Dg2U82c8bv+e1xqNqZCrCyc+TL9AUEn5WGKDzm3CfC5RODE/qc96OcbIe33w==}
+  '@esbuild/linux-riscv64@0.25.8':
+    resolution: {integrity: sha512-rAqDYFv3yzMrq7GIcen3XP7TUEG/4LK86LUPMIz6RT8A6pRIDn0sDcvjudVZBiiTcZCY9y2SgYX2lgK3AF+1eg==}
     engines: {node: '>=18'}
     cpu: [riscv64]
     os: [linux]
@@ -926,8 +926,8 @@ packages:
     cpu: [s390x]
     os: [linux]
 
-  '@esbuild/linux-s390x@0.25.6':
-    resolution: {integrity: sha512-9N1LsTwAuE9oj6lHMyyAM+ucxGiVnEqUdp4v7IaMmrwb06ZTEVCIs3oPPplVsnjPfyjmxwHxHMF8b6vzUVAUGw==}
+  '@esbuild/linux-s390x@0.25.8':
+    resolution: {integrity: sha512-Xutvh6VjlbcHpsIIbwY8GVRbwoviWT19tFhgdA7DlenLGC/mbc3lBoVb7jxj9Z+eyGqvcnSyIltYUrkKzWqSvg==}
     engines: {node: '>=18'}
     cpu: [s390x]
     os: [linux]
@@ -944,14 +944,14 @@ packages:
     cpu: [x64]
     os: [linux]
 
-  '@esbuild/linux-x64@0.25.6':
-    resolution: {integrity: sha512-A6bJB41b4lKFWRKNrWoP2LHsjVzNiaurf7wyj/XtFNTsnPuxwEBWHLty+ZE0dWBKuSK1fvKgrKaNjBS7qbFKig==}
+  '@esbuild/linux-x64@0.25.8':
+    resolution: {integrity: sha512-ASFQhgY4ElXh3nDcOMTkQero4b1lgubskNlhIfJrsH5OKZXDpUAKBlNS0Kx81jwOBp+HCeZqmoJuihTv57/jvQ==}
     engines: {node: '>=18'}
     cpu: [x64]
     os: [linux]
 
-  '@esbuild/netbsd-arm64@0.25.6':
-    resolution: {integrity: sha512-IjA+DcwoVpjEvyxZddDqBY+uJ2Snc6duLpjmkXm/v4xuS3H+3FkLZlDm9ZsAbF9rsfP3zeA0/ArNDORZgrxR/Q==}
+  '@esbuild/netbsd-arm64@0.25.8':
+    resolution: {integrity: sha512-d1KfruIeohqAi6SA+gENMuObDbEjn22olAR7egqnkCD9DGBG0wsEARotkLgXDu6c4ncgWTZJtN5vcgxzWRMzcw==}
     engines: {node: '>=18'}
     cpu: [arm64]
     os: [netbsd]
@@ -968,14 +968,14 @@ packages:
     cpu: [x64]
     os: [netbsd]
 
-  '@esbuild/netbsd-x64@0.25.6':
-    resolution: {integrity: sha512-dUXuZr5WenIDlMHdMkvDc1FAu4xdWixTCRgP7RQLBOkkGgwuuzaGSYcOpW4jFxzpzL1ejb8yF620UxAqnBrR9g==}
+  '@esbuild/netbsd-x64@0.25.8':
+    resolution: {integrity: sha512-nVDCkrvx2ua+XQNyfrujIG38+YGyuy2Ru9kKVNyh5jAys6n+l44tTtToqHjino2My8VAY6Lw9H7RI73XFi66Cg==}
     engines: {node: '>=18'}
     cpu: [x64]
     os: [netbsd]
 
-  '@esbuild/openbsd-arm64@0.25.6':
-    resolution: {integrity: sha512-l8ZCvXP0tbTJ3iaqdNf3pjaOSd5ex/e6/omLIQCVBLmHTlfXW3zAxQ4fnDmPLOB1x9xrcSi/xtCWFwCZRIaEwg==}
+  '@esbuild/openbsd-arm64@0.25.8':
+    resolution: {integrity: sha512-j8HgrDuSJFAujkivSMSfPQSAa5Fxbvk4rgNAS5i3K+r8s1X0p1uOO2Hl2xNsGFppOeHOLAVgYwDVlmxhq5h+SQ==}
     engines: {node: '>=18'}
     cpu: [arm64]
     os: [openbsd]
@@ -992,14 +992,14 @@ packages:
     cpu: [x64]
     os: [openbsd]
 
-  '@esbuild/openbsd-x64@0.25.6':
-    resolution: {integrity: sha512-hKrmDa0aOFOr71KQ/19JC7az1P0GWtCN1t2ahYAf4O007DHZt/dW8ym5+CUdJhQ/qkZmI1HAF8KkJbEFtCL7gw==}
+  '@esbuild/openbsd-x64@0.25.8':
+    resolution: {integrity: sha512-1h8MUAwa0VhNCDp6Af0HToI2TJFAn1uqT9Al6DJVzdIBAd21m/G0Yfc77KDM3uF3T/YaOgQq3qTJHPbTOInaIQ==}
     engines: {node: '>=18'}
     cpu: [x64]
     os: [openbsd]
 
-  '@esbuild/openharmony-arm64@0.25.6':
-    resolution: {integrity: sha512-+SqBcAWoB1fYKmpWoQP4pGtx+pUUC//RNYhFdbcSA16617cchuryuhOCRpPsjCblKukAckWsV+aQ3UKT/RMPcA==}
+  '@esbuild/openharmony-arm64@0.25.8':
+    resolution: {integrity: sha512-r2nVa5SIK9tSWd0kJd9HCffnDHKchTGikb//9c7HX+r+wHYCpQrSgxhlY6KWV1nFo1l4KFbsMlHk+L6fekLsUg==}
     engines: {node: '>=18'}
     cpu: [arm64]
     os: [openharmony]
@@ -1016,8 +1016,8 @@ packages:
     cpu: [x64]
     os: [sunos]
 
-  '@esbuild/sunos-x64@0.25.6':
-    resolution: {integrity: sha512-dyCGxv1/Br7MiSC42qinGL8KkG4kX0pEsdb0+TKhmJZgCUDBGmyo1/ArCjNGiOLiIAgdbWgmWgib4HoCi5t7kA==}
+  '@esbuild/sunos-x64@0.25.8':
+    resolution: {integrity: sha512-zUlaP2S12YhQ2UzUfcCuMDHQFJyKABkAjvO5YSndMiIkMimPmxA+BYSBikWgsRpvyxuRnow4nS5NPnf9fpv41w==}
     engines: {node: '>=18'}
     cpu: [x64]
     os: [sunos]
@@ -1034,8 +1034,8 @@ packages:
     cpu: [arm64]
     os: [win32]
 
-  '@esbuild/win32-arm64@0.25.6':
-    resolution: {integrity: sha512-42QOgcZeZOvXfsCBJF5Afw73t4veOId//XD3i+/9gSkhSV6Gk3VPlWncctI+JcOyERv85FUo7RxuxGy+z8A43Q==}
+  '@esbuild/win32-arm64@0.25.8':
+    resolution: {integrity: sha512-YEGFFWESlPva8hGL+zvj2z/SaK+pH0SwOM0Nc/d+rVnW7GSTFlLBGzZkuSU9kFIGIo8q9X3ucpZhu8PDN5A2sQ==}
     engines: {node: '>=18'}
     cpu: [arm64]
     os: [win32]
@@ -1052,8 +1052,8 @@ packages:
     cpu: [ia32]
     os: [win32]
 
-  '@esbuild/win32-ia32@0.25.6':
-    resolution: {integrity: sha512-4AWhgXmDuYN7rJI6ORB+uU9DHLq/erBbuMoAuB4VWJTu5KtCgcKYPynF0YI1VkBNuEfjNlLrFr9KZPJzrtLkrQ==}
+  '@esbuild/win32-ia32@0.25.8':
+    resolution: {integrity: sha512-hiGgGC6KZ5LZz58OL/+qVVoZiuZlUYlYHNAmczOm7bs2oE1XriPFi5ZHHrS8ACpV5EjySrnoCKmcbQMN+ojnHg==}
     engines: {node: '>=18'}
     cpu: [ia32]
     os: [win32]
@@ -1070,8 +1070,8 @@ packages:
     cpu: [x64]
     os: [win32]
 
-  '@esbuild/win32-x64@0.25.6':
-    resolution: {integrity: sha512-NgJPHHbEpLQgDH2MjQu90pzW/5vvXIZ7KOnPyNBm92A6WgZ/7b6fJyUBjoumLqeOQQGqY2QjQxRo97ah4Sj0cA==}
+  '@esbuild/win32-x64@0.25.8':
+    resolution: {integrity: sha512-cn3Yr7+OaaZq1c+2pe+8yxC8E144SReCQjN6/2ynubzYjvyqZjTXfQJpAcQpsdJq3My7XADANiYGHoFC69pLQw==}
     engines: {node: '>=18'}
     cpu: [x64]
     os: [win32]
@@ -1264,8 +1264,8 @@ packages:
   '@hasparus/eslint-plugin@1.0.0':
     resolution: {integrity: sha512-Pef5tKZVNdMxkbO5RJE9KFzdN/vgMOAcZLd9gfmXZa1Th+zKMh8N+JP0p9+oVTeSH1n7MaFmuW23tBJTjzqL0w==}
 
-  '@headlessui/react@2.2.4':
-    resolution: {integrity: sha512-lz+OGcAH1dK93rgSMzXmm1qKOJkBUqZf1L4M8TWLNplftQD3IkoEDdUFNfAn4ylsN6WOTVtWaLmvmaHOUk1dTA==}
+  '@headlessui/react@2.2.6':
+    resolution: {integrity: sha512-gN5CT8Kf4IWwL04GQOjZ/ZnHMFoeFHZmVSFoDKeTmbtmy9oFqQqJMthdBiO3Pl5LXk2w03fGFLpQV6EW84vjjQ==}
     engines: {node: '>=10'}
     peerDependencies:
       react: ^18 || ^19 || ^19.0.0-rc
@@ -1405,8 +1405,8 @@ packages:
   '@internationalized/message@3.1.8':
     resolution: {integrity: sha512-Rwk3j/TlYZhn3HQ6PyXUV0XP9Uv42jqZGNegt0BXlxjE6G3+LwHjbQZAGHhCnCPdaA6Tvd3ma/7QzLlLkJxAWA==}
 
-  '@internationalized/number@3.6.3':
-    resolution: {integrity: sha512-p+Zh1sb6EfrfVaS86jlHGQ9HA66fJhV9x5LiE5vCbZtXEHAuhcmUZUdZ4WrFpUBfNalr2OkAJI5AcKEQF+Lebw==}
+  '@internationalized/number@3.6.4':
+    resolution: {integrity: sha512-P+/h+RDaiX8EGt3shB9AYM1+QgkvHmJ5rKi4/59k4sg9g58k9rqsRW0WxRO7jCoHyvVbFRRFKmVTdFYdehrxHg==}
 
   '@internationalized/string@3.2.7':
     resolution: {integrity: sha512-D4OHBjrinH+PFZPvfCXvG28n2LSykWcJ7GIioQL+ok0LON15SdfoUssoHzzOUmVZLbRoREsQXVzA6r8JKsbP6A==}
@@ -1443,95 +1443,101 @@ packages:
       '@types/react': '>=16'
       react: '>=16'
 
-  '@mermaid-js/parser@0.6.1':
-    resolution: {integrity: sha512-lCQNpV8R4lgsGcjX5667UiuDLk2micCtjtxR1YKbBXvN5w2v+FeLYoHrTSSrjwXdMcDYvE4ZBPvKT31dfeSmmA==}
+  '@mermaid-js/parser@0.6.2':
+    resolution: {integrity: sha512-+PO02uGF6L6Cs0Bw8RpGhikVvMWEysfAyl27qTlroUB8jSWr1lL0Sf6zi78ZxlSnmgSY2AMMKVgghnN9jTtwkQ==}
 
-  '@napi-rs/simple-git-android-arm-eabi@0.1.19':
-    resolution: {integrity: sha512-XryEH/hadZ4Duk/HS/HC/cA1j0RHmqUGey3MsCf65ZS0VrWMqChXM/xlTPWuY5jfCc/rPubHaqI7DZlbexnX/g==}
+  '@napi-rs/simple-git-android-arm-eabi@0.1.21':
+    resolution: {integrity: sha512-NSZTD3c+RzSR3cg0acPFqUfV64+Vqye4Veda5L9fbbnsYRzziYHbL3alMI/6p5Ur44ezw5RqKRZ4Tbp1T08veA==}
     engines: {node: '>= 10'}
     cpu: [arm]
     os: [android]
 
-  '@napi-rs/simple-git-android-arm64@0.1.19':
-    resolution: {integrity: sha512-ZQ0cPvY6nV9p7zrR9ZPo7hQBkDAcY/CHj3BjYNhykeUCiSNCrhvwX+WEeg5on8M1j4d5jcI/cwVG2FslfiByUg==}
+  '@napi-rs/simple-git-android-arm64@0.1.21':
+    resolution: {integrity: sha512-FR8J/pmy4nFyzWon0RuhReucociF8kiCTBRBQV+TN+7tmI2lsHp+8sDNh1HXf+UP0iOC8azMTKwcHiyhv7oPPw==}
     engines: {node: '>= 10'}
     cpu: [arm64]
     os: [android]
 
-  '@napi-rs/simple-git-darwin-arm64@0.1.19':
-    resolution: {integrity: sha512-viZB5TYgjA1vH+QluhxZo0WKro3xBA+1xSzYx8mcxUMO5gnAoUMwXn0ZO/6Zy6pai+aGae+cj6XihGnrBRu3Pg==}
+  '@napi-rs/simple-git-darwin-arm64@0.1.21':
+    resolution: {integrity: sha512-FoUck6Sv1VJZyEZ7CcAKPDystkwnv4osJs3XCXCtx6AdT/8oDyfjMHxe3CSBMcNVjawsd+tG7yFvhgKJCdjBvA==}
     engines: {node: '>= 10'}
     cpu: [arm64]
     os: [darwin]
 
-  '@napi-rs/simple-git-darwin-x64@0.1.19':
-    resolution: {integrity: sha512-6dNkzSNUV5X9rsVYQbpZLyJu4Gtkl2vNJ3abBXHX/Etk0ILG5ZasO3ncznIANZQpqcbn/QPHr49J2QYAXGoKJA==}
+  '@napi-rs/simple-git-darwin-x64@0.1.21':
+    resolution: {integrity: sha512-PlqZgFhcwJmdj4j/LSLxddrAZU5KbDtq54UMp35++IFs+XkK0SnJlfB9oQTE+m6ieQPYQVz6S9cLeyw5X12L+w==}
     engines: {node: '>= 10'}
     cpu: [x64]
     os: [darwin]
 
-  '@napi-rs/simple-git-freebsd-x64@0.1.19':
-    resolution: {integrity: sha512-sB9krVIchzd20FjI2ZZ8FDsTSsXLBdnwJ6CpeVyrhXHnoszfcqxt49ocZHujAS9lMpXq7i2Nv1EXJmCy4KdhwA==}
+  '@napi-rs/simple-git-freebsd-x64@0.1.21':
+    resolution: {integrity: sha512-n3S74zw0WIuCdsXV6hdU3vpakYNZyeTU3VlQdV/m5f3TxxqeEGcxJi18s2QfQOelE/N0Ze+u23USd7b06NQlCg==}
     engines: {node: '>= 10'}
     cpu: [x64]
     os: [freebsd]
 
-  '@napi-rs/simple-git-linux-arm-gnueabihf@0.1.19':
-    resolution: {integrity: sha512-6HPn09lr9N1n5/XKfP8Np53g4fEXVxOFqNkS6rTH3Rm1lZHdazTRH62RggXLTguZwjcE+MvOLvoTIoR5kAS8+g==}
+  '@napi-rs/simple-git-linux-arm-gnueabihf@0.1.21':
+    resolution: {integrity: sha512-gsLnZD8OMttCjB2OYofDdsI9SpidMfJP6H8fjPXcon2q90JT/XUS7xIYXDEABiwRvz1BZ149HqmnjO8yPgNMIQ==}
     engines: {node: '>= 10'}
     cpu: [arm]
     os: [linux]
 
-  '@napi-rs/simple-git-linux-arm64-gnu@0.1.19':
-    resolution: {integrity: sha512-G0gISckt4cVDp3oh5Z6PV3GHJrJO6Z8bIS+9xA7vTtKdqB1i5y0n3cSFLlzQciLzhr+CajFD27doW4lEyErQ/Q==}
+  '@napi-rs/simple-git-linux-arm64-gnu@0.1.21':
+    resolution: {integrity: sha512-05hSW4K5RexXo6YICmKzBThkY4WXJ25MAkSON720kIVv8ZPLi0ZouijJuM7GWmEZPcgCm6/mvrGrEDrS6i0/Mg==}
     engines: {node: '>= 10'}
     cpu: [arm64]
     os: [linux]
 
-  '@napi-rs/simple-git-linux-arm64-musl@0.1.19':
-    resolution: {integrity: sha512-OwTRF+H4IZYxmDFRi1IrLMfqbdIpvHeYbJl2X94NVsLVOY+3NUHvEzL3fYaVx5urBaMnIK0DD3wZLbcueWvxbA==}
+  '@napi-rs/simple-git-linux-arm64-musl@0.1.21':
+    resolution: {integrity: sha512-z2dyQmwtbpgAuUmWeJBhz00/6C3//SV0YSYE9Smfaf2DiSEEAvWyoni67pQU5/Q9FFaiyvzrCoz966EVNmz6Bg==}
     engines: {node: '>= 10'}
     cpu: [arm64]
     os: [linux]
 
-  '@napi-rs/simple-git-linux-powerpc64le-gnu@0.1.19':
-    resolution: {integrity: sha512-p7zuNNVyzpRvkCt2RIGv9FX/WPcPbZ6/FRUgUTZkA2WU33mrbvNqSi4AOqCCl6mBvEd+EOw5NU4lS9ORRJvAEg==}
+  '@napi-rs/simple-git-linux-ppc64-gnu@0.1.21':
+    resolution: {integrity: sha512-mEkVx9oQxKTdzTdjDTCc9XAaH9E9eI2F+KsY0R6DTYafgb/rwq0FJO+eCa8Llzz6ndgbLrzq4q+wHqR8z7dF3w==}
     engines: {node: '>= 10'}
-    cpu: [powerpc64le]
+    cpu: [ppc64]
     os: [linux]
 
-  '@napi-rs/simple-git-linux-s390x-gnu@0.1.19':
-    resolution: {integrity: sha512-6N2vwJUPLiak8GLrS0a3is0gSb0UwI2CHOOqtvQxPmv+JVI8kn3vKiUscsktdDb0wGEPeZ8PvZs0y8UWix7K4g==}
+  '@napi-rs/simple-git-linux-s390x-gnu@0.1.21':
+    resolution: {integrity: sha512-FulRem5vdsvH0VER2Q9cynv01SugMk/jQwbytwyPziF6JZ81D6I8otP9NkS3dqv//6HCokyojH+oOnrsF82/VQ==}
     engines: {node: '>= 10'}
     cpu: [s390x]
     os: [linux]
 
-  '@napi-rs/simple-git-linux-x64-gnu@0.1.19':
-    resolution: {integrity: sha512-61YfeO1J13WK7MalLgP3QlV6of2rWnVw1aqxWkAgy/lGxoOFSJ4Wid6ANVCEZk4tJpPX/XNeneqkUz5xpeb2Cw==}
+  '@napi-rs/simple-git-linux-x64-gnu@0.1.21':
+    resolution: {integrity: sha512-SY6HuLVH+IFlkz8aTf4hwtaXalqBIPyE7FvEMCQIVPf85slOHMs9RThmrL7fvuSl0EDuUKOXANUP2OtdgT+zNg==}
     engines: {node: '>= 10'}
     cpu: [x64]
     os: [linux]
 
-  '@napi-rs/simple-git-linux-x64-musl@0.1.19':
-    resolution: {integrity: sha512-cCTWNpMJnN3PrUBItWcs3dQKCydsIasbrS3laMzq8k7OzF93Zrp2LWDTPlLCO9brbBVpBzy2Qk5Xg9uAfe/Ukw==}
+  '@napi-rs/simple-git-linux-x64-musl@0.1.21':
+    resolution: {integrity: sha512-bG6zRqlXmVysjUUXNPsApfXP6c+rSjhinmGlLh8XW6Tfj0PqYmbSTL/3XcowbP6yJGTJbbkvxmhQDdGYO99AnQ==}
     engines: {node: '>= 10'}
     cpu: [x64]
     os: [linux]
 
-  '@napi-rs/simple-git-win32-arm64-msvc@0.1.19':
-    resolution: {integrity: sha512-sWavb1BjeLKKBA+PbTsRSSzVNfb7V/dOpaJvkgR5d2kWFn/AHmCZHSSj/3nyZdYf0BdDC+DIvqk3daAEZ6QMVw==}
+  '@napi-rs/simple-git-win32-arm64-msvc@0.1.21':
+    resolution: {integrity: sha512-bTX+Xb5Fl3AYK2c8E/Pm04i29n9gP+FGNzaT7AQp0q/5Bgq1z/4jEadSmg5hXvoJOlIFN0+HZyau9gWGq7DpCQ==}
     engines: {node: '>= 10'}
     cpu: [arm64]
     os: [win32]
 
-  '@napi-rs/simple-git-win32-x64-msvc@0.1.19':
-    resolution: {integrity: sha512-FmNuPoK4+qwaSCkp8lm3sJlrxk374enW+zCE5ZksXlZzj/9BDJAULJb5QUJ7o9Y8A/G+d8LkdQLPBE2Jaxe5XA==}
+  '@napi-rs/simple-git-win32-ia32-msvc@0.1.21':
+    resolution: {integrity: sha512-jGdFPAJYgUSrPTGaM9D7devuSXby6FL9NzKffB5AXcL0AeB5HpqxaxOiOikunP5NQil1vEow6YxD4SyDIX57Cg==}
+    engines: {node: '>= 10'}
+    cpu: [ia32]
+    os: [win32]
+
+  '@napi-rs/simple-git-win32-x64-msvc@0.1.21':
+    resolution: {integrity: sha512-OEVKwZ4pEGSk3AxlEaEKba6bCepbV7w+v7BjeNgCscl0Evw8A81nV2ytNqajZAPk49bZZDSDzeNWe44kkaD96Q==}
     engines: {node: '>= 10'}
     cpu: [x64]
     os: [win32]
 
-  '@napi-rs/simple-git@0.1.19':
-    resolution: {integrity: sha512-jMxvwzkKzd3cXo2EB9GM2ic0eYo2rP/BS6gJt6HnWbsDO1O8GSD4k7o2Cpr2YERtMpGF/MGcDfsfj2EbQPtrXw==}
+  '@napi-rs/simple-git@0.1.21':
+    resolution: {integrity: sha512-49ij3JTYr/eSqvUaAXORgohU7pARH7GpCn/8JrwQo/mIulSY+gc/Xj4FtZ2+RdJrK6dLD6jSGU5vI17Of0qtCw==}
     engines: {node: '>= 10'}
 
   '@napi-rs/wasm-runtime@0.2.12':
@@ -1615,6 +1621,10 @@ packages:
     resolution: {integrity: sha512-HxngEd2XUcg9xi20JkwlLCtYwfoFw4JGkuZpT+WlsPD4gB/cxkvTD8fSsoAnphGZhFdZYKeQIPCuFlWPm1uE0g==}
     engines: {node: ^14.21.3 || >=16}
 
+  '@noble/curves@1.9.4':
+    resolution: {integrity: sha512-2bKONnuM53lINoDrSmK8qP8W271ms7pygDhZt4SiLOoLwBtoHqeCFi6RG42V8zd3mLHuJFhU/Bmaqo4nX0/kBw==}
+    engines: {node: ^14.21.3 || >=16}
+
   '@noble/hashes@1.2.0':
     resolution: {integrity: sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==}
 
@@ -1760,8 +1770,8 @@ packages:
     resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
     engines: {node: '>=14'}
 
-  '@pkgr/core@0.2.7':
-    resolution: {integrity: sha512-YLT9Zo3oNPJoBjBc4q8G2mjU4tqIbf5CEOORbUUr48dCD9q3umJ3IPlVqOqDakPfd2HuwccBaqlGhN4Gmr5OWg==}
+  '@pkgr/core@0.2.9':
+    resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==}
     engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
 
   '@radix-ui/number@1.1.1':
@@ -2198,275 +2208,275 @@ packages:
   '@radix-ui/rect@1.1.1':
     resolution: {integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==}
 
-  '@react-aria/breadcrumbs@3.5.26':
-    resolution: {integrity: sha512-jybk2jy3m9KNmTpzJu87C0nkcMcGbZIyotgK1s8st8aUE2aJlxPZrvGuJTO8GUFZn9TKnCg3JjBC8qS9sizKQg==}
+  '@react-aria/breadcrumbs@3.5.27':
+    resolution: {integrity: sha512-fuXD9nvBaBVZO0Z6EntBlxQD621/2Ldcxz76jFjc4V/jNOq/6BIVQRtpnAYYrSTiW3ZV2IoAyxRWNxQU22hOow==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/button@3.13.3':
-    resolution: {integrity: sha512-Xn7eTssaefNPUydogI1qDf7qQWPmb+hGoS1QiCNBodPlRpVDXxlZSIhOqQFnLWHv5+z5UL+vu+joqlSPYHqOFw==}
+  '@react-aria/button@3.14.0':
+    resolution: {integrity: sha512-we6z+2GpZO8lGD6EPmYH2S87kLCpU14D2E3tD2vES+SS2sZM2qcm2dUGpeo4+gZqBToLWKEBAGCSlkWEtgS19A==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/calendar@3.8.3':
-    resolution: {integrity: sha512-1TAZADcWbfznXzo4oJEqFgX4IE1chZjWsTSJDWr03UEx3XqIJI8GXm+ylOQUiN4j8xqZ7tl4yNuuslKkzoSjMQ==}
+  '@react-aria/calendar@3.9.0':
+    resolution: {integrity: sha512-YxHLqL/LZrgwYGKzlQ96Fgt6gC+Q1L8k56sD51jJAtiD+YtT/pKJfK1zjZ3rtHtPTDYzosJ8vFgOmZNpnKQpXQ==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/checkbox@3.15.7':
-    resolution: {integrity: sha512-L64van+K2ZEmCpx/KeZGHoxdxQvVHgfusFRFYZbh3e7YEtDcShvUrTDVKmZkINqnmuhGTDolFDQq+E8fWEpcRg==}
+  '@react-aria/checkbox@3.16.0':
+    resolution: {integrity: sha512-XPaMz1/iVBG6EbJOPYlNtvr+q4f0axJeoIvyzWW3ciIdDSX/3jYuFg/sv/b3OQQl389cbQ/WUBQyWre/uXWVEg==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/color@3.0.9':
-    resolution: {integrity: sha512-dWyK8a3kNii8Yuj1/CQivnVVxsgkV8em+sb0oA29w04t+CFRQywpE2OVV3wZTDzOIVaz3pXx7/X012WoF6d/eQ==}
+  '@react-aria/color@3.1.0':
+    resolution: {integrity: sha512-95qcCmz5Ss6o1Z4Z7X3pEEQxoUA83qGNQkpjOvobcHbNWKfhvOAsUzdBleOx2NpyBzY16OAnhWR7PJZwR4AqiA==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/combobox@3.12.5':
-    resolution: {integrity: sha512-mg9RrOTjxQFPy0BQrlqdp5uUC2pLevIqhZit6OfndmOr7khQ32qepDjXoSwYeeSag/jrokc2cGfXfzOwrgAFaQ==}
+  '@react-aria/combobox@3.13.0':
+    resolution: {integrity: sha512-eBa8aWcL3Ar/BvgSaqYDmNQP70LPZ7us2myM31QQt2YDRptqGHd44wzXCts9SaDVIeMVy+AEY2NkuxrVE6yNrw==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/datepicker@3.14.5':
-    resolution: {integrity: sha512-TeV/yXEOQ2QOYMxvetWcWUcZN83evmnmG/uSruTdk93e2nZzs227Gg/M95tzgCYRRACCzSzrGujJhNs12Nh7mg==}
+  '@react-aria/datepicker@3.15.0':
+    resolution: {integrity: sha512-AONeLj7sMKz4JmzCu4bhsqwcNFXCSWoaBhi4wOJO9+WYmxudn5mSI9ez8NMCVn+s5kcYpyvzrrAFf/DvQ4UDgw==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/dialog@3.5.27':
-    resolution: {integrity: sha512-Sp8LWQQYNxkLk2+L0bdWmAd9fz1YIrzvxbHXmAn9Tn6+/4SPnQhkOo+qQwtHFbjqe9fyS7cJZxegXd1RegIFew==}
+  '@react-aria/dialog@3.5.28':
+    resolution: {integrity: sha512-S9dgdFBQc9LbhyBiHwGPSATwtvsIl6h+UnxDJ4oKBSse+wxdAyshbZv2tyO5RFbe3k73SAgU7yKocfg7YyRM0A==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/disclosure@3.0.6':
-    resolution: {integrity: sha512-swO7U2G1Qhelj08RUiPQ8OEwDWDGj7DgWBmMyU2HjVEihR9wlvwsJTvzmxNQvJJT0l1bxQ/tM4RWxdUycUYy7A==}
+  '@react-aria/disclosure@3.0.7':
+    resolution: {integrity: sha512-g17smH+5v7B6JijzN20rIRUmE2N8owYK/4blR6tIyS+oLIHr+Crkt1ErNoUWynibj2/4gDd9KGrKyzwB4vxK9g==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/dnd@3.10.1':
-    resolution: {integrity: sha512-EWiFbRoWs0zBlBbdPvd7gPyA3B8TPUtMfSUnLBCjwc+N0YaUoizZxW2VYgpAkZYAlVrPYV6n2Gs+98PHKZ8rsg==}
+  '@react-aria/dnd@3.11.0':
+    resolution: {integrity: sha512-jr47o7Fy55eYjSKWqRyuWKPnynpgC4cE9YXnYg5xa+1woRefIF2IyteOxgSHeX16+6ef2UDSsvC61T3gS6NWxQ==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/focus@3.20.5':
-    resolution: {integrity: sha512-JpFtXmWQ0Oca7FcvkqgjSyo6xEP7v3oQOLUId6o0xTvm4AD5W0mU2r3lYrbhsJ+XxdUUX4AVR5473sZZ85kU4A==}
+  '@react-aria/focus@3.21.0':
+    resolution: {integrity: sha512-7NEGtTPsBy52EZ/ToVKCu0HSelE3kq9qeis+2eEq90XSuJOMaDHUQrA7RC2Y89tlEwQB31bud/kKRi9Qme1dkA==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/form@3.0.18':
-    resolution: {integrity: sha512-e4Ktc3NiNwV5dz82zVE7lspYmKwAnGoJfOHgc9MApS7Fy/BEAuVUuLgTjMo1x5me7dY+ADxqrIhbOpifscGGoQ==}
+  '@react-aria/form@3.1.0':
+    resolution: {integrity: sha512-aDAOZafrn0V8e09mDAtCvc+JnpnkFM9X8cbI5+fdXsXAA+JxO+3uRRfnJHBlIL0iLc4C4OVWxBxWToV95pg1KA==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/grid@3.14.2':
-    resolution: {integrity: sha512-5oS6sLq0DishBvPVsWnxGcUdBRXyFXCj8/n02yJvjbID5Mpjn9JIHUSL4ZCZAO7QGCXpvO3PI40vB2F6QUs2VA==}
+  '@react-aria/grid@3.14.3':
+    resolution: {integrity: sha512-O4Ius5tJqKcMGfQT6IXD4MnEOeq6f/59nKmfCLTXMREFac/oxafqanUx3zrEVYbaqLOjEmONcd8S61ptQM6aPg==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/gridlist@3.13.2':
-    resolution: {integrity: sha512-mPGhW2+Jke66LJIPrYoAdL5BBiC8iZ9orjoan7TBTCX9Xk87EK1XLm1cTxAylRqGNjnLzy+vp05Zt2fHY4QduA==}
+  '@react-aria/gridlist@3.13.3':
+    resolution: {integrity: sha512-U2x/1MpdrAgK/vay2s2nVSko4WysajlMS+L8c18HE/ig2to+C8tCPWH2UuK4jTQWrK5x/PxTH+/yvtytljnIuQ==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/i18n@3.12.10':
-    resolution: {integrity: sha512-1j00soQ2W0nTgzaaIsGFdMF/5aN60AEdCJPhmXGZiuWdWzMxObN9LQ9vdzYPTjTqyqMdSaSp9DZKs5I26Xovpw==}
+  '@react-aria/i18n@3.12.11':
+    resolution: {integrity: sha512-1mxUinHbGJ6nJ/uSl62dl48vdZfWTBZePNF/wWQy98gR0qNFXLeusd7CsEmJT1971CR5i/WNYUo1ezNlIJnu6A==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/interactions@3.25.3':
-    resolution: {integrity: sha512-J1bhlrNtjPS/fe5uJQ+0c7/jiXniwa4RQlP+Emjfc/iuqpW2RhbF9ou5vROcLzWIyaW8tVMZ468J68rAs/aZ5A==}
+  '@react-aria/interactions@3.25.4':
+    resolution: {integrity: sha512-HBQMxgUPHrW8V63u9uGgBymkMfj6vdWbB0GgUJY49K9mBKMsypcHeWkWM6+bF7kxRO728/IK8bWDV6whDbqjHg==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/label@3.7.19':
-    resolution: {integrity: sha512-ZJIj/BKf66q52idy24ErzX77vDGuyQn4neWtu51RRSk4npI3pJqEPsdkPCdo2dlBCo/Uc1pfuLGg2hY3N/ni9Q==}
+  '@react-aria/label@3.7.20':
+    resolution: {integrity: sha512-Hw7OsC2GBnjptyW1lC1+SNoSIZA0eIh02QnNDr1XX2S+BPfn958NxoI7sJIstO/TUpQVNqdjEN/NI6+cyuJE6g==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/landmark@3.0.4':
-    resolution: {integrity: sha512-1U5ce6cqg1qGbK4M4R6vwrhUrKXuUzReZwHaTrXxEY22IMxKDXIZL8G7pFpcKix2XKqjLZWf+g8ngGuNhtQ2QQ==}
+  '@react-aria/landmark@3.0.5':
+    resolution: {integrity: sha512-klUgRGQyTv5qWFQ0EMMLBOLa87qSTGjWoiMvytL9EgJCACkn/OzNMPbqVSkMADvadDyWCMWFYWvfweLxl3T5yw==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/link@3.8.3':
-    resolution: {integrity: sha512-83gS9Bb+FMa4Tae2VQrOxWixqYhqj4MDt4Bn0i3gzsP/sPWr1bwo5DJmXfw16UAXMaccl1rUKSqqHdigqaealw==}
+  '@react-aria/link@3.8.4':
+    resolution: {integrity: sha512-7cPRGIo7x6ZZv1dhp2xGjqLR1snazSQgl7tThrBDL5E8f6Yr7SVpxOOK5/EBmfpFkhkmmXEO/Fgo/GPJdc6Vmw==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/listbox@3.14.6':
-    resolution: {integrity: sha512-ZaYpBXiS+nUzxAmeCmXyvDcZECuZi1ZLn5y8uJ4ZFRVqSxqplVHodsQKwKqklmAM3+IVDyQx2WB4/HIKTGg2Bw==}
+  '@react-aria/listbox@3.14.7':
+    resolution: {integrity: sha512-U5a+AIDblaeQTIA1MDFUaYIKoPwPNAuY7SwkuA5Z7ClDOeQJkiyExmAoKcUXwUkrLULQcbOPKr401q38IL3T7Q==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/live-announcer@3.4.3':
-    resolution: {integrity: sha512-nbBmx30tW53Vlbq3BbMxHGbHa7vGE9ItacI+1XAdH2UZDLtdZA5J6U9YC6lokKQCv+aEVO6Zl9YG4yp57YwnGw==}
+  '@react-aria/live-announcer@3.4.4':
+    resolution: {integrity: sha512-PTTBIjNRnrdJOIRTDGNifY2d//kA7GUAwRFJNOEwSNG4FW+Bq9awqLiflw0JkpyB0VNIwou6lqKPHZVLsGWOXA==}
 
-  '@react-aria/menu@3.18.5':
-    resolution: {integrity: sha512-mOQb4PcNvDdFhyqF7nxREwc1YUg+pPTiMNcSHlz/MKFkkUteIQBYfuJJa8i72ooiE55xfYEQhPLjmrLHAOIJ+g==}
+  '@react-aria/menu@3.19.0':
+    resolution: {integrity: sha512-VLUGbZedKJvK2OFWEpa86GPIaj9QcWox/R9JXmNk6nyrAz/V46OBQENdliV26PEdBZgzrVxGvmkjaH7ZsN/32Q==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/meter@3.4.24':
-    resolution: {integrity: sha512-IYI0Z2pwMvIe8r/3G3PHhM4G/KRiW1ssFCBZdCjBbSpl6/EkmrHiyeaBYG0j8Ux8tmRmXiMVjxLdDlCJQDH7mQ==}
+  '@react-aria/meter@3.4.25':
+    resolution: {integrity: sha512-6IqOnwuEt8z6UDy8Ru3ZZRZIUiELD0N3Wi/udMfR8gz4oznutvnRCMpRXkVVaVLYQfRglybu2/Lxfe+rq8WiRg==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/numberfield@3.11.16':
-    resolution: {integrity: sha512-AGk0BMdHXPP3gSy39UVropyvpNMxAElPGIcicjXXyD/tZdemsgLXUFT2zI4DwE0csFZS8BGgunLWT9VluMF4FQ==}
+  '@react-aria/numberfield@3.12.0':
+    resolution: {integrity: sha512-JkgkjYsZ9lN5m3//X3buOKVrA/QJEeeXJ+5T5r6AmF29YdIhD1Plf5AEOWoRpZWQ25chH7FI/Orsf4h3/SLOpg==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/overlays@3.27.3':
-    resolution: {integrity: sha512-1hawsRI+QiM0TkPNwApNJ2+N49NQTP+48xq0JG8hdEUPChQLDoJ39cvT1sxdg0mnLDzLaAYkZrgfokq9sX6FLA==}
+  '@react-aria/overlays@3.28.0':
+    resolution: {integrity: sha512-qaHahAXTmxXULgg2/UfWEIwfgdKsn27XYryXAWWDu2CAZTcbI+5mGwYrQZSDWraM6v5PUUepzOVvm7hjTqiMFw==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/progress@3.4.24':
-    resolution: {integrity: sha512-lpMVrZlSo1Dulo67COCNrcRkJ+lRrC2PI3iRoOIlqw1Ljz4KFoSGyRudg/MLJ/YrQ+6zmNdz5ytdeThrZwHpPQ==}
+  '@react-aria/progress@3.4.25':
+    resolution: {integrity: sha512-KD9Gow+Ip6ZCBdsarR+Hby3c4d99I6L95Ruf7tbCh4ut9i9Dbr+x99OwhpAbT0g549cOyeIqxutPkT+JuzrRuA==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/radio@3.11.5':
-    resolution: {integrity: sha512-6BjpeTupQnxetfvC2bqIxWUt6USMqNZoKOoOO7mUL7ESF6/Gp8ocutvQn0VnTxU+7OhdrZX5AACPg/qIQYumVw==}
+  '@react-aria/radio@3.12.0':
+    resolution: {integrity: sha512-//0zZUuHtbm6uZR9+sNRNzVcQpjJKjZj57bDD0lMNj3NZp/Tkw+zXIFy6j1adv3JMe6iYkzEgaB7YRDD1Fe/ZA==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/searchfield@3.8.6':
-    resolution: {integrity: sha512-fEhNOtOV5yRZ8hkWmFO5Mh8nq63/ePun2dUMLAiW1sCQXTUpN9Oo+T4vsEUabuZ25mHvqgVoCVhAFdMbvZ+W+A==}
+  '@react-aria/searchfield@3.8.7':
+    resolution: {integrity: sha512-15jfALRyz5EAA5tvIELVfUlqTFdk8oG442OiS3Xq/jJij8uKRzwUdnL57EVTFYyg+VMLp/t5wX+obXYcRG+kdQ==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/select@3.15.7':
-    resolution: {integrity: sha512-b1PpanLblnXgrvIeYPkL9ELdeE3GQXwoRJLNv9DSKSAyBVx+pm6+4BtzngOBdBidRCcOGEBEYxuUW8hMXjFB8w==}
+  '@react-aria/select@3.16.0':
+    resolution: {integrity: sha512-UkiLSxMOKWW24qnhZdOObkFLpauvmu0T6wuPXbdQgwlis/UeLzDamPAWc6loRFJgHCpJftaaaWVQG3ks4NX7ew==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/selection@3.24.3':
-    resolution: {integrity: sha512-QznlHCUcjFgVALUIVBK4SWJd6osaU9lVaZgU4M8uemoIfOHqnBY3zThkQvEhcw/EJ2RpuYYLPOBYZBnk1knD5A==}
+  '@react-aria/selection@3.25.0':
+    resolution: {integrity: sha512-Q3U0Ya0PTP/TR0a2g+7YEbFVLphiWthmEkHyvOx9HsKSjE8w9wXY3C14DZWKskB/BBrXKJuOWxBDa0xhC83S+A==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/separator@3.4.10':
-    resolution: {integrity: sha512-T9hJpO6lfg6zHRbs5CZD0eZrWIIjN6LY+EC6X5pQJbJeq6HqviVSQx25q98K430S/EGwHRltY5Bwy+XwlMZfdA==}
+  '@react-aria/separator@3.4.11':
+    resolution: {integrity: sha512-WwYEb7Wga4YQvlEwbzlVcVkfByullcORKtIe30pmh1YkTRRVJhbRPaE/mwcSMufbfjSYdtDavxmF+WY7Tdb9/A==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/slider@3.7.21':
-    resolution: {integrity: sha512-eWu69KnQ7qCmpYBEkgGLjIuKfFqoHu2W6r9d7ys0ZmX81HPj9DhatGpEgHlnjRfCeSl9wL5h2FY9wnIio82cbg==}
+  '@react-aria/slider@3.8.0':
+    resolution: {integrity: sha512-D7Sa7q21cV3gBid7frjoYw6924qYqNdJn2oai1BEemHSuwQatRlm1o2j+fnPTy9sYZfNOqXYnv5YjEn0o1T+Gw==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/spinbutton@3.6.16':
-    resolution: {integrity: sha512-Ko1e9GeQiiEXeR3IyPT8STS1Pw4k/1OBs9LqI3WKlHFwH5M8q3DbbaMOgekD41/CPVBKmCcqFM7K7Wu9kFrT2A==}
+  '@react-aria/spinbutton@3.6.17':
+    resolution: {integrity: sha512-gdGc3kkqpvFUd9XsrhPwQHMrG2TY0LVuGGgjvaZwF/ONm9FMz393ogCM0P484HsjU50hClO+yiRRgNjdwDIzPQ==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/ssr@3.9.9':
-    resolution: {integrity: sha512-2P5thfjfPy/np18e5wD4WPt8ydNXhij1jwA8oehxZTFqlgVMGXzcWKxTb4RtJrLFsqPO7RUQTiY8QJk0M4Vy2g==}
+  '@react-aria/ssr@3.9.10':
+    resolution: {integrity: sha512-hvTm77Pf+pMBhuBm760Li0BVIO38jv1IBws1xFm1NoL26PU+fe+FMW5+VZWyANR6nYL65joaJKZqOdTQMkO9IQ==}
     engines: {node: '>= 12'}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/switch@3.7.5':
-    resolution: {integrity: sha512-GV9rFYf4wRHAh9tkhptvm3uOflKcQHdgZh+eGpSAHyq2iTq0j2nEhlmtFordpcJgC4XWro7TXLNltfqUqVHtkw==}
+  '@react-aria/switch@3.7.6':
+    resolution: {integrity: sha512-C+Od8hZNZCf3thgtZnZKzHl5b/63Q9xf+Pw6ugLA1qaKazwp46x1EwUVVqVhfAeVhmag++eHs8Lol5ZwQEinjQ==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/table@3.17.5':
-    resolution: {integrity: sha512-Q9HDr2EAhoah7HFIT6XxOOOv2fiAs0agwQQd3d1w6jqgyu9m20lM/jxcSwcCFj2O7FPKHfapSAijHDZZoc4Shg==}
+  '@react-aria/table@3.17.6':
+    resolution: {integrity: sha512-PSEaeKOIazVEaykeTLudPbDLytJgOPLZJalS/xXY0/KL+Gi0Olchmz4tvS0WBe87ChmlVi6GQqU+stk23aZVWg==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/tabs@3.10.5':
-    resolution: {integrity: sha512-ddmGPikXW+27W2Rx0VuEwwGJVLTo68QkNbSl8R+TEM0EUIAJo3nwHzAlQhuo5Tcb1PdK7biTjO1dyI4pno2/0Q==}
+  '@react-aria/tabs@3.10.6':
+    resolution: {integrity: sha512-L8MaE7+bu6ByDOUxNPpMMYxdHULhKUfBoXdsSsXqb1z3QxdFW2zovfag0dvpyVWB6ALghX2T0PlTUNqaKA5tGw==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/tag@3.6.2':
-    resolution: {integrity: sha512-xO33FU0bZSpZ3Bw7bnJz7+Me0daVLJrn5dAllf18Mmf9T2cEr63Gg4AL4nR+rj6NLSq0aH8QyDtRGNqXJjo5SQ==}
+  '@react-aria/tag@3.7.0':
+    resolution: {integrity: sha512-nU0Sl7u82RBn8XLNyrjkXhtw+xbJD9fyjesmDu7zeOq78e4eunKW7OZ/9+t+Lyu5wW+B7vKvetIgkdXKPQm3MA==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/textfield@3.17.5':
-    resolution: {integrity: sha512-HFdvqd3Mdp6WP7uYAWD64gRrL1D4Khi+Fm3dIHBhm1ANV0QjYkphJm4DYNDq/MXCZF46+CZNiOWEbL/aeviykA==}
+  '@react-aria/textfield@3.18.0':
+    resolution: {integrity: sha512-kCwbyDHi2tRaD/OjagA3m3q2mMZUPeXY7hRqhDxpl2MwyIdd+/PQOJLM8tZr5+m2zvBx+ffOcjZMGTMwMtoV5w==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/toast@3.0.5':
-    resolution: {integrity: sha512-uhwiZqPy6hqucBUL7z6uUZjAJ/ou3bNdTjZlXS+zbcm+T0dsjKDfzNkaebyZY7AX3cYkFCaRjc3N6omXwoAviw==}
+  '@react-aria/toast@3.0.6':
+    resolution: {integrity: sha512-PoCLWoZzdHIMYY0zIU3WYsHAHPS52sN1gzGRJ+cr5zogU8wwg8lwFZCvs/yql0IhQLsO930zcCXWeL/NsCMrlA==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/toggle@3.11.5':
-    resolution: {integrity: sha512-8+Evk/JVMQ25PNhbnHUvsAK99DAjnCWMdSBNswJ1sWseKCYQzBXsNkkF6Dl/FlSkfDBFAaRHkX9JUz02wehb9A==}
+  '@react-aria/toggle@3.12.0':
+    resolution: {integrity: sha512-JfcrF8xUEa2CbbUXp+WQiTBVwSM/dm21v5kueQlksvLfXG6DGE8/zjM6tJFErrFypAasc1JXyrI4dspLOWCfRA==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/toolbar@3.0.0-beta.18':
-    resolution: {integrity: sha512-P1fXhmTRBK4YvPQDzCY3XoZl+HiBADgvQ89jszxJ2jD4Qzs/E096ttCc+otZnbvRcoU27IxC2vWFInqK/bP31g==}
+  '@react-aria/toolbar@3.0.0-beta.19':
+    resolution: {integrity: sha512-G4sgtOUTUUJHznXlpKcY64SxD2gKOqIQXZXjWTVcY/Q5hAjl8gbTt5XIED22GmeIgd/tVl6+lddGj6ESze4vSg==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/tooltip@3.8.5':
-    resolution: {integrity: sha512-spGAuHHNkiqAfyOl4JWzKEK642KC1oQylioYg+LKCq2avUyaDqFlRx2JrC4a6nt3BV6E5/cJUMV9K7gMRApd5Q==}
+  '@react-aria/tooltip@3.8.6':
+    resolution: {integrity: sha512-lW/PegiswGLlCP0CM4FH2kbIrEe4Li2SoklzIRh4nXZtiLIexswoE5/5af7PMtoMAl31or6fHZleVLzZD4VcfA==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/tree@3.1.1':
-    resolution: {integrity: sha512-9LIe9unStA/9HHX6idHdbxMJLjebFP9mngIjoBgbWSNaYx3oH1X3Ei2Q9qHmimebtBagEZgSjxy7M+RcEqFhlw==}
+  '@react-aria/tree@3.1.2':
+    resolution: {integrity: sha512-duyAoxSIzgIEP1UvCivx8uY7GZxo8nhfSsHW77GO+UMgwBjWkrvHnYQXBYbLq1GLqLxuDN+U7SFe8Az7+HcbOg==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/utils@3.29.1':
-    resolution: {integrity: sha512-yXMFVJ73rbQ/yYE/49n5Uidjw7kh192WNN9PNQGV0Xoc7EJUlSOxqhnpHmYTyO0EotJ8fdM1fMH8durHjUSI8g==}
+  '@react-aria/utils@3.30.0':
+    resolution: {integrity: sha512-ydA6y5G1+gbem3Va2nczj/0G0W7/jUVo/cbN10WA5IizzWIwMP5qhFr7macgbKfHMkZ+YZC3oXnt2NNre5odKw==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-aria/visually-hidden@3.8.25':
-    resolution: {integrity: sha512-9tRRFV1YMLuDId9E8PeUf0xy0KmQBoP8y/bm0PKWzXOqLOVmp/+kop9rwsjC7J6ppbBnlak7XCXTc7GoSFOCRA==}
+  '@react-aria/visually-hidden@3.8.26':
+    resolution: {integrity: sha512-Lz36lTVaQbv5Kn74sPv0l9SnLQ5XHKCoq2zilP14Eb4QixDIqR7Ovj43m+6wi9pynf29jtOb/8D/9jrTjbmmgw==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
@@ -2482,266 +2492,266 @@ packages:
       js-cookie:
         optional: true
 
-  '@react-stately/calendar@3.8.2':
-    resolution: {integrity: sha512-IGSbTgCMiGYisQ+CwH31wek10UWvNZ1LVwhr0ZNkhDIRtj+p+FuLNtBnmT1CxTFe2Y4empAxyxNA0QSjQrOtvQ==}
+  '@react-stately/calendar@3.8.3':
+    resolution: {integrity: sha512-HTWD6ZKQcXDlvj6glEEG0oi2Tpkaw19y5rK526s04zJs894wFqM9PK0WHthEYqjCeQJ5B/OkyG19XX4lENxnZw==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-stately/checkbox@3.6.15':
-    resolution: {integrity: sha512-jt3Kzbk6heUMtAlCbUwnrEBknnzFhPBFMEZ00vff7VyhDXup7DJcJRxreloHepARZLIhLhC5QPyO5GS4YOHlvw==}
+  '@react-stately/checkbox@3.7.0':
+    resolution: {integrity: sha512-opViVhNvxFVHjXhM4nA/E03uvbLazsIKloXX9JtyBCZAQRUag17dpmkekfIkHvP4o7z7AWFoibD8JBFV1IrMcQ==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-stately/collections@3.12.5':
-    resolution: {integrity: sha512-5SIb+6nF9cyu+WXqZ6io56BtdOu8FjSQQaaLCCpfAC6fc6zHRk8by0WreRmvJ5/Kn8oq2FNJtCNRvluM0Z01UA==}
+  '@react-stately/collections@3.12.6':
+    resolution: {integrity: sha512-S158RKWGZSodbJXKZDdcnrLzFxzFmyRWDNakQd1nBGhSrW2JV8lDn9ku5Og7TrjoEpkz//B2oId648YT792ilw==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-stately/color@3.8.6':
-    resolution: {integrity: sha512-KBpnXt31hCgdYq1a7PxUspK990/V5hPO4LqJ1K89p7r2t4OF66IBW5FmOS7KY6p1bGOoZgbk9m5w+yUeQq4wmw==}
+  '@react-stately/color@3.9.0':
+    resolution: {integrity: sha512-9eG0gDxVIu+A+DTdfwyYuU4pR788pVdq1Snpk8el787OsOb5WiuT4C4VWJb5Qbrq2PiFhhZmxuJXpzz4B1gW3A==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-stately/combobox@3.10.6':
-    resolution: {integrity: sha512-XOfG90MQPfPCNjl2KJOKuFFzx2ULlwnJ/QXl9zCQUtUBOExbFRHldj5E4NPcH14AVeYZX6DBn4GTS9ocOVbE7Q==}
+  '@react-stately/combobox@3.11.0':
+    resolution: {integrity: sha512-W9COXdSOC+uqCZrRHJI0K7emlPb/Tx4A89JHWBcFmiAk+hs1Cnlyjw3aaqEiT8A8/HxDNMO9QcfisWC1iNyE9A==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-stately/datepicker@3.14.2':
-    resolution: {integrity: sha512-KvOUFz/o+hNIb7oCli6nxBdDurbGjRjye6U99GEYAx6timXOjiIJvtKQyqCLRowGYtCS6GH41yM6DhJ2MlMF8w==}
+  '@react-stately/datepicker@3.15.0':
+    resolution: {integrity: sha512-OuBx+h802CoANy6KNR6XuZCndiyRf9vpB32CYZX86nqWy21GSTeT73G41ze5cAH88A/6zmtpYK24nTlk8bdfWA==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-stately/disclosure@3.0.5':
-    resolution: {integrity: sha512-Rh+y+XAUNwyFvvzBS/MtFvdWHC38mXI99S6mdNe3e5Og8IZxLBDtvwBCzrT30YzYqN40yd3alm9xLzpYXsvYYA==}
+  '@react-stately/disclosure@3.0.6':
+    resolution: {integrity: sha512-tR2IzcS7JbgAXy9U0gxQQGRHKIqgC7nj3xsY5U9QGCE1BKzwf/84iDE63AXpLRje31yuYzwXsJs6UrE9wSjb3g==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-stately/dnd@3.6.0':
-    resolution: {integrity: sha512-H0zWOjjoocM+8r5rJ2x0B66NXZd2+7lF1zhomoMoR5+57DA5hWZTY0tht21DKjNoFk4f96Ythh0jRLziQbSkBw==}
+  '@react-stately/dnd@3.6.1':
+    resolution: {integrity: sha512-cbBLptL+tpXFQ0oU0v6GBtSvzP0doohyhCIr8pOzk6aYutFI0c5JZw8LGoKN/GLfXkm7iPyrfCKeKqDlDTHCzQ==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
   '@react-stately/flags@3.1.2':
     resolution: {integrity: sha512-2HjFcZx1MyQXoPqcBGALwWWmgFVUk2TuKVIQxCbRq7fPyWXIl6VHcakCLurdtYC2Iks7zizvz0Idv48MQ38DWg==}
 
-  '@react-stately/form@3.1.5':
-    resolution: {integrity: sha512-wOs0SVXFgNr1aIdywiNH1MhxrFlN5YxBr1k9y3Z7lX+pc/MGRJFTgfDDw5JDxvwLH9joJ9ciniCdWep9L/TqcQ==}
+  '@react-stately/form@3.2.0':
+    resolution: {integrity: sha512-PfefxvT7/BIhAGpD4oQpdcxnL8cfN0ZTQxQq+Wmb9z3YzK1oM8GFxb8eGdDRG71JeF8WUNMAQVZFhgl00Z/YKg==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-stately/grid@3.11.3':
-    resolution: {integrity: sha512-/YurYfPARtgsgS5f8rklB7ZQu6MWLdpfTHuwOELEUZ4L52S2gGA5VfLxDnAsHHnu5XHFI3ScuYLAvjWN0rgs/Q==}
+  '@react-stately/grid@3.11.4':
+    resolution: {integrity: sha512-oaXFSk2eM0PJ0GVniGA0ZlTpAA0AL0O4MQ7V3cHqZAQbwSO0n2pT31GM0bSVnYP/qTF5lQHo3ECmRQCz0fVyMw==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-stately/list@3.12.3':
-    resolution: {integrity: sha512-RiqYyxPYAF3YRBEin8/WHC8/hvpZ/fG1Tx3h1W4aXU5zTIBuy0DrjRKePwP90oCiDpztgRXePLlzhgWeKvJEow==}
+  '@react-stately/list@3.12.4':
+    resolution: {integrity: sha512-r7vMM//tpmagyNlRzl2NFPPtx+az5R9pM6q7aI4aBf6/zpZt2eX2UW5gaDTGlkQng7r6OGyAgJD52jmGcCJk7Q==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-stately/menu@3.9.5':
-    resolution: {integrity: sha512-Y+PqHBaQToo6ooCB4i4RoNfRiHbd4iozmLWePBrF4d/zBzJ9p+/5O6XIWFxLw4O128Tg3tSMGuwrxfecPDYHzA==}
+  '@react-stately/menu@3.9.6':
+    resolution: {integrity: sha512-2rVtgeVAiyr7qL8BhmCK/4el49rna/5kADRH5NfPdpXw8ZzaiiHq2RtX443Txj7pUU82CJWQn+CRobq7k6ZTEw==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-stately/numberfield@3.9.13':
-    resolution: {integrity: sha512-FWbbL4E3+5uctPGVtDwHzeNXgyFw0D3glOJhgW1QHPn3qIswusn0z/NjFSuCVOSpri8BZYIrTPUQHpRJPnjgRw==}
+  '@react-stately/numberfield@3.10.0':
+    resolution: {integrity: sha512-6C8ML4/e2tcn01BRNfFLxetVaWwz0n0pVROnVpo8p761c6lmTqohqEMNcXCVNw9H0wsa1hug2a1S5PcN2OXgag==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-stately/overlays@3.6.17':
-    resolution: {integrity: sha512-bkGYU4NPC/LgX9OGHLG8hpf9QDoazlb6fKfD+b5o7GtOdctBqCR287T/IBOQyvHqpySqrQ8XlyaGxJPGIcCiZw==}
+  '@react-stately/overlays@3.6.18':
+    resolution: {integrity: sha512-g8n2FtDCxIg2wQ09R7lrM2niuxMPCdP17bxsPV9hyYnN6m42aAKGOhzWrFOK+3phQKgk/E1JQZEvKw1cyyGo1A==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-stately/radio@3.10.14':
-    resolution: {integrity: sha512-Y7xizUWJ0YJ8pEtqMeKOibX21B5dk56fHgMHXYLeUEm43y5muWQft2YvP0/n4mlkP2Isbk96kPbv7/ez3Gi+lA==}
+  '@react-stately/radio@3.11.0':
+    resolution: {integrity: sha512-hsCmKb9e/ygmzBADFYIGpEQ43LrxjWnlKESgxphvlv0Klla4d6XLAYSFOTX1kcjSztpvVWrdl4cIfmKVF1pz2g==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-stately/searchfield@3.5.13':
-    resolution: {integrity: sha512-JNvsnvK6A1057hQREHabRYAAtwj2vl20oqGBvl1IleKlFe3KInV9WBY5l6zR3RXrnCPHVvJuzGe2R7+g142Mnw==}
+  '@react-stately/searchfield@3.5.14':
+    resolution: {integrity: sha512-OAycTULyF/UWy7Odyzw5lZV2yWH+Cy7fWsZxDUedeUs4Aiwbb6D4ph9pGb0RvhD4S3+B490a2ijGgfsaDeorMA==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-stately/select@3.6.14':
-    resolution: {integrity: sha512-HvbL9iMGwbev0FR6PzivhjKEcXADgcJC/IzUkLqPfg4KKMuYhM/XvbJjWXn/QpD3/XT+A5+r5ExUHu7wiDP93w==}
+  '@react-stately/select@3.7.0':
+    resolution: {integrity: sha512-OWLOCKBEj8/XI+vzBSSHQAJu0Hf9Xl/flMhYh47f2b45bO++DRLcVsi8nycPNisudvK6xMQ8a/h4FwjePrCXfg==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-stately/selection@3.20.3':
-    resolution: {integrity: sha512-TLyjodgFHn5fynQnRmZ5YX1HRY0KC7XBW0Nf2+q9mWk4gUxYm7RVXyYZvMIG1iKqinPYtySPRHdNzyXq9P9sxQ==}
+  '@react-stately/selection@3.20.4':
+    resolution: {integrity: sha512-Hxmc6NtECStYo+Z2uBRhQ80KPhbSF7xXv9eb4qN8dhyuSnsD6c0wc6oAJsv18dldcFz8VrD48aP/uff9mj0hxQ==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-stately/slider@3.6.5':
-    resolution: {integrity: sha512-XnHSHbXeHiE5J7nsXQvlXaKaNn1Z4jO1aQyiZsolK1NXW6VMKVeAgZUBG45k7xQW06aRbjREMmiIz02mW8fajQ==}
+  '@react-stately/slider@3.7.0':
+    resolution: {integrity: sha512-quxqkyyxrxLELYEkPrIrucpVPdYDK8yyliv/vvNuHrjuLRIvx6UmssxqESp2EpZfwPYtEB29QXbAKT9+KuXoCQ==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-stately/table@3.14.3':
-    resolution: {integrity: sha512-PwE5pCplLSDckvgmNLVaHyQyX04A62kxdouFh1dVHeGEPfOYsO9WhvyisLxbH7X8Dbveheq/tSTelYDi6LXEJA==}
+  '@react-stately/table@3.14.4':
+    resolution: {integrity: sha512-uhwk8z3DemozD+yHBjSa4WyxKczpDkxhJhW7ZVOY+1jNuTYxc9/JxzPsHICrlDVV8EPWwwyMUz8eO/8rKN7DbA==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-stately/tabs@3.8.3':
-    resolution: {integrity: sha512-FujQCHppXyeHs2v5FESekxodsBJ5T0k1f7sm0ViNYqgrnE5XwqX8Y4/tdr0fqGF6S+BBllH+Q9yKWipDc6OM8g==}
+  '@react-stately/tabs@3.8.4':
+    resolution: {integrity: sha512-2Tr4yXkcNDLyyxrZr+c4FnAW/wkSim3UhDUWoOgTCy3mwlQzdh9r5qJrOZRghn1QvF7p8Ahp7O7qxwd2ZGJrvQ==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-stately/toast@3.1.1':
-    resolution: {integrity: sha512-W4a6xcsFt/E+aHmR2eZK+/p7Y5rdyXSCQ5gKSnbck+S3lijEWAyV45Mv8v95CQqu0bQijj6sy2Js1szq10HVwg==}
+  '@react-stately/toast@3.1.2':
+    resolution: {integrity: sha512-HiInm7bck32khFBHZThTQaAF6e6/qm57F4mYRWdTq8IVeGDzpkbUYibnLxRhk0UZ5ybc6me+nqqPkG/lVmM42Q==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-stately/toggle@3.8.5':
-    resolution: {integrity: sha512-BSvuTDVFzIKxpNg9Slf+RdGpva7kBO8xYaec2TW9m6Ag9AOmiDwUzzDAO0DRsc7ArSaLLFaQ/pdmmT6TxAUQIA==}
+  '@react-stately/toggle@3.9.0':
+    resolution: {integrity: sha512-1URd97R5nbFF9Hc1nQBhvln55EnOkLNz6pjtXU7TCnV4tYVbe+tc++hgr5XRt6KAfmuXxVDujlzRc6QjfCn0cQ==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-stately/tooltip@3.5.5':
-    resolution: {integrity: sha512-/zbl7YxneGDGGzdMPSEYUKsnVRGgvsr80ZjQYBHL82N4tzvtkRwmzvzN9ipAtza+0jmeftt3N+YSyxvizVbeKA==}
+  '@react-stately/tooltip@3.5.6':
+    resolution: {integrity: sha512-BnOtE7726t1sCKPGbwzzEtEx40tjpbJvw5yqpoVnAV0OLfrXtLVYfd7tWRHmZOYmhELaUnY+gm3ZFYtwvnjs+A==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-stately/tree@3.9.0':
-    resolution: {integrity: sha512-VpWAh36tbMHJ1CtglPQ81KPdpCfqFz9yAC6nQuL1x6Tmbs9vNEKloGILMI9/4qLzC+3nhCVJj6hN+xqS5/cMTg==}
+  '@react-stately/tree@3.9.1':
+    resolution: {integrity: sha512-dyoPIvPK/cs03Tg/MQSODi2kKYW1zaiOG9KC2P0c8b44mywU2ojBKzhSJky3dBkJ4VVGy7L+voBh50ELMjEa8Q==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-stately/utils@3.10.7':
-    resolution: {integrity: sha512-cWvjGAocvy4abO9zbr6PW6taHgF24Mwy/LbQ4TC4Aq3tKdKDntxyD+sh7AkSRfJRT2ccMVaHVv2+FfHThd3PKQ==}
+  '@react-stately/utils@3.10.8':
+    resolution: {integrity: sha512-SN3/h7SzRsusVQjQ4v10LaVsDc81jyyR0DD5HnsQitm/I5WDpaSr2nRHtyloPFU48jlql1XX/S04T2DLQM7Y3g==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-types/breadcrumbs@3.7.14':
-    resolution: {integrity: sha512-SbLjrKKupzCLbqHZIQYtQvtsXN53NPxOYyug6QfC4d7DcW1Q9wJ546fxb10Y83ftAJMMUHTatI6SenJVoqyUdA==}
+  '@react-types/breadcrumbs@3.7.15':
+    resolution: {integrity: sha512-0RsymrsOAsx443XRDJ1krK+Lusr4t0qqExmzFe7/XYXOn/RbGKjzSdezsoWfTy8Hjks0YbfQPVKnNxg9LKv4XA==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-types/button@3.12.2':
-    resolution: {integrity: sha512-QLoSCX8E7NFIdkVMa65TPieve0rKeltfcIxiMtrphjfNn+83L0IHMcbhjf4r4W19c/zqGbw3E53Hx8mNukoTUw==}
+  '@react-types/button@3.13.0':
+    resolution: {integrity: sha512-hwvcNnBjDeNvWheWfBhmkJSzC48ub5rZq0DnpemB3XKOvv5WcF9p6rrQZsQ3egNGkh0Z+bKfr2QfotgOkccHSw==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-types/calendar@3.7.2':
-    resolution: {integrity: sha512-Bp6fZo52fZdUjYbtJXcaLQ0jWEOeSoyZVwNyN5G6BmPyLP5nHxMPF+R1MPFR0fdpSI4/Sk78gWzoTuU5eOVQLw==}
+  '@react-types/calendar@3.7.3':
+    resolution: {integrity: sha512-gofPgVpSawJ0iGO01SbVH46u3gdykHlGT5BfGU1cRnsOR2tJX38dekO/rnuGsMQYF0+kU6U9YVae+XoOFJNnWg==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-types/checkbox@3.9.5':
-    resolution: {integrity: sha512-9y8zeGWT2xZ38/YC/rNd05pPV8W8vmqFygCpZFaa6dJeOsMgPU+rq+Ifh1G+34D/qGoZXQBzeCSCAKSNPaL7uw==}
+  '@react-types/checkbox@3.10.0':
+    resolution: {integrity: sha512-DJ84ilBDvZddE/Sul97Otee4M6psrPRaJm2a1Bc7M3Y5UKo6d6RGXdcDarRRpbnS7BeAbVanKiMS2ygI9QHh9g==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-types/color@3.0.6':
-    resolution: {integrity: sha512-ZbbgzAWK56RMMZzRGhTAB9Fz9PGnj6ctc6VMqOyumCOF9NKkYgI0E2ssTY/iOXBazZvhhhGahbGl+kjmgWvS6g==}
+  '@react-types/color@3.1.0':
+    resolution: {integrity: sha512-mqx76zdq/GyI7hdx+NTdTrCG6qmf1Uk3w/zWKF80OAesLqqs9XavQQZlRPu1Cg/fHiAHIBOLYTnLf8w+T2IMsw==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-types/combobox@3.13.6':
-    resolution: {integrity: sha512-BOvlyoVtmQJLYtNt4w6RvRORqK4eawW48CcQIR93BU5YFcAGhpcvpjhTZXknSXumabpo1/XQKX4NOuXpfUZrAQ==}
+  '@react-types/combobox@3.13.7':
+    resolution: {integrity: sha512-R7MQ4Qm4fryo6FCg3Vo/l9wxkYVG05trsLbxzMvvxCMkpcoHUPhy8Ll33eXA3YP74Rs/IaM9d0d/amSUZ4M9wg==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-types/datepicker@3.12.2':
-    resolution: {integrity: sha512-w3JIXZLLZ15zjrAjlnflmCXkNDmIelcaChhmslTVWCf0lUpgu1cUC4WAaS71rOgU03SCcrtQ0K9TsYfhnhhL7Q==}
+  '@react-types/datepicker@3.13.0':
+    resolution: {integrity: sha512-AG/iGcdQ5SVSjw8Ta7bCdGNkMda+e+Z7lOHxDawL44SII8LtZroBDlaCpb178Tvo17bBfJ6TvWXlvSpBY8GPRg==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-types/dialog@3.5.19':
-    resolution: {integrity: sha512-+FIyFnoKIGNL20zG8Sye7rrRxmt5HoeaCaHhDCTtNtv8CZEhm3Z+kNd4gylgWAxZRhDtBRWko+ADqfN5gQrgKg==}
+  '@react-types/dialog@3.5.20':
+    resolution: {integrity: sha512-ebn8jW/xW/nmRATaWIPHVBIpIFWSaqjrAxa58f5TXer5FtCD9pUuzAQDmy/o22ucB0yvn6Kl+fjb3SMbMdALZQ==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-types/grid@3.3.3':
-    resolution: {integrity: sha512-VZAKO3XISc/3+a+DZ+hUx2NB/buOe2Ui2nISutv25foeXX4+YpWj5lXS74lJUCuVsSz6D6yoWvEajeUCYrNOxg==}
+  '@react-types/grid@3.3.4':
+    resolution: {integrity: sha512-8XNn7Czhl+D1b2zRwdO8c3oBJmKgevT/viKJB4qBVFOhK0l/p3HYDZUMdeclvUfSt4wx4ASpI7MD3v1vmN54oA==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-types/link@3.6.2':
-    resolution: {integrity: sha512-CtCexoupcaFHJdVPRUpJ83uxK1U0bd9x9DhwRFMqqfPHufICkQkETIw2KIeZXRvMUMi2CSG/81XXy6K0K1MtNw==}
+  '@react-types/link@3.6.3':
+    resolution: {integrity: sha512-XIYEl9ZPa5mLy8uGQabdhPaFVmnvxNSYF59t0vs/IV0yxeoPvrjKjRAbXS+WP9zYMXIkHYNYYucriCkqKhotJA==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-types/listbox@3.7.1':
-    resolution: {integrity: sha512-WiCihJJpVWVEUxxZjhTbnG3Zq3q38XylKnvNelkVHbF+Y3+SXWN0Yyhk43J642G/d87lw1t60Tor0k96eaz4vw==}
+  '@react-types/listbox@3.7.2':
+    resolution: {integrity: sha512-MRpBhApR1jJNASoVWsEvH5vf89TJw+l9Lt1ssawop0K2iYF5PmkthRdqcpYcTkFu5+f5QvFchVsNJ3TKD4cf2A==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-types/menu@3.10.2':
-    resolution: {integrity: sha512-TVQFGttaNCcIvy1MKavb9ZihJmng46uUtVF9oTG/VI/C4YEdzekteI6iSsXbjv5ZAvOKQR+S25IWCbK2W0YCjQ==}
+  '@react-types/menu@3.10.3':
+    resolution: {integrity: sha512-Vd3t7fEbIOiq7kBAHaihfYf+/3Fuh0yK2KNjJ70BPtlAhMRMDVG3m0PheSTm3FFfj+uAdQdfc2YKPnMBbWjDuQ==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-types/meter@3.4.10':
-    resolution: {integrity: sha512-soimx+MAngG5MjQplJNB9erPh+P3Er764PqGA75L6FFmf2KhgzMniSVAqyVOpZu7G3qK4O+ihMAYXf6pQMBkSg==}
+  '@react-types/meter@3.4.11':
+    resolution: {integrity: sha512-c4jnDWFxDp09fNpCDrq6l2RxOxcolmf/frvdtVA/d4SGvfEOoqeUakpVDuOqDD0bU58tQPG3fqT2zH8vpWiJew==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-types/numberfield@3.8.12':
-    resolution: {integrity: sha512-cI0Grj+iW5840gV80t7aXt7FZPbxMZufjuAop5taHe6RlHuLuODfz5n3kyu/NPHabruF26mVEu0BfIrwZyy+VQ==}
+  '@react-types/numberfield@3.8.13':
+    resolution: {integrity: sha512-zRSqInmxOTQJZt2fjAhuQK3Wa1vCOlKsRzUVvxTrE8gtQxlgFxirmobuUnjTEhwkFyb0bq8GvVfQV1E95Si2yw==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-types/overlays@3.8.16':
-    resolution: {integrity: sha512-Aj9jIFwALk9LiOV/s3rVie+vr5qWfaJp/6aGOuc2StSNDTHvj1urSAr3T0bT8wDlkrqnlS4JjEGE40ypfOkbAA==}
+  '@react-types/overlays@3.9.0':
+    resolution: {integrity: sha512-T2DqMcDN5p8vb4vu2igoLrAtuewaNImLS8jsK7th7OjwQZfIWJn5Y45jSxHtXJUddEg1LkUjXYPSXCMerMcULw==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-types/progress@3.5.13':
-    resolution: {integrity: sha512-+4v++AP2xxYxjrTkIXlWWGUhPPIEBzyg76EW0SHKnD4pXxKigcIXEzRbxy62SMidTVdi7jh3tuicIP8OQxJ4cA==}
+  '@react-types/progress@3.5.14':
+    resolution: {integrity: sha512-GeGrjOeHR/p5qQ1gGlN68jb+lL47kuddxMgdR1iEnAlYGY4OtJoEN/EM5W2ZxJRKPcJmzdcY/p/J0PXa8URbSg==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-types/radio@3.8.10':
-    resolution: {integrity: sha512-hLOu2CXxzxQqkEkXSM71jEJMnU5HvSzwQ+DbJISDjgfgAKvZZHMQX94Fht2Vj+402OdI77esl3pJ1tlSLyV5VQ==}
+  '@react-types/radio@3.9.0':
+    resolution: {integrity: sha512-phndlgqMF6/9bOOhO3le00eozNfDU1E7OHWV2cWWhGSMRFuRdf7/d+NjVtavCX75+GJ50MxvXk+KB0fjTuvKyg==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-types/searchfield@3.6.3':
-    resolution: {integrity: sha512-Uua7TYKR1QcJE2F4SAewxuxt8k8gd52zul2q5oMe5azsm2uoAtV/qpNHc7dfPAR97UgbrE/aNMlX57PEubiuLg==}
+  '@react-types/searchfield@3.6.4':
+    resolution: {integrity: sha512-gRVWnRHf7pqU0lBVlkU6XsLxvaWTPnn0EomddIBCVh0msVIyvEea8CXJppu7EpvRh+grNpiMEYeijQ+u8hixlQ==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-types/select@3.9.13':
-    resolution: {integrity: sha512-R7zwck353RV60gZimZ8pDKaj50aEtGzU8gk0jC3aBkfzSUKFJ6jq1DJdqyVQSwXdmPDd9iuketeIUIpEO2teoA==}
+  '@react-types/select@3.10.0':
+    resolution: {integrity: sha512-+xJwYWJoJTCGsaiPAqb6QB79ub1WKIHSmOS9lh/fPUXfUszVs05jhajaN9KjrKmnXds5uh4u6l1JH5J1l2K5pw==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-types/shared@3.30.0':
-    resolution: {integrity: sha512-COIazDAx1ncDg046cTJ8SFYsX8aS3lB/08LDnbkH/SkdYrFPWDlXMrO/sUam8j1WWM+PJ+4d1mj7tODIKNiFog==}
+  '@react-types/shared@3.31.0':
+    resolution: {integrity: sha512-ua5U6V66gDcbLZe4P2QeyNgPp4YWD1ymGA6j3n+s8CGExtrCPe64v+g4mvpT8Bnb985R96e4zFT61+m0YCwqMg==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-types/slider@3.7.12':
-    resolution: {integrity: sha512-kOQLrENLpQzmu6TfavdW1yfEc8VPitT4ZNMKOK0h7x3LskEWjptxcZ4IBowEpqHwk0eMbI9lRE/3tsShGUoLwQ==}
+  '@react-types/slider@3.8.0':
+    resolution: {integrity: sha512-eN6Fd3YCPseGfvfOJDtn9Lh9CrAb8tF3cTAprEcpnGrsxmdW9JQpcuciYuLM871X5D2fYg4WaYMpZaiYssjxBQ==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-types/switch@3.5.12':
-    resolution: {integrity: sha512-6Zz7i+L9k8zw2c3nO8XErxuIy7JVDptz1NTZMiUeyDtLmQnvEKnKPKNjo2j+C/OngtJqAPowC3xRvMXbSAcYqA==}
+  '@react-types/switch@3.5.13':
+    resolution: {integrity: sha512-C2EhKBu7g7xhKboPPxhyKtROEti80Ck7TBnKclXt0D4LiwbzpR3qGfuzB+7YFItnhiauP7Uxe+bAfM5ojjtm9w==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-types/table@3.13.1':
-    resolution: {integrity: sha512-fLPRXrZoplAGMjqxHVLMt7lB0qsiu1WHZmhKtroCEhTYwnLQKL84XFH4GV1sQgQ1GIShl3BUqWzrawU5tEaQkw==}
+  '@react-types/table@3.13.2':
+    resolution: {integrity: sha512-3/BpFIWHXTcGgQEfip87gMNCWPtPNsc3gFkW4qtsevQ+V0577KyNyvQgvFrqMZKnvz3NWFKyshBb7PTevsus4Q==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-types/tabs@3.3.16':
-    resolution: {integrity: sha512-z6AWq243EahGuT4PhIpJXZbFez6XhFWb4KwhSB2CqzHkG5bJJSgKYzIcNuBCLDxO7Qg25I+VpFJxGj+aqKFbzQ==}
+  '@react-types/tabs@3.3.17':
+    resolution: {integrity: sha512-cLcdxWNJe0Kf/pKuPQbEF9Fl+axiP4gB/WVjmAdhCgQ5LCJw2dGcy1LI1SXrlS3PVclbnujD1DJ8z1lIW4Tmww==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-types/textfield@3.12.3':
-    resolution: {integrity: sha512-72tt2GJSyVFPPqZLrlfWqVn5KRnWzXsXCZ3IDawcGunl4pu+2E24jd0CWN9kOi0ETO65flj2sljeytxKytXnlA==}
+  '@react-types/textfield@3.12.4':
+    resolution: {integrity: sha512-cOgzI1dT8X1JMNQ9u2UKoV2L28ROkbFEtzY9At0MqTZYYSxYp3Q7i+XRqIBehu8jOMuCtN9ed9EgwVSfkicyLQ==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
-  '@react-types/tooltip@3.4.18':
-    resolution: {integrity: sha512-/eG8hiW0D4vaCqGDa4ttb+Jnbiz6nUr5+f+LRgz3AnIkdjS9eOhpn6vXMX4hkNgcN5FGfA4Uu1C1QdM6W97Kfw==}
+  '@react-types/tooltip@3.4.19':
+    resolution: {integrity: sha512-OR/pwZReWbCIxuHJYB1L4fTwliA+mzVvUJMWwXIRy6Eh5d07spS3FZEKFvOgjMxA1nyv5PLf8eyr5RuuP1GGAA==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
 
@@ -2940,32 +2950,32 @@ packages:
   '@shikijs/core@1.29.2':
     resolution: {integrity: sha512-vju0lY9r27jJfOY4Z7+Rt/nIOjzJpZ3y+nYpqtUZInVoXQ/TJZcfGnNOGnKjFdVZb8qexiCuSlZRKcGfhhTTZQ==}
 
-  '@shikijs/core@3.8.0':
-    resolution: {integrity: sha512-gWt8NNZFurL6FMESO4lEsmspDh0H1fyUibhx1NnEH/S3kOXgYiWa6ZFqy+dcjBLhZqCXsepuUaL1QFXk6PrpsQ==}
+  '@shikijs/core@3.8.1':
+    resolution: {integrity: sha512-uTSXzUBQ/IgFcUa6gmGShCHr4tMdR3pxUiiWKDm8pd42UKJdYhkAYsAmHX5mTwybQ5VyGDgTjW4qKSsRvGSang==}
 
   '@shikijs/engine-javascript@1.29.2':
     resolution: {integrity: sha512-iNEZv4IrLYPv64Q6k7EPpOCE/nuvGiKl7zxdq0WFuRPF5PAE9PRo2JGq/d8crLusM59BRemJ4eOqrFrC4wiQ+A==}
 
-  '@shikijs/engine-javascript@3.8.0':
-    resolution: {integrity: sha512-IBULFFpQ1N5Cg/C7jPCGnjIKz72CcRtD0BIbNhSuXPUOxLG0bF1URsP/uLfxQFQ9ORfunCQwL7UuSX1RSRBwUQ==}
+  '@shikijs/engine-javascript@3.8.1':
+    resolution: {integrity: sha512-rZRp3BM1llrHkuBPAdYAzjlF7OqlM0rm/7EWASeCcY7cRYZIrOnGIHE9qsLz5TCjGefxBFnwgIECzBs2vmOyKA==}
 
   '@shikijs/engine-oniguruma@1.29.2':
     resolution: {integrity: sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA==}
 
-  '@shikijs/engine-oniguruma@3.8.0':
-    resolution: {integrity: sha512-Tx7kR0oFzqa+rY7t80LjN8ZVtHO3a4+33EUnBVx2qYP3fGxoI9H0bvnln5ySelz9SIUTsS0/Qn+9dg5zcUMsUw==}
+  '@shikijs/engine-oniguruma@3.8.1':
+    resolution: {integrity: sha512-KGQJZHlNY7c656qPFEQpIoqOuC4LrxjyNndRdzk5WKB/Ie87+NJCF1xo9KkOUxwxylk7rT6nhlZyTGTC4fCe1g==}
 
   '@shikijs/langs@1.29.2':
     resolution: {integrity: sha512-FIBA7N3LZ+223U7cJDUYd5shmciFQlYkFXlkKVaHsCPgfVLiO+e12FmQE6Tf9vuyEsFe3dIl8qGWKXgEHL9wmQ==}
 
-  '@shikijs/langs@3.8.0':
-    resolution: {integrity: sha512-mfGYuUgjQ5GgXinB5spjGlBVhG2crKRpKkfADlp8r9k/XvZhtNXxyOToSnCEnF0QNiZnJjlt5MmU9PmhRdwAbg==}
+  '@shikijs/langs@3.8.1':
+    resolution: {integrity: sha512-TjOFg2Wp1w07oKnXjs0AUMb4kJvujML+fJ1C5cmEj45lhjbUXtziT1x2bPQb9Db6kmPhkG5NI2tgYW1/DzhUuQ==}
 
   '@shikijs/themes@1.29.2':
     resolution: {integrity: sha512-i9TNZlsq4uoyqSbluIcZkmPL9Bfi3djVxRnofUHwvx/h6SRW3cwgBC5SML7vsDcWyukY0eCzVN980rqP6qNl9g==}
 
-  '@shikijs/themes@3.8.0':
-    resolution: {integrity: sha512-yaZiLuyO23sXe16JFU76KyUMTZCJi4EMQKIrdQt7okoTzI4yAaJhVXT2Uy4k8yBIEFRiia5dtD7gC1t8m6y3oQ==}
+  '@shikijs/themes@3.8.1':
+    resolution: {integrity: sha512-Vu3t3BBLifc0GB0UPg2Pox1naTemrrvyZv2lkiSw3QayVV60me1ujFQwPZGgUTmwXl1yhCPW8Lieesm0CYruLQ==}
 
   '@shikijs/twoslash@1.29.2':
     resolution: {integrity: sha512-2S04ppAEa477tiaLfGEn1QJWbZUmbk8UoPbAEw4PifsrxkBXtAtOflIZJNtuCwz8ptc/TPxy7CO7gW4Uoi6o/g==}
@@ -2973,8 +2983,8 @@ packages:
   '@shikijs/types@1.29.2':
     resolution: {integrity: sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw==}
 
-  '@shikijs/types@3.8.0':
-    resolution: {integrity: sha512-I/b/aNg0rP+kznVDo7s3UK8jMcqEGTtoPDdQ+JlQ2bcJIyu/e2iRvl42GLIDMK03/W1YOHOuhlhQ7aM+XbKUeg==}
+  '@shikijs/types@3.8.1':
+    resolution: {integrity: sha512-5C39Q8/8r1I26suLh+5TPk1DTrbY/kn3IdWA5HdizR0FhlhD05zx5nKCqhzSfDHH3p4S0ZefxWd77DLV+8FhGg==}
 
   '@shikijs/vscode-textmate@10.0.2':
     resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==}
@@ -3120,9 +3130,6 @@ packages:
   '@tybys/wasm-util@0.10.0':
     resolution: {integrity: sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ==}
 
-  '@types/bn.js@5.2.0':
-    resolution: {integrity: sha512-DLbJ1BPqxvQhIGbeu8VbUC1DiAiahHtAYvA0ZEAa4P31F7IaArc8z3C3BRQdWX4mtLQuABG4yzp76ZrS02Ui1Q==}
-
   '@types/concat-stream@2.0.3':
     resolution: {integrity: sha512-3qe4oQAPNwVNwK4C9c8u+VJqv9kez+2MR4qJpoPFfXtgxxif1QbFusvXzK0/Wra2VX07smostI2VMmJNSpZjuQ==}
 
@@ -3258,17 +3265,15 @@ packages:
   '@types/lodash@4.17.20':
     resolution: {integrity: sha512-H3MHACvFUEiujabxhaI/ImO6gUrd8oOurg7LQtS7mbwIXA/cUqWrvBsaeJ23aZEPk1TAYkurjfMbSELfoCXlGA==}
 
-  '@types/lru-cache@5.1.1':
-    resolution: {integrity: sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==}
-
   '@types/mdast@4.0.4':
     resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==}
 
   '@types/mdx@2.0.13':
     resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==}
 
-  '@types/mixpanel-browser@2.60.0':
-    resolution: {integrity: sha512-70oe8T3KdxHwsSo5aZphALdoqcsIorQBrlisnouIn9Do4dmC2C6/D56978CmSE/BO2QHgb85ojPGa4R8OFvVHA==}
+  '@types/mixpanel-browser@2.66.0':
+    resolution: {integrity: sha512-07zYZZ9ZVHc7R4ktM+3a2clZvKkj+EJcYZ/FevTs011Fr9tdp59lVgAskMf6ZQUp3lOHLqi7K3f+9QtmEsqh1w==}
+    deprecated: This is a stub types definition. mixpanel-browser provides its own type definitions, so you do not need this installed.
 
   '@types/ms@2.1.0':
     resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==}
@@ -3276,8 +3281,8 @@ packages:
   '@types/nlcst@2.0.3':
     resolution: {integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==}
 
-  '@types/node@22.16.4':
-    resolution: {integrity: sha512-PYRhNtZdm2wH/NT2k/oAJ6/f2VD2N2Dag0lGlx2vWgMSJXGNmlce5MiTQzoWAiIJtso30mjnfQCOKVH+kAQC/g==}
+  '@types/node@22.16.5':
+    resolution: {integrity: sha512-bJFoMATwIGaxxx8VJPeM8TonI8t579oRvgAuT8zFugJsJZgzqv0Fu8Mhp68iecjzG7cnN3mO2dJQ5uUM2EFrgQ==}
 
   '@types/parse-json@4.0.2':
     resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==}
@@ -3645,8 +3650,8 @@ packages:
   ajv@8.17.1:
     resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==}
 
-  algoliasearch@5.33.0:
-    resolution: {integrity: sha512-WdgSkmyTec5n2W2FA2/7Q7TCSajCV0X6w57u3H5GHnw0UCp/G5xb33/Jx1FX3uMtz17P3wGEzMCP82d0LJqMow==}
+  algoliasearch@5.34.1:
+    resolution: {integrity: sha512-s70HlfBgswgEdmCYkUJG8i/ULYhbkk8N9+N8JsWUwszcp7eauPEr5tIX4BY0qDGeKWQ/qZvmt4mxwTusYY23sg==}
     engines: {node: '>= 14.0.0'}
 
   ansi-align@3.0.1:
@@ -4465,8 +4470,8 @@ packages:
   eastasianwidth@0.2.0:
     resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
 
-  electron-to-chromium@1.5.184:
-    resolution: {integrity: sha512-zlaUk/wwnR/27FHNarzOtMgfxD1Q0/2Aby7PnURumQTal7yauqQ3c2HHcG/pjLFTvF3AWv44kMWyArVlfHeDlw==}
+  electron-to-chromium@1.5.190:
+    resolution: {integrity: sha512-k4McmnB2091YIsdCgkS0fMVMPOJgxl93ltFzaryXqwip1AaxeDqKCGLxkXODDA5Ab/D+tV5EL5+aTx76RvLRxw==}
 
   elliptic@6.6.1:
     resolution: {integrity: sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==}
@@ -4559,8 +4564,8 @@ packages:
     engines: {node: '>=12'}
     hasBin: true
 
-  esbuild@0.25.6:
-    resolution: {integrity: sha512-GVuzuUwtdsghE3ocJ9Bs8PNoF13HNQ5TXbEi2AhvVb8xU1Iwt9Fos9FEamfoee+u/TOsn7GUWc04lz46n2bbTg==}
+  esbuild@0.25.8:
+    resolution: {integrity: sha512-vVC0USHGtMi8+R4Kz8rt6JhEWLxsv9Rnu/lGYbPR8u47B+DCBksq9JarW0zOO7bs37hyOK1l2/oqtbciutL5+Q==}
     engines: {node: '>=18'}
     hasBin: true
 
@@ -4887,8 +4892,8 @@ packages:
     resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==}
     engines: {node: '>=14'}
 
-  form-data@4.0.3:
-    resolution: {integrity: sha512-qsITQPfmvMOSAdeyZ+12I1c+CKSstAFAwu+97zrnWAbIr5u8wfsExUzCesVLC8NgHuRUqNN4Zy6UPWUTRGslcA==}
+  form-data@4.0.4:
+    resolution: {integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==}
     engines: {node: '>= 6'}
 
   format@0.2.2:
@@ -4901,8 +4906,8 @@ packages:
   fraction.js@4.3.7:
     resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==}
 
-  framer-motion@12.23.6:
-    resolution: {integrity: sha512-dsJ389QImVE3lQvM8Mnk99/j8tiZDM/7706PCqvkQ8sSCnpmWxsgX+g0lj7r5OBVL0U36pIecCTBoIWcM2RuKw==}
+  framer-motion@12.23.9:
+    resolution: {integrity: sha512-TqEHXj8LWfQSKqfdr5Y4mYltYLw96deu6/K9kGDd+ysqRJPNwF9nb5mZcrLmybHbU7gcJ+HQar41U3UTGanbbQ==}
     peerDependencies:
       '@emotion/is-prop-valid': '*'
       react: ^18.0.0 || ^19.0.0
@@ -5069,8 +5074,8 @@ packages:
     peerDependencies:
       hardhat: ^2.0.0
 
-  hardhat@2.25.0:
-    resolution: {integrity: sha512-yBiA74Yj3VnTRj7lhnn8GalvBdvsMOqTKRrRATSy/2v0VIR2hR0Jcnmfn4aQBLtGAnr3Q2c8CxL0g3LYegUp+g==}
+  hardhat@2.26.1:
+    resolution: {integrity: sha512-CXWuUaTtehxiHPCdlitntctfeYRgujmXkNX5gnrD5jdA6HhRQt+WWBZE/gHXbE29y/wDmmUL2d652rI0ctjqjw==}
     hasBin: true
     peerDependencies:
       ts-node: '*'
@@ -5685,8 +5690,8 @@ packages:
     resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
     hasBin: true
 
-  loupe@3.1.4:
-    resolution: {integrity: sha512-wJzkKwJrheKtknCOKNEtDK4iqg/MxmZheEMtSTYvnzRdEYaZzmgH976nenp8WdJRdx5Vc1X/9MO0Oszl6ezeXg==}
+  loupe@3.2.0:
+    resolution: {integrity: sha512-2NCfZcT5VGVNX9mSZIxLRkEAegDGBpuQZBy13desuHeVORmBDyAET4TkJr4SjqQy3A8JDofMN6LpkK8Xcm/dlw==}
 
   lru-cache@10.4.3:
     resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
@@ -5707,9 +5712,9 @@ packages:
   markdown-table@3.0.4:
     resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==}
 
-  marked@15.0.12:
-    resolution: {integrity: sha512-8dD6FusOQSrpv9Z1rdNMdlSgQOIP880DHqnohobOmYLElGEqAL/JvxvuxZO16r4HtjTlfPRDC1hbvxC9dPN2nA==}
-    engines: {node: '>= 18'}
+  marked@16.1.1:
+    resolution: {integrity: sha512-ij/2lXfCRT71L6u0M29tJPhP0bM5shLL3u5BePhFwPELj2blMJ6GDtD7PfJhRLhJ/c2UwrK17ySVcDzy2YHjHQ==}
+    engines: {node: '>= 20'}
     hasBin: true
 
   math-intrinsics@1.1.0:
@@ -5787,8 +5792,8 @@ packages:
     resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
     engines: {node: '>= 8'}
 
-  mermaid@11.8.1:
-    resolution: {integrity: sha512-VSXJLqP1Sqw5sGr273mhvpPRhXwE6NlmMSqBZQw+yZJoAJkOIPPn/uT3teeCBx60Fkt5zEI3FrH2eVT0jXRDzw==}
+  mermaid@11.9.0:
+    resolution: {integrity: sha512-YdPXn9slEwO0omQfQIsW6vS84weVQftIyyTGAZCwM//MGhPzL1+l6vO6bkf0wnP4tHigH1alZ5Ooy3HXI2gOag==}
 
   mhchemparser@4.2.1:
     resolution: {integrity: sha512-kYmyrCirqJf3zZ9t/0wGgRZ4/ZJw//VwaRVGA75C4nhE60vtnIzhl9J9ndkX/h6hxSN7pjg/cE0VxbnNM+bnDQ==}
@@ -5971,8 +5976,8 @@ packages:
   mitt@3.0.1:
     resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==}
 
-  mixpanel-browser@2.66.0:
-    resolution: {integrity: sha512-n02abeEhQCNHnpQlYTYx8EzcZGpNXvmw8ozgbFiTbthMRY65aPXuRat5hCiZXllZ+UY31awszFx/LpryPwie0A==}
+  mixpanel-browser@2.67.0:
+    resolution: {integrity: sha512-LudY4eRIkvjEpAlIAg10i2T2mbtiKZ4XlMGbTyF1kcAhEqMa9JhEEdEcjxYPwiKhuMVSBM3RVkNCZaNqcnE4ww==}
 
   mj-context-menu@0.6.1:
     resolution: {integrity: sha512-7NO5s6n10TIV96d4g2uDpG7ZDpIhMh0QNfGdJw/W47JswFcosz457wqz/b5sAKvl12sxINGFCn80NZHKwxQEXA==}
@@ -5993,14 +5998,14 @@ packages:
     engines: {node: '>= 14.0.0'}
     hasBin: true
 
-  motion-dom@12.23.6:
-    resolution: {integrity: sha512-G2w6Nw7ZOVSzcQmsdLc0doMe64O/Sbuc2bVAbgMz6oP/6/pRStKRiVRV4bQfHp5AHYAKEGhEdVHTM+R3FDgi5w==}
+  motion-dom@12.23.9:
+    resolution: {integrity: sha512-6Sv++iWS8XMFCgU1qwKj9l4xuC47Hp4+2jvPfyTXkqDg2tTzSgX6nWKD4kNFXk0k7llO59LZTPuJigza4A2K1A==}
 
   motion-utils@12.23.6:
     resolution: {integrity: sha512-eAWoPgr4eFEOFfg2WjIsMoqJTW6Z8MTUCgn/GZ3VRpClWBdnbjryiA3ZSNLyxCTmCQx4RmYX6jX1iWHbenUPNQ==}
 
-  motion@12.23.6:
-    resolution: {integrity: sha512-6U55IW5i6Vut2ryKEhrZKg55490k9d6qdGXZoNSf98oQgDj5D7bqTnVJotQ6UW3AS6QfbW6KSLa7/e1gy+a07g==}
+  motion@12.23.9:
+    resolution: {integrity: sha512-5PDgsbNtZ4cpfew3STYL0p06rIiy8vOveQuQBXUAa2+m1WMzjf65DXYn6eo88dM2s+XLxAQq3ZiOjcnKMACEtQ==}
     peerDependencies:
       '@emotion/is-prop-valid': '*'
       react: ^18.0.0 || ^19.0.0
@@ -6032,8 +6037,8 @@ packages:
     engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
     hasBin: true
 
-  napi-postinstall@0.3.0:
-    resolution: {integrity: sha512-M7NqKyhODKV1gRLdkwE7pDsZP2/SC2a2vHkOYh9MCpKMbWVfyVfUw5MaH83Fv6XMjxr5jryUp3IDDL9rlxsTeA==}
+  napi-postinstall@0.3.2:
+    resolution: {integrity: sha512-tWVJxJHmBWLy69PvO96TZMZDrzmw5KeiZBz3RHmiM2XZ9grBJ2WgMAFVVg25nqp3ZjTFUs2Ftw1JhscL3Teliw==}
     engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
     hasBin: true
 
@@ -6600,8 +6605,8 @@ packages:
     resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==}
     engines: {node: '>= 0.8'}
 
-  react-aria@3.41.1:
-    resolution: {integrity: sha512-5mujwnW6/NHvONDecb7DiWkzI27dzBO1auKt4KkgNuW+Awud1LCaK/NOlHp4xZl3fSfh1ROpdAKERHCh7nvAAQ==}
+  react-aria@3.42.0:
+    resolution: {integrity: sha512-lZF1tVmcO6mTWBHpmo4r58lBxIkt/DeF1gu5vrLv2lF4H213VGdSIG8ogQgMc2NaLHK720wafYVM2m5pRUIKdg==}
     peerDependencies:
       react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
       react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
@@ -6646,8 +6651,8 @@ packages:
   react-is@18.3.1:
     resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==}
 
-  react-keyed-flatten-children@5.0.0:
-    resolution: {integrity: sha512-XA5ah02sZAeDrbz4Lusd4acqG5q5BtVwPHWierruVhrgX6CMCldbGcTZZM14cQZ+GWq+tzRzEpsCvnTtLODvjw==}
+  react-keyed-flatten-children@5.0.1:
+    resolution: {integrity: sha512-bZhTocogwo+q6zz3+HAQexckXhm+Ko8CaujKO6A138kVpRtF4xN8OmLE7F1Qv9YcDJrZ8gPXkJdM/VgcKjJimg==}
     peerDependencies:
       react: '>=18.0.0'
       react-is: '>=18.0.0'
@@ -6962,8 +6967,8 @@ packages:
   safer-buffer@2.1.2:
     resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
 
-  satori@0.15.2:
-    resolution: {integrity: sha512-vu/49vdc8MzV5jUchs3TIRDCOkOvMc1iJ11MrZvhg9tE4ziKIEIBjBZvies6a9sfM2vQ2gc3dXeu6rCK7AztHA==}
+  satori@0.16.1:
+    resolution: {integrity: sha512-JM4bFaca8HMA11Xyfgrclv9qIPnd9uhUDr2oYrVlzqTrV7EA/VEeq/7hwe8r0eQP4JwNVW70JBtLRk0v48BTXg==}
     engines: {node: '>=16'}
 
   saxes@6.0.0:
@@ -7029,8 +7034,8 @@ packages:
   shiki@1.29.2:
     resolution: {integrity: sha512-njXuliz/cP+67jU2hukkxCNuH1yUi4QfdZZY+sMr5PPrIyXSu5iTb/qYC4BiWWB0vZ+7TbdvYUCeL23zpwCfbg==}
 
-  shiki@3.8.0:
-    resolution: {integrity: sha512-yPqK0y68t20aakv+3aMTpUMJZd6UHaBY2/SBUDowh9M70gVUwqT0bf7Kz5CWG0AXfHtFvXCHhBBHVAzdp0ILoQ==}
+  shiki@3.8.1:
+    resolution: {integrity: sha512-+MYIyjwGPCaegbpBeFN9+oOifI8CKiKG3awI/6h3JeT85c//H2wDW/xCJEGuQ5jPqtbboKNqNy+JyX9PYpGwNg==}
 
   side-channel-list@1.0.0:
     resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==}
@@ -7096,9 +7101,9 @@ packages:
     resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
     engines: {node: '>=0.10.0'}
 
-  source-map@0.7.4:
-    resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==}
-    engines: {node: '>= 8'}
+  source-map@0.7.6:
+    resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==}
+    engines: {node: '>= 12'}
 
   source-map@0.8.0-beta.0:
     resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==}
@@ -7307,8 +7312,8 @@ packages:
   symbol-tree@3.2.4:
     resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==}
 
-  synckit@0.11.8:
-    resolution: {integrity: sha512-+XZ+r1XGIJGeQk3VvXhT6xx/VpbHsRzsTkGgF6E5RX9TTXD0118l87puaEBZ566FhqblC6U0d4XnubznJDm30A==}
+  synckit@0.11.11:
+    resolution: {integrity: sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==}
     engines: {node: ^14.18.0 || >=16.0.0}
 
   system-architecture@0.1.0:
@@ -7471,38 +7476,38 @@ packages:
     engines: {node: '>=18.0.0'}
     hasBin: true
 
-  turbo-darwin-64@2.5.4:
-    resolution: {integrity: sha512-ah6YnH2dErojhFooxEzmvsoZQTMImaruZhFPfMKPBq8sb+hALRdvBNLqfc8NWlZq576FkfRZ/MSi4SHvVFT9PQ==}
+  turbo-darwin-64@2.5.5:
+    resolution: {integrity: sha512-RYnTz49u4F5tDD2SUwwtlynABNBAfbyT2uU/brJcyh5k6lDLyNfYKdKmqd3K2ls4AaiALWrFKVSBsiVwhdFNzQ==}
     cpu: [x64]
     os: [darwin]
 
-  turbo-darwin-arm64@2.5.4:
-    resolution: {integrity: sha512-2+Nx6LAyuXw2MdXb7pxqle3MYignLvS7OwtsP9SgtSBaMlnNlxl9BovzqdYAgkUW3AsYiQMJ/wBRb7d+xemM5A==}
+  turbo-darwin-arm64@2.5.5:
+    resolution: {integrity: sha512-Tk+ZeSNdBobZiMw9aFypQt0DlLsWSFWu1ymqsAdJLuPoAH05qCfYtRxE1pJuYHcJB5pqI+/HOxtJoQ40726Btw==}
     cpu: [arm64]
     os: [darwin]
 
-  turbo-linux-64@2.5.4:
-    resolution: {integrity: sha512-5May2kjWbc8w4XxswGAl74GZ5eM4Gr6IiroqdLhXeXyfvWEdm2mFYCSWOzz0/z5cAgqyGidF1jt1qzUR8hTmOA==}
+  turbo-linux-64@2.5.5:
+    resolution: {integrity: sha512-2/XvMGykD7VgsvWesZZYIIVXMlgBcQy+ZAryjugoTcvJv8TZzSU/B1nShcA7IAjZ0q7OsZ45uP2cOb8EgKT30w==}
     cpu: [x64]
     os: [linux]
 
-  turbo-linux-arm64@2.5.4:
-    resolution: {integrity: sha512-/2yqFaS3TbfxV3P5yG2JUI79P7OUQKOUvAnx4MV9Bdz6jqHsHwc9WZPpO4QseQm+NvmgY6ICORnoVPODxGUiJg==}
+  turbo-linux-arm64@2.5.5:
+    resolution: {integrity: sha512-DW+8CjCjybu0d7TFm9dovTTVg1VRnlkZ1rceO4zqsaLrit3DgHnN4to4uwyuf9s2V/BwS3IYcRy+HG9BL596Iw==}
     cpu: [arm64]
     os: [linux]
 
-  turbo-windows-64@2.5.4:
-    resolution: {integrity: sha512-EQUO4SmaCDhO6zYohxIjJpOKRN3wlfU7jMAj3CgcyTPvQR/UFLEKAYHqJOnJtymbQmiiM/ihX6c6W6Uq0yC7mA==}
+  turbo-windows-64@2.5.5:
+    resolution: {integrity: sha512-q5p1BOy8ChtSZfULuF1BhFMYIx6bevXu4fJ+TE/hyNfyHJIfjl90Z6jWdqAlyaFLmn99X/uw+7d6T/Y/dr5JwQ==}
     cpu: [x64]
     os: [win32]
 
-  turbo-windows-arm64@2.5.4:
-    resolution: {integrity: sha512-oQ8RrK1VS8lrxkLriotFq+PiF7iiGgkZtfLKF4DDKsmdbPo0O9R2mQxm7jHLuXraRCuIQDWMIw6dpcr7Iykf4A==}
+  turbo-windows-arm64@2.5.5:
+    resolution: {integrity: sha512-AXbF1KmpHUq3PKQwddMGoKMYhHsy5t1YBQO8HZ04HLMR0rWv9adYlQ8kaeQJTko1Ay1anOBFTqaxfVOOsu7+1Q==}
     cpu: [arm64]
     os: [win32]
 
-  turbo@2.5.4:
-    resolution: {integrity: sha512-kc8ZibdRcuWUG1pbYSBFWqmIjynlD8Lp7IB6U3vIzvOv9VG+6Sp8bzyeBWE3Oi8XV5KsQrznyRTBPvrf99E4mA==}
+  turbo@2.5.5:
+    resolution: {integrity: sha512-eZ7wI6KjtT1eBqCnh2JPXWNUAxtoxxfi6VdBdZFvil0ychCOTxbm7YLRBi1JSt7U3c+u3CLxpoPxLdvr/Npr3A==}
     hasBin: true
 
   twoslash-protocol@0.2.12:
@@ -7754,8 +7759,8 @@ packages:
   victory-vendor@36.9.2:
     resolution: {integrity: sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ==}
 
-  viem@2.31.7:
-    resolution: {integrity: sha512-mpB8Hp6xK77E/b/yJmpAIQcxcOfpbrwWNItjnXaIA8lxZYt4JS433Pge2gg6Hp3PwyFtaUMh01j5L8EXnLTjQQ==}
+  viem@2.33.0:
+    resolution: {integrity: sha512-SxBM3CmeU+LWLlBclV9MPdbuFV8mQEl0NeRc9iyYU4a7Xb5sr5oku3s/bRGTPpEP+1hCAHYpM09/ui3/dQ6EsA==}
     peerDependencies:
       typescript: '>=5.0.4'
     peerDependenciesMeta:
@@ -8046,6 +8051,9 @@ packages:
     resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==}
     engines: {node: '>=12.20'}
 
+  yoga-layout@3.2.1:
+    resolution: {integrity: sha512-0LPOt3AxKqMdFBZA3HBAt/t/8vIKq7VaQYbuA8WxCgung+p9TVyKRYdpvCb80HcdTN2NkbIKbhNwKUfm3tQywQ==}
+
   yoga-wasm-web@0.3.3:
     resolution: {integrity: sha512-N+d4UJSJbt/R3wqY7Coqs5pcV0aUj2j9IaQ3rNj9bVCLld8tTGKRa2USARjnvZJWVx1NDmQev8EknoczaOQDOA==}
 
@@ -8076,110 +8084,110 @@ snapshots:
 
   '@adraffy/ens-normalize@1.11.0': {}
 
-  '@algolia/autocomplete-core@1.17.9(@algolia/client-search@5.33.0)(algoliasearch@5.33.0)(search-insights@2.17.3)':
+  '@algolia/autocomplete-core@1.17.9(@algolia/client-search@5.34.1)(algoliasearch@5.34.1)(search-insights@2.17.3)':
     dependencies:
-      '@algolia/autocomplete-plugin-algolia-insights': 1.17.9(@algolia/client-search@5.33.0)(algoliasearch@5.33.0)(search-insights@2.17.3)
-      '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.33.0)(algoliasearch@5.33.0)
+      '@algolia/autocomplete-plugin-algolia-insights': 1.17.9(@algolia/client-search@5.34.1)(algoliasearch@5.34.1)(search-insights@2.17.3)
+      '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.34.1)(algoliasearch@5.34.1)
     transitivePeerDependencies:
       - '@algolia/client-search'
       - algoliasearch
       - search-insights
 
-  '@algolia/autocomplete-plugin-algolia-insights@1.17.9(@algolia/client-search@5.33.0)(algoliasearch@5.33.0)(search-insights@2.17.3)':
+  '@algolia/autocomplete-plugin-algolia-insights@1.17.9(@algolia/client-search@5.34.1)(algoliasearch@5.34.1)(search-insights@2.17.3)':
     dependencies:
-      '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.33.0)(algoliasearch@5.33.0)
+      '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.34.1)(algoliasearch@5.34.1)
       search-insights: 2.17.3
     transitivePeerDependencies:
       - '@algolia/client-search'
       - algoliasearch
 
-  '@algolia/autocomplete-preset-algolia@1.17.9(@algolia/client-search@5.33.0)(algoliasearch@5.33.0)':
+  '@algolia/autocomplete-preset-algolia@1.17.9(@algolia/client-search@5.34.1)(algoliasearch@5.34.1)':
     dependencies:
-      '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.33.0)(algoliasearch@5.33.0)
-      '@algolia/client-search': 5.33.0
-      algoliasearch: 5.33.0
+      '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.34.1)(algoliasearch@5.34.1)
+      '@algolia/client-search': 5.34.1
+      algoliasearch: 5.34.1
 
-  '@algolia/autocomplete-shared@1.17.9(@algolia/client-search@5.33.0)(algoliasearch@5.33.0)':
+  '@algolia/autocomplete-shared@1.17.9(@algolia/client-search@5.34.1)(algoliasearch@5.34.1)':
     dependencies:
-      '@algolia/client-search': 5.33.0
-      algoliasearch: 5.33.0
+      '@algolia/client-search': 5.34.1
+      algoliasearch: 5.34.1
 
-  '@algolia/client-abtesting@5.33.0':
+  '@algolia/client-abtesting@5.34.1':
     dependencies:
-      '@algolia/client-common': 5.33.0
-      '@algolia/requester-browser-xhr': 5.33.0
-      '@algolia/requester-fetch': 5.33.0
-      '@algolia/requester-node-http': 5.33.0
+      '@algolia/client-common': 5.34.1
+      '@algolia/requester-browser-xhr': 5.34.1
+      '@algolia/requester-fetch': 5.34.1
+      '@algolia/requester-node-http': 5.34.1
 
-  '@algolia/client-analytics@5.33.0':
+  '@algolia/client-analytics@5.34.1':
     dependencies:
-      '@algolia/client-common': 5.33.0
-      '@algolia/requester-browser-xhr': 5.33.0
-      '@algolia/requester-fetch': 5.33.0
-      '@algolia/requester-node-http': 5.33.0
+      '@algolia/client-common': 5.34.1
+      '@algolia/requester-browser-xhr': 5.34.1
+      '@algolia/requester-fetch': 5.34.1
+      '@algolia/requester-node-http': 5.34.1
 
-  '@algolia/client-common@5.33.0': {}
+  '@algolia/client-common@5.34.1': {}
 
-  '@algolia/client-insights@5.33.0':
+  '@algolia/client-insights@5.34.1':
     dependencies:
-      '@algolia/client-common': 5.33.0
-      '@algolia/requester-browser-xhr': 5.33.0
-      '@algolia/requester-fetch': 5.33.0
-      '@algolia/requester-node-http': 5.33.0
+      '@algolia/client-common': 5.34.1
+      '@algolia/requester-browser-xhr': 5.34.1
+      '@algolia/requester-fetch': 5.34.1
+      '@algolia/requester-node-http': 5.34.1
 
-  '@algolia/client-personalization@5.33.0':
+  '@algolia/client-personalization@5.34.1':
     dependencies:
-      '@algolia/client-common': 5.33.0
-      '@algolia/requester-browser-xhr': 5.33.0
-      '@algolia/requester-fetch': 5.33.0
-      '@algolia/requester-node-http': 5.33.0
+      '@algolia/client-common': 5.34.1
+      '@algolia/requester-browser-xhr': 5.34.1
+      '@algolia/requester-fetch': 5.34.1
+      '@algolia/requester-node-http': 5.34.1
 
-  '@algolia/client-query-suggestions@5.33.0':
+  '@algolia/client-query-suggestions@5.34.1':
     dependencies:
-      '@algolia/client-common': 5.33.0
-      '@algolia/requester-browser-xhr': 5.33.0
-      '@algolia/requester-fetch': 5.33.0
-      '@algolia/requester-node-http': 5.33.0
+      '@algolia/client-common': 5.34.1
+      '@algolia/requester-browser-xhr': 5.34.1
+      '@algolia/requester-fetch': 5.34.1
+      '@algolia/requester-node-http': 5.34.1
 
-  '@algolia/client-search@5.33.0':
+  '@algolia/client-search@5.34.1':
     dependencies:
-      '@algolia/client-common': 5.33.0
-      '@algolia/requester-browser-xhr': 5.33.0
-      '@algolia/requester-fetch': 5.33.0
-      '@algolia/requester-node-http': 5.33.0
+      '@algolia/client-common': 5.34.1
+      '@algolia/requester-browser-xhr': 5.34.1
+      '@algolia/requester-fetch': 5.34.1
+      '@algolia/requester-node-http': 5.34.1
 
-  '@algolia/ingestion@1.33.0':
+  '@algolia/ingestion@1.34.1':
     dependencies:
-      '@algolia/client-common': 5.33.0
-      '@algolia/requester-browser-xhr': 5.33.0
-      '@algolia/requester-fetch': 5.33.0
-      '@algolia/requester-node-http': 5.33.0
+      '@algolia/client-common': 5.34.1
+      '@algolia/requester-browser-xhr': 5.34.1
+      '@algolia/requester-fetch': 5.34.1
+      '@algolia/requester-node-http': 5.34.1
 
-  '@algolia/monitoring@1.33.0':
+  '@algolia/monitoring@1.34.1':
     dependencies:
-      '@algolia/client-common': 5.33.0
-      '@algolia/requester-browser-xhr': 5.33.0
-      '@algolia/requester-fetch': 5.33.0
-      '@algolia/requester-node-http': 5.33.0
+      '@algolia/client-common': 5.34.1
+      '@algolia/requester-browser-xhr': 5.34.1
+      '@algolia/requester-fetch': 5.34.1
+      '@algolia/requester-node-http': 5.34.1
 
-  '@algolia/recommend@5.33.0':
+  '@algolia/recommend@5.34.1':
     dependencies:
-      '@algolia/client-common': 5.33.0
-      '@algolia/requester-browser-xhr': 5.33.0
-      '@algolia/requester-fetch': 5.33.0
-      '@algolia/requester-node-http': 5.33.0
+      '@algolia/client-common': 5.34.1
+      '@algolia/requester-browser-xhr': 5.34.1
+      '@algolia/requester-fetch': 5.34.1
+      '@algolia/requester-node-http': 5.34.1
 
-  '@algolia/requester-browser-xhr@5.33.0':
+  '@algolia/requester-browser-xhr@5.34.1':
     dependencies:
-      '@algolia/client-common': 5.33.0
+      '@algolia/client-common': 5.34.1
 
-  '@algolia/requester-fetch@5.33.0':
+  '@algolia/requester-fetch@5.34.1':
     dependencies:
-      '@algolia/client-common': 5.33.0
+      '@algolia/client-common': 5.34.1
 
-  '@algolia/requester-node-http@5.33.0':
+  '@algolia/requester-node-http@5.34.1':
     dependencies:
-      '@algolia/client-common': 5.33.0
+      '@algolia/client-common': 5.34.1
 
   '@alloc/quick-lru@5.2.0': {}
 
@@ -8212,7 +8220,7 @@ snapshots:
   '@babel/generator@7.28.0':
     dependencies:
       '@babel/parser': 7.28.0
-      '@babel/types': 7.28.1
+      '@babel/types': 7.28.2
       '@jridgewell/gen-mapping': 0.3.12
       '@jridgewell/trace-mapping': 0.3.29
       jsesc: 3.1.0
@@ -8222,7 +8230,7 @@ snapshots:
   '@babel/helper-module-imports@7.27.1':
     dependencies:
       '@babel/traverse': 7.28.0
-      '@babel/types': 7.28.1
+      '@babel/types': 7.28.2
     transitivePeerDependencies:
       - supports-color
 
@@ -8232,15 +8240,15 @@ snapshots:
 
   '@babel/parser@7.28.0':
     dependencies:
-      '@babel/types': 7.28.1
+      '@babel/types': 7.28.2
 
-  '@babel/runtime@7.27.6': {}
+  '@babel/runtime@7.28.2': {}
 
   '@babel/template@7.27.2':
     dependencies:
       '@babel/code-frame': 7.27.1
       '@babel/parser': 7.28.0
-      '@babel/types': 7.28.1
+      '@babel/types': 7.28.2
 
   '@babel/traverse@7.28.0':
     dependencies:
@@ -8249,22 +8257,22 @@ snapshots:
       '@babel/helper-globals': 7.28.0
       '@babel/parser': 7.28.0
       '@babel/template': 7.27.2
-      '@babel/types': 7.28.1
+      '@babel/types': 7.28.2
       debug: 4.4.1(supports-color@8.1.1)
     transitivePeerDependencies:
       - supports-color
 
-  '@babel/types@7.28.1':
+  '@babel/types@7.28.2':
     dependencies:
       '@babel/helper-string-parser': 7.27.1
       '@babel/helper-validator-identifier': 7.27.1
 
   '@base-ui-components/react@1.0.0-alpha.7(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@babel/runtime': 7.27.6
+      '@babel/runtime': 7.28.2
       '@floating-ui/react': 0.27.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@floating-ui/utils': 0.2.10
-      '@react-aria/overlays': 3.27.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/overlays': 3.28.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       prop-types: 15.8.1
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
@@ -8318,7 +8326,7 @@ snapshots:
   '@cloudflare/workerd-windows-64@1.20250408.0':
     optional: true
 
-  '@cloudflare/workers-types@4.20250715.0': {}
+  '@cloudflare/workers-types@4.20250724.0': {}
 
   '@corex/deepmerge@4.0.43': {}
 
@@ -8348,12 +8356,12 @@ snapshots:
 
   '@docsearch/css@3.9.0': {}
 
-  '@docsearch/react@3.9.0(@algolia/client-search@5.33.0)(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)':
+  '@docsearch/react@3.9.0(@algolia/client-search@5.34.1)(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)':
     dependencies:
-      '@algolia/autocomplete-core': 1.17.9(@algolia/client-search@5.33.0)(algoliasearch@5.33.0)(search-insights@2.17.3)
-      '@algolia/autocomplete-preset-algolia': 1.17.9(@algolia/client-search@5.33.0)(algoliasearch@5.33.0)
+      '@algolia/autocomplete-core': 1.17.9(@algolia/client-search@5.34.1)(algoliasearch@5.34.1)(search-insights@2.17.3)
+      '@algolia/autocomplete-preset-algolia': 1.17.9(@algolia/client-search@5.34.1)(algoliasearch@5.34.1)
       '@docsearch/css': 3.9.0
-      algoliasearch: 5.33.0
+      algoliasearch: 5.34.1
     optionalDependencies:
       '@types/react': 18.3.23
       react: 18.3.1
@@ -8362,13 +8370,13 @@ snapshots:
     transitivePeerDependencies:
       - '@algolia/client-search'
 
-  '@edgeandnode/common@7.0.4(hardhat@2.25.0(typescript@5.8.3))':
+  '@edgeandnode/common@7.0.4(hardhat@2.26.1(typescript@5.8.3))':
     dependencies:
       '@ethersproject/providers': 5.8.0
       '@pinax/graph-networks-registry': 0.6.7
       '@uniswap/sdk-core': 7.7.2
       '@uniswap/v3-core': 1.0.1
-      '@uniswap/v3-sdk': 3.25.2(hardhat@2.25.0(typescript@5.8.3))
+      '@uniswap/v3-sdk': 3.25.2(hardhat@2.26.1(typescript@5.8.3))
       dataloader: 2.2.3
       dayjs: 1.11.13
       decimal.js: 10.6.0
@@ -8382,12 +8390,12 @@ snapshots:
       - hardhat
       - utf-8-validate
 
-  '@edgeandnode/ens@2.3.0(typescript@5.8.3)(viem@2.31.7(typescript@5.8.3)(zod@3.25.76))':
+  '@edgeandnode/ens@2.3.0(typescript@5.8.3)(viem@2.33.0(typescript@5.8.3)(zod@3.25.76))':
     dependencies:
-      '@ensdomains/ensjs': 4.0.2(typescript@5.8.3)(viem@2.31.7(typescript@5.8.3)(zod@3.25.76))(zod@3.25.76)
+      '@ensdomains/ensjs': 4.0.2(typescript@5.8.3)(viem@2.33.0(typescript@5.8.3)(zod@3.25.76))(zod@3.25.76)
       graphql: 16.11.0
       graphql-request: 7.2.0(graphql@16.11.0)
-      viem: 2.31.7(typescript@5.8.3)(zod@3.25.76)
+      viem: 2.33.0(typescript@5.8.3)(zod@3.25.76)
       zod: 3.25.76
     transitivePeerDependencies:
       - encoding
@@ -8416,15 +8424,15 @@ snapshots:
       - eslint-plugin-import-x
       - supports-color
 
-  '@edgeandnode/gds@6.7.1(@emotion/is-prop-valid@0.8.8)(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(@theme-ui/core@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(dayjs@1.11.13)(hardhat@2.25.0(typescript@5.8.3))(next@14.2.30(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)(theme-ui@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(typescript@5.8.3)':
+  '@edgeandnode/gds@6.7.1(@emotion/is-prop-valid@0.8.8)(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(@theme-ui/core@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(dayjs@1.11.13)(hardhat@2.26.1(typescript@5.8.3))(next@14.2.30(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)(theme-ui@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(typescript@5.8.3)':
     dependencies:
       '@base-ui-components/react': 1.0.0-alpha.7(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@bramus/style-observer': 2.0.2
-      '@edgeandnode/common': 7.0.4(hardhat@2.25.0(typescript@5.8.3))
+      '@edgeandnode/common': 7.0.4(hardhat@2.26.1(typescript@5.8.3))
       '@emotion/react': 11.14.0(@types/react@18.3.23)(react@18.3.1)
       '@figma/code-connect': 1.3.4
       '@floating-ui/react-dom': 2.1.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@headlessui/react': 2.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@headlessui/react': 2.2.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@phosphor-icons/react': 2.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@radix-ui/react-accordion': 1.2.11(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@radix-ui/react-alert-dialog': 1.1.14(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -8438,7 +8446,7 @@ snapshots:
       '@radix-ui/react-switch': 1.2.5(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@radix-ui/react-toast': 1.2.14(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@radix-ui/react-tooltip': 1.2.7(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/utils': 3.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-hookz/web': 25.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@tailwindcss/container-queries': 0.1.1(tailwindcss@3.4.17)
       '@tanem/react-nprogress': 5.0.55(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -8452,22 +8460,22 @@ snapshots:
       ethers: 5.8.0
       lodash: 4.17.21
       md5: 2.3.0
-      motion: 12.23.6(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      motion: 12.23.9(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       numeral: 2.0.6
       prism-react-renderer: 2.4.1(react@18.3.1)
       prismjs: 1.30.0
       react: 18.3.1
-      react-aria: 3.41.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      react-aria: 3.42.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       react-device-detect: 2.2.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       react-dom: 18.3.1(react@18.3.1)
       react-dropzone: 14.3.8(react@18.3.1)
       react-ga4: 2.1.0
       react-image-crop: 11.0.10(react@18.3.1)
-      react-keyed-flatten-children: 5.0.0(react-is@18.3.1)(react@18.3.1)
+      react-keyed-flatten-children: 5.0.1(react-is@18.3.1)(react@18.3.1)
       react-transition-group: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       react-virtuoso: 4.13.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       recharts: 2.15.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      shiki: 3.8.0
+      shiki: 3.8.1
       tailwindcss: 3.4.17
       theme-ui: 0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)
       typy: 3.3.0
@@ -8491,25 +8499,25 @@ snapshots:
       - typescript
       - utf-8-validate
 
-  '@edgeandnode/go@10.3.1(442dd4704c05a99a69d6fa587fe6972c)':
+  '@edgeandnode/go@10.3.1(1b29eee08dfa1082e05ffae0de269dca)':
     dependencies:
-      '@edgeandnode/common': 7.0.4(hardhat@2.25.0(typescript@5.8.3))
-      '@edgeandnode/ens': 2.3.0(typescript@5.8.3)(viem@2.31.7(typescript@5.8.3)(zod@3.25.76))
-      '@edgeandnode/gds': 6.7.1(@emotion/is-prop-valid@0.8.8)(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(@theme-ui/core@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(dayjs@1.11.13)(hardhat@2.25.0(typescript@5.8.3))(next@14.2.30(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)(theme-ui@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(typescript@5.8.3)
+      '@edgeandnode/common': 7.0.4(hardhat@2.26.1(typescript@5.8.3))
+      '@edgeandnode/ens': 2.3.0(typescript@5.8.3)(viem@2.33.0(typescript@5.8.3)(zod@3.25.76))
+      '@edgeandnode/gds': 6.7.1(@emotion/is-prop-valid@0.8.8)(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(@theme-ui/core@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(dayjs@1.11.13)(hardhat@2.26.1(typescript@5.8.3))(next@14.2.30(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)(theme-ui@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(typescript@5.8.3)
       '@emotion/react': 11.14.0(@types/react@18.3.23)(react@18.3.1)
       '@graphql-typed-document-node/core': 3.2.0(graphql@16.11.0)
       '@radix-ui/react-collapsible': 1.1.11(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@radix-ui/react-dialog': 1.1.14(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@radix-ui/react-navigation-menu': 1.2.13(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/utils': 3.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@tanstack/react-query': 5.83.0(react@18.3.1)
       '@theme-ui/css': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))
       '@web3icons/react': 4.0.19(react@18.3.1)(typescript@5.8.3)
       escape-string-regexp: 5.0.0
       graphql: 16.11.0
       graphql-request: 7.2.0(graphql@16.11.0)
-      motion: 12.23.6(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      motion: 12.23.9(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
       tailwindcss: 3.4.17
@@ -8523,18 +8531,18 @@ snapshots:
       - ts-node
       - typescript
 
-  '@emnapi/core@1.4.4':
+  '@emnapi/core@1.4.5':
     dependencies:
-      '@emnapi/wasi-threads': 1.0.3
+      '@emnapi/wasi-threads': 1.0.4
       tslib: 2.8.1
     optional: true
 
-  '@emnapi/runtime@1.4.4':
+  '@emnapi/runtime@1.4.5':
     dependencies:
       tslib: 2.8.1
     optional: true
 
-  '@emnapi/wasi-threads@1.0.3':
+  '@emnapi/wasi-threads@1.0.4':
     dependencies:
       tslib: 2.8.1
     optional: true
@@ -8542,7 +8550,7 @@ snapshots:
   '@emotion/babel-plugin@11.13.5':
     dependencies:
       '@babel/helper-module-imports': 7.27.1
-      '@babel/runtime': 7.27.6
+      '@babel/runtime': 7.28.2
       '@emotion/hash': 0.9.2
       '@emotion/memoize': 0.9.0
       '@emotion/serialize': 1.3.3
@@ -8577,7 +8585,7 @@ snapshots:
 
   '@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1)':
     dependencies:
-      '@babel/runtime': 7.27.6
+      '@babel/runtime': 7.28.2
       '@emotion/babel-plugin': 11.13.5
       '@emotion/cache': 11.14.0
       '@emotion/serialize': 1.3.3
@@ -8613,20 +8621,20 @@ snapshots:
 
   '@ensdomains/address-encoder@1.0.0-rc.3':
     dependencies:
-      '@noble/curves': 1.9.2
+      '@noble/curves': 1.9.4
       '@noble/hashes': 1.8.0
       '@scure/base': 1.2.6
 
   '@ensdomains/address-encoder@1.1.1':
     dependencies:
-      '@noble/curves': 1.9.2
+      '@noble/curves': 1.9.4
       '@noble/hashes': 1.8.0
       '@scure/base': 1.2.6
 
   '@ensdomains/content-hash@3.1.0-rc.1':
     dependencies:
       '@ensdomains/address-encoder': 1.0.0-rc.3
-      '@noble/curves': 1.9.2
+      '@noble/curves': 1.9.4
       '@scure/base': 1.2.6
 
   '@ensdomains/dnsprovejs@0.5.1':
@@ -8635,7 +8643,7 @@ snapshots:
       dns-packet: 5.6.1
       typescript-logging: 1.0.1
 
-  '@ensdomains/ensjs@4.0.2(typescript@5.8.3)(viem@2.31.7(typescript@5.8.3)(zod@3.25.76))(zod@3.25.76)':
+  '@ensdomains/ensjs@4.0.2(typescript@5.8.3)(viem@2.33.0(typescript@5.8.3)(zod@3.25.76))(zod@3.25.76)':
     dependencies:
       '@adraffy/ens-normalize': 1.10.1
       '@ensdomains/address-encoder': 1.1.1
@@ -8647,7 +8655,7 @@ snapshots:
       graphql-request: 6.1.0(graphql@16.11.0)
       pako: 2.1.0
       ts-pattern: 5.7.1
-      viem: 2.31.7(typescript@5.8.3)(zod@3.25.76)
+      viem: 2.33.0(typescript@5.8.3)(zod@3.25.76)
     transitivePeerDependencies:
       - encoding
       - typescript
@@ -8666,7 +8674,7 @@ snapshots:
   '@esbuild/aix-ppc64@0.21.5':
     optional: true
 
-  '@esbuild/aix-ppc64@0.25.6':
+  '@esbuild/aix-ppc64@0.25.8':
     optional: true
 
   '@esbuild/android-arm64@0.17.19':
@@ -8675,7 +8683,7 @@ snapshots:
   '@esbuild/android-arm64@0.21.5':
     optional: true
 
-  '@esbuild/android-arm64@0.25.6':
+  '@esbuild/android-arm64@0.25.8':
     optional: true
 
   '@esbuild/android-arm@0.17.19':
@@ -8684,7 +8692,7 @@ snapshots:
   '@esbuild/android-arm@0.21.5':
     optional: true
 
-  '@esbuild/android-arm@0.25.6':
+  '@esbuild/android-arm@0.25.8':
     optional: true
 
   '@esbuild/android-x64@0.17.19':
@@ -8693,7 +8701,7 @@ snapshots:
   '@esbuild/android-x64@0.21.5':
     optional: true
 
-  '@esbuild/android-x64@0.25.6':
+  '@esbuild/android-x64@0.25.8':
     optional: true
 
   '@esbuild/darwin-arm64@0.17.19':
@@ -8702,7 +8710,7 @@ snapshots:
   '@esbuild/darwin-arm64@0.21.5':
     optional: true
 
-  '@esbuild/darwin-arm64@0.25.6':
+  '@esbuild/darwin-arm64@0.25.8':
     optional: true
 
   '@esbuild/darwin-x64@0.17.19':
@@ -8711,7 +8719,7 @@ snapshots:
   '@esbuild/darwin-x64@0.21.5':
     optional: true
 
-  '@esbuild/darwin-x64@0.25.6':
+  '@esbuild/darwin-x64@0.25.8':
     optional: true
 
   '@esbuild/freebsd-arm64@0.17.19':
@@ -8720,7 +8728,7 @@ snapshots:
   '@esbuild/freebsd-arm64@0.21.5':
     optional: true
 
-  '@esbuild/freebsd-arm64@0.25.6':
+  '@esbuild/freebsd-arm64@0.25.8':
     optional: true
 
   '@esbuild/freebsd-x64@0.17.19':
@@ -8729,7 +8737,7 @@ snapshots:
   '@esbuild/freebsd-x64@0.21.5':
     optional: true
 
-  '@esbuild/freebsd-x64@0.25.6':
+  '@esbuild/freebsd-x64@0.25.8':
     optional: true
 
   '@esbuild/linux-arm64@0.17.19':
@@ -8738,7 +8746,7 @@ snapshots:
   '@esbuild/linux-arm64@0.21.5':
     optional: true
 
-  '@esbuild/linux-arm64@0.25.6':
+  '@esbuild/linux-arm64@0.25.8':
     optional: true
 
   '@esbuild/linux-arm@0.17.19':
@@ -8747,7 +8755,7 @@ snapshots:
   '@esbuild/linux-arm@0.21.5':
     optional: true
 
-  '@esbuild/linux-arm@0.25.6':
+  '@esbuild/linux-arm@0.25.8':
     optional: true
 
   '@esbuild/linux-ia32@0.17.19':
@@ -8756,7 +8764,7 @@ snapshots:
   '@esbuild/linux-ia32@0.21.5':
     optional: true
 
-  '@esbuild/linux-ia32@0.25.6':
+  '@esbuild/linux-ia32@0.25.8':
     optional: true
 
   '@esbuild/linux-loong64@0.17.19':
@@ -8765,7 +8773,7 @@ snapshots:
   '@esbuild/linux-loong64@0.21.5':
     optional: true
 
-  '@esbuild/linux-loong64@0.25.6':
+  '@esbuild/linux-loong64@0.25.8':
     optional: true
 
   '@esbuild/linux-mips64el@0.17.19':
@@ -8774,7 +8782,7 @@ snapshots:
   '@esbuild/linux-mips64el@0.21.5':
     optional: true
 
-  '@esbuild/linux-mips64el@0.25.6':
+  '@esbuild/linux-mips64el@0.25.8':
     optional: true
 
   '@esbuild/linux-ppc64@0.17.19':
@@ -8783,7 +8791,7 @@ snapshots:
   '@esbuild/linux-ppc64@0.21.5':
     optional: true
 
-  '@esbuild/linux-ppc64@0.25.6':
+  '@esbuild/linux-ppc64@0.25.8':
     optional: true
 
   '@esbuild/linux-riscv64@0.17.19':
@@ -8792,7 +8800,7 @@ snapshots:
   '@esbuild/linux-riscv64@0.21.5':
     optional: true
 
-  '@esbuild/linux-riscv64@0.25.6':
+  '@esbuild/linux-riscv64@0.25.8':
     optional: true
 
   '@esbuild/linux-s390x@0.17.19':
@@ -8801,7 +8809,7 @@ snapshots:
   '@esbuild/linux-s390x@0.21.5':
     optional: true
 
-  '@esbuild/linux-s390x@0.25.6':
+  '@esbuild/linux-s390x@0.25.8':
     optional: true
 
   '@esbuild/linux-x64@0.17.19':
@@ -8810,10 +8818,10 @@ snapshots:
   '@esbuild/linux-x64@0.21.5':
     optional: true
 
-  '@esbuild/linux-x64@0.25.6':
+  '@esbuild/linux-x64@0.25.8':
     optional: true
 
-  '@esbuild/netbsd-arm64@0.25.6':
+  '@esbuild/netbsd-arm64@0.25.8':
     optional: true
 
   '@esbuild/netbsd-x64@0.17.19':
@@ -8822,10 +8830,10 @@ snapshots:
   '@esbuild/netbsd-x64@0.21.5':
     optional: true
 
-  '@esbuild/netbsd-x64@0.25.6':
+  '@esbuild/netbsd-x64@0.25.8':
     optional: true
 
-  '@esbuild/openbsd-arm64@0.25.6':
+  '@esbuild/openbsd-arm64@0.25.8':
     optional: true
 
   '@esbuild/openbsd-x64@0.17.19':
@@ -8834,10 +8842,10 @@ snapshots:
   '@esbuild/openbsd-x64@0.21.5':
     optional: true
 
-  '@esbuild/openbsd-x64@0.25.6':
+  '@esbuild/openbsd-x64@0.25.8':
     optional: true
 
-  '@esbuild/openharmony-arm64@0.25.6':
+  '@esbuild/openharmony-arm64@0.25.8':
     optional: true
 
   '@esbuild/sunos-x64@0.17.19':
@@ -8846,7 +8854,7 @@ snapshots:
   '@esbuild/sunos-x64@0.21.5':
     optional: true
 
-  '@esbuild/sunos-x64@0.25.6':
+  '@esbuild/sunos-x64@0.25.8':
     optional: true
 
   '@esbuild/win32-arm64@0.17.19':
@@ -8855,7 +8863,7 @@ snapshots:
   '@esbuild/win32-arm64@0.21.5':
     optional: true
 
-  '@esbuild/win32-arm64@0.25.6':
+  '@esbuild/win32-arm64@0.25.8':
     optional: true
 
   '@esbuild/win32-ia32@0.17.19':
@@ -8864,7 +8872,7 @@ snapshots:
   '@esbuild/win32-ia32@0.21.5':
     optional: true
 
-  '@esbuild/win32-ia32@0.25.6':
+  '@esbuild/win32-ia32@0.25.8':
     optional: true
 
   '@esbuild/win32-x64@0.17.19':
@@ -8873,7 +8881,7 @@ snapshots:
   '@esbuild/win32-x64@0.21.5':
     optional: true
 
-  '@esbuild/win32-x64@0.25.6':
+  '@esbuild/win32-x64@0.25.8':
     optional: true
 
   '@eslint-community/eslint-utils@4.7.0(eslint@8.57.1)':
@@ -9277,11 +9285,11 @@ snapshots:
     dependencies:
       typescript: 5.8.3
 
-  '@headlessui/react@2.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@headlessui/react@2.2.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
       '@floating-ui/react': 0.26.28(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/focus': 3.20.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/focus': 3.21.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/interactions': 3.25.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@tanstack/react-virtual': 3.13.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
@@ -9382,7 +9390,7 @@ snapshots:
 
   '@img/sharp-wasm32@0.33.5':
     dependencies:
-      '@emnapi/runtime': 1.4.4
+      '@emnapi/runtime': 1.4.5
     optional: true
 
   '@img/sharp-win32-ia32@0.33.5':
@@ -9400,7 +9408,7 @@ snapshots:
       '@swc/helpers': 0.5.17
       intl-messageformat: 10.7.16
 
-  '@internationalized/number@3.6.3':
+  '@internationalized/number@3.6.4':
     dependencies:
       '@swc/helpers': 0.5.17
 
@@ -9458,7 +9466,7 @@ snapshots:
       remark-mdx: 3.1.0
       remark-parse: 11.0.0
       remark-rehype: 11.1.2
-      source-map: 0.7.4
+      source-map: 0.7.6
       unified: 11.0.5
       unist-util-position-from-estree: 2.0.0
       unist-util-stringify-position: 4.0.0
@@ -9474,73 +9482,77 @@ snapshots:
       '@types/react': 18.3.23
       react: 18.3.1
 
-  '@mermaid-js/parser@0.6.1':
+  '@mermaid-js/parser@0.6.2':
     dependencies:
       langium: 3.3.1
 
-  '@napi-rs/simple-git-android-arm-eabi@0.1.19':
+  '@napi-rs/simple-git-android-arm-eabi@0.1.21':
+    optional: true
+
+  '@napi-rs/simple-git-android-arm64@0.1.21':
     optional: true
 
-  '@napi-rs/simple-git-android-arm64@0.1.19':
+  '@napi-rs/simple-git-darwin-arm64@0.1.21':
     optional: true
 
-  '@napi-rs/simple-git-darwin-arm64@0.1.19':
+  '@napi-rs/simple-git-darwin-x64@0.1.21':
     optional: true
 
-  '@napi-rs/simple-git-darwin-x64@0.1.19':
+  '@napi-rs/simple-git-freebsd-x64@0.1.21':
     optional: true
 
-  '@napi-rs/simple-git-freebsd-x64@0.1.19':
+  '@napi-rs/simple-git-linux-arm-gnueabihf@0.1.21':
     optional: true
 
-  '@napi-rs/simple-git-linux-arm-gnueabihf@0.1.19':
+  '@napi-rs/simple-git-linux-arm64-gnu@0.1.21':
     optional: true
 
-  '@napi-rs/simple-git-linux-arm64-gnu@0.1.19':
+  '@napi-rs/simple-git-linux-arm64-musl@0.1.21':
     optional: true
 
-  '@napi-rs/simple-git-linux-arm64-musl@0.1.19':
+  '@napi-rs/simple-git-linux-ppc64-gnu@0.1.21':
     optional: true
 
-  '@napi-rs/simple-git-linux-powerpc64le-gnu@0.1.19':
+  '@napi-rs/simple-git-linux-s390x-gnu@0.1.21':
     optional: true
 
-  '@napi-rs/simple-git-linux-s390x-gnu@0.1.19':
+  '@napi-rs/simple-git-linux-x64-gnu@0.1.21':
     optional: true
 
-  '@napi-rs/simple-git-linux-x64-gnu@0.1.19':
+  '@napi-rs/simple-git-linux-x64-musl@0.1.21':
     optional: true
 
-  '@napi-rs/simple-git-linux-x64-musl@0.1.19':
+  '@napi-rs/simple-git-win32-arm64-msvc@0.1.21':
     optional: true
 
-  '@napi-rs/simple-git-win32-arm64-msvc@0.1.19':
+  '@napi-rs/simple-git-win32-ia32-msvc@0.1.21':
     optional: true
 
-  '@napi-rs/simple-git-win32-x64-msvc@0.1.19':
+  '@napi-rs/simple-git-win32-x64-msvc@0.1.21':
     optional: true
 
-  '@napi-rs/simple-git@0.1.19':
+  '@napi-rs/simple-git@0.1.21':
     optionalDependencies:
-      '@napi-rs/simple-git-android-arm-eabi': 0.1.19
-      '@napi-rs/simple-git-android-arm64': 0.1.19
-      '@napi-rs/simple-git-darwin-arm64': 0.1.19
-      '@napi-rs/simple-git-darwin-x64': 0.1.19
-      '@napi-rs/simple-git-freebsd-x64': 0.1.19
-      '@napi-rs/simple-git-linux-arm-gnueabihf': 0.1.19
-      '@napi-rs/simple-git-linux-arm64-gnu': 0.1.19
-      '@napi-rs/simple-git-linux-arm64-musl': 0.1.19
-      '@napi-rs/simple-git-linux-powerpc64le-gnu': 0.1.19
-      '@napi-rs/simple-git-linux-s390x-gnu': 0.1.19
-      '@napi-rs/simple-git-linux-x64-gnu': 0.1.19
-      '@napi-rs/simple-git-linux-x64-musl': 0.1.19
-      '@napi-rs/simple-git-win32-arm64-msvc': 0.1.19
-      '@napi-rs/simple-git-win32-x64-msvc': 0.1.19
+      '@napi-rs/simple-git-android-arm-eabi': 0.1.21
+      '@napi-rs/simple-git-android-arm64': 0.1.21
+      '@napi-rs/simple-git-darwin-arm64': 0.1.21
+      '@napi-rs/simple-git-darwin-x64': 0.1.21
+      '@napi-rs/simple-git-freebsd-x64': 0.1.21
+      '@napi-rs/simple-git-linux-arm-gnueabihf': 0.1.21
+      '@napi-rs/simple-git-linux-arm64-gnu': 0.1.21
+      '@napi-rs/simple-git-linux-arm64-musl': 0.1.21
+      '@napi-rs/simple-git-linux-ppc64-gnu': 0.1.21
+      '@napi-rs/simple-git-linux-s390x-gnu': 0.1.21
+      '@napi-rs/simple-git-linux-x64-gnu': 0.1.21
+      '@napi-rs/simple-git-linux-x64-musl': 0.1.21
+      '@napi-rs/simple-git-win32-arm64-msvc': 0.1.21
+      '@napi-rs/simple-git-win32-ia32-msvc': 0.1.21
+      '@napi-rs/simple-git-win32-x64-msvc': 0.1.21
 
   '@napi-rs/wasm-runtime@0.2.12':
     dependencies:
-      '@emnapi/core': 1.4.4
-      '@emnapi/runtime': 1.4.4
+      '@emnapi/core': 1.4.5
+      '@emnapi/runtime': 1.4.5
       '@tybys/wasm-util': 0.10.0
     optional: true
 
@@ -9593,6 +9605,10 @@ snapshots:
     dependencies:
       '@noble/hashes': 1.8.0
 
+  '@noble/curves@1.9.4':
+    dependencies:
+      '@noble/hashes': 1.8.0
+
   '@noble/hashes@1.2.0': {}
 
   '@noble/hashes@1.4.0': {}
@@ -9740,7 +9756,7 @@ snapshots:
   '@pkgjs/parseargs@0.11.0':
     optional: true
 
-  '@pkgr/core@0.2.7': {}
+  '@pkgr/core@0.2.9': {}
 
   '@radix-ui/number@1.1.1': {}
 
@@ -10196,594 +10212,593 @@ snapshots:
 
   '@radix-ui/rect@1.1.1': {}
 
-  '@react-aria/breadcrumbs@3.5.26(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/breadcrumbs@3.5.27(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@react-aria/i18n': 3.12.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/link': 3.8.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-types/breadcrumbs': 3.7.14(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-aria/i18n': 3.12.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/link': 3.8.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/utils': 3.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-types/breadcrumbs': 3.7.15(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/button@3.13.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/button@3.14.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/toolbar': 3.0.0-beta.18(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-stately/toggle': 3.8.5(react@18.3.1)
-      '@react-types/button': 3.12.2(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-aria/interactions': 3.25.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/toolbar': 3.0.0-beta.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/utils': 3.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-stately/toggle': 3.9.0(react@18.3.1)
+      '@react-types/button': 3.13.0(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/calendar@3.8.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/calendar@3.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
       '@internationalized/date': 3.8.2
-      '@react-aria/i18n': 3.12.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/live-announcer': 3.4.3
-      '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-stately/calendar': 3.8.2(react@18.3.1)
-      '@react-types/button': 3.12.2(react@18.3.1)
-      '@react-types/calendar': 3.7.2(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-aria/i18n': 3.12.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/interactions': 3.25.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/live-announcer': 3.4.4
+      '@react-aria/utils': 3.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-stately/calendar': 3.8.3(react@18.3.1)
+      '@react-types/button': 3.13.0(react@18.3.1)
+      '@react-types/calendar': 3.7.3(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/checkbox@3.15.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
-    dependencies:
-      '@react-aria/form': 3.0.18(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/label': 3.7.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/toggle': 3.11.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-stately/checkbox': 3.6.15(react@18.3.1)
-      '@react-stately/form': 3.1.5(react@18.3.1)
-      '@react-stately/toggle': 3.8.5(react@18.3.1)
-      '@react-types/checkbox': 3.9.5(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+  '@react-aria/checkbox@3.16.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+    dependencies:
+      '@react-aria/form': 3.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/interactions': 3.25.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/label': 3.7.20(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/toggle': 3.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/utils': 3.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-stately/checkbox': 3.7.0(react@18.3.1)
+      '@react-stately/form': 3.2.0(react@18.3.1)
+      '@react-stately/toggle': 3.9.0(react@18.3.1)
+      '@react-types/checkbox': 3.10.0(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/color@3.0.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
-    dependencies:
-      '@react-aria/i18n': 3.12.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/numberfield': 3.11.16(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/slider': 3.7.21(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/spinbutton': 3.6.16(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/textfield': 3.17.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/visually-hidden': 3.8.25(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-stately/color': 3.8.6(react@18.3.1)
-      '@react-stately/form': 3.1.5(react@18.3.1)
-      '@react-types/color': 3.0.6(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+  '@react-aria/color@3.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+    dependencies:
+      '@react-aria/i18n': 3.12.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/interactions': 3.25.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/numberfield': 3.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/slider': 3.8.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/spinbutton': 3.6.17(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/textfield': 3.18.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/utils': 3.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/visually-hidden': 3.8.26(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-stately/color': 3.9.0(react@18.3.1)
+      '@react-stately/form': 3.2.0(react@18.3.1)
+      '@react-types/color': 3.1.0(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/combobox@3.12.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
-    dependencies:
-      '@react-aria/focus': 3.20.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/i18n': 3.12.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/listbox': 3.14.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/live-announcer': 3.4.3
-      '@react-aria/menu': 3.18.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/overlays': 3.27.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/selection': 3.24.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/textfield': 3.17.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-stately/collections': 3.12.5(react@18.3.1)
-      '@react-stately/combobox': 3.10.6(react@18.3.1)
-      '@react-stately/form': 3.1.5(react@18.3.1)
-      '@react-types/button': 3.12.2(react@18.3.1)
-      '@react-types/combobox': 3.13.6(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+  '@react-aria/combobox@3.13.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+    dependencies:
+      '@react-aria/focus': 3.21.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/i18n': 3.12.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/listbox': 3.14.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/live-announcer': 3.4.4
+      '@react-aria/menu': 3.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/overlays': 3.28.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/selection': 3.25.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/textfield': 3.18.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/utils': 3.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-stately/collections': 3.12.6(react@18.3.1)
+      '@react-stately/combobox': 3.11.0(react@18.3.1)
+      '@react-stately/form': 3.2.0(react@18.3.1)
+      '@react-types/button': 3.13.0(react@18.3.1)
+      '@react-types/combobox': 3.13.7(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/datepicker@3.14.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/datepicker@3.15.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
       '@internationalized/date': 3.8.2
-      '@internationalized/number': 3.6.3
+      '@internationalized/number': 3.6.4
       '@internationalized/string': 3.2.7
-      '@react-aria/focus': 3.20.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/form': 3.0.18(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/i18n': 3.12.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/label': 3.7.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/spinbutton': 3.6.16(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-stately/datepicker': 3.14.2(react@18.3.1)
-      '@react-stately/form': 3.1.5(react@18.3.1)
-      '@react-types/button': 3.12.2(react@18.3.1)
-      '@react-types/calendar': 3.7.2(react@18.3.1)
-      '@react-types/datepicker': 3.12.2(react@18.3.1)
-      '@react-types/dialog': 3.5.19(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-aria/focus': 3.21.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/form': 3.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/i18n': 3.12.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/interactions': 3.25.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/label': 3.7.20(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/spinbutton': 3.6.17(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/utils': 3.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-stately/datepicker': 3.15.0(react@18.3.1)
+      '@react-stately/form': 3.2.0(react@18.3.1)
+      '@react-types/button': 3.13.0(react@18.3.1)
+      '@react-types/calendar': 3.7.3(react@18.3.1)
+      '@react-types/datepicker': 3.13.0(react@18.3.1)
+      '@react-types/dialog': 3.5.20(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/dialog@3.5.27(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/dialog@3.5.28(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/overlays': 3.27.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-types/dialog': 3.5.19(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-aria/interactions': 3.25.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/overlays': 3.28.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/utils': 3.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-types/dialog': 3.5.20(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/disclosure@3.0.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/disclosure@3.0.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@react-aria/ssr': 3.9.9(react@18.3.1)
-      '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-stately/disclosure': 3.0.5(react@18.3.1)
-      '@react-types/button': 3.12.2(react@18.3.1)
+      '@react-aria/ssr': 3.9.10(react@18.3.1)
+      '@react-aria/utils': 3.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-stately/disclosure': 3.0.6(react@18.3.1)
+      '@react-types/button': 3.13.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/dnd@3.10.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/dnd@3.11.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
       '@internationalized/string': 3.2.7
-      '@react-aria/i18n': 3.12.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/live-announcer': 3.4.3
-      '@react-aria/overlays': 3.27.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-stately/collections': 3.12.5(react@18.3.1)
-      '@react-stately/dnd': 3.6.0(react@18.3.1)
-      '@react-types/button': 3.12.2(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-aria/i18n': 3.12.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/interactions': 3.25.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/live-announcer': 3.4.4
+      '@react-aria/overlays': 3.28.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/utils': 3.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-stately/collections': 3.12.6(react@18.3.1)
+      '@react-stately/dnd': 3.6.1(react@18.3.1)
+      '@react-types/button': 3.13.0(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/focus@3.20.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/focus@3.21.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-aria/interactions': 3.25.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/utils': 3.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       clsx: 2.1.1
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/form@3.0.18(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/form@3.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-stately/form': 3.1.5(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-aria/interactions': 3.25.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/utils': 3.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-stately/form': 3.2.0(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/grid@3.14.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
-    dependencies:
-      '@react-aria/focus': 3.20.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/i18n': 3.12.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/live-announcer': 3.4.3
-      '@react-aria/selection': 3.24.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-stately/collections': 3.12.5(react@18.3.1)
-      '@react-stately/grid': 3.11.3(react@18.3.1)
-      '@react-stately/selection': 3.20.3(react@18.3.1)
-      '@react-types/checkbox': 3.9.5(react@18.3.1)
-      '@react-types/grid': 3.3.3(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+  '@react-aria/grid@3.14.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+    dependencies:
+      '@react-aria/focus': 3.21.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/i18n': 3.12.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/interactions': 3.25.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/live-announcer': 3.4.4
+      '@react-aria/selection': 3.25.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/utils': 3.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-stately/collections': 3.12.6(react@18.3.1)
+      '@react-stately/grid': 3.11.4(react@18.3.1)
+      '@react-stately/selection': 3.20.4(react@18.3.1)
+      '@react-types/checkbox': 3.10.0(react@18.3.1)
+      '@react-types/grid': 3.3.4(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/gridlist@3.13.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
-    dependencies:
-      '@react-aria/focus': 3.20.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/grid': 3.14.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/i18n': 3.12.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/selection': 3.24.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-stately/collections': 3.12.5(react@18.3.1)
-      '@react-stately/list': 3.12.3(react@18.3.1)
-      '@react-stately/tree': 3.9.0(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+  '@react-aria/gridlist@3.13.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+    dependencies:
+      '@react-aria/focus': 3.21.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/grid': 3.14.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/i18n': 3.12.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/interactions': 3.25.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/selection': 3.25.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/utils': 3.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-stately/list': 3.12.4(react@18.3.1)
+      '@react-stately/tree': 3.9.1(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/i18n@3.12.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/i18n@3.12.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
       '@internationalized/date': 3.8.2
       '@internationalized/message': 3.1.8
-      '@internationalized/number': 3.6.3
+      '@internationalized/number': 3.6.4
       '@internationalized/string': 3.2.7
-      '@react-aria/ssr': 3.9.9(react@18.3.1)
-      '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-aria/ssr': 3.9.10(react@18.3.1)
+      '@react-aria/utils': 3.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/interactions@3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/interactions@3.25.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@react-aria/ssr': 3.9.9(react@18.3.1)
-      '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/ssr': 3.9.10(react@18.3.1)
+      '@react-aria/utils': 3.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-stately/flags': 3.1.2
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/label@3.7.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/label@3.7.20(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-aria/utils': 3.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/landmark@3.0.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/landmark@3.0.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-aria/utils': 3.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
       use-sync-external-store: 1.5.0(react@18.3.1)
 
-  '@react-aria/link@3.8.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/link@3.8.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-types/link': 3.6.2(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-aria/interactions': 3.25.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/utils': 3.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-types/link': 3.6.3(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/listbox@3.14.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/listbox@3.14.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/label': 3.7.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/selection': 3.24.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-stately/collections': 3.12.5(react@18.3.1)
-      '@react-stately/list': 3.12.3(react@18.3.1)
-      '@react-types/listbox': 3.7.1(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-aria/interactions': 3.25.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/label': 3.7.20(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/selection': 3.25.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/utils': 3.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-stately/collections': 3.12.6(react@18.3.1)
+      '@react-stately/list': 3.12.4(react@18.3.1)
+      '@react-types/listbox': 3.7.2(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/live-announcer@3.4.3':
+  '@react-aria/live-announcer@3.4.4':
     dependencies:
       '@swc/helpers': 0.5.17
 
-  '@react-aria/menu@3.18.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
-    dependencies:
-      '@react-aria/focus': 3.20.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/i18n': 3.12.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/overlays': 3.27.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/selection': 3.24.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-stately/collections': 3.12.5(react@18.3.1)
-      '@react-stately/menu': 3.9.5(react@18.3.1)
-      '@react-stately/selection': 3.20.3(react@18.3.1)
-      '@react-stately/tree': 3.9.0(react@18.3.1)
-      '@react-types/button': 3.12.2(react@18.3.1)
-      '@react-types/menu': 3.10.2(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+  '@react-aria/menu@3.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+    dependencies:
+      '@react-aria/focus': 3.21.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/i18n': 3.12.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/interactions': 3.25.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/overlays': 3.28.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/selection': 3.25.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/utils': 3.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-stately/collections': 3.12.6(react@18.3.1)
+      '@react-stately/menu': 3.9.6(react@18.3.1)
+      '@react-stately/selection': 3.20.4(react@18.3.1)
+      '@react-stately/tree': 3.9.1(react@18.3.1)
+      '@react-types/button': 3.13.0(react@18.3.1)
+      '@react-types/menu': 3.10.3(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/meter@3.4.24(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/meter@3.4.25(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@react-aria/progress': 3.4.24(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-types/meter': 3.4.10(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-aria/progress': 3.4.25(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-types/meter': 3.4.11(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/numberfield@3.11.16(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
-    dependencies:
-      '@react-aria/i18n': 3.12.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/spinbutton': 3.6.16(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/textfield': 3.17.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-stately/form': 3.1.5(react@18.3.1)
-      '@react-stately/numberfield': 3.9.13(react@18.3.1)
-      '@react-types/button': 3.12.2(react@18.3.1)
-      '@react-types/numberfield': 3.8.12(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+  '@react-aria/numberfield@3.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+    dependencies:
+      '@react-aria/i18n': 3.12.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/interactions': 3.25.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/spinbutton': 3.6.17(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/textfield': 3.18.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/utils': 3.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-stately/form': 3.2.0(react@18.3.1)
+      '@react-stately/numberfield': 3.10.0(react@18.3.1)
+      '@react-types/button': 3.13.0(react@18.3.1)
+      '@react-types/numberfield': 3.8.13(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/overlays@3.27.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
-    dependencies:
-      '@react-aria/focus': 3.20.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/i18n': 3.12.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/ssr': 3.9.9(react@18.3.1)
-      '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/visually-hidden': 3.8.25(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-stately/overlays': 3.6.17(react@18.3.1)
-      '@react-types/button': 3.12.2(react@18.3.1)
-      '@react-types/overlays': 3.8.16(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+  '@react-aria/overlays@3.28.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+    dependencies:
+      '@react-aria/focus': 3.21.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/i18n': 3.12.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/interactions': 3.25.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/ssr': 3.9.10(react@18.3.1)
+      '@react-aria/utils': 3.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/visually-hidden': 3.8.26(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-stately/overlays': 3.6.18(react@18.3.1)
+      '@react-types/button': 3.13.0(react@18.3.1)
+      '@react-types/overlays': 3.9.0(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/progress@3.4.24(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/progress@3.4.25(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@react-aria/i18n': 3.12.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/label': 3.7.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-types/progress': 3.5.13(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-aria/i18n': 3.12.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/label': 3.7.20(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/utils': 3.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-types/progress': 3.5.14(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/radio@3.11.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
-    dependencies:
-      '@react-aria/focus': 3.20.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/form': 3.0.18(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/i18n': 3.12.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/label': 3.7.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-stately/radio': 3.10.14(react@18.3.1)
-      '@react-types/radio': 3.8.10(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+  '@react-aria/radio@3.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+    dependencies:
+      '@react-aria/focus': 3.21.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/form': 3.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/i18n': 3.12.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/interactions': 3.25.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/label': 3.7.20(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/utils': 3.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-stately/radio': 3.11.0(react@18.3.1)
+      '@react-types/radio': 3.9.0(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/searchfield@3.8.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/searchfield@3.8.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@react-aria/i18n': 3.12.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/textfield': 3.17.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-stately/searchfield': 3.5.13(react@18.3.1)
-      '@react-types/button': 3.12.2(react@18.3.1)
-      '@react-types/searchfield': 3.6.3(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-aria/i18n': 3.12.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/textfield': 3.18.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/utils': 3.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-stately/searchfield': 3.5.14(react@18.3.1)
+      '@react-types/button': 3.13.0(react@18.3.1)
+      '@react-types/searchfield': 3.6.4(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/select@3.15.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
-    dependencies:
-      '@react-aria/form': 3.0.18(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/i18n': 3.12.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/label': 3.7.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/listbox': 3.14.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/menu': 3.18.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/selection': 3.24.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/visually-hidden': 3.8.25(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-stately/select': 3.6.14(react@18.3.1)
-      '@react-types/button': 3.12.2(react@18.3.1)
-      '@react-types/select': 3.9.13(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+  '@react-aria/select@3.16.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+    dependencies:
+      '@react-aria/form': 3.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/i18n': 3.12.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/interactions': 3.25.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/label': 3.7.20(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/listbox': 3.14.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/menu': 3.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/selection': 3.25.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/utils': 3.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/visually-hidden': 3.8.26(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-stately/select': 3.7.0(react@18.3.1)
+      '@react-types/button': 3.13.0(react@18.3.1)
+      '@react-types/select': 3.10.0(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/selection@3.24.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/selection@3.25.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@react-aria/focus': 3.20.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/i18n': 3.12.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-stately/selection': 3.20.3(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-aria/focus': 3.21.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/i18n': 3.12.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/interactions': 3.25.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/utils': 3.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-stately/selection': 3.20.4(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/separator@3.4.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/separator@3.4.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-aria/utils': 3.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/slider@3.7.21(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/slider@3.8.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@react-aria/i18n': 3.12.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/label': 3.7.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-stately/slider': 3.6.5(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
-      '@react-types/slider': 3.7.12(react@18.3.1)
+      '@react-aria/i18n': 3.12.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/interactions': 3.25.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/label': 3.7.20(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/utils': 3.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-stately/slider': 3.7.0(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
+      '@react-types/slider': 3.8.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/spinbutton@3.6.16(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/spinbutton@3.6.17(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@react-aria/i18n': 3.12.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/live-announcer': 3.4.3
-      '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-types/button': 3.12.2(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-aria/i18n': 3.12.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/live-announcer': 3.4.4
+      '@react-aria/utils': 3.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-types/button': 3.13.0(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/ssr@3.9.9(react@18.3.1)':
+  '@react-aria/ssr@3.9.10(react@18.3.1)':
     dependencies:
       '@swc/helpers': 0.5.17
       react: 18.3.1
 
-  '@react-aria/switch@3.7.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/switch@3.7.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@react-aria/toggle': 3.11.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-stately/toggle': 3.8.5(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
-      '@react-types/switch': 3.5.12(react@18.3.1)
+      '@react-aria/toggle': 3.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-stately/toggle': 3.9.0(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
+      '@react-types/switch': 3.5.13(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/table@3.17.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/table@3.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@react-aria/focus': 3.20.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/grid': 3.14.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/i18n': 3.12.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/live-announcer': 3.4.3
-      '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/visually-hidden': 3.8.25(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-stately/collections': 3.12.5(react@18.3.1)
+      '@react-aria/focus': 3.21.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/grid': 3.14.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/i18n': 3.12.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/interactions': 3.25.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/live-announcer': 3.4.4
+      '@react-aria/utils': 3.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/visually-hidden': 3.8.26(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-stately/collections': 3.12.6(react@18.3.1)
       '@react-stately/flags': 3.1.2
-      '@react-stately/table': 3.14.3(react@18.3.1)
-      '@react-types/checkbox': 3.9.5(react@18.3.1)
-      '@react-types/grid': 3.3.3(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
-      '@react-types/table': 3.13.1(react@18.3.1)
+      '@react-stately/table': 3.14.4(react@18.3.1)
+      '@react-types/checkbox': 3.10.0(react@18.3.1)
+      '@react-types/grid': 3.3.4(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
+      '@react-types/table': 3.13.2(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/tabs@3.10.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/tabs@3.10.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@react-aria/focus': 3.20.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/i18n': 3.12.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/selection': 3.24.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-stately/tabs': 3.8.3(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
-      '@react-types/tabs': 3.3.16(react@18.3.1)
+      '@react-aria/focus': 3.21.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/i18n': 3.12.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/selection': 3.25.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/utils': 3.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-stately/tabs': 3.8.4(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
+      '@react-types/tabs': 3.3.17(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/tag@3.6.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
-    dependencies:
-      '@react-aria/gridlist': 3.13.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/i18n': 3.12.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/label': 3.7.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/selection': 3.24.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-stately/list': 3.12.3(react@18.3.1)
-      '@react-types/button': 3.12.2(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+  '@react-aria/tag@3.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+    dependencies:
+      '@react-aria/gridlist': 3.13.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/i18n': 3.12.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/interactions': 3.25.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/label': 3.7.20(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/selection': 3.25.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/utils': 3.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-stately/list': 3.12.4(react@18.3.1)
+      '@react-types/button': 3.13.0(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/textfield@3.17.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/textfield@3.18.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@react-aria/form': 3.0.18(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/label': 3.7.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-stately/form': 3.1.5(react@18.3.1)
-      '@react-stately/utils': 3.10.7(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
-      '@react-types/textfield': 3.12.3(react@18.3.1)
+      '@react-aria/form': 3.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/interactions': 3.25.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/label': 3.7.20(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/utils': 3.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-stately/form': 3.2.0(react@18.3.1)
+      '@react-stately/utils': 3.10.8(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
+      '@react-types/textfield': 3.12.4(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/toast@3.0.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/toast@3.0.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@react-aria/i18n': 3.12.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/landmark': 3.0.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-stately/toast': 3.1.1(react@18.3.1)
-      '@react-types/button': 3.12.2(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-aria/i18n': 3.12.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/interactions': 3.25.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/landmark': 3.0.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/utils': 3.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-stately/toast': 3.1.2(react@18.3.1)
+      '@react-types/button': 3.13.0(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/toggle@3.11.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/toggle@3.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-stately/toggle': 3.8.5(react@18.3.1)
-      '@react-types/checkbox': 3.9.5(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-aria/interactions': 3.25.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/utils': 3.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-stately/toggle': 3.9.0(react@18.3.1)
+      '@react-types/checkbox': 3.10.0(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/toolbar@3.0.0-beta.18(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/toolbar@3.0.0-beta.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@react-aria/focus': 3.20.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/i18n': 3.12.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-aria/focus': 3.21.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/i18n': 3.12.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/utils': 3.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/tooltip@3.8.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/tooltip@3.8.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-stately/tooltip': 3.5.5(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
-      '@react-types/tooltip': 3.4.18(react@18.3.1)
+      '@react-aria/interactions': 3.25.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/utils': 3.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-stately/tooltip': 3.5.6(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
+      '@react-types/tooltip': 3.4.19(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/tree@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/tree@3.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@react-aria/gridlist': 3.13.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/i18n': 3.12.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/selection': 3.24.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-stately/tree': 3.9.0(react@18.3.1)
-      '@react-types/button': 3.12.2(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-aria/gridlist': 3.13.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/i18n': 3.12.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/selection': 3.25.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/utils': 3.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-stately/tree': 3.9.1(react@18.3.1)
+      '@react-types/button': 3.13.0(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/utils@3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/utils@3.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@react-aria/ssr': 3.9.9(react@18.3.1)
+      '@react-aria/ssr': 3.9.10(react@18.3.1)
       '@react-stately/flags': 3.1.2
-      '@react-stately/utils': 3.10.7(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-stately/utils': 3.10.8(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       clsx: 2.1.1
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-aria/visually-hidden@3.8.25(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@react-aria/visually-hidden@3.8.26(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-aria/interactions': 3.25.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/utils': 3.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
@@ -10794,79 +10809,79 @@ snapshots:
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@react-stately/calendar@3.8.2(react@18.3.1)':
+  '@react-stately/calendar@3.8.3(react@18.3.1)':
     dependencies:
       '@internationalized/date': 3.8.2
-      '@react-stately/utils': 3.10.7(react@18.3.1)
-      '@react-types/calendar': 3.7.2(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-stately/utils': 3.10.8(react@18.3.1)
+      '@react-types/calendar': 3.7.3(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
 
-  '@react-stately/checkbox@3.6.15(react@18.3.1)':
+  '@react-stately/checkbox@3.7.0(react@18.3.1)':
     dependencies:
-      '@react-stately/form': 3.1.5(react@18.3.1)
-      '@react-stately/utils': 3.10.7(react@18.3.1)
-      '@react-types/checkbox': 3.9.5(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-stately/form': 3.2.0(react@18.3.1)
+      '@react-stately/utils': 3.10.8(react@18.3.1)
+      '@react-types/checkbox': 3.10.0(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
 
-  '@react-stately/collections@3.12.5(react@18.3.1)':
+  '@react-stately/collections@3.12.6(react@18.3.1)':
     dependencies:
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
 
-  '@react-stately/color@3.8.6(react@18.3.1)':
+  '@react-stately/color@3.9.0(react@18.3.1)':
     dependencies:
-      '@internationalized/number': 3.6.3
+      '@internationalized/number': 3.6.4
       '@internationalized/string': 3.2.7
-      '@react-stately/form': 3.1.5(react@18.3.1)
-      '@react-stately/numberfield': 3.9.13(react@18.3.1)
-      '@react-stately/slider': 3.6.5(react@18.3.1)
-      '@react-stately/utils': 3.10.7(react@18.3.1)
-      '@react-types/color': 3.0.6(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-stately/form': 3.2.0(react@18.3.1)
+      '@react-stately/numberfield': 3.10.0(react@18.3.1)
+      '@react-stately/slider': 3.7.0(react@18.3.1)
+      '@react-stately/utils': 3.10.8(react@18.3.1)
+      '@react-types/color': 3.1.0(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
 
-  '@react-stately/combobox@3.10.6(react@18.3.1)':
+  '@react-stately/combobox@3.11.0(react@18.3.1)':
     dependencies:
-      '@react-stately/collections': 3.12.5(react@18.3.1)
-      '@react-stately/form': 3.1.5(react@18.3.1)
-      '@react-stately/list': 3.12.3(react@18.3.1)
-      '@react-stately/overlays': 3.6.17(react@18.3.1)
-      '@react-stately/select': 3.6.14(react@18.3.1)
-      '@react-stately/utils': 3.10.7(react@18.3.1)
-      '@react-types/combobox': 3.13.6(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-stately/collections': 3.12.6(react@18.3.1)
+      '@react-stately/form': 3.2.0(react@18.3.1)
+      '@react-stately/list': 3.12.4(react@18.3.1)
+      '@react-stately/overlays': 3.6.18(react@18.3.1)
+      '@react-stately/select': 3.7.0(react@18.3.1)
+      '@react-stately/utils': 3.10.8(react@18.3.1)
+      '@react-types/combobox': 3.13.7(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
 
-  '@react-stately/datepicker@3.14.2(react@18.3.1)':
+  '@react-stately/datepicker@3.15.0(react@18.3.1)':
     dependencies:
       '@internationalized/date': 3.8.2
       '@internationalized/string': 3.2.7
-      '@react-stately/form': 3.1.5(react@18.3.1)
-      '@react-stately/overlays': 3.6.17(react@18.3.1)
-      '@react-stately/utils': 3.10.7(react@18.3.1)
-      '@react-types/datepicker': 3.12.2(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-stately/form': 3.2.0(react@18.3.1)
+      '@react-stately/overlays': 3.6.18(react@18.3.1)
+      '@react-stately/utils': 3.10.8(react@18.3.1)
+      '@react-types/datepicker': 3.13.0(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
 
-  '@react-stately/disclosure@3.0.5(react@18.3.1)':
+  '@react-stately/disclosure@3.0.6(react@18.3.1)':
     dependencies:
-      '@react-stately/utils': 3.10.7(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-stately/utils': 3.10.8(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
 
-  '@react-stately/dnd@3.6.0(react@18.3.1)':
+  '@react-stately/dnd@3.6.1(react@18.3.1)':
     dependencies:
-      '@react-stately/selection': 3.20.3(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-stately/selection': 3.20.4(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
 
@@ -10874,296 +10889,296 @@ snapshots:
     dependencies:
       '@swc/helpers': 0.5.17
 
-  '@react-stately/form@3.1.5(react@18.3.1)':
+  '@react-stately/form@3.2.0(react@18.3.1)':
     dependencies:
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
 
-  '@react-stately/grid@3.11.3(react@18.3.1)':
+  '@react-stately/grid@3.11.4(react@18.3.1)':
     dependencies:
-      '@react-stately/collections': 3.12.5(react@18.3.1)
-      '@react-stately/selection': 3.20.3(react@18.3.1)
-      '@react-types/grid': 3.3.3(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-stately/collections': 3.12.6(react@18.3.1)
+      '@react-stately/selection': 3.20.4(react@18.3.1)
+      '@react-types/grid': 3.3.4(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
 
-  '@react-stately/list@3.12.3(react@18.3.1)':
+  '@react-stately/list@3.12.4(react@18.3.1)':
     dependencies:
-      '@react-stately/collections': 3.12.5(react@18.3.1)
-      '@react-stately/selection': 3.20.3(react@18.3.1)
-      '@react-stately/utils': 3.10.7(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-stately/collections': 3.12.6(react@18.3.1)
+      '@react-stately/selection': 3.20.4(react@18.3.1)
+      '@react-stately/utils': 3.10.8(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
 
-  '@react-stately/menu@3.9.5(react@18.3.1)':
+  '@react-stately/menu@3.9.6(react@18.3.1)':
     dependencies:
-      '@react-stately/overlays': 3.6.17(react@18.3.1)
-      '@react-types/menu': 3.10.2(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-stately/overlays': 3.6.18(react@18.3.1)
+      '@react-types/menu': 3.10.3(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
 
-  '@react-stately/numberfield@3.9.13(react@18.3.1)':
+  '@react-stately/numberfield@3.10.0(react@18.3.1)':
     dependencies:
-      '@internationalized/number': 3.6.3
-      '@react-stately/form': 3.1.5(react@18.3.1)
-      '@react-stately/utils': 3.10.7(react@18.3.1)
-      '@react-types/numberfield': 3.8.12(react@18.3.1)
+      '@internationalized/number': 3.6.4
+      '@react-stately/form': 3.2.0(react@18.3.1)
+      '@react-stately/utils': 3.10.8(react@18.3.1)
+      '@react-types/numberfield': 3.8.13(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
 
-  '@react-stately/overlays@3.6.17(react@18.3.1)':
+  '@react-stately/overlays@3.6.18(react@18.3.1)':
     dependencies:
-      '@react-stately/utils': 3.10.7(react@18.3.1)
-      '@react-types/overlays': 3.8.16(react@18.3.1)
+      '@react-stately/utils': 3.10.8(react@18.3.1)
+      '@react-types/overlays': 3.9.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
 
-  '@react-stately/radio@3.10.14(react@18.3.1)':
+  '@react-stately/radio@3.11.0(react@18.3.1)':
     dependencies:
-      '@react-stately/form': 3.1.5(react@18.3.1)
-      '@react-stately/utils': 3.10.7(react@18.3.1)
-      '@react-types/radio': 3.8.10(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-stately/form': 3.2.0(react@18.3.1)
+      '@react-stately/utils': 3.10.8(react@18.3.1)
+      '@react-types/radio': 3.9.0(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
 
-  '@react-stately/searchfield@3.5.13(react@18.3.1)':
+  '@react-stately/searchfield@3.5.14(react@18.3.1)':
     dependencies:
-      '@react-stately/utils': 3.10.7(react@18.3.1)
-      '@react-types/searchfield': 3.6.3(react@18.3.1)
+      '@react-stately/utils': 3.10.8(react@18.3.1)
+      '@react-types/searchfield': 3.6.4(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
 
-  '@react-stately/select@3.6.14(react@18.3.1)':
+  '@react-stately/select@3.7.0(react@18.3.1)':
     dependencies:
-      '@react-stately/form': 3.1.5(react@18.3.1)
-      '@react-stately/list': 3.12.3(react@18.3.1)
-      '@react-stately/overlays': 3.6.17(react@18.3.1)
-      '@react-types/select': 3.9.13(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-stately/form': 3.2.0(react@18.3.1)
+      '@react-stately/list': 3.12.4(react@18.3.1)
+      '@react-stately/overlays': 3.6.18(react@18.3.1)
+      '@react-types/select': 3.10.0(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
 
-  '@react-stately/selection@3.20.3(react@18.3.1)':
+  '@react-stately/selection@3.20.4(react@18.3.1)':
     dependencies:
-      '@react-stately/collections': 3.12.5(react@18.3.1)
-      '@react-stately/utils': 3.10.7(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-stately/collections': 3.12.6(react@18.3.1)
+      '@react-stately/utils': 3.10.8(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
 
-  '@react-stately/slider@3.6.5(react@18.3.1)':
+  '@react-stately/slider@3.7.0(react@18.3.1)':
     dependencies:
-      '@react-stately/utils': 3.10.7(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
-      '@react-types/slider': 3.7.12(react@18.3.1)
+      '@react-stately/utils': 3.10.8(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
+      '@react-types/slider': 3.8.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
 
-  '@react-stately/table@3.14.3(react@18.3.1)':
+  '@react-stately/table@3.14.4(react@18.3.1)':
     dependencies:
-      '@react-stately/collections': 3.12.5(react@18.3.1)
+      '@react-stately/collections': 3.12.6(react@18.3.1)
       '@react-stately/flags': 3.1.2
-      '@react-stately/grid': 3.11.3(react@18.3.1)
-      '@react-stately/selection': 3.20.3(react@18.3.1)
-      '@react-stately/utils': 3.10.7(react@18.3.1)
-      '@react-types/grid': 3.3.3(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
-      '@react-types/table': 3.13.1(react@18.3.1)
+      '@react-stately/grid': 3.11.4(react@18.3.1)
+      '@react-stately/selection': 3.20.4(react@18.3.1)
+      '@react-stately/utils': 3.10.8(react@18.3.1)
+      '@react-types/grid': 3.3.4(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
+      '@react-types/table': 3.13.2(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
 
-  '@react-stately/tabs@3.8.3(react@18.3.1)':
+  '@react-stately/tabs@3.8.4(react@18.3.1)':
     dependencies:
-      '@react-stately/list': 3.12.3(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
-      '@react-types/tabs': 3.3.16(react@18.3.1)
+      '@react-stately/list': 3.12.4(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
+      '@react-types/tabs': 3.3.17(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
 
-  '@react-stately/toast@3.1.1(react@18.3.1)':
+  '@react-stately/toast@3.1.2(react@18.3.1)':
     dependencies:
       '@swc/helpers': 0.5.17
       react: 18.3.1
       use-sync-external-store: 1.5.0(react@18.3.1)
 
-  '@react-stately/toggle@3.8.5(react@18.3.1)':
+  '@react-stately/toggle@3.9.0(react@18.3.1)':
     dependencies:
-      '@react-stately/utils': 3.10.7(react@18.3.1)
-      '@react-types/checkbox': 3.9.5(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-stately/utils': 3.10.8(react@18.3.1)
+      '@react-types/checkbox': 3.10.0(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
 
-  '@react-stately/tooltip@3.5.5(react@18.3.1)':
+  '@react-stately/tooltip@3.5.6(react@18.3.1)':
     dependencies:
-      '@react-stately/overlays': 3.6.17(react@18.3.1)
-      '@react-types/tooltip': 3.4.18(react@18.3.1)
+      '@react-stately/overlays': 3.6.18(react@18.3.1)
+      '@react-types/tooltip': 3.4.19(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
 
-  '@react-stately/tree@3.9.0(react@18.3.1)':
+  '@react-stately/tree@3.9.1(react@18.3.1)':
     dependencies:
-      '@react-stately/collections': 3.12.5(react@18.3.1)
-      '@react-stately/selection': 3.20.3(react@18.3.1)
-      '@react-stately/utils': 3.10.7(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-stately/collections': 3.12.6(react@18.3.1)
+      '@react-stately/selection': 3.20.4(react@18.3.1)
+      '@react-stately/utils': 3.10.8(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       '@swc/helpers': 0.5.17
       react: 18.3.1
 
-  '@react-stately/utils@3.10.7(react@18.3.1)':
+  '@react-stately/utils@3.10.8(react@18.3.1)':
     dependencies:
       '@swc/helpers': 0.5.17
       react: 18.3.1
 
-  '@react-types/breadcrumbs@3.7.14(react@18.3.1)':
+  '@react-types/breadcrumbs@3.7.15(react@18.3.1)':
     dependencies:
-      '@react-types/link': 3.6.2(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-types/link': 3.6.3(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       react: 18.3.1
 
-  '@react-types/button@3.12.2(react@18.3.1)':
+  '@react-types/button@3.13.0(react@18.3.1)':
     dependencies:
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       react: 18.3.1
 
-  '@react-types/calendar@3.7.2(react@18.3.1)':
+  '@react-types/calendar@3.7.3(react@18.3.1)':
     dependencies:
       '@internationalized/date': 3.8.2
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       react: 18.3.1
 
-  '@react-types/checkbox@3.9.5(react@18.3.1)':
+  '@react-types/checkbox@3.10.0(react@18.3.1)':
     dependencies:
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       react: 18.3.1
 
-  '@react-types/color@3.0.6(react@18.3.1)':
+  '@react-types/color@3.1.0(react@18.3.1)':
     dependencies:
-      '@react-types/shared': 3.30.0(react@18.3.1)
-      '@react-types/slider': 3.7.12(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
+      '@react-types/slider': 3.8.0(react@18.3.1)
       react: 18.3.1
 
-  '@react-types/combobox@3.13.6(react@18.3.1)':
+  '@react-types/combobox@3.13.7(react@18.3.1)':
     dependencies:
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       react: 18.3.1
 
-  '@react-types/datepicker@3.12.2(react@18.3.1)':
+  '@react-types/datepicker@3.13.0(react@18.3.1)':
     dependencies:
       '@internationalized/date': 3.8.2
-      '@react-types/calendar': 3.7.2(react@18.3.1)
-      '@react-types/overlays': 3.8.16(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-types/calendar': 3.7.3(react@18.3.1)
+      '@react-types/overlays': 3.9.0(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       react: 18.3.1
 
-  '@react-types/dialog@3.5.19(react@18.3.1)':
+  '@react-types/dialog@3.5.20(react@18.3.1)':
     dependencies:
-      '@react-types/overlays': 3.8.16(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-types/overlays': 3.9.0(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       react: 18.3.1
 
-  '@react-types/grid@3.3.3(react@18.3.1)':
+  '@react-types/grid@3.3.4(react@18.3.1)':
     dependencies:
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       react: 18.3.1
 
-  '@react-types/link@3.6.2(react@18.3.1)':
+  '@react-types/link@3.6.3(react@18.3.1)':
     dependencies:
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       react: 18.3.1
 
-  '@react-types/listbox@3.7.1(react@18.3.1)':
+  '@react-types/listbox@3.7.2(react@18.3.1)':
     dependencies:
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       react: 18.3.1
 
-  '@react-types/menu@3.10.2(react@18.3.1)':
+  '@react-types/menu@3.10.3(react@18.3.1)':
     dependencies:
-      '@react-types/overlays': 3.8.16(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-types/overlays': 3.9.0(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       react: 18.3.1
 
-  '@react-types/meter@3.4.10(react@18.3.1)':
+  '@react-types/meter@3.4.11(react@18.3.1)':
     dependencies:
-      '@react-types/progress': 3.5.13(react@18.3.1)
+      '@react-types/progress': 3.5.14(react@18.3.1)
       react: 18.3.1
 
-  '@react-types/numberfield@3.8.12(react@18.3.1)':
+  '@react-types/numberfield@3.8.13(react@18.3.1)':
     dependencies:
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       react: 18.3.1
 
-  '@react-types/overlays@3.8.16(react@18.3.1)':
+  '@react-types/overlays@3.9.0(react@18.3.1)':
     dependencies:
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       react: 18.3.1
 
-  '@react-types/progress@3.5.13(react@18.3.1)':
+  '@react-types/progress@3.5.14(react@18.3.1)':
     dependencies:
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       react: 18.3.1
 
-  '@react-types/radio@3.8.10(react@18.3.1)':
+  '@react-types/radio@3.9.0(react@18.3.1)':
     dependencies:
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       react: 18.3.1
 
-  '@react-types/searchfield@3.6.3(react@18.3.1)':
+  '@react-types/searchfield@3.6.4(react@18.3.1)':
     dependencies:
-      '@react-types/shared': 3.30.0(react@18.3.1)
-      '@react-types/textfield': 3.12.3(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
+      '@react-types/textfield': 3.12.4(react@18.3.1)
       react: 18.3.1
 
-  '@react-types/select@3.9.13(react@18.3.1)':
+  '@react-types/select@3.10.0(react@18.3.1)':
     dependencies:
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       react: 18.3.1
 
-  '@react-types/shared@3.30.0(react@18.3.1)':
+  '@react-types/shared@3.31.0(react@18.3.1)':
     dependencies:
       react: 18.3.1
 
-  '@react-types/slider@3.7.12(react@18.3.1)':
+  '@react-types/slider@3.8.0(react@18.3.1)':
     dependencies:
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       react: 18.3.1
 
-  '@react-types/switch@3.5.12(react@18.3.1)':
+  '@react-types/switch@3.5.13(react@18.3.1)':
     dependencies:
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       react: 18.3.1
 
-  '@react-types/table@3.13.1(react@18.3.1)':
+  '@react-types/table@3.13.2(react@18.3.1)':
     dependencies:
-      '@react-types/grid': 3.3.3(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-types/grid': 3.3.4(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       react: 18.3.1
 
-  '@react-types/tabs@3.3.16(react@18.3.1)':
+  '@react-types/tabs@3.3.17(react@18.3.1)':
     dependencies:
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       react: 18.3.1
 
-  '@react-types/textfield@3.12.3(react@18.3.1)':
+  '@react-types/textfield@3.12.4(react@18.3.1)':
     dependencies:
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       react: 18.3.1
 
-  '@react-types/tooltip@3.4.18(react@18.3.1)':
+  '@react-types/tooltip@3.4.19(react@18.3.1)':
     dependencies:
-      '@react-types/overlays': 3.8.16(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-types/overlays': 3.9.0(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       react: 18.3.1
 
   '@readme/better-ajv-errors@2.3.2(ajv@8.17.1)':
     dependencies:
       '@babel/code-frame': 7.27.1
-      '@babel/runtime': 7.27.6
+      '@babel/runtime': 7.28.2
       '@humanwhocodes/momoa': 2.0.4
       ajv: 8.17.1
       jsonpointer: 5.0.1
@@ -11354,9 +11369,9 @@ snapshots:
       '@types/hast': 3.0.4
       hast-util-to-html: 9.0.5
 
-  '@shikijs/core@3.8.0':
+  '@shikijs/core@3.8.1':
     dependencies:
-      '@shikijs/types': 3.8.0
+      '@shikijs/types': 3.8.1
       '@shikijs/vscode-textmate': 10.0.2
       '@types/hast': 3.0.4
       hast-util-to-html: 9.0.5
@@ -11367,9 +11382,9 @@ snapshots:
       '@shikijs/vscode-textmate': 10.0.2
       oniguruma-to-es: 2.3.0
 
-  '@shikijs/engine-javascript@3.8.0':
+  '@shikijs/engine-javascript@3.8.1':
     dependencies:
-      '@shikijs/types': 3.8.0
+      '@shikijs/types': 3.8.1
       '@shikijs/vscode-textmate': 10.0.2
       oniguruma-to-es: 4.3.3
 
@@ -11378,26 +11393,26 @@ snapshots:
       '@shikijs/types': 1.29.2
       '@shikijs/vscode-textmate': 10.0.2
 
-  '@shikijs/engine-oniguruma@3.8.0':
+  '@shikijs/engine-oniguruma@3.8.1':
     dependencies:
-      '@shikijs/types': 3.8.0
+      '@shikijs/types': 3.8.1
       '@shikijs/vscode-textmate': 10.0.2
 
   '@shikijs/langs@1.29.2':
     dependencies:
       '@shikijs/types': 1.29.2
 
-  '@shikijs/langs@3.8.0':
+  '@shikijs/langs@3.8.1':
     dependencies:
-      '@shikijs/types': 3.8.0
+      '@shikijs/types': 3.8.1
 
   '@shikijs/themes@1.29.2':
     dependencies:
       '@shikijs/types': 1.29.2
 
-  '@shikijs/themes@3.8.0':
+  '@shikijs/themes@3.8.1':
     dependencies:
-      '@shikijs/types': 3.8.0
+      '@shikijs/types': 3.8.1
 
   '@shikijs/twoslash@1.29.2(typescript@5.8.3)':
     dependencies:
@@ -11413,7 +11428,7 @@ snapshots:
       '@shikijs/vscode-textmate': 10.0.2
       '@types/hast': 3.0.4
 
-  '@shikijs/types@3.8.0':
+  '@shikijs/types@3.8.1':
     dependencies:
       '@shikijs/vscode-textmate': 10.0.2
       '@types/hast': 3.0.4
@@ -11499,7 +11514,7 @@ snapshots:
 
   '@tanem/react-nprogress@5.0.55(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@babel/runtime': 7.27.6
+      '@babel/runtime': 7.28.2
       hoist-non-react-statics: 3.3.2
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
@@ -11521,7 +11536,7 @@ snapshots:
 
   '@theguild/remark-mermaid@0.1.3(react@18.3.1)':
     dependencies:
-      mermaid: 11.8.1
+      mermaid: 11.9.0
       react: 18.3.1
       unist-util-visit: 5.0.0
     transitivePeerDependencies:
@@ -11597,13 +11612,9 @@ snapshots:
       tslib: 2.8.1
     optional: true
 
-  '@types/bn.js@5.2.0':
-    dependencies:
-      '@types/node': 22.16.4
-
   '@types/concat-stream@2.0.3':
     dependencies:
-      '@types/node': 22.16.4
+      '@types/node': 22.16.5
 
   '@types/cookie@0.6.0': {}
 
@@ -11754,15 +11765,15 @@ snapshots:
 
   '@types/lodash@4.17.20': {}
 
-  '@types/lru-cache@5.1.1': {}
-
   '@types/mdast@4.0.4':
     dependencies:
       '@types/unist': 3.0.3
 
   '@types/mdx@2.0.13': {}
 
-  '@types/mixpanel-browser@2.60.0': {}
+  '@types/mixpanel-browser@2.66.0':
+    dependencies:
+      mixpanel-browser: 2.67.0
 
   '@types/ms@2.1.0': {}
 
@@ -11770,7 +11781,7 @@ snapshots:
     dependencies:
       '@types/unist': 3.0.3
 
-  '@types/node@22.16.4':
+  '@types/node@22.16.5':
     dependencies:
       undici-types: 6.21.0
 
@@ -11917,14 +11928,14 @@ snapshots:
       tiny-invariant: 1.3.3
       toformat: 2.0.0
 
-  '@uniswap/swap-router-contracts@1.3.1(hardhat@2.25.0(typescript@5.8.3))':
+  '@uniswap/swap-router-contracts@1.3.1(hardhat@2.26.1(typescript@5.8.3))':
     dependencies:
       '@openzeppelin/contracts': 3.4.2-solc-0.7
       '@uniswap/v2-core': 1.0.1
       '@uniswap/v3-core': 1.0.1
       '@uniswap/v3-periphery': 1.4.4
       dotenv: 14.3.2
-      hardhat-watcher: 2.5.0(hardhat@2.25.0(typescript@5.8.3))
+      hardhat-watcher: 2.5.0(hardhat@2.26.1(typescript@5.8.3))
     transitivePeerDependencies:
       - hardhat
 
@@ -11942,12 +11953,12 @@ snapshots:
       '@uniswap/v3-core': 1.0.1
       base64-sol: 1.0.1
 
-  '@uniswap/v3-sdk@3.25.2(hardhat@2.25.0(typescript@5.8.3))':
+  '@uniswap/v3-sdk@3.25.2(hardhat@2.26.1(typescript@5.8.3))':
     dependencies:
       '@ethersproject/abi': 5.8.0
       '@ethersproject/solidity': 5.8.0
       '@uniswap/sdk-core': 7.7.2
-      '@uniswap/swap-router-contracts': 1.3.1(hardhat@2.25.0(typescript@5.8.3))
+      '@uniswap/swap-router-contracts': 1.3.1(hardhat@2.26.1(typescript@5.8.3))
       '@uniswap/v3-periphery': 1.4.4
       '@uniswap/v3-staker': 1.0.0
       tiny-invariant: 1.3.3
@@ -12029,13 +12040,13 @@ snapshots:
       chai: 5.2.1
       tinyrainbow: 1.2.0
 
-  '@vitest/mocker@2.1.9(vite@5.4.19(@types/node@22.16.4))':
+  '@vitest/mocker@2.1.9(vite@5.4.19(@types/node@22.16.5))':
     dependencies:
       '@vitest/spy': 2.1.9
       estree-walker: 3.0.3
       magic-string: 0.30.17
     optionalDependencies:
-      vite: 5.4.19(@types/node@22.16.4)
+      vite: 5.4.19(@types/node@22.16.5)
 
   '@vitest/pretty-format@2.1.9':
     dependencies:
@@ -12059,7 +12070,7 @@ snapshots:
   '@vitest/utils@2.1.9':
     dependencies:
       '@vitest/pretty-format': 2.1.9
-      loupe: 3.1.4
+      loupe: 3.2.0
       tinyrainbow: 1.2.0
 
   '@web3icons/common@0.11.15(typescript@5.8.3)':
@@ -12139,21 +12150,21 @@ snapshots:
       json-schema-traverse: 1.0.0
       require-from-string: 2.0.2
 
-  algoliasearch@5.33.0:
-    dependencies:
-      '@algolia/client-abtesting': 5.33.0
-      '@algolia/client-analytics': 5.33.0
-      '@algolia/client-common': 5.33.0
-      '@algolia/client-insights': 5.33.0
-      '@algolia/client-personalization': 5.33.0
-      '@algolia/client-query-suggestions': 5.33.0
-      '@algolia/client-search': 5.33.0
-      '@algolia/ingestion': 1.33.0
-      '@algolia/monitoring': 1.33.0
-      '@algolia/recommend': 5.33.0
-      '@algolia/requester-browser-xhr': 5.33.0
-      '@algolia/requester-fetch': 5.33.0
-      '@algolia/requester-node-http': 5.33.0
+  algoliasearch@5.34.1:
+    dependencies:
+      '@algolia/client-abtesting': 5.34.1
+      '@algolia/client-analytics': 5.34.1
+      '@algolia/client-common': 5.34.1
+      '@algolia/client-insights': 5.34.1
+      '@algolia/client-personalization': 5.34.1
+      '@algolia/client-query-suggestions': 5.34.1
+      '@algolia/client-search': 5.34.1
+      '@algolia/ingestion': 1.34.1
+      '@algolia/monitoring': 1.34.1
+      '@algolia/recommend': 5.34.1
+      '@algolia/requester-browser-xhr': 5.34.1
+      '@algolia/requester-fetch': 5.34.1
+      '@algolia/requester-node-http': 5.34.1
 
   ansi-align@3.0.1:
     dependencies:
@@ -12303,7 +12314,7 @@ snapshots:
 
   babel-plugin-macros@3.1.0:
     dependencies:
-      '@babel/runtime': 7.27.6
+      '@babel/runtime': 7.28.2
       cosmiconfig: 7.1.0
       resolve: 1.22.10
 
@@ -12384,7 +12395,7 @@ snapshots:
   browserslist@4.25.1:
     dependencies:
       caniuse-lite: 1.0.30001727
-      electron-to-chromium: 1.5.184
+      electron-to-chromium: 1.5.190
       node-releases: 2.0.19
       update-browserslist-db: 1.1.3(browserslist@4.25.1)
 
@@ -12395,9 +12406,9 @@ snapshots:
       base64-js: 1.5.1
       ieee754: 1.2.1
 
-  bundle-require@5.1.0(esbuild@0.25.6):
+  bundle-require@5.1.0(esbuild@0.25.8):
     dependencies:
-      esbuild: 0.25.6
+      esbuild: 0.25.8
       load-tsconfig: 0.2.5
 
   busboy@1.6.0:
@@ -12442,7 +12453,7 @@ snapshots:
       assertion-error: 2.0.1
       check-error: 2.1.1
       deep-eql: 5.0.2
-      loupe: 3.1.4
+      loupe: 3.2.0
       pathval: 2.0.1
 
   chalk@4.1.2:
@@ -12959,7 +12970,7 @@ snapshots:
 
   dom-helpers@5.2.1:
     dependencies:
-      '@babel/runtime': 7.27.6
+      '@babel/runtime': 7.28.2
       csstype: 3.1.3
 
   dompurify@3.2.6:
@@ -12978,7 +12989,7 @@ snapshots:
 
   eastasianwidth@0.2.0: {}
 
-  electron-to-chromium@1.5.184: {}
+  electron-to-chromium@1.5.190: {}
 
   elliptic@6.6.1:
     dependencies:
@@ -13187,34 +13198,34 @@ snapshots:
       '@esbuild/win32-ia32': 0.21.5
       '@esbuild/win32-x64': 0.21.5
 
-  esbuild@0.25.6:
+  esbuild@0.25.8:
     optionalDependencies:
-      '@esbuild/aix-ppc64': 0.25.6
-      '@esbuild/android-arm': 0.25.6
-      '@esbuild/android-arm64': 0.25.6
-      '@esbuild/android-x64': 0.25.6
-      '@esbuild/darwin-arm64': 0.25.6
-      '@esbuild/darwin-x64': 0.25.6
-      '@esbuild/freebsd-arm64': 0.25.6
-      '@esbuild/freebsd-x64': 0.25.6
-      '@esbuild/linux-arm': 0.25.6
-      '@esbuild/linux-arm64': 0.25.6
-      '@esbuild/linux-ia32': 0.25.6
-      '@esbuild/linux-loong64': 0.25.6
-      '@esbuild/linux-mips64el': 0.25.6
-      '@esbuild/linux-ppc64': 0.25.6
-      '@esbuild/linux-riscv64': 0.25.6
-      '@esbuild/linux-s390x': 0.25.6
-      '@esbuild/linux-x64': 0.25.6
-      '@esbuild/netbsd-arm64': 0.25.6
-      '@esbuild/netbsd-x64': 0.25.6
-      '@esbuild/openbsd-arm64': 0.25.6
-      '@esbuild/openbsd-x64': 0.25.6
-      '@esbuild/openharmony-arm64': 0.25.6
-      '@esbuild/sunos-x64': 0.25.6
-      '@esbuild/win32-arm64': 0.25.6
-      '@esbuild/win32-ia32': 0.25.6
-      '@esbuild/win32-x64': 0.25.6
+      '@esbuild/aix-ppc64': 0.25.8
+      '@esbuild/android-arm': 0.25.8
+      '@esbuild/android-arm64': 0.25.8
+      '@esbuild/android-x64': 0.25.8
+      '@esbuild/darwin-arm64': 0.25.8
+      '@esbuild/darwin-x64': 0.25.8
+      '@esbuild/freebsd-arm64': 0.25.8
+      '@esbuild/freebsd-x64': 0.25.8
+      '@esbuild/linux-arm': 0.25.8
+      '@esbuild/linux-arm64': 0.25.8
+      '@esbuild/linux-ia32': 0.25.8
+      '@esbuild/linux-loong64': 0.25.8
+      '@esbuild/linux-mips64el': 0.25.8
+      '@esbuild/linux-ppc64': 0.25.8
+      '@esbuild/linux-riscv64': 0.25.8
+      '@esbuild/linux-s390x': 0.25.8
+      '@esbuild/linux-x64': 0.25.8
+      '@esbuild/netbsd-arm64': 0.25.8
+      '@esbuild/netbsd-x64': 0.25.8
+      '@esbuild/openbsd-arm64': 0.25.8
+      '@esbuild/openbsd-x64': 0.25.8
+      '@esbuild/openharmony-arm64': 0.25.8
+      '@esbuild/sunos-x64': 0.25.8
+      '@esbuild/win32-arm64': 0.25.8
+      '@esbuild/win32-ia32': 0.25.8
+      '@esbuild/win32-x64': 0.25.8
 
   escalade@3.2.0: {}
 
@@ -13257,7 +13268,7 @@ snapshots:
       remark-mdx: 3.1.0
       remark-parse: 11.0.0
       remark-stringify: 11.0.0
-      synckit: 0.11.8
+      synckit: 0.11.11
       unified: 11.0.5
       unified-engine: 11.2.2
       unist-util-visit: 5.0.0
@@ -13336,7 +13347,7 @@ snapshots:
       remark-mdx: 3.1.0
       remark-parse: 11.0.0
       remark-stringify: 11.0.0
-      synckit: 0.11.8
+      synckit: 0.11.11
       unified: 11.0.5
       vfile: 6.0.3
     transitivePeerDependencies:
@@ -13480,7 +13491,7 @@ snapshots:
     dependencies:
       '@types/estree-jsx': 1.0.5
       astring: 1.9.0
-      source-map: 0.7.4
+      source-map: 0.7.6
 
   estree-util-value-to-estree@3.4.0:
     dependencies:
@@ -13670,7 +13681,7 @@ snapshots:
       cross-spawn: 7.0.6
       signal-exit: 4.1.0
 
-  form-data@4.0.3:
+  form-data@4.0.4:
     dependencies:
       asynckit: 0.4.0
       combined-stream: 1.0.8
@@ -13684,9 +13695,9 @@ snapshots:
 
   fraction.js@4.3.7: {}
 
-  framer-motion@12.23.6(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+  framer-motion@12.23.9(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
     dependencies:
-      motion-dom: 12.23.6
+      motion-dom: 12.23.9
       motion-utils: 12.23.6
       tslib: 2.8.1
     optionalDependencies:
@@ -13870,20 +13881,18 @@ snapshots:
 
   hachure-fill@0.5.2: {}
 
-  hardhat-watcher@2.5.0(hardhat@2.25.0(typescript@5.8.3)):
+  hardhat-watcher@2.5.0(hardhat@2.26.1(typescript@5.8.3)):
     dependencies:
       chokidar: 3.6.0
-      hardhat: 2.25.0(typescript@5.8.3)
+      hardhat: 2.26.1(typescript@5.8.3)
 
-  hardhat@2.25.0(typescript@5.8.3):
+  hardhat@2.26.1(typescript@5.8.3):
     dependencies:
       '@ethereumjs/util': 9.1.0
       '@ethersproject/abi': 5.8.0
       '@nomicfoundation/edr': 0.11.3
       '@nomicfoundation/solidity-analyzer': 0.1.2
       '@sentry/node': 5.30.0
-      '@types/bn.js': 5.2.0
-      '@types/lru-cache': 5.1.1
       adm-zip: 0.4.16
       aggregate-error: 3.1.0
       ansi-escapes: 4.3.2
@@ -14458,7 +14467,7 @@ snapshots:
       cssstyle: 4.6.0
       data-urls: 5.0.0
       decimal.js: 10.6.0
-      form-data: 4.0.3
+      form-data: 4.0.4
       html-encoding-sniffer: 4.0.0
       http-proxy-agent: 7.0.2
       https-proxy-agent: 7.0.6
@@ -14612,7 +14621,7 @@ snapshots:
     dependencies:
       js-tokens: 4.0.0
 
-  loupe@3.1.4: {}
+  loupe@3.2.0: {}
 
   lru-cache@10.4.3: {}
 
@@ -14630,7 +14639,7 @@ snapshots:
 
   markdown-table@3.0.4: {}
 
-  marked@15.0.12: {}
+  marked@16.1.1: {}
 
   math-intrinsics@1.1.0: {}
 
@@ -14839,11 +14848,11 @@ snapshots:
 
   merge2@1.4.1: {}
 
-  mermaid@11.8.1:
+  mermaid@11.9.0:
     dependencies:
       '@braintree/sanitize-url': 7.1.1
       '@iconify/utils': 2.3.0
-      '@mermaid-js/parser': 0.6.1
+      '@mermaid-js/parser': 0.6.2
       '@types/d3': 7.4.3
       cytoscape: 3.32.1
       cytoscape-cose-bilkent: 4.1.0(cytoscape@3.32.1)
@@ -14856,7 +14865,7 @@ snapshots:
       katex: 0.16.22
       khroma: 2.1.0
       lodash-es: 4.17.21
-      marked: 15.0.12
+      marked: 16.1.1
       roughjs: 4.6.6
       stylis: 4.3.6
       ts-dedent: 2.2.0
@@ -15217,7 +15226,7 @@ snapshots:
 
   mitt@3.0.1: {}
 
-  mixpanel-browser@2.66.0:
+  mixpanel-browser@2.67.0:
     dependencies:
       rrweb: 2.0.0-alpha.18
 
@@ -15259,15 +15268,15 @@ snapshots:
       yargs-parser: 20.2.9
       yargs-unparser: 2.0.0
 
-  motion-dom@12.23.6:
+  motion-dom@12.23.9:
     dependencies:
       motion-utils: 12.23.6
 
   motion-utils@12.23.6: {}
 
-  motion@12.23.6(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+  motion@12.23.9(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
     dependencies:
-      framer-motion: 12.23.6(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      framer-motion: 12.23.9(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       tslib: 2.8.1
     optionalDependencies:
       '@emotion/is-prop-valid': 0.8.8
@@ -15288,7 +15297,7 @@ snapshots:
 
   nanoid@3.3.11: {}
 
-  napi-postinstall@0.3.0: {}
+  napi-postinstall@0.3.2: {}
 
   natural-compare@1.4.0: {}
 
@@ -15336,10 +15345,10 @@ snapshots:
   nextra@3.3.1(@types/react@18.3.23)(acorn@8.15.0)(next@14.2.30(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3):
     dependencies:
       '@formatjs/intl-localematcher': 0.5.10
-      '@headlessui/react': 2.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@headlessui/react': 2.2.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@mdx-js/mdx': 3.1.0(acorn@8.15.0)
       '@mdx-js/react': 3.1.0(@types/react@18.3.23)(react@18.3.1)
-      '@napi-rs/simple-git': 0.1.19
+      '@napi-rs/simple-git': 0.1.21
       '@shikijs/twoslash': 1.29.2(typescript@5.8.3)
       '@theguild/remark-mermaid': 0.1.3(react@18.3.1)
       '@theguild/remark-npm2yarn': 0.3.3
@@ -15827,50 +15836,50 @@ snapshots:
       iconv-lite: 0.4.24
       unpipe: 1.0.0
 
-  react-aria@3.41.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+  react-aria@3.42.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
     dependencies:
       '@internationalized/string': 3.2.7
-      '@react-aria/breadcrumbs': 3.5.26(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/button': 3.13.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/calendar': 3.8.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/checkbox': 3.15.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/color': 3.0.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/combobox': 3.12.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/datepicker': 3.14.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/dialog': 3.5.27(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/disclosure': 3.0.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/dnd': 3.10.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/focus': 3.20.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/gridlist': 3.13.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/i18n': 3.12.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/interactions': 3.25.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/label': 3.7.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/landmark': 3.0.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/link': 3.8.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/listbox': 3.14.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/menu': 3.18.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/meter': 3.4.24(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/numberfield': 3.11.16(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/overlays': 3.27.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/progress': 3.4.24(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/radio': 3.11.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/searchfield': 3.8.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/select': 3.15.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/selection': 3.24.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/separator': 3.4.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/slider': 3.7.21(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/ssr': 3.9.9(react@18.3.1)
-      '@react-aria/switch': 3.7.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/table': 3.17.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/tabs': 3.10.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/tag': 3.6.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/textfield': 3.17.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/toast': 3.0.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/tooltip': 3.8.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/tree': 3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/utils': 3.29.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-aria/visually-hidden': 3.8.25(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@react-types/shared': 3.30.0(react@18.3.1)
+      '@react-aria/breadcrumbs': 3.5.27(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/button': 3.14.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/calendar': 3.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/checkbox': 3.16.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/color': 3.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/combobox': 3.13.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/datepicker': 3.15.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/dialog': 3.5.28(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/disclosure': 3.0.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/dnd': 3.11.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/focus': 3.21.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/gridlist': 3.13.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/i18n': 3.12.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/interactions': 3.25.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/label': 3.7.20(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/landmark': 3.0.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/link': 3.8.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/listbox': 3.14.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/menu': 3.19.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/meter': 3.4.25(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/numberfield': 3.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/overlays': 3.28.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/progress': 3.4.25(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/radio': 3.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/searchfield': 3.8.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/select': 3.16.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/selection': 3.25.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/separator': 3.4.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/slider': 3.8.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/ssr': 3.9.10(react@18.3.1)
+      '@react-aria/switch': 3.7.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/table': 3.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/tabs': 3.10.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/tag': 3.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/textfield': 3.18.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/toast': 3.0.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/tooltip': 3.8.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/tree': 3.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/utils': 3.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-aria/visually-hidden': 3.8.26(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@react-types/shared': 3.31.0(react@18.3.1)
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
@@ -15909,7 +15918,7 @@ snapshots:
 
   react-is@18.3.1: {}
 
-  react-keyed-flatten-children@5.0.0(react-is@18.3.1)(react@18.3.1):
+  react-keyed-flatten-children@5.0.1(react-is@18.3.1)(react@18.3.1):
     dependencies:
       react: 18.3.1
       react-is: 18.3.1
@@ -15956,7 +15965,7 @@ snapshots:
 
   react-transition-group@4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
     dependencies:
-      '@babel/runtime': 7.27.6
+      '@babel/runtime': 7.28.2
       dom-helpers: 5.2.1
       loose-envify: 1.4.0
       prop-types: 15.8.1
@@ -16407,7 +16416,7 @@ snapshots:
 
   safer-buffer@2.1.2: {}
 
-  satori@0.15.2:
+  satori@0.16.1:
     dependencies:
       '@shuding/opentype.js': 1.4.0-beta.0
       css-background-parser: 0.1.0
@@ -16419,7 +16428,7 @@ snapshots:
       linebreak: 1.1.0
       parse-css-color: 0.2.1
       postcss-value-parser: 4.2.0
-      yoga-wasm-web: 0.3.3
+      yoga-layout: 3.2.1
 
   saxes@6.0.0:
     dependencies:
@@ -16516,14 +16525,14 @@ snapshots:
       '@shikijs/vscode-textmate': 10.0.2
       '@types/hast': 3.0.4
 
-  shiki@3.8.0:
+  shiki@3.8.1:
     dependencies:
-      '@shikijs/core': 3.8.0
-      '@shikijs/engine-javascript': 3.8.0
-      '@shikijs/engine-oniguruma': 3.8.0
-      '@shikijs/langs': 3.8.0
-      '@shikijs/themes': 3.8.0
-      '@shikijs/types': 3.8.0
+      '@shikijs/core': 3.8.1
+      '@shikijs/engine-javascript': 3.8.1
+      '@shikijs/engine-oniguruma': 3.8.1
+      '@shikijs/langs': 3.8.1
+      '@shikijs/themes': 3.8.1
+      '@shikijs/types': 3.8.1
       '@shikijs/vscode-textmate': 10.0.2
       '@types/hast': 3.0.4
 
@@ -16597,7 +16606,7 @@ snapshots:
 
   source-map@0.6.1: {}
 
-  source-map@0.7.4: {}
+  source-map@0.7.6: {}
 
   source-map@0.8.0-beta.0:
     dependencies:
@@ -16836,9 +16845,9 @@ snapshots:
 
   symbol-tree@3.2.4: {}
 
-  synckit@0.11.8:
+  synckit@0.11.11:
     dependencies:
-      '@pkgr/core': 0.2.7
+      '@pkgr/core': 0.2.9
 
   system-architecture@0.1.0: {}
 
@@ -16986,12 +16995,12 @@ snapshots:
 
   tsup@8.5.0(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.8.0):
     dependencies:
-      bundle-require: 5.1.0(esbuild@0.25.6)
+      bundle-require: 5.1.0(esbuild@0.25.8)
       cac: 6.7.14
       chokidar: 4.0.3
       consola: 3.4.2
       debug: 4.4.1(supports-color@8.1.1)
-      esbuild: 0.25.6
+      esbuild: 0.25.8
       fix-dts-default-cjs-exports: 1.0.1
       joycon: 3.1.1
       picocolors: 1.1.1
@@ -17014,37 +17023,37 @@ snapshots:
 
   tsx@4.20.3:
     dependencies:
-      esbuild: 0.25.6
+      esbuild: 0.25.8
       get-tsconfig: 4.10.1
     optionalDependencies:
       fsevents: 2.3.3
 
-  turbo-darwin-64@2.5.4:
+  turbo-darwin-64@2.5.5:
     optional: true
 
-  turbo-darwin-arm64@2.5.4:
+  turbo-darwin-arm64@2.5.5:
     optional: true
 
-  turbo-linux-64@2.5.4:
+  turbo-linux-64@2.5.5:
     optional: true
 
-  turbo-linux-arm64@2.5.4:
+  turbo-linux-arm64@2.5.5:
     optional: true
 
-  turbo-windows-64@2.5.4:
+  turbo-windows-64@2.5.5:
     optional: true
 
-  turbo-windows-arm64@2.5.4:
+  turbo-windows-arm64@2.5.5:
     optional: true
 
-  turbo@2.5.4:
+  turbo@2.5.5:
     optionalDependencies:
-      turbo-darwin-64: 2.5.4
-      turbo-darwin-arm64: 2.5.4
-      turbo-linux-64: 2.5.4
-      turbo-linux-arm64: 2.5.4
-      turbo-windows-64: 2.5.4
-      turbo-windows-arm64: 2.5.4
+      turbo-darwin-64: 2.5.5
+      turbo-darwin-arm64: 2.5.5
+      turbo-linux-64: 2.5.5
+      turbo-linux-arm64: 2.5.5
+      turbo-windows-64: 2.5.5
+      turbo-windows-arm64: 2.5.5
 
   twoslash-protocol@0.2.12: {}
 
@@ -17148,7 +17157,7 @@ snapshots:
       '@types/concat-stream': 2.0.3
       '@types/debug': 4.1.12
       '@types/is-empty': 1.2.3
-      '@types/node': 22.16.4
+      '@types/node': 22.16.5
       '@types/unist': 3.0.3
       concat-stream: 2.0.0
       debug: 4.4.1(supports-color@8.1.1)
@@ -17271,7 +17280,7 @@ snapshots:
 
   unrs-resolver@1.11.1:
     dependencies:
-      napi-postinstall: 0.3.0
+      napi-postinstall: 0.3.2
     optionalDependencies:
       '@unrs/resolver-binding-android-arm-eabi': 1.11.1
       '@unrs/resolver-binding-android-arm64': 1.11.1
@@ -17406,7 +17415,7 @@ snapshots:
       d3-time: 3.1.0
       d3-timer: 3.0.1
 
-  viem@2.31.7(typescript@5.8.3)(zod@3.25.76):
+  viem@2.33.0(typescript@5.8.3)(zod@3.25.76):
     dependencies:
       '@noble/curves': 1.9.2
       '@noble/hashes': 1.8.0
@@ -17423,13 +17432,13 @@ snapshots:
       - utf-8-validate
       - zod
 
-  vite-node@2.1.9(@types/node@22.16.4):
+  vite-node@2.1.9(@types/node@22.16.5):
     dependencies:
       cac: 6.7.14
       debug: 4.4.1(supports-color@8.1.1)
       es-module-lexer: 1.7.0
       pathe: 1.1.2
-      vite: 5.4.19(@types/node@22.16.4)
+      vite: 5.4.19(@types/node@22.16.5)
     transitivePeerDependencies:
       - '@types/node'
       - less
@@ -17441,19 +17450,19 @@ snapshots:
       - supports-color
       - terser
 
-  vite@5.4.19(@types/node@22.16.4):
+  vite@5.4.19(@types/node@22.16.5):
     dependencies:
       esbuild: 0.21.5
       postcss: 8.5.6
       rollup: 4.45.1
     optionalDependencies:
-      '@types/node': 22.16.4
+      '@types/node': 22.16.5
       fsevents: 2.3.3
 
-  vitest@2.1.9(@types/node@22.16.4)(jsdom@24.1.3):
+  vitest@2.1.9(@types/node@22.16.5)(jsdom@24.1.3):
     dependencies:
       '@vitest/expect': 2.1.9
-      '@vitest/mocker': 2.1.9(vite@5.4.19(@types/node@22.16.4))
+      '@vitest/mocker': 2.1.9(vite@5.4.19(@types/node@22.16.5))
       '@vitest/pretty-format': 2.1.9
       '@vitest/runner': 2.1.9
       '@vitest/snapshot': 2.1.9
@@ -17469,11 +17478,11 @@ snapshots:
       tinyexec: 0.3.2
       tinypool: 1.1.1
       tinyrainbow: 1.2.0
-      vite: 5.4.19(@types/node@22.16.4)
-      vite-node: 2.1.9(@types/node@22.16.4)
+      vite: 5.4.19(@types/node@22.16.5)
+      vite-node: 2.1.9(@types/node@22.16.5)
       why-is-node-running: 2.3.0
     optionalDependencies:
-      '@types/node': 22.16.4
+      '@types/node': 22.16.5
       jsdom: 24.1.3
     transitivePeerDependencies:
       - less
@@ -17615,7 +17624,7 @@ snapshots:
 
   workerpool@6.5.1: {}
 
-  wrangler@3.114.11(@cloudflare/workers-types@4.20250715.0):
+  wrangler@3.114.11(@cloudflare/workers-types@4.20250724.0):
     dependencies:
       '@cloudflare/kv-asset-handler': 0.3.4
       '@cloudflare/unenv-preset': 2.0.2(unenv@2.0.0-rc.14)(workerd@1.20250408.0)
@@ -17628,7 +17637,7 @@ snapshots:
       unenv: 2.0.0-rc.14
       workerd: 1.20250408.0
     optionalDependencies:
-      '@cloudflare/workers-types': 4.20250715.0
+      '@cloudflare/workers-types': 4.20250724.0
       fsevents: 2.3.3
       sharp: 0.33.5
     transitivePeerDependencies:
@@ -17692,6 +17701,8 @@ snapshots:
 
   yocto-queue@1.2.1: {}
 
+  yoga-layout@3.2.1: {}
+
   yoga-wasm-web@0.3.3: {}
 
   youch@3.3.4:
diff --git a/website/package.json b/website/package.json
index 579f73206b79..eb72f314f6f4 100644
--- a/website/package.json
+++ b/website/package.json
@@ -26,15 +26,15 @@
     "@pinax/graph-networks-registry": "^0.7.1",
     "@react-hookz/web": "^25.1.1",
     "@readme/httpsnippet": "^11.0.0",
-    "@readme/openapi-parser": "^4.1.1",
+    "@readme/openapi-parser": "^4.1.2",
     "fetch-har": "^11.1.1",
     "hast": "^1.0.0",
     "hast-util-whitespace": "^3.0.0",
     "lodash": "^4.17.21",
     "mdast-util-mdx-jsx": "^3.2.0",
     "mdast-util-to-hast": "^13.2.0",
-    "mixpanel-browser": "^2.66.0",
-    "motion": "^12.23.6",
+    "mixpanel-browser": "^2.67.0",
+    "motion": "^12.23.9",
     "next": "^14.2.30",
     "next-seo": "^6.8.0",
     "next-sitemap": "^4.2.3",
@@ -54,8 +54,8 @@
     "@types/hast": "^3.0.4",
     "@types/lodash": "^4.17.20",
     "@types/mdast": "^4.0.4",
-    "@types/mixpanel-browser": "^2.60.0",
-    "@types/node": "^22.16.4",
+    "@types/mixpanel-browser": "^2.66.0",
+    "@types/node": "^22.16.5",
     "@types/react": "^18.3.23",
     "@types/react-dom": "^18.3.7",
     "@types/vfile": "^4.0.0",
diff --git a/website/src/openApi/tokenApi.json b/website/src/openApi/tokenApi.json
index 5bc9324e4002..a2dac810fa48 100644
--- a/website/src/openApi/tokenApi.json
+++ b/website/src/openApi/tokenApi.json
@@ -3,7 +3,7 @@
   "info": {
     "title": "Token API (Beta)",
     "description": "Power your apps & AI agents with real-time token data.",
-    "version": "2.2.10+af1bb70 (2025-07-10)"
+    "version": "2.3.3+6e8d0f0 (2025-07-24)"
   },
   "servers": [
     {
@@ -46,15 +46,14 @@
                               "",
                               "ERC721",
                               "ERC1155"
-                            ]
+                            ],
+                            "default": ""
                           },
                           "contract": {
-                            "type": "string",
-                            "pattern": "^(0[xX])?[0-9a-fA-F]{40}$"
+                            "type": "string"
                           },
                           "owner": {
-                            "type": "string",
-                            "pattern": "^(0[xX])?[0-9a-fA-F]{40}$"
+                            "type": "string"
                           },
                           "symbol": {
                             "type": "string"
@@ -83,6 +82,7 @@
                               "optimism",
                               "unichain"
                             ],
+                            "default": "mainnet",
                             "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
                             "example": "mainnet"
                           }
@@ -130,6 +130,308 @@
                 }
               }
             }
+          },
+          "400": {
+            "description": "Client side error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 400,
+                  "code": "bad_query_input",
+                  "message": "Invalid query parameter provided"
+                }
+              }
+            }
+          },
+          "401": {
+            "description": "Authentication failed",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 401,
+                  "code": "unauthorized",
+                  "message": "Authentication required"
+                }
+              }
+            }
+          },
+          "403": {
+            "description": "Forbidden",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 403,
+                  "code": "forbidden",
+                  "message": "Access denied"
+                }
+              }
+            }
+          },
+          "404": {
+            "description": "Not found",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 404,
+                  "code": "not_found_data",
+                  "message": "Resource not found"
+                }
+              }
+            }
+          },
+          "500": {
+            "description": "Server side error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 500
+                        },
+                        {
+                          "type": "number",
+                          "const": 502
+                        },
+                        {
+                          "type": "number",
+                          "const": 504
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "bad_database_response",
+                        "connection_refused",
+                        "database_timeout",
+                        "internal_server_error"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 500,
+                  "code": "internal_server_error",
+                  "message": "An unexpected error occurred"
+                }
+              }
+            }
           }
         },
         "operationId": "getNftOwnershipsEvmByAddress",
@@ -142,7 +444,6 @@
             "name": "address",
             "schema": {
               "type": "string",
-              "pattern": "^(0[xX])?[0-9a-fA-F]{40}$",
               "description": "Filter by address",
               "example": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
             },
@@ -163,6 +464,7 @@
                 "optimism",
                 "unichain"
               ],
+              "default": "mainnet",
               "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
               "example": "mainnet"
             }
@@ -176,7 +478,17 @@
                 "",
                 "ERC721",
                 "ERC1155"
-              ]
+              ],
+              "default": ""
+            }
+          },
+          {
+            "in": "query",
+            "name": "contract",
+            "schema": {
+              "type": "string",
+              "description": "Filter by address",
+              "default": ""
             }
           },
           {
@@ -266,6 +578,7 @@
                               "optimism",
                               "unichain"
                             ],
+                            "default": "mainnet",
                             "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
                             "example": "mainnet"
                           }
@@ -322,86 +635,387 @@
                 }
               }
             }
-          }
-        },
-        "operationId": "getNftCollectionsEvmByContract",
-        "tags": [
-          "EVM"
-        ],
-        "parameters": [
-          {
-            "in": "path",
-            "name": "contract",
-            "schema": {
-              "type": "string",
-              "pattern": "^(0[xX])?[0-9a-fA-F]{40}$",
-              "description": "Filter by NFT contract address",
-              "example": "0xbd3531da5cf5857e7cfaa92426877b022e612cf8"
-            },
-            "required": true
           },
-          {
-            "in": "query",
-            "name": "network_id",
-            "schema": {
-              "type": "string",
-              "enum": [
-                "arbitrum-one",
-                "avalanche",
-                "base",
-                "bsc",
-                "mainnet",
-                "matic",
-                "optimism",
-                "unichain"
-              ],
-              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
-              "example": "mainnet"
-            }
-          }
-        ],
-        "summary": "NFT Collection",
-        "description": "Provides single NFT collection metadata, total supply, owners & total transfers.",
-        "security": [
-          {
-            "bearerAuth": []
-          }
-        ]
-      }
-    },
-    "/nft/items/evm/contract/{contract}/token_id/{token_id}": {
-      "get": {
-        "responses": {
-          "200": {
-            "description": "Successful Response",
+          "400": {
+            "description": "Client side error",
             "content": {
               "application/json": {
                 "schema": {
                   "type": "object",
                   "properties": {
-                    "data": {
-                      "type": "array",
-                      "items": {
-                        "type": "object",
-                        "properties": {
-                          "token_id": {
-                            "type": "string"
-                          },
-                          "token_standard": {
-                            "type": "string",
-                            "enum": [
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 400,
+                  "code": "bad_query_input",
+                  "message": "Invalid query parameter provided"
+                }
+              }
+            }
+          },
+          "401": {
+            "description": "Authentication failed",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 401,
+                  "code": "unauthorized",
+                  "message": "Authentication required"
+                }
+              }
+            }
+          },
+          "403": {
+            "description": "Forbidden",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 403,
+                  "code": "forbidden",
+                  "message": "Access denied"
+                }
+              }
+            }
+          },
+          "404": {
+            "description": "Not found",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 404,
+                  "code": "not_found_data",
+                  "message": "Resource not found"
+                }
+              }
+            }
+          },
+          "500": {
+            "description": "Server side error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 500
+                        },
+                        {
+                          "type": "number",
+                          "const": 502
+                        },
+                        {
+                          "type": "number",
+                          "const": 504
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "bad_database_response",
+                        "connection_refused",
+                        "database_timeout",
+                        "internal_server_error"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 500,
+                  "code": "internal_server_error",
+                  "message": "An unexpected error occurred"
+                }
+              }
+            }
+          }
+        },
+        "operationId": "getNftCollectionsEvmByContract",
+        "tags": [
+          "EVM"
+        ],
+        "parameters": [
+          {
+            "in": "path",
+            "name": "contract",
+            "schema": {
+              "type": "string",
+              "description": "Filter by NFT contract address",
+              "example": "0xbd3531da5cf5857e7cfaa92426877b022e612cf8"
+            },
+            "required": true
+          },
+          {
+            "in": "query",
+            "name": "network_id",
+            "schema": {
+              "type": "string",
+              "enum": [
+                "arbitrum-one",
+                "avalanche",
+                "base",
+                "bsc",
+                "mainnet",
+                "matic",
+                "optimism",
+                "unichain"
+              ],
+              "default": "mainnet",
+              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
+              "example": "mainnet"
+            }
+          }
+        ],
+        "summary": "NFT Collection",
+        "description": "Provides single NFT collection metadata, total supply, owners & total transfers.",
+        "security": [
+          {
+            "bearerAuth": []
+          }
+        ]
+      }
+    },
+    "/nft/items/evm/contract/{contract}/token_id/{token_id}": {
+      "get": {
+        "responses": {
+          "200": {
+            "description": "Successful Response",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "data": {
+                      "type": "array",
+                      "items": {
+                        "type": "object",
+                        "properties": {
+                          "token_id": {
+                            "type": "string"
+                          },
+                          "token_standard": {
+                            "type": "string",
+                            "enum": [
                               "",
                               "ERC721",
                               "ERC1155"
-                            ]
+                            ],
+                            "default": ""
                           },
                           "contract": {
-                            "type": "string",
-                            "pattern": "^(0[xX])?[0-9a-fA-F]{40}$"
+                            "type": "string"
                           },
                           "owner": {
-                            "type": "string",
-                            "pattern": "^(0[xX])?[0-9a-fA-F]{40}$"
+                            "type": "string"
                           },
                           "uri": {
                             "type": "string"
@@ -448,6 +1062,7 @@
                               "optimism",
                               "unichain"
                             ],
+                            "default": "mainnet",
                             "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
                             "example": "mainnet"
                           }
@@ -519,19 +1134,320 @@
                 }
               }
             }
-          }
-        },
-        "operationId": "getNftItemsEvmContractByContractToken_idByToken_id",
-        "tags": [
-          "EVM"
-        ],
-        "parameters": [
-          {
-            "in": "path",
+          },
+          "400": {
+            "description": "Client side error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 400,
+                  "code": "bad_query_input",
+                  "message": "Invalid query parameter provided"
+                }
+              }
+            }
+          },
+          "401": {
+            "description": "Authentication failed",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 401,
+                  "code": "unauthorized",
+                  "message": "Authentication required"
+                }
+              }
+            }
+          },
+          "403": {
+            "description": "Forbidden",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 403,
+                  "code": "forbidden",
+                  "message": "Access denied"
+                }
+              }
+            }
+          },
+          "404": {
+            "description": "Not found",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 404,
+                  "code": "not_found_data",
+                  "message": "Resource not found"
+                }
+              }
+            }
+          },
+          "500": {
+            "description": "Server side error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 500
+                        },
+                        {
+                          "type": "number",
+                          "const": 502
+                        },
+                        {
+                          "type": "number",
+                          "const": 504
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "bad_database_response",
+                        "connection_refused",
+                        "database_timeout",
+                        "internal_server_error"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 500,
+                  "code": "internal_server_error",
+                  "message": "An unexpected error occurred"
+                }
+              }
+            }
+          }
+        },
+        "operationId": "getNftItemsEvmContractByContractToken_idByToken_id",
+        "tags": [
+          "EVM"
+        ],
+        "parameters": [
+          {
+            "in": "path",
             "name": "token_id",
             "schema": {
               "type": "string",
-              "pattern": "^(\\d+|)$",
               "description": "NFT token ID",
               "example": "5712"
             },
@@ -542,7 +1458,6 @@
             "name": "contract",
             "schema": {
               "type": "string",
-              "pattern": "^(0[xX])?[0-9a-fA-F]{40}$",
               "description": "Filter by NFT contract address",
               "example": "0xbd3531da5cf5857e7cfaa92426877b022e612cf8"
             },
@@ -563,6 +1478,7 @@
                 "optimism",
                 "unichain"
               ],
+              "default": "mainnet",
               "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
               "example": "mainnet"
             }
@@ -613,8 +1529,7 @@
                             "type": "string"
                           },
                           "contract": {
-                            "type": "string",
-                            "pattern": "^(0[xX])?[0-9a-fA-F]{40}$"
+                            "type": "string"
                           },
                           "symbol": {
                             "type": "string"
@@ -623,12 +1538,10 @@
                             "type": "string"
                           },
                           "from": {
-                            "type": "string",
-                            "pattern": "^(0[xX])?[0-9a-fA-F]{40}$"
+                            "type": "string"
                           },
                           "to": {
-                            "type": "string",
-                            "pattern": "^(0[xX])?[0-9a-fA-F]{40}$"
+                            "type": "string"
                           },
                           "token_id": {
                             "type": "string"
@@ -698,82 +1611,383 @@
                 }
               }
             }
-          }
-        },
-        "operationId": "getNftActivitiesEvm",
-        "tags": [
-          "EVM"
-        ],
-        "parameters": [
-          {
-            "in": "query",
-            "name": "network_id",
-            "schema": {
-              "type": "string",
-              "enum": [
-                "arbitrum-one",
-                "avalanche",
-                "base",
-                "bsc",
-                "mainnet",
-                "matic",
-                "optimism",
-                "unichain"
-              ],
-              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
-              "example": "mainnet"
-            },
-            "required": false
-          },
-          {
-            "in": "query",
-            "name": "contract",
-            "schema": {
-              "type": "string",
-              "pattern": "^(0[xX])?[0-9a-fA-F]{40}$",
-              "description": "Filter by NFT contract address",
-              "example": "0xbd3531da5cf5857e7cfaa92426877b022e612cf8"
-            },
-            "required": true
-          },
-          {
-            "in": "query",
-            "name": "any",
-            "schema": {
-              "type": "string",
-              "pattern": "^(0[xX])?[0-9a-fA-F]{40}$",
-              "description": "Filter by address",
-              "example": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
-            },
-            "required": false
-          },
-          {
-            "in": "query",
-            "name": "from",
-            "schema": {
-              "type": "string",
-              "pattern": "^(0[xX])?[0-9a-fA-F]{40}$",
-              "description": "Filter by address"
-            },
-            "required": false
-          },
-          {
-            "in": "query",
-            "name": "to",
-            "schema": {
-              "type": "string",
-              "pattern": "^(0[xX])?[0-9a-fA-F]{40}$",
-              "description": "Filter by address"
-            },
-            "required": false
+          },
+          "400": {
+            "description": "Client side error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 400,
+                  "code": "bad_query_input",
+                  "message": "Invalid query parameter provided"
+                }
+              }
+            }
+          },
+          "401": {
+            "description": "Authentication failed",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 401,
+                  "code": "unauthorized",
+                  "message": "Authentication required"
+                }
+              }
+            }
+          },
+          "403": {
+            "description": "Forbidden",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 403,
+                  "code": "forbidden",
+                  "message": "Access denied"
+                }
+              }
+            }
+          },
+          "404": {
+            "description": "Not found",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 404,
+                  "code": "not_found_data",
+                  "message": "Resource not found"
+                }
+              }
+            }
+          },
+          "500": {
+            "description": "Server side error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 500
+                        },
+                        {
+                          "type": "number",
+                          "const": 502
+                        },
+                        {
+                          "type": "number",
+                          "const": 504
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "bad_database_response",
+                        "connection_refused",
+                        "database_timeout",
+                        "internal_server_error"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 500,
+                  "code": "internal_server_error",
+                  "message": "An unexpected error occurred"
+                }
+              }
+            }
+          }
+        },
+        "operationId": "getNftActivitiesEvm",
+        "tags": [
+          "EVM"
+        ],
+        "parameters": [
+          {
+            "in": "query",
+            "name": "network_id",
+            "schema": {
+              "type": "string",
+              "enum": [
+                "arbitrum-one",
+                "avalanche",
+                "base",
+                "bsc",
+                "mainnet",
+                "matic",
+                "optimism",
+                "unichain"
+              ],
+              "default": "mainnet",
+              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
+              "example": "mainnet"
+            },
+            "required": false
+          },
+          {
+            "in": "query",
+            "name": "contract",
+            "schema": {
+              "type": "string",
+              "description": "Filter by NFT contract address",
+              "example": "0xbd3531da5cf5857e7cfaa92426877b022e612cf8"
+            },
+            "required": true
+          },
+          {
+            "in": "query",
+            "name": "anyAddress",
+            "schema": {
+              "type": "string",
+              "description": "Filter by address",
+              "default": ""
+            },
+            "required": false
+          },
+          {
+            "in": "query",
+            "name": "fromAddress",
+            "schema": {
+              "type": "string",
+              "description": "Filter by address",
+              "default": ""
+            },
+            "required": false
+          },
+          {
+            "in": "query",
+            "name": "toAddress",
+            "schema": {
+              "type": "string",
+              "description": "Filter by address",
+              "default": ""
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "startTime",
             "schema": {
-              "type": "number",
-              "minimum": 0,
-              "description": "UNIX timestamp in seconds."
+              "type": "integer",
+              "description": "UNIX timestamp in seconds.",
+              "default": 0
             },
             "required": false
           },
@@ -781,9 +1995,9 @@
             "in": "query",
             "name": "endTime",
             "schema": {
-              "type": "number",
-              "minimum": 0,
-              "description": "UNIX timestamp in seconds."
+              "type": "integer",
+              "description": "UNIX timestamp in seconds.",
+              "default": 9999999999
             },
             "required": false
           },
@@ -893,6 +2107,7 @@
                               "optimism",
                               "unichain"
                             ],
+                            "default": "mainnet",
                             "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
                             "example": "mainnet"
                           }
@@ -940,21 +2155,322 @@
                 }
               }
             }
-          }
-        },
-        "operationId": "getNftHoldersEvmByContract",
-        "tags": [
-          "EVM"
-        ],
-        "parameters": [
-          {
-            "in": "path",
-            "name": "contract",
-            "schema": {
-              "type": "string",
-              "pattern": "^(0[xX])?[0-9a-fA-F]{40}$",
-              "description": "Filter by NFT contract address",
-              "example": "0xbd3531da5cf5857e7cfaa92426877b022e612cf8"
+          },
+          "400": {
+            "description": "Client side error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 400,
+                  "code": "bad_query_input",
+                  "message": "Invalid query parameter provided"
+                }
+              }
+            }
+          },
+          "401": {
+            "description": "Authentication failed",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 401,
+                  "code": "unauthorized",
+                  "message": "Authentication required"
+                }
+              }
+            }
+          },
+          "403": {
+            "description": "Forbidden",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 403,
+                  "code": "forbidden",
+                  "message": "Access denied"
+                }
+              }
+            }
+          },
+          "404": {
+            "description": "Not found",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 404,
+                  "code": "not_found_data",
+                  "message": "Resource not found"
+                }
+              }
+            }
+          },
+          "500": {
+            "description": "Server side error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 500
+                        },
+                        {
+                          "type": "number",
+                          "const": 502
+                        },
+                        {
+                          "type": "number",
+                          "const": 504
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "bad_database_response",
+                        "connection_refused",
+                        "database_timeout",
+                        "internal_server_error"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 500,
+                  "code": "internal_server_error",
+                  "message": "An unexpected error occurred"
+                }
+              }
+            }
+          }
+        },
+        "operationId": "getNftHoldersEvmByContract",
+        "tags": [
+          "EVM"
+        ],
+        "parameters": [
+          {
+            "in": "path",
+            "name": "contract",
+            "schema": {
+              "type": "string",
+              "description": "Filter by NFT contract address",
+              "example": "0xbd3531da5cf5857e7cfaa92426877b022e612cf8"
             },
             "required": true
           },
@@ -973,6 +2489,7 @@
                 "optimism",
                 "unichain"
               ],
+              "default": "mainnet",
               "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
               "example": "mainnet"
             }
@@ -1024,12 +2541,10 @@
                             "type": "string"
                           },
                           "offerer": {
-                            "type": "string",
-                            "pattern": "^(0[xX])?[0-9a-fA-F]{40}$"
+                            "type": "string"
                           },
                           "recipient": {
-                            "type": "string",
-                            "pattern": "^(0[xX])?[0-9a-fA-F]{40}$"
+                            "type": "string"
                           },
                           "sale_amount": {
                             "type": "number"
@@ -1091,82 +2606,384 @@
                 }
               }
             }
-          }
-        },
-        "operationId": "getNftSalesEvm",
-        "tags": [
-          "EVM"
-        ],
-        "parameters": [
-          {
-            "in": "query",
-            "name": "network_id",
-            "schema": {
-              "type": "string",
-              "enum": [
-                "arbitrum-one",
-                "avalanche",
-                "base",
-                "bsc",
-                "mainnet",
-                "matic",
-                "optimism",
-                "unichain"
-              ],
-              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
-              "example": "mainnet"
-            },
-            "required": false
           },
-          {
-            "in": "query",
-            "name": "contract",
-            "schema": {
-              "type": "string",
-              "pattern": "^(0[xX])?[0-9a-fA-F]{40}$",
-              "description": "Filter by NFT contract address",
-              "example": "0xbd3531da5cf5857e7cfaa92426877b022e612cf8"
-            },
-            "required": true
-          },
-          {
-            "in": "query",
-            "name": "token_id",
-            "schema": {
-              "type": "string",
-              "pattern": "^(\\d+|)$",
-              "description": "NFT token ID",
-              "example": "5712"
-            },
-            "required": false
-          },
-          {
-            "in": "query",
-            "name": "any",
-            "schema": {
-              "type": "string",
-              "pattern": "^(0[xX])?[0-9a-fA-F]{40}$",
-              "description": "Filter by address"
-            },
-            "required": false
-          },
-          {
-            "in": "query",
-            "name": "offerer",
-            "schema": {
-              "type": "string",
-              "pattern": "^(0[xX])?[0-9a-fA-F]{40}$",
-              "description": "Filter by address"
-            },
+          "400": {
+            "description": "Client side error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 400,
+                  "code": "bad_query_input",
+                  "message": "Invalid query parameter provided"
+                }
+              }
+            }
+          },
+          "401": {
+            "description": "Authentication failed",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 401,
+                  "code": "unauthorized",
+                  "message": "Authentication required"
+                }
+              }
+            }
+          },
+          "403": {
+            "description": "Forbidden",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 403,
+                  "code": "forbidden",
+                  "message": "Access denied"
+                }
+              }
+            }
+          },
+          "404": {
+            "description": "Not found",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 404,
+                  "code": "not_found_data",
+                  "message": "Resource not found"
+                }
+              }
+            }
+          },
+          "500": {
+            "description": "Server side error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 500
+                        },
+                        {
+                          "type": "number",
+                          "const": 502
+                        },
+                        {
+                          "type": "number",
+                          "const": 504
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "bad_database_response",
+                        "connection_refused",
+                        "database_timeout",
+                        "internal_server_error"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 500,
+                  "code": "internal_server_error",
+                  "message": "An unexpected error occurred"
+                }
+              }
+            }
+          }
+        },
+        "operationId": "getNftSalesEvm",
+        "tags": [
+          "EVM"
+        ],
+        "parameters": [
+          {
+            "in": "query",
+            "name": "network_id",
+            "schema": {
+              "type": "string",
+              "enum": [
+                "arbitrum-one",
+                "avalanche",
+                "base",
+                "bsc",
+                "mainnet",
+                "matic",
+                "optimism",
+                "unichain"
+              ],
+              "default": "mainnet",
+              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
+              "example": "mainnet"
+            },
             "required": false
           },
           {
             "in": "query",
-            "name": "recipient",
+            "name": "contract",
+            "schema": {
+              "type": "string",
+              "description": "Filter by NFT contract address",
+              "example": "0xbd3531da5cf5857e7cfaa92426877b022e612cf8"
+            },
+            "required": true
+          },
+          {
+            "in": "query",
+            "name": "token_id",
+            "schema": {
+              "type": "string",
+              "description": "NFT token ID",
+              "example": "5712",
+              "default": ""
+            },
+            "required": false
+          },
+          {
+            "in": "query",
+            "name": "anyAddress",
             "schema": {
               "type": "string",
-              "pattern": "^(0[xX])?[0-9a-fA-F]{40}$",
-              "description": "Filter by address"
+              "description": "Filter by address",
+              "default": ""
+            },
+            "required": false
+          },
+          {
+            "in": "query",
+            "name": "offererAddress",
+            "schema": {
+              "type": "string",
+              "description": "Filter by address",
+              "default": ""
+            },
+            "required": false
+          },
+          {
+            "in": "query",
+            "name": "recipientAddress",
+            "schema": {
+              "type": "string",
+              "description": "Filter by address",
+              "default": ""
             },
             "required": false
           },
@@ -1174,9 +2991,9 @@
             "in": "query",
             "name": "startTime",
             "schema": {
-              "type": "number",
-              "minimum": 0,
-              "description": "UNIX timestamp in seconds."
+              "type": "integer",
+              "description": "UNIX timestamp in seconds.",
+              "default": 0
             },
             "required": false
           },
@@ -1184,9 +3001,9 @@
             "in": "query",
             "name": "endTime",
             "schema": {
-              "type": "number",
-              "minimum": 0,
-              "description": "UNIX timestamp in seconds."
+              "type": "integer",
+              "description": "UNIX timestamp in seconds.",
+              "default": 9999999999
             },
             "required": false
           },
@@ -1268,7 +3085,7 @@
                           "block_num": {
                             "type": "number"
                           },
-                          "datetime": {
+                          "last_balance_update": {
                             "type": "string"
                           },
                           "contract": {
@@ -1293,9 +3110,13 @@
                               "optimism",
                               "unichain"
                             ],
+                            "default": "mainnet",
                             "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
                             "example": "mainnet"
                           },
+                          "name": {
+                            "type": "string"
+                          },
                           "symbol": {
                             "type": "string"
                           },
@@ -1314,7 +3135,7 @@
                         },
                         "required": [
                           "block_num",
-                          "datetime",
+                          "last_balance_update",
                           "contract",
                           "amount",
                           "value",
@@ -1344,32 +3165,334 @@
                 "example": {
                   "data": [
                     {
-                      "block_num": 22586773,
-                      "datetime": "2025-05-29 06:58:47",
-                      "contract": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
-                      "amount": "237637742936991878321",
-                      "value": 237.63774293699188,
+                      "block_num": 22968741,
+                      "last_balance_update": "2025-07-21 16:24:47",
+                      "contract": "0x6993301413c1867aafe2caaa692ec53a0118f06e",
+                      "amount": "7917650000000000000000",
+                      "value": 7917.65,
+                      "name": "BOLD",
+                      "symbol": "BOLD",
                       "decimals": 18,
-                      "symbol": "ETH",
                       "network_id": "mainnet"
                     }
                   ]
                 }
               }
             }
-          }
-        },
-        "operationId": "getBalancesEvmByAddress",
-        "tags": [
-          "EVM"
-        ],
+          },
+          "400": {
+            "description": "Client side error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 400,
+                  "code": "bad_query_input",
+                  "message": "Invalid query parameter provided"
+                }
+              }
+            }
+          },
+          "401": {
+            "description": "Authentication failed",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 401,
+                  "code": "unauthorized",
+                  "message": "Authentication required"
+                }
+              }
+            }
+          },
+          "403": {
+            "description": "Forbidden",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 403,
+                  "code": "forbidden",
+                  "message": "Access denied"
+                }
+              }
+            }
+          },
+          "404": {
+            "description": "Not found",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 404,
+                  "code": "not_found_data",
+                  "message": "Resource not found"
+                }
+              }
+            }
+          },
+          "500": {
+            "description": "Server side error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 500
+                        },
+                        {
+                          "type": "number",
+                          "const": 502
+                        },
+                        {
+                          "type": "number",
+                          "const": 504
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "bad_database_response",
+                        "connection_refused",
+                        "database_timeout",
+                        "internal_server_error"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 500,
+                  "code": "internal_server_error",
+                  "message": "An unexpected error occurred"
+                }
+              }
+            }
+          }
+        },
+        "operationId": "getBalancesEvmByAddress",
+        "tags": [
+          "EVM"
+        ],
         "parameters": [
           {
             "in": "path",
             "name": "address",
             "schema": {
               "type": "string",
-              "pattern": "^(0[xX])?[0-9a-fA-F]{40}$",
               "description": "Filter by address",
               "example": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
             },
@@ -1390,6 +3513,7 @@
                 "optimism",
                 "unichain"
               ],
+              "default": "mainnet",
               "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
               "example": "mainnet"
             }
@@ -1398,7 +3522,9 @@
             "in": "query",
             "name": "contract",
             "schema": {
-              "type": "string"
+              "type": "string",
+              "description": "Filter by address",
+              "default": ""
             }
           },
           {
@@ -1482,6 +3608,7 @@
                             "enum": [
                               "solana"
                             ],
+                            "default": "solana",
                             "description": "The Graph Network ID for SVM networks https://thegraph.com/networks",
                             "example": "solana"
                           }
@@ -1537,52 +3664,357 @@
                 }
               }
             }
-          }
-        },
-        "operationId": "getBalancesSvm",
-        "tags": [
-          "SVM"
-        ],
-        "parameters": [
-          {
-            "in": "query",
-            "name": "token_account",
-            "schema": {
-              "type": "string",
-              "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
-              "description": "Filter by token account address"
-            }
-          },
-          {
-            "in": "query",
-            "name": "mint",
-            "schema": {
-              "type": "string",
-              "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
-              "description": "Filter by mint address",
-              "example": "So11111111111111111111111111111111111111112"
-            }
           },
-          {
-            "in": "query",
-            "name": "program_id",
-            "schema": {
-              "type": "string",
-              "enum": [
-                "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb",
-                "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
-              ],
-              "description": "Filter by program ID"
+          "400": {
+            "description": "Client side error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 400,
+                  "code": "bad_query_input",
+                  "message": "Invalid query parameter provided"
+                }
+              }
             }
           },
-          {
-            "in": "query",
-            "name": "network_id",
-            "schema": {
+          "401": {
+            "description": "Authentication failed",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 401,
+                  "code": "unauthorized",
+                  "message": "Authentication required"
+                }
+              }
+            }
+          },
+          "403": {
+            "description": "Forbidden",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 403,
+                  "code": "forbidden",
+                  "message": "Access denied"
+                }
+              }
+            }
+          },
+          "404": {
+            "description": "Not found",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 404,
+                  "code": "not_found_data",
+                  "message": "Resource not found"
+                }
+              }
+            }
+          },
+          "500": {
+            "description": "Server side error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 500
+                        },
+                        {
+                          "type": "number",
+                          "const": 502
+                        },
+                        {
+                          "type": "number",
+                          "const": 504
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "bad_database_response",
+                        "connection_refused",
+                        "database_timeout",
+                        "internal_server_error"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 500,
+                  "code": "internal_server_error",
+                  "message": "An unexpected error occurred"
+                }
+              }
+            }
+          }
+        },
+        "operationId": "getBalancesSvm",
+        "tags": [
+          "SVM"
+        ],
+        "parameters": [
+          {
+            "in": "query",
+            "name": "token_account",
+            "schema": {
+              "type": "string",
+              "description": "Filter by token account address",
+              "default": ""
+            }
+          },
+          {
+            "in": "query",
+            "name": "mint",
+            "schema": {
+              "type": "string",
+              "description": "Filter by mint address",
+              "example": "So11111111111111111111111111111111111111112",
+              "default": ""
+            }
+          },
+          {
+            "in": "query",
+            "name": "program_id",
+            "schema": {
+              "type": "string",
+              "enum": [
+                "",
+                "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb",
+                "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
+              ],
+              "description": "Filter by program ID",
+              "default": ""
+            }
+          },
+          {
+            "in": "query",
+            "name": "network_id",
+            "schema": {
               "type": "string",
               "enum": [
                 "solana"
               ],
+              "default": "solana",
               "description": "The Graph Network ID for SVM networks https://thegraph.com/networks",
               "example": "solana"
             }
@@ -1675,6 +4107,7 @@
                               "optimism",
                               "unichain"
                             ],
+                            "default": "mainnet",
                             "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
                             "example": "mainnet"
                           },
@@ -1736,76 +4169,379 @@
                 }
               }
             }
-          }
-        },
-        "operationId": "getTransfersEvm",
-        "tags": [
-          "EVM"
-        ],
-        "parameters": [
-          {
-            "in": "query",
-            "name": "network_id",
-            "schema": {
-              "type": "string",
-              "enum": [
-                "arbitrum-one",
-                "avalanche",
-                "base",
-                "bsc",
-                "mainnet",
-                "matic",
-                "optimism",
-                "unichain"
-              ],
-              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
-              "example": "mainnet"
-            }
-          },
-          {
-            "in": "query",
-            "name": "from",
-            "schema": {
-              "type": "string",
-              "pattern": "^(0[xX])?[0-9a-fA-F]{40}$",
-              "description": "Filter by address"
-            }
           },
-          {
-            "in": "query",
-            "name": "to",
-            "schema": {
-              "type": "string",
-              "pattern": "^(0[xX])?[0-9a-fA-F]{40}$",
-              "description": "Filter by address",
-              "example": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
+          "400": {
+            "description": "Client side error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 400,
+                  "code": "bad_query_input",
+                  "message": "Invalid query parameter provided"
+                }
+              }
             }
           },
-          {
+          "401": {
+            "description": "Authentication failed",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 401,
+                  "code": "unauthorized",
+                  "message": "Authentication required"
+                }
+              }
+            }
+          },
+          "403": {
+            "description": "Forbidden",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 403,
+                  "code": "forbidden",
+                  "message": "Access denied"
+                }
+              }
+            }
+          },
+          "404": {
+            "description": "Not found",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 404,
+                  "code": "not_found_data",
+                  "message": "Resource not found"
+                }
+              }
+            }
+          },
+          "500": {
+            "description": "Server side error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 500
+                        },
+                        {
+                          "type": "number",
+                          "const": 502
+                        },
+                        {
+                          "type": "number",
+                          "const": 504
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "bad_database_response",
+                        "connection_refused",
+                        "database_timeout",
+                        "internal_server_error"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 500,
+                  "code": "internal_server_error",
+                  "message": "An unexpected error occurred"
+                }
+              }
+            }
+          }
+        },
+        "operationId": "getTransfersEvm",
+        "tags": [
+          "EVM"
+        ],
+        "parameters": [
+          {
+            "in": "query",
+            "name": "network_id",
+            "schema": {
+              "type": "string",
+              "enum": [
+                "arbitrum-one",
+                "avalanche",
+                "base",
+                "bsc",
+                "mainnet",
+                "matic",
+                "optimism",
+                "unichain"
+              ],
+              "default": "mainnet",
+              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
+              "example": "mainnet"
+            }
+          },
+          {
+            "in": "query",
+            "name": "from",
+            "schema": {
+              "type": "string",
+              "description": "Filter by address",
+              "default": ""
+            }
+          },
+          {
+            "in": "query",
+            "name": "to",
+            "schema": {
+              "type": "string",
+              "description": "Filter by address",
+              "example": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
+              "default": ""
+            }
+          },
+          {
             "in": "query",
             "name": "contract",
             "schema": {
               "type": "string",
-              "pattern": "^(0[xX])?[0-9a-fA-F]{40}$",
-              "description": "Filter by address"
+              "description": "Filter by address",
+              "default": ""
             }
           },
           {
             "in": "query",
             "name": "startTime",
             "schema": {
-              "type": "number",
-              "minimum": 0,
-              "description": "UNIX timestamp in seconds."
+              "type": "integer",
+              "description": "UNIX timestamp in seconds.",
+              "default": 0
             }
           },
           {
             "in": "query",
             "name": "endTime",
             "schema": {
-              "type": "number",
-              "minimum": 0,
-              "description": "UNIX timestamp in seconds."
+              "type": "integer",
+              "description": "UNIX timestamp in seconds.",
+              "default": 9999999999
             }
           },
           {
@@ -1838,8 +4574,8 @@
             "name": "transaction_id",
             "schema": {
               "type": "string",
-              "pattern": "^(0[xX])?[0-9a-fA-F]{64}$",
-              "description": "Filter by transaction"
+              "description": "Filter by transaction",
+              "default": ""
             }
           },
           {
@@ -1937,6 +4673,7 @@
                             "enum": [
                               "solana"
                             ],
+                            "default": "solana",
                             "description": "The Graph Network ID for SVM networks https://thegraph.com/networks",
                             "example": "solana"
                           }
@@ -1998,51 +4735,354 @@
                 }
               }
             }
-          }
-        },
-        "operationId": "getTransfersSvm",
-        "tags": [
-          "SVM"
-        ],
-        "parameters": [
-          {
-            "in": "query",
-            "name": "network_id",
-            "schema": {
-              "type": "string",
-              "enum": [
-                "solana"
-              ],
-              "description": "The Graph Network ID for SVM networks https://thegraph.com/networks",
-              "example": "solana"
-            }
-          },
-          {
-            "in": "query",
-            "name": "mint",
-            "schema": {
-              "type": "string",
-              "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
-              "description": "Filter by mint address",
-              "example": "So11111111111111111111111111111111111111112"
-            }
           },
-          {
-            "in": "query",
-            "name": "source",
-            "schema": {
-              "type": "string",
-              "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
-              "description": "Filter by token account address"
+          "400": {
+            "description": "Client side error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 400,
+                  "code": "bad_query_input",
+                  "message": "Invalid query parameter provided"
+                }
+              }
             }
           },
-          {
-            "in": "query",
+          "401": {
+            "description": "Authentication failed",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 401,
+                  "code": "unauthorized",
+                  "message": "Authentication required"
+                }
+              }
+            }
+          },
+          "403": {
+            "description": "Forbidden",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 403,
+                  "code": "forbidden",
+                  "message": "Access denied"
+                }
+              }
+            }
+          },
+          "404": {
+            "description": "Not found",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 404,
+                  "code": "not_found_data",
+                  "message": "Resource not found"
+                }
+              }
+            }
+          },
+          "500": {
+            "description": "Server side error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 500
+                        },
+                        {
+                          "type": "number",
+                          "const": 502
+                        },
+                        {
+                          "type": "number",
+                          "const": 504
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "bad_database_response",
+                        "connection_refused",
+                        "database_timeout",
+                        "internal_server_error"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 500,
+                  "code": "internal_server_error",
+                  "message": "An unexpected error occurred"
+                }
+              }
+            }
+          }
+        },
+        "operationId": "getTransfersSvm",
+        "tags": [
+          "SVM"
+        ],
+        "parameters": [
+          {
+            "in": "query",
+            "name": "network_id",
+            "schema": {
+              "type": "string",
+              "enum": [
+                "solana"
+              ],
+              "default": "solana",
+              "description": "The Graph Network ID for SVM networks https://thegraph.com/networks",
+              "example": "solana"
+            }
+          },
+          {
+            "in": "query",
+            "name": "mint",
+            "schema": {
+              "type": "string",
+              "description": "Filter by mint address",
+              "example": "So11111111111111111111111111111111111111112",
+              "default": ""
+            }
+          },
+          {
+            "in": "query",
+            "name": "source",
+            "schema": {
+              "type": "string",
+              "description": "Filter by token account address",
+              "default": ""
+            }
+          },
+          {
+            "in": "query",
             "name": "destination",
             "schema": {
               "type": "string",
-              "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
-              "description": "Filter by token account address"
+              "description": "Filter by token account address",
+              "default": ""
             }
           },
           {
@@ -2050,8 +5090,8 @@
             "name": "authority",
             "schema": {
               "type": "string",
-              "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
-              "description": "Filter by authority token account address"
+              "description": "Filter by authority token account address",
+              "default": ""
             }
           },
           {
@@ -2060,28 +5100,30 @@
             "schema": {
               "type": "string",
               "enum": [
+                "",
                 "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb",
                 "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
               ],
-              "description": "Filter by program ID"
+              "description": "Filter by program ID",
+              "default": ""
             }
           },
           {
             "in": "query",
             "name": "startTime",
             "schema": {
-              "type": "number",
-              "minimum": 0,
-              "description": "UNIX timestamp in seconds."
+              "type": "integer",
+              "description": "UNIX timestamp in seconds.",
+              "default": 0
             }
           },
           {
             "in": "query",
             "name": "endTime",
             "schema": {
-              "type": "number",
-              "minimum": 0,
-              "description": "UNIX timestamp in seconds."
+              "type": "integer",
+              "description": "UNIX timestamp in seconds.",
+              "default": 9999999999
             }
           },
           {
@@ -2161,12 +5203,18 @@
                           "datetime": {
                             "type": "string"
                           },
+                          "timestamp": {
+                            "type": "number"
+                          },
                           "contract": {
                             "type": "string",
                             "description": "Filter by address"
                           },
                           "circulating_supply": {
-                            "type": "string"
+                            "type": "number"
+                          },
+                          "total_supply": {
+                            "type": "number"
                           },
                           "holders": {
                             "type": "number"
@@ -2183,6 +5231,7 @@
                               "optimism",
                               "unichain"
                             ],
+                            "default": "mainnet",
                             "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
                             "example": "mainnet"
                           },
@@ -2219,8 +5268,10 @@
                         "required": [
                           "block_num",
                           "datetime",
+                          "timestamp",
                           "contract",
                           "circulating_supply",
+                          "total_supply",
                           "holders",
                           "network_id",
                           "icon"
@@ -2249,14 +5300,16 @@
                 "example": {
                   "data": [
                     {
-                      "block_num": 22589353,
-                      "datetime": "2025-05-29 15:40:11",
+                      "block_num": 22966816,
+                      "datetime": "2025-07-21 09:57:35",
+                      "timestamp": 1753091855,
                       "contract": "0xc944e90c64b2c07662a292be6244bdf05cda44a7",
                       "decimals": 18,
                       "symbol": "GRT",
                       "name": "Graph Token",
-                      "circulating_supply": "16667753581.233711",
-                      "holders": 139562,
+                      "circulating_supply": 27051707794.58071,
+                      "total_supply": 10800262823.318213,
+                      "holders": 175151,
                       "network_id": "mainnet",
                       "icon": {
                         "web3icon": "GRT"
@@ -2266,76 +5319,378 @@
                 }
               }
             }
-          }
-        },
-        "operationId": "getTokensEvmByContract",
-        "tags": [
-          "EVM"
-        ],
-        "parameters": [
-          {
-            "in": "path",
-            "name": "contract",
-            "schema": {
-              "type": "string",
-              "pattern": "^(0[xX])?[0-9a-fA-F]{40}$",
-              "description": "Filter by contract address",
-              "example": "0xc944e90c64b2c07662a292be6244bdf05cda44a7"
-            },
-            "required": true
           },
-          {
-            "in": "query",
-            "name": "network_id",
-            "schema": {
-              "type": "string",
-              "enum": [
-                "arbitrum-one",
-                "avalanche",
-                "base",
-                "bsc",
-                "mainnet",
-                "matic",
-                "optimism",
-                "unichain"
-              ],
-              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
-              "example": "mainnet"
-            }
-          }
-        ],
-        "summary": "Token Metadata",
-        "description": "Provides ERC-20 token contract metadata.",
-        "security": [
-          {
-            "bearerAuth": []
-          }
-        ]
-      }
-    },
-    "/holders/evm/{contract}": {
-      "get": {
-        "responses": {
-          "200": {
-            "description": "Successful Response",
+          "400": {
+            "description": "Client side error",
             "content": {
               "application/json": {
                 "schema": {
                   "type": "object",
                   "properties": {
-                    "data": {
-                      "type": "array",
-                      "items": {
-                        "type": "object",
-                        "properties": {
-                          "block_num": {
-                            "type": "number"
-                          },
-                          "datetime": {
-                            "type": "string"
-                          },
-                          "address": {
-                            "type": "string",
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 400,
+                  "code": "bad_query_input",
+                  "message": "Invalid query parameter provided"
+                }
+              }
+            }
+          },
+          "401": {
+            "description": "Authentication failed",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 401,
+                  "code": "unauthorized",
+                  "message": "Authentication required"
+                }
+              }
+            }
+          },
+          "403": {
+            "description": "Forbidden",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 403,
+                  "code": "forbidden",
+                  "message": "Access denied"
+                }
+              }
+            }
+          },
+          "404": {
+            "description": "Not found",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 404,
+                  "code": "not_found_data",
+                  "message": "Resource not found"
+                }
+              }
+            }
+          },
+          "500": {
+            "description": "Server side error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 500
+                        },
+                        {
+                          "type": "number",
+                          "const": 502
+                        },
+                        {
+                          "type": "number",
+                          "const": 504
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "bad_database_response",
+                        "connection_refused",
+                        "database_timeout",
+                        "internal_server_error"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 500,
+                  "code": "internal_server_error",
+                  "message": "An unexpected error occurred"
+                }
+              }
+            }
+          }
+        },
+        "operationId": "getTokensEvmByContract",
+        "tags": [
+          "EVM"
+        ],
+        "parameters": [
+          {
+            "in": "path",
+            "name": "contract",
+            "schema": {
+              "type": "string",
+              "description": "Filter by contract address",
+              "example": "0xc944e90c64b2c07662a292be6244bdf05cda44a7"
+            },
+            "required": true
+          },
+          {
+            "in": "query",
+            "name": "network_id",
+            "schema": {
+              "type": "string",
+              "enum": [
+                "arbitrum-one",
+                "avalanche",
+                "base",
+                "bsc",
+                "mainnet",
+                "matic",
+                "optimism",
+                "unichain"
+              ],
+              "default": "mainnet",
+              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
+              "example": "mainnet"
+            }
+          }
+        ],
+        "summary": "Token Metadata",
+        "description": "Provides ERC-20 token contract metadata.",
+        "security": [
+          {
+            "bearerAuth": []
+          }
+        ]
+      }
+    },
+    "/holders/evm/{contract}": {
+      "get": {
+        "responses": {
+          "200": {
+            "description": "Successful Response",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "data": {
+                      "type": "array",
+                      "items": {
+                        "type": "object",
+                        "properties": {
+                          "block_num": {
+                            "type": "number"
+                          },
+                          "last_balance_update": {
+                            "type": "string"
+                          },
+                          "address": {
+                            "type": "string",
                             "description": "Filter by address"
                           },
                           "amount": {
@@ -2356,9 +5711,13 @@
                               "optimism",
                               "unichain"
                             ],
+                            "default": "mainnet",
                             "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
                             "example": "mainnet"
                           },
+                          "name": {
+                            "type": "string"
+                          },
                           "symbol": {
                             "type": "string"
                           },
@@ -2377,7 +5736,7 @@
                         },
                         "required": [
                           "block_num",
-                          "datetime",
+                          "last_balance_update",
                           "address",
                           "amount",
                           "value",
@@ -2407,11 +5766,12 @@
                 "example": {
                   "data": [
                     {
-                      "block_num": 22578579,
-                      "last_balance_update": "2025-05-28 03:25:47",
+                      "block_num": 22966764,
+                      "last_balance_update": "2025-07-21 09:47:11",
                       "address": "0x36aff7001294dae4c2ed4fdefc478a00de77f090",
-                      "amount": "2868440291872963359806035918",
-                      "value": 2868440291.8729634,
+                      "amount": "2904244446383157108596275005",
+                      "value": 2904244446.3831573,
+                      "name": "Graph Token",
                       "decimals": 18,
                       "symbol": "GRT",
                       "network_id": "mainnet"
@@ -2420,19 +5780,320 @@
                 }
               }
             }
-          }
-        },
-        "operationId": "getHoldersEvmByContract",
-        "tags": [
-          "EVM"
-        ],
-        "parameters": [
-          {
-            "in": "path",
+          },
+          "400": {
+            "description": "Client side error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 400,
+                  "code": "bad_query_input",
+                  "message": "Invalid query parameter provided"
+                }
+              }
+            }
+          },
+          "401": {
+            "description": "Authentication failed",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 401,
+                  "code": "unauthorized",
+                  "message": "Authentication required"
+                }
+              }
+            }
+          },
+          "403": {
+            "description": "Forbidden",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 403,
+                  "code": "forbidden",
+                  "message": "Access denied"
+                }
+              }
+            }
+          },
+          "404": {
+            "description": "Not found",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 404,
+                  "code": "not_found_data",
+                  "message": "Resource not found"
+                }
+              }
+            }
+          },
+          "500": {
+            "description": "Server side error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 500
+                        },
+                        {
+                          "type": "number",
+                          "const": 502
+                        },
+                        {
+                          "type": "number",
+                          "const": 504
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "bad_database_response",
+                        "connection_refused",
+                        "database_timeout",
+                        "internal_server_error"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 500,
+                  "code": "internal_server_error",
+                  "message": "An unexpected error occurred"
+                }
+              }
+            }
+          }
+        },
+        "operationId": "getHoldersEvmByContract",
+        "tags": [
+          "EVM"
+        ],
+        "parameters": [
+          {
+            "in": "path",
             "name": "contract",
             "schema": {
               "type": "string",
-              "pattern": "^(0[xX])?[0-9a-fA-F]{40}$",
               "description": "Filter by contract address",
               "example": "0xc944e90c64b2c07662a292be6244bdf05cda44a7"
             },
@@ -2453,6 +6114,7 @@
                 "optimism",
                 "unichain"
               ],
+              "default": "mainnet",
               "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
               "example": "mainnet"
             }
@@ -2549,6 +6211,7 @@
                               "optimism",
                               "unichain"
                             ],
+                            "default": "mainnet",
                             "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
                             "example": "mainnet"
                           },
@@ -2573,7 +6236,7 @@
                           },
                           "pool": {
                             "type": "string",
-                            "description": "Filter by address"
+                            "description": "Filter by pool"
                           },
                           "token0": {
                             "type": "object",
@@ -2718,40 +6381,350 @@
                 }
               }
             }
-          }
-        },
-        "operationId": "getSwapsEvm",
-        "tags": [
-          "EVM"
-        ],
-        "parameters": [
-          {
-            "in": "query",
-            "name": "network_id",
-            "schema": {
-              "type": "string",
-              "enum": [
-                "arbitrum-one",
-                "avalanche",
-                "base",
-                "bsc",
-                "mainnet",
-                "matic",
-                "optimism",
-                "unichain"
-              ],
-              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
-              "example": "mainnet"
-            }
           },
-          {
-            "in": "query",
-            "name": "pool",
-            "schema": {
-              "type": "string",
-              "pattern": "^(0[xX])?[0-9a-fA-F]{40}$",
-              "description": "Filter by contract address",
-              "example": "0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640"
+          "400": {
+            "description": "Client side error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 400,
+                  "code": "bad_query_input",
+                  "message": "Invalid query parameter provided"
+                }
+              }
+            }
+          },
+          "401": {
+            "description": "Authentication failed",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 401,
+                  "code": "unauthorized",
+                  "message": "Authentication required"
+                }
+              }
+            }
+          },
+          "403": {
+            "description": "Forbidden",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 403,
+                  "code": "forbidden",
+                  "message": "Access denied"
+                }
+              }
+            }
+          },
+          "404": {
+            "description": "Not found",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 404,
+                  "code": "not_found_data",
+                  "message": "Resource not found"
+                }
+              }
+            }
+          },
+          "500": {
+            "description": "Server side error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 500
+                        },
+                        {
+                          "type": "number",
+                          "const": 502
+                        },
+                        {
+                          "type": "number",
+                          "const": 504
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "bad_database_response",
+                        "connection_refused",
+                        "database_timeout",
+                        "internal_server_error"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 500,
+                  "code": "internal_server_error",
+                  "message": "An unexpected error occurred"
+                }
+              }
+            }
+          }
+        },
+        "operationId": "getSwapsEvm",
+        "tags": [
+          "EVM"
+        ],
+        "parameters": [
+          {
+            "in": "query",
+            "name": "network_id",
+            "schema": {
+              "type": "string",
+              "enum": [
+                "arbitrum-one",
+                "avalanche",
+                "base",
+                "bsc",
+                "mainnet",
+                "matic",
+                "optimism",
+                "unichain"
+              ],
+              "default": "mainnet",
+              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
+              "example": "mainnet"
+            }
+          },
+          {
+            "in": "query",
+            "name": "pool",
+            "schema": {
+              "anyOf": [
+                {
+                  "type": "string"
+                },
+                {
+                  "type": "string"
+                }
+              ],
+              "description": "Filter by pool address",
+              "example": "0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640",
+              "default": ""
             }
           },
           {
@@ -2759,8 +6732,8 @@
             "name": "caller",
             "schema": {
               "type": "string",
-              "pattern": "^(0[xX])?[0-9a-fA-F]{40}$",
-              "description": "Filter by address"
+              "description": "Filter by address",
+              "default": ""
             }
           },
           {
@@ -2768,8 +6741,8 @@
             "name": "sender",
             "schema": {
               "type": "string",
-              "pattern": "^(0[xX])?[0-9a-fA-F]{40}$",
-              "description": "Filter by address"
+              "description": "Filter by address",
+              "default": ""
             }
           },
           {
@@ -2777,8 +6750,8 @@
             "name": "recipient",
             "schema": {
               "type": "string",
-              "pattern": "^(0[xX])?[0-9a-fA-F]{40}$",
-              "description": "Filter by address"
+              "description": "Filter by address",
+              "default": ""
             }
           },
           {
@@ -2787,9 +6760,12 @@
             "schema": {
               "type": "string",
               "enum": [
+                "",
                 "uniswap_v2",
-                "uniswap_v3"
+                "uniswap_v3",
+                "uniswap_v4"
               ],
+              "default": "",
               "description": "Protocol name",
               "example": "uniswap_v3"
             }
@@ -2798,18 +6774,18 @@
             "in": "query",
             "name": "startTime",
             "schema": {
-              "type": "number",
-              "minimum": 0,
-              "description": "UNIX timestamp in seconds."
+              "type": "integer",
+              "description": "UNIX timestamp in seconds.",
+              "default": 0
             }
           },
           {
             "in": "query",
             "name": "endTime",
             "schema": {
-              "type": "number",
-              "minimum": 0,
-              "description": "UNIX timestamp in seconds."
+              "type": "integer",
+              "description": "UNIX timestamp in seconds.",
+              "default": 9999999999
             }
           },
           {
@@ -2842,8 +6818,8 @@
             "name": "transaction_id",
             "schema": {
               "type": "string",
-              "pattern": "^(0[xX])?[0-9a-fA-F]{64}$",
-              "description": "Filter by transaction"
+              "description": "Filter by transaction",
+              "default": ""
             }
           },
           {
@@ -2983,6 +6959,7 @@
                             "enum": [
                               "solana"
                             ],
+                            "default": "solana",
                             "description": "The Graph Network ID for SVM networks https://thegraph.com/networks",
                             "example": "solana"
                           }
@@ -3049,50 +7026,354 @@
                 }
               }
             }
-          }
-        },
-        "operationId": "getSwapsSvm",
-        "tags": [
-          "SVM"
-        ],
-        "parameters": [
-          {
-            "in": "query",
-            "name": "network_id",
-            "schema": {
-              "type": "string",
-              "enum": [
-                "solana"
-              ],
-              "description": "The Graph Network ID for SVM networks https://thegraph.com/networks",
-              "example": "solana"
-            },
-            "required": false
           },
-          {
-            "in": "query",
-            "name": "program_id",
-            "schema": {
-              "type": "string",
-              "enum": [
-                "675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8",
-                "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P",
-                "pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA",
-                "JUP4Fb2cqiRUcaTHdrPC8h2gNsA2ETXiPDD33WcGuJB",
-                "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4"
-              ],
-              "description": "Filter by program ID",
-              "example": "pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA"
-            },
-            "required": true
+          "400": {
+            "description": "Client side error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 400,
+                  "code": "bad_query_input",
+                  "message": "Invalid query parameter provided"
+                }
+              }
+            }
+          },
+          "401": {
+            "description": "Authentication failed",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 401,
+                  "code": "unauthorized",
+                  "message": "Authentication required"
+                }
+              }
+            }
+          },
+          "403": {
+            "description": "Forbidden",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 403,
+                  "code": "forbidden",
+                  "message": "Access denied"
+                }
+              }
+            }
+          },
+          "404": {
+            "description": "Not found",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 404,
+                  "code": "not_found_data",
+                  "message": "Resource not found"
+                }
+              }
+            }
+          },
+          "500": {
+            "description": "Server side error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 500
+                        },
+                        {
+                          "type": "number",
+                          "const": 502
+                        },
+                        {
+                          "type": "number",
+                          "const": 504
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "bad_database_response",
+                        "connection_refused",
+                        "database_timeout",
+                        "internal_server_error"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 500,
+                  "code": "internal_server_error",
+                  "message": "An unexpected error occurred"
+                }
+              }
+            }
+          }
+        },
+        "operationId": "getSwapsSvm",
+        "tags": [
+          "SVM"
+        ],
+        "parameters": [
+          {
+            "in": "query",
+            "name": "network_id",
+            "schema": {
+              "type": "string",
+              "enum": [
+                "solana"
+              ],
+              "default": "solana",
+              "description": "The Graph Network ID for SVM networks https://thegraph.com/networks",
+              "example": "solana"
+            },
+            "required": false
+          },
+          {
+            "in": "query",
+            "name": "program_id",
+            "schema": {
+              "type": "string",
+              "enum": [
+                "",
+                "675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8",
+                "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P",
+                "pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA",
+                "JUP4Fb2cqiRUcaTHdrPC8h2gNsA2ETXiPDD33WcGuJB",
+                "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4"
+              ],
+              "description": "Filter by program ID",
+              "example": "pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA"
+            },
+            "required": true
           },
           {
             "in": "query",
             "name": "amm",
             "schema": {
               "type": "string",
-              "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
-              "description": "Filter by amm address"
+              "description": "Filter by amm address",
+              "default": ""
             },
             "required": false
           },
@@ -3101,8 +7382,8 @@
             "name": "amm_pool",
             "schema": {
               "type": "string",
-              "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
-              "description": "Filter by amm pool address"
+              "description": "Filter by amm pool address",
+              "default": ""
             },
             "required": false
           },
@@ -3111,8 +7392,8 @@
             "name": "user",
             "schema": {
               "type": "string",
-              "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
-              "description": "Filter by user address"
+              "description": "Filter by user address",
+              "default": ""
             },
             "required": false
           },
@@ -3121,8 +7402,8 @@
             "name": "input_mint",
             "schema": {
               "type": "string",
-              "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
-              "description": "Filter by mint address"
+              "description": "Filter by mint address",
+              "default": ""
             },
             "required": false
           },
@@ -3131,8 +7412,8 @@
             "name": "output_mint",
             "schema": {
               "type": "string",
-              "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
-              "description": "Filter by mint address"
+              "description": "Filter by mint address",
+              "default": ""
             },
             "required": false
           },
@@ -3140,9 +7421,9 @@
             "in": "query",
             "name": "startTime",
             "schema": {
-              "type": "number",
-              "minimum": 0,
-              "description": "UNIX timestamp in seconds."
+              "type": "integer",
+              "description": "UNIX timestamp in seconds.",
+              "default": 0
             },
             "required": false
           },
@@ -3150,9 +7431,9 @@
             "in": "query",
             "name": "endTime",
             "schema": {
-              "type": "number",
-              "minimum": 0,
-              "description": "UNIX timestamp in seconds."
+              "type": "integer",
+              "description": "UNIX timestamp in seconds.",
+              "default": 9999999999
             },
             "required": false
           },
@@ -3188,8 +7469,8 @@
             "name": "signature",
             "schema": {
               "type": "string",
-              "pattern": "^[1-9A-HJ-NP-Za-km-z]{87,88}$",
-              "description": "Filter by transaction signature"
+              "description": "Filter by transaction signature",
+              "default": ""
             },
             "required": false
           },
@@ -3259,6 +7540,7 @@
                               "optimism",
                               "unichain"
                             ],
+                            "default": "mainnet",
                             "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
                             "example": "mainnet"
                           },
@@ -3271,7 +7553,7 @@
                           },
                           "pool": {
                             "type": "string",
-                            "description": "Filter by address"
+                            "description": "Filter by pool"
                           },
                           "token0": {
                             "type": "object",
@@ -3379,49 +7661,359 @@
                 }
               }
             }
-          }
-        },
-        "operationId": "getPoolsEvm",
-        "tags": [
-          "EVM"
-        ],
-        "parameters": [
-          {
-            "in": "query",
-            "name": "network_id",
-            "schema": {
-              "type": "string",
-              "enum": [
-                "arbitrum-one",
-                "avalanche",
-                "base",
-                "bsc",
-                "mainnet",
-                "matic",
-                "optimism",
-                "unichain"
-              ],
-              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
-              "example": "mainnet"
-            }
           },
-          {
-            "in": "query",
-            "name": "pool",
-            "schema": {
-              "type": "string",
-              "pattern": "^(0[xX])?[0-9a-fA-F]{40}$",
-              "description": "Filter by contract address",
-              "example": "0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640"
+          "400": {
+            "description": "Client side error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 400,
+                  "code": "bad_query_input",
+                  "message": "Invalid query parameter provided"
+                }
+              }
             }
           },
-          {
-            "in": "query",
-            "name": "factory",
-            "schema": {
+          "401": {
+            "description": "Authentication failed",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 401,
+                  "code": "unauthorized",
+                  "message": "Authentication required"
+                }
+              }
+            }
+          },
+          "403": {
+            "description": "Forbidden",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 403,
+                  "code": "forbidden",
+                  "message": "Access denied"
+                }
+              }
+            }
+          },
+          "404": {
+            "description": "Not found",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 404,
+                  "code": "not_found_data",
+                  "message": "Resource not found"
+                }
+              }
+            }
+          },
+          "500": {
+            "description": "Server side error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 500
+                        },
+                        {
+                          "type": "number",
+                          "const": 502
+                        },
+                        {
+                          "type": "number",
+                          "const": 504
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "bad_database_response",
+                        "connection_refused",
+                        "database_timeout",
+                        "internal_server_error"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 500,
+                  "code": "internal_server_error",
+                  "message": "An unexpected error occurred"
+                }
+              }
+            }
+          }
+        },
+        "operationId": "getPoolsEvm",
+        "tags": [
+          "EVM"
+        ],
+        "parameters": [
+          {
+            "in": "query",
+            "name": "network_id",
+            "schema": {
+              "type": "string",
+              "enum": [
+                "arbitrum-one",
+                "avalanche",
+                "base",
+                "bsc",
+                "mainnet",
+                "matic",
+                "optimism",
+                "unichain"
+              ],
+              "default": "mainnet",
+              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
+              "example": "mainnet"
+            }
+          },
+          {
+            "in": "query",
+            "name": "pool",
+            "schema": {
+              "anyOf": [
+                {
+                  "type": "string"
+                },
+                {
+                  "type": "string"
+                }
+              ],
+              "description": "Filter by pool address",
+              "example": "0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640",
+              "default": ""
+            }
+          },
+          {
+            "in": "query",
+            "name": "factory",
+            "schema": {
               "type": "string",
-              "pattern": "^(0[xX])?[0-9a-fA-F]{40}$",
-              "description": "Filter by address"
+              "description": "Filter by address",
+              "default": ""
             }
           },
           {
@@ -3429,15 +8021,16 @@
             "name": "token",
             "schema": {
               "type": "string",
-              "pattern": "^(0[xX])?[0-9a-fA-F]{40}$",
-              "description": "Filter by address"
+              "description": "Filter by address",
+              "default": ""
             }
           },
           {
             "in": "query",
             "name": "symbol",
             "schema": {
-              "type": "string"
+              "type": "string",
+              "default": ""
             }
           },
           {
@@ -3446,9 +8039,12 @@
             "schema": {
               "type": "string",
               "enum": [
+                "",
                 "uniswap_v2",
-                "uniswap_v3"
+                "uniswap_v3",
+                "uniswap_v4"
               ],
+              "default": "uniswap_v4",
               "description": "Protocol name",
               "example": "uniswap_v3"
             }
@@ -3576,44 +8172,353 @@
                 }
               }
             }
-          }
-        },
-        "operationId": "getOhlcPoolsEvmByPool",
-        "tags": [
-          "EVM"
-        ],
-        "parameters": [
-          {
-            "in": "path",
-            "name": "pool",
-            "schema": {
-              "type": "string",
-              "pattern": "^(0[xX])?[0-9a-fA-F]{40}$",
-              "description": "Filter by contract address",
-              "example": "0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640"
-            },
-            "required": true
           },
-          {
-            "in": "query",
-            "name": "network_id",
-            "schema": {
-              "type": "string",
-              "enum": [
-                "arbitrum-one",
-                "avalanche",
-                "base",
-                "bsc",
-                "mainnet",
-                "matic",
-                "optimism",
-                "unichain"
-              ],
-              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
-              "example": "mainnet"
+          "400": {
+            "description": "Client side error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 400,
+                  "code": "bad_query_input",
+                  "message": "Invalid query parameter provided"
+                }
+              }
             }
           },
-          {
+          "401": {
+            "description": "Authentication failed",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 401,
+                  "code": "unauthorized",
+                  "message": "Authentication required"
+                }
+              }
+            }
+          },
+          "403": {
+            "description": "Forbidden",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 403,
+                  "code": "forbidden",
+                  "message": "Access denied"
+                }
+              }
+            }
+          },
+          "404": {
+            "description": "Not found",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 404,
+                  "code": "not_found_data",
+                  "message": "Resource not found"
+                }
+              }
+            }
+          },
+          "500": {
+            "description": "Server side error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 500
+                        },
+                        {
+                          "type": "number",
+                          "const": 502
+                        },
+                        {
+                          "type": "number",
+                          "const": 504
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "bad_database_response",
+                        "connection_refused",
+                        "database_timeout",
+                        "internal_server_error"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 500,
+                  "code": "internal_server_error",
+                  "message": "An unexpected error occurred"
+                }
+              }
+            }
+          }
+        },
+        "operationId": "getOhlcPoolsEvmByPool",
+        "tags": [
+          "EVM"
+        ],
+        "parameters": [
+          {
+            "in": "path",
+            "name": "pool",
+            "schema": {
+              "anyOf": [
+                {
+                  "type": "string"
+                },
+                {
+                  "type": "string"
+                }
+              ],
+              "description": "Filter by pool address",
+              "example": "0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640"
+            },
+            "required": true
+          },
+          {
+            "in": "query",
+            "name": "network_id",
+            "schema": {
+              "type": "string",
+              "enum": [
+                "arbitrum-one",
+                "avalanche",
+                "base",
+                "bsc",
+                "mainnet",
+                "matic",
+                "optimism",
+                "unichain"
+              ],
+              "default": "mainnet",
+              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
+              "example": "mainnet"
+            }
+          },
+          {
             "in": "query",
             "name": "interval",
             "schema": {
@@ -3624,7 +8529,7 @@
                 "1d",
                 "1w"
               ],
-              "default": "1h",
+              "default": "1d",
               "description": "The interval for which to aggregate price data (hourly, 4-hours, daily or weekly)."
             }
           },
@@ -3632,18 +8537,18 @@
             "in": "query",
             "name": "startTime",
             "schema": {
-              "type": "number",
-              "minimum": 0,
-              "description": "UNIX timestamp in seconds."
+              "type": "integer",
+              "description": "UNIX timestamp in seconds.",
+              "default": 0
             }
           },
           {
             "in": "query",
             "name": "endTime",
             "schema": {
-              "type": "number",
-              "minimum": 0,
-              "description": "UNIX timestamp in seconds."
+              "type": "integer",
+              "description": "UNIX timestamp in seconds.",
+              "default": 9999999999
             }
           },
           {
@@ -3770,47 +8675,349 @@
                 }
               }
             }
-          }
-        },
-        "operationId": "getOhlcPricesEvmByContract",
-        "tags": [
-          "EVM"
-        ],
-        "parameters": [
-          {
-            "in": "path",
-            "name": "contract",
-            "schema": {
-              "type": "string",
-              "pattern": "^(0[xX])?[0-9a-fA-F]{40}$",
-              "description": "Filter by contract address",
-              "example": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"
-            },
-            "required": true
           },
-          {
-            "in": "query",
-            "name": "network_id",
-            "schema": {
-              "type": "string",
-              "enum": [
-                "arbitrum-one",
-                "avalanche",
-                "base",
-                "bsc",
-                "mainnet",
-                "matic",
-                "optimism",
-                "unichain"
-              ],
-              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
-              "example": "mainnet"
+          "400": {
+            "description": "Client side error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 400,
+                  "code": "bad_query_input",
+                  "message": "Invalid query parameter provided"
+                }
+              }
             }
           },
-          {
-            "in": "query",
-            "name": "interval",
-            "schema": {
+          "401": {
+            "description": "Authentication failed",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 401,
+                  "code": "unauthorized",
+                  "message": "Authentication required"
+                }
+              }
+            }
+          },
+          "403": {
+            "description": "Forbidden",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 403,
+                  "code": "forbidden",
+                  "message": "Access denied"
+                }
+              }
+            }
+          },
+          "404": {
+            "description": "Not found",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 404,
+                  "code": "not_found_data",
+                  "message": "Resource not found"
+                }
+              }
+            }
+          },
+          "500": {
+            "description": "Server side error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 500
+                        },
+                        {
+                          "type": "number",
+                          "const": 502
+                        },
+                        {
+                          "type": "number",
+                          "const": 504
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "bad_database_response",
+                        "connection_refused",
+                        "database_timeout",
+                        "internal_server_error"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 500,
+                  "code": "internal_server_error",
+                  "message": "An unexpected error occurred"
+                }
+              }
+            }
+          }
+        },
+        "operationId": "getOhlcPricesEvmByContract",
+        "tags": [
+          "EVM"
+        ],
+        "parameters": [
+          {
+            "in": "path",
+            "name": "contract",
+            "schema": {
+              "type": "string",
+              "description": "Filter by contract address",
+              "example": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"
+            },
+            "required": true
+          },
+          {
+            "in": "query",
+            "name": "network_id",
+            "schema": {
+              "type": "string",
+              "enum": [
+                "arbitrum-one",
+                "avalanche",
+                "base",
+                "bsc",
+                "mainnet",
+                "matic",
+                "optimism",
+                "unichain"
+              ],
+              "default": "mainnet",
+              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
+              "example": "mainnet"
+            }
+          },
+          {
+            "in": "query",
+            "name": "interval",
+            "schema": {
               "type": "string",
               "enum": [
                 "1h",
@@ -3818,7 +9025,7 @@
                 "1d",
                 "1w"
               ],
-              "default": "1h",
+              "default": "1d",
               "description": "The interval for which to aggregate price data (hourly, 4-hours, daily or weekly)."
             }
           },
@@ -3826,18 +9033,18 @@
             "in": "query",
             "name": "startTime",
             "schema": {
-              "type": "number",
-              "minimum": 0,
-              "description": "UNIX timestamp in seconds."
+              "type": "integer",
+              "description": "UNIX timestamp in seconds.",
+              "default": 0
             }
           },
           {
             "in": "query",
             "name": "endTime",
             "schema": {
-              "type": "number",
-              "minimum": 0,
-              "description": "UNIX timestamp in seconds."
+              "type": "integer",
+              "description": "UNIX timestamp in seconds.",
+              "default": 9999999999
             }
           },
           {
@@ -3900,7 +9107,7 @@
                             "type": "string"
                           },
                           "decimals": {
-                            "type": "string"
+                            "type": "number"
                           },
                           "open": {
                             "type": "number"
@@ -3950,56 +9157,358 @@
                 "example": {
                   "data": [
                     {
-                      "datetime": "2025-01-26 13:00:00",
-                      "name": "Wrapped Ether",
-                      "symbol": "WETH",
+                      "datetime": "2025-05-29 00:00:00",
+                      "contract": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
+                      "name": "Native",
+                      "symbol": "ETH",
                       "decimals": 18,
-                      "network_id": "mainnet",
-                      "open": 16.32030978771529,
-                      "high": 16.32030978771529,
-                      "low": 16.32030978771529,
-                      "close": 16.32030978771529
+                      "open": 237.63774262699187,
+                      "high": 237.6377453469919,
+                      "low": 0.10533323067535896,
+                      "close": 0.15438623067535898,
+                      "network_id": "mainnet"
                     }
                   ]
                 }
               }
             }
-          }
-        },
-        "operationId": "getHistoricalBalancesEvmByAddress",
-        "tags": [
-          "EVM"
-        ],
-        "parameters": [
-          {
-            "in": "path",
-            "name": "address",
-            "schema": {
-              "type": "string",
-              "pattern": "^(0[xX])?[0-9a-fA-F]{40}$",
-              "description": "Filter by address",
-              "example": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
-            },
-            "required": true
           },
-          {
-            "in": "query",
-            "name": "interval",
-            "schema": {
-              "type": "string",
-              "enum": [
-                "1h",
-                "4h",
-                "1d",
-                "1w"
-              ],
-              "default": "1h",
-              "description": "The interval for which to aggregate price data (hourly, 4-hours, daily or weekly)."
+          "400": {
+            "description": "Client side error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 400,
+                  "code": "bad_query_input",
+                  "message": "Invalid query parameter provided"
+                }
+              }
             }
           },
-          {
-            "in": "query",
-            "name": "network_id",
+          "401": {
+            "description": "Authentication failed",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 401,
+                  "code": "unauthorized",
+                  "message": "Authentication required"
+                }
+              }
+            }
+          },
+          "403": {
+            "description": "Forbidden",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 403,
+                  "code": "forbidden",
+                  "message": "Access denied"
+                }
+              }
+            }
+          },
+          "404": {
+            "description": "Not found",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 404,
+                  "code": "not_found_data",
+                  "message": "Resource not found"
+                }
+              }
+            }
+          },
+          "500": {
+            "description": "Server side error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 500
+                        },
+                        {
+                          "type": "number",
+                          "const": 502
+                        },
+                        {
+                          "type": "number",
+                          "const": 504
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "bad_database_response",
+                        "connection_refused",
+                        "database_timeout",
+                        "internal_server_error"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 500,
+                  "code": "internal_server_error",
+                  "message": "An unexpected error occurred"
+                }
+              }
+            }
+          }
+        },
+        "operationId": "getHistoricalBalancesEvmByAddress",
+        "tags": [
+          "EVM"
+        ],
+        "parameters": [
+          {
+            "in": "path",
+            "name": "address",
+            "schema": {
+              "type": "string",
+              "description": "Filter by address",
+              "example": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
+            },
+            "required": true
+          },
+          {
+            "in": "query",
+            "name": "interval",
+            "schema": {
+              "type": "string",
+              "enum": [
+                "1h",
+                "4h",
+                "1d",
+                "1w"
+              ],
+              "default": "1d",
+              "description": "The interval for which to aggregate price data (hourly, 4-hours, daily or weekly)."
+            }
+          },
+          {
+            "in": "query",
+            "name": "network_id",
             "schema": {
               "type": "string",
               "enum": [
@@ -4012,6 +9521,7 @@
                 "optimism",
                 "unichain"
               ],
+              "default": "mainnet",
               "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
               "example": "mainnet"
             }
@@ -4022,26 +9532,28 @@
             "schema": {
               "type": "array",
               "items": {
-                "type": "string"
-              }
+                "type": "string",
+                "description": "Filter by address"
+              },
+              "default": []
             }
           },
           {
             "in": "query",
             "name": "startTime",
             "schema": {
-              "type": "number",
-              "minimum": 0,
-              "description": "UNIX timestamp in seconds."
+              "type": "integer",
+              "description": "UNIX timestamp in seconds.",
+              "default": 0
             }
           },
           {
             "in": "query",
             "name": "endTime",
             "schema": {
-              "type": "number",
-              "minimum": 0,
-              "description": "UNIX timestamp in seconds."
+              "type": "integer",
+              "description": "UNIX timestamp in seconds.",
+              "default": 9999999999
             }
           },
           {
@@ -4092,18 +9604,459 @@
               }
             }
           },
+          "400": {
+            "description": "Client side error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 400,
+                  "code": "bad_query_input",
+                  "message": "Invalid query parameter provided"
+                }
+              }
+            }
+          },
+          "401": {
+            "description": "Authentication failed",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 401,
+                  "code": "unauthorized",
+                  "message": "Authentication required"
+                }
+              }
+            }
+          },
           "403": {
-            "description": "Authentication Failed",
+            "description": "Forbidden",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 403,
+                  "code": "forbidden",
+                  "message": "Access denied"
+                }
+              }
+            }
+          },
+          "404": {
+            "description": "Not found",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 404,
+                  "code": "not_found_data",
+                  "message": "Resource not found"
+                }
+              }
+            }
+          },
+          "500": {
+            "description": "Server side error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 500
+                        },
+                        {
+                          "type": "number",
+                          "const": 502
+                        },
+                        {
+                          "type": "number",
+                          "const": 504
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "bad_database_response",
+                        "connection_refused",
+                        "database_timeout",
+                        "internal_server_error"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 500,
+                  "code": "internal_server_error",
+                  "message": "An unexpected error occurred"
+                }
+              }
+            }
+          }
+        },
+        "operationId": "getHealth",
+        "tags": [
+          "Monitoring"
+        ],
+        "parameters": [],
+        "description": "Get health status of the API"
+      }
+    },
+    "/version": {
+      "get": {
+        "responses": {
+          "200": {
+            "description": "Successful Response",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "version": {
+                      "type": "string"
+                    },
+                    "date": {
+                      "type": "string"
+                    },
+                    "commit": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "version",
+                    "date",
+                    "commit"
+                  ]
+                },
+                "example": {
+                  "version": "2.3.3",
+                  "commit": "6e8d0f0",
+                  "date": "2025-07-24",
+                  "repo": "pinax-network/token-api"
+                }
+              }
+            }
+          },
+          "400": {
+            "description": "Client side error",
             "content": {
               "application/json": {
                 "schema": {
                   "type": "object",
                   "properties": {
                     "status": {
-                      "type": "number"
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 400,
+                  "code": "bad_query_input",
+                  "message": "Invalid query parameter provided"
+                }
+              }
+            }
+          },
+          "401": {
+            "description": "Authentication failed",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
                     },
                     "code": {
-                      "type": "string"
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
                     },
                     "message": {
                       "type": "string"
@@ -4116,24 +10069,57 @@
                   ]
                 },
                 "example": {
-                  "status": 403,
-                  "code": "authentication_failed"
+                  "status": 401,
+                  "code": "unauthorized",
+                  "message": "Authentication required"
                 }
               }
             }
           },
-          "500": {
-            "description": "Database Error",
+          "403": {
+            "description": "Forbidden",
             "content": {
               "application/json": {
                 "schema": {
                   "type": "object",
                   "properties": {
                     "status": {
-                      "type": "number"
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
                     },
                     "code": {
-                      "type": "string"
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
                     },
                     "message": {
                       "type": "string"
@@ -4146,24 +10132,57 @@
                   ]
                 },
                 "example": {
-                  "status": 500,
-                  "code": "bad_database_response"
+                  "status": 403,
+                  "code": "forbidden",
+                  "message": "Access denied"
                 }
               }
             }
           },
-          "502": {
-            "description": "Connection Refused",
+          "404": {
+            "description": "Not found",
             "content": {
               "application/json": {
                 "schema": {
                   "type": "object",
                   "properties": {
                     "status": {
-                      "type": "number"
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
                     },
                     "code": {
-                      "type": "string"
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
                     },
                     "message": {
                       "type": "string"
@@ -4176,52 +10195,59 @@
                   ]
                 },
                 "example": {
-                  "status": 502,
-                  "code": "connection_refused"
+                  "status": 404,
+                  "code": "not_found_data",
+                  "message": "Resource not found"
                 }
               }
             }
-          }
-        },
-        "operationId": "getHealth",
-        "tags": [
-          "Monitoring"
-        ],
-        "parameters": [],
-        "description": "Get health status of the API"
-      }
-    },
-    "/version": {
-      "get": {
-        "responses": {
-          "200": {
-            "description": "Successful Response",
+          },
+          "500": {
+            "description": "Server side error",
             "content": {
               "application/json": {
                 "schema": {
                   "type": "object",
                   "properties": {
-                    "version": {
-                      "type": "string"
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 500
+                        },
+                        {
+                          "type": "number",
+                          "const": 502
+                        },
+                        {
+                          "type": "number",
+                          "const": 504
+                        }
+                      ]
                     },
-                    "date": {
-                      "type": "string"
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "bad_database_response",
+                        "connection_refused",
+                        "database_timeout",
+                        "internal_server_error"
+                      ]
                     },
-                    "commit": {
+                    "message": {
                       "type": "string"
                     }
                   },
                   "required": [
-                    "version",
-                    "date",
-                    "commit"
+                    "status",
+                    "code",
+                    "message"
                   ]
                 },
                 "example": {
-                  "version": "2.2.10",
-                  "commit": "af1bb70",
-                  "date": "2025-07-10",
-                  "repo": "pinax-network/token-api"
+                  "status": 500,
+                  "code": "internal_server_error",
+                  "message": "An unexpected error occurred"
                 }
               }
             }
@@ -4332,6 +10358,308 @@
                 }
               }
             }
+          },
+          "400": {
+            "description": "Client side error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 400,
+                  "code": "bad_query_input",
+                  "message": "Invalid query parameter provided"
+                }
+              }
+            }
+          },
+          "401": {
+            "description": "Authentication failed",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 401,
+                  "code": "unauthorized",
+                  "message": "Authentication required"
+                }
+              }
+            }
+          },
+          "403": {
+            "description": "Forbidden",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 403,
+                  "code": "forbidden",
+                  "message": "Access denied"
+                }
+              }
+            }
+          },
+          "404": {
+            "description": "Not found",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 400
+                        },
+                        {
+                          "type": "number",
+                          "const": 401
+                        },
+                        {
+                          "type": "number",
+                          "const": 403
+                        },
+                        {
+                          "type": "number",
+                          "const": 404
+                        },
+                        {
+                          "type": "number",
+                          "const": 405
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "authentication_failed",
+                        "bad_header",
+                        "missing_required_header",
+                        "bad_query_input",
+                        "forbidden",
+                        "method_not_allowed",
+                        "route_not_found",
+                        "unauthorized",
+                        "not_found_data"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 404,
+                  "code": "not_found_data",
+                  "message": "Resource not found"
+                }
+              }
+            }
+          },
+          "500": {
+            "description": "Server side error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "anyOf": [
+                        {
+                          "type": "number",
+                          "const": 500
+                        },
+                        {
+                          "type": "number",
+                          "const": 502
+                        },
+                        {
+                          "type": "number",
+                          "const": 504
+                        }
+                      ]
+                    },
+                    "code": {
+                      "type": "string",
+                      "enum": [
+                        "bad_database_response",
+                        "connection_refused",
+                        "database_timeout",
+                        "internal_server_error"
+                      ]
+                    },
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "code",
+                    "message"
+                  ]
+                },
+                "example": {
+                  "status": 500,
+                  "code": "internal_server_error",
+                  "message": "An unexpected error occurred"
+                }
+              }
+            }
           }
         },
         "operationId": "getNetworks",

From 9df5d74d46c26eb68730e7ecafe993ead92e1620 Mon Sep 17 00:00:00 2001
From: AK <58132405+0xa3k5@users.noreply.github.com>
Date: Fri, 25 Jul 2025 19:48:15 +0300
Subject: [PATCH 34/36] remove outdated note about declared eth_call being
 experimental (#1014)

---
 website/src/pages/en/subgraphs/developing/creating/advanced.mdx | 2 --
 1 file changed, 2 deletions(-)

diff --git a/website/src/pages/en/subgraphs/developing/creating/advanced.mdx b/website/src/pages/en/subgraphs/developing/creating/advanced.mdx
index 57007f5dfee1..0f33c514f8cb 100644
--- a/website/src/pages/en/subgraphs/developing/creating/advanced.mdx
+++ b/website/src/pages/en/subgraphs/developing/creating/advanced.mdx
@@ -456,8 +456,6 @@ In this configuration:
 
 ## Declared eth_call
 
-> Note: This is an experimental feature that is not currently available in a stable Graph Node release yet. You can only use it in Subgraph Studio or your self-hosted node.
-
 Declarative `eth_calls` are a valuable Subgraph feature that allows `eth_calls` to be executed ahead of time, enabling `graph-node` to execute them in parallel.
 
 This feature does the following:

From 0458494c43b83230229ba8ee95cdcf198a3abba2 Mon Sep 17 00:00:00 2001
From: Andrew <36178664+UrsaPolarisRecords@users.noreply.github.com>
Date: Tue, 5 Aug 2025 09:03:25 -0700
Subject: [PATCH 35/36] Update faq.mdx (#1015)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* Update faq.mdx

OpenAPI link, added call-to-action for those looking to build client libraries, clarified network naming convention, explained pagination, added address format for Solana, additional minor edits

* Update faq.mdx

is has -> has

* Update website/src/pages/en/token-api/faq.mdx

* Update website/src/pages/en/token-api/faq.mdx

* Update website/src/pages/en/token-api/faq.mdx

* Update website/src/pages/en/token-api/faq.mdx

---------

Co-authored-by: Benoît Rouleau <benoit.rouleau@icloud.com>
---
 website/src/pages/en/token-api/faq.mdx | 56 ++++++++++++++------------
 1 file changed, 31 insertions(+), 25 deletions(-)

diff --git a/website/src/pages/en/token-api/faq.mdx b/website/src/pages/en/token-api/faq.mdx
index 88be1ad49b13..a6f1aa61652d 100644
--- a/website/src/pages/en/token-api/faq.mdx
+++ b/website/src/pages/en/token-api/faq.mdx
@@ -8,7 +8,7 @@ Get fast answers to easily integrate and scale with The Graph's high-performance
 
 ### Which blockchains are supported by the Token API?
 
-Currently, the Token API supports Ethereum, BNB Smart Chain (BSC), Polygon, Optimism, Base, Unichain, Avalanche, Solana, and Arbitrum One. A full list of supported networks can be found under the Token API column [here](/supported-networks/).
+Currently, the Token API supports Ethereum, BNB Smart Chain (BSC), Polygon, Optimism, Base, Unichain, Avalanche, Arbitrum One, and Solana. A full list of supported networks can be found under the Token API column [here](/supported-networks/).
 
 ### Does the Token API support NFTs?
 
@@ -24,32 +24,28 @@ Authentication is managed via API tokens obtained through [The Graph Market](htt
 
 ### How current is the data provided by the API relative to the blockchain?
 
-The API provides data up to the latest finalized block.
+The API provides data up to the latest finalized block. This time varies depending on the blockchain. Improvements to provide data closer to the chain head are planned, and feedback is welcome on [Discord](https://discord.gg/graphprotocol).
 
 ### How do I retrieve token prices?
 
-By default, token prices are returned with token-related responses, including token balances, token transfers, token metadata, and token holders. Historical prices are available with the Open-High-Low-Close (OHLC) endpoints.
+Token prices are available with the Open-High-Low-Close (OHLC) endpoints. For a given time period, `"open"` represents the price at the start of the time period, `"high"` represents the highest price during the time period, `"low"` represents the lowest price, and `"close"` represents the price at the end of the time period.
 
 ### Does the Token API support historical token data?
 
-The Token API supports historical token balances with the `/historical/balances/evm/{address}` endpoint. You can query historical price data by pool at `/ohlc/pools/evm/{pool}` and by contract at `/ohlc/prices/evm/{contract}`.
+The Token API supports historical token balances with the `/historical/balances/evm/{address}` endpoint. You can query historical price data by pool at `/ohlc/pools/evm/{pool}` and by contract at `/ohlc/prices/evm/{contract}`. Historical balances have a similar OHLC format, but return token balances instead of prices.
 
 ### What exchanges does the Token API use for token prices?
 
 The Token API currently tracks prices on Uniswap v2, v3, and v4, along with Jupiter, Raydium, and Pump.fun on Solana, with plans to support additional exchanges in the future.
 
-### Does the Token API provide a client SDK?
+### Does the Token API provide a client SDK or client library?
 
-While a client SDK is not currently available, please share feedback on any SDKs or integrations you would like to see on [Discord](https://discord.gg/graphprotocol).
+While an official client SDK is not currently available, please share feedback on any SDKs or integrations you would like to see on [Discord](https://discord.gg/graphprotocol). Community contributions are welcome to use the [OpenAPI document](https://token-api.thegraph.com/openapi) to build and share their own client libraries.
 
 ### Are there plans to support additional blockchains in the future?
 
 Yes, more blockchains will be supported in the future. Please share feedback on desired chains on [Discord](https://discord.gg/graphprotocol).
 
-### Are there plans to offer data closer to the chain head?
-
-Yes, improvements to provide data closer to the chain head are planned. Feedback is welcome on [Discord](https://discord.gg/graphprotocol).
-
 ### Are there plans to support additional use cases?
 
 The Graph ecosystem is actively determining the [roadmap](https://thegraph.com/blog/token-api-the-graph/) for additional use cases. Please provide feedback on specific features you would like prioritized on [Discord](https://discord.gg/graphprotocol).
@@ -58,7 +54,7 @@ The Graph ecosystem is actively determining the [roadmap](https://thegraph.com/b
 
 ### Is there a time limit for LLM queries?
 
-Yes. The maximum time limit for LLM queries is 10 seconds.
+Yes. The maximum time limit for each LLM query is 10 seconds.
 
 ### Is there a known list of LLMs that work with the API?
 
@@ -70,11 +66,23 @@ Beyond that, whether an LLM "works" depends on whether it supports the MCP proto
 
 You can find the code for the MCP client in [The Graph's repo](https://github.com/graphprotocol/mcp-client).
 
+### MCP integration with Claude/Cline/Cursor shows errors like "ENOENT" or "Server disconnected". How do I fix this?
+
+For "ENOENT" errors, ensure Node.js 18+ is installed and the path to `npx`/`bunx` is correct (consider using full paths in config). "Server disconnected" usually indicates authentication or connectivity issues – verify your `ACCESS_TOKEN` is set correctly and your network allows access to `https://token-api.mcp.thegraph.com/sse`.
+
+### Do I need to use MCP or tools like Claude, Cline, or Cursor?
+
+No, these are optional. MCP is an advanced feature allowing AI assistants to interface with the API via streaming. For standard usage, simply call the REST endpoints with any HTTP client using your JWT. Claude Desktop, Cline bot, and Cursor IDE integrations are provided for convenience but aren't required.
+
 ## Advanced Topics
 
-### I keep seeing a smart contract with the address `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee`. What is this address?
+### I keep seeing a smart contract with addresses like `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` and `0x000000000000000000000000000000000000`. What is this?
+
+The address `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` is a sentinel (placeholder) address used to represent native tokens in EVM smart contracts. Since native tokens (ETH, BNB, AVAX, etc.) exist at the protocol level rather than as smart contracts, DeFi protocols need a placeholder address when their code expects contract addresses for all tokens. This address represents the native token of whatever chain you're on: ETH on Ethereum and its L2s (Base, Arbitrum, Optimism), BNB on BSC, AVAX on Avalanche, and so forth.
+
+The address `0x0000000000000000000000000000000000000000` was introduced in Uniswap v4 for the same purpose.
 
-The address 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee is a sentinel (placeholder) address used to represent native tokens in EVM smart contracts. Since native tokens (ETH, BNB, AVAX, etc.) exist at the protocol level rather than as smart contracts, DeFi protocols need a placeholder address when their code expects contract addresses for all tokens. This address represents the native token of whatever chain you're on: ETH on Ethereum and its L2s (Base, Arbitrum, Optimism), BNB on BSC, AVAX on Avalanche, FTM on Fantom, and so forth. The repetitive pattern makes it obvious that the address is artificial; it's not a real account anyone controls, just an arbitrarily chosen low-entropy address that developers agreed to use.
+Because these addresses have an obvious repetitive pattern, they are clearly not randomly generated, as are other blockchain addresses. These accounts are not real accounts, just arbitrarily chosen low-entropy addresses that developers agreed to use.
 
 ### I'm getting 403/401 errors. What's wrong?
 
@@ -86,7 +94,7 @@ Networks that are currently or temporarily unavailable on a given endpoint will
 
 ### Are there rate limits or usage costs?
 
-During Beta, the Token API is free for authorized developers. There are no specific rate limits, but reasonable throttling exists to prevent abuse. High request volumes may trigger HTTP 429 errors. Monitor official announcements for future pricing changes after Beta.
+During Beta, the Token API has a generous allowance of free usage. There are no specific rate limits, but reasonable throttling exists to prevent abuse. High request volumes may trigger HTTP 429 errors. Monitor official announcements for future pricing changes after Beta.
 
 ### What do I do if I notice data inconsistencies in the data returned by the Token API?
 
@@ -94,12 +102,16 @@ If you notice data inconsistencies, please report the issue on our [Discord](htt
 
 ### How do I specify a network?
 
-You can query available networks with [this link](https://token-api.thegraph.com/networks). A full list of the exact network IDs accepted by The Graph can be found [here](/supported-networks/). Use the optional `network_id` parameter (e.g., `mainnet`, `bsc`, `base`, `arbitrum-one`, `optimism`, `matic`, `unichain`) to target a specific chain. Without this parameter, the API defaults to Ethereum mainnet.
+You can query which networks are available with [this endpoint](https://token-api.thegraph.com/networks). Take note that the network IDs differ between the Token API and Subgraphs. For EVM networks, use EVM endpoints with the optional `network_id` parameter (e.g., `mainnet`, `bsc`, `base`, `arbitrum-one`, `optimism`, `polygon`, `unichain`) to target a specific chain. Without this parameter, the API defaults to Ethereum mainnet.
+
+To query Solana, use the SVM endpoints.
 
 ### Why do I only see 10 results? How can I get more data?
 
 Endpoints cap output at 10 items by default. Use pagination parameters: `limit` and `page` (1-indexed) to return more results. For example, set `limit=50` to get 50 results, and increment `page` for subsequent batches (e.g., `page=2` for items 51-100).
 
+It is currently possible for the total number of pages to be inexact. This is because the backend provides only an approximation of the number of records in order to improve response time. To avoid getting confused by this approximation, make sure to continue fetching next pages until there is no more data, or the endpoint returns an error.
+
 ### How do I fetch older transfer history?
 
 The Transfers endpoint defaults to 30 days of history. To retrieve older events, increase the `age` parameter up to 180 days maximum (e.g., `age=180` for 6 months of transfers). Transfers older than 180 days cannot be fetched in a single call.
@@ -114,24 +126,18 @@ All Token API responses consistently wrap results in a top-level `data` array, e
 
 ### Why are token amounts returned as strings?
 
-Large numeric values (like token amounts or supplies) are returned as strings to avoid precision loss, as they often exceed JavaScript's safe integer range. Convert these to big number types for arithmetic operations. Fields like `decimals` are provided as normal numbers to help derive human-readable values.
+Large numeric values (like token amounts or supply) are returned as strings to avoid precision loss, as they often exceed JavaScript's safe integer range. Convert these to big number types for arithmetic operations. Fields like `decimals` are provided as normal numbers to help derive human-readable values.
 
 ### What format should addresses be in?
 
-The API accepts 40-character hex addresses with or without the `0x` prefix. The endpoint is case-insensitive, so both lower and uppercase hex characters work. Ensure addresses are exactly 40 hex digits (20 bytes) if you remove the prefix. For contract queries, use the token's contract address; for balance/transfer queries, use the wallet address.
+For EVM addresses, the API accepts hex addresses with either 42 or 40 characters, with or without the `0x` prefix. The endpoint is case-insensitive, so both lower and uppercase hex characters work. Ensure EVM addresses are exactly 42 characters, or 40 if you remove the prefix. For contract queries, use the token's contract address. For balance/transfer queries, use the wallet address.
+
+SVM addresses are base58-encoded strings that are typically 32-44 characters long. They contain a mix of uppercase letters, lowercase letters, and numbers. Unlike Ethereum addresses which are hexadecimal and start with "0x", Solana addresses don't have a consistent prefix pattern.
 
 ### Do I need special headers besides authentication?
 
 While recommended, `Accept: application/json` isn't strictly required as the API returns JSON by default. The critical header is `Authorization: Bearer <token>`. Ensure you make a GET request to the correct URL without trailing slashes or path typos (e.g., use `/balances/evm/{address}` not `/balance`).
 
-### MCP integration with Claude/Cline/Cursor shows errors like "ENOENT" or "Server disconnected". How do I fix this?
-
-For "ENOENT" errors, ensure Node.js 18+ is installed and the path to `npx`/`bunx` is correct (consider using full paths in config). "Server disconnected" usually indicates authentication or connectivity issues – verify your `ACCESS_TOKEN` is set correctly and your network allows access to `https://token-api.mcp.thegraph.com/sse`.
-
 ### Is the Token API part of The Graph's GraphQL service?
 
 No, the Token API is a separate RESTful service. Unlike traditional subgraphs, it provides ready-to-use REST endpoints (HTTP GET) for common token data. You don't need to write GraphQL queries or deploy subgraphs. Under the hood, it uses The Graph's infrastructure and MCP with AI for enrichment, but you simply interact with REST endpoints.
-
-### Do I need to use MCP or tools like Claude, Cline, or Cursor?
-
-No, these are optional. MCP is an advanced feature allowing AI assistants to interface with the API via streaming. For standard usage, simply call the REST endpoints with any HTTP client using your JWT. Claude Desktop, Cline bot, and Cursor IDE integrations are provided for convenience but aren't required.

From e669b3240e7333b64db77d2ef4db6a6b2d765c76 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Beno=C3=AEt=20Rouleau?= <benoit.rouleau@icloud.com>
Date: Thu, 7 Aug 2025 18:23:00 -0400
Subject: [PATCH 36/36] Update Token API (#1016)

* Update dependencies

* Update Token API JSON + fix code accordingly

* Lint

* Update `route-lockfile.txt`
---
 package.json                                  |    6 +-
 packages/og-image/package.json                |    8 +-
 pnpm-lock.yaml                                | 1212 ++--
 website/package.json                          |   10 +-
 website/route-lockfile.txt                    |   96 +-
 .../src/layout/templates/openApi/aside.tsx    |    2 +-
 website/src/openApi/index.ts                  |   10 +-
 website/src/openApi/tokenApi.json             | 5239 +++++++++++------
 8 files changed, 4256 insertions(+), 2327 deletions(-)

diff --git a/package.json b/package.json
index 318c0d7b42df..7106e287a281 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
   "name": "graph-docs",
   "private": true,
   "version": "1.0.0",
-  "packageManager": "pnpm@10.13.1",
+  "packageManager": "pnpm@10.14.0",
   "scripts": {
     "dev": "turbo run dev",
     "build": "NODE_OPTIONS='--max-old-space-size=8192' turbo run build",
@@ -21,7 +21,7 @@
   },
   "devDependencies": {
     "@edgeandnode/eslint-config": "^2.0.3",
-    "@types/node": "^22.16.5",
+    "@types/node": "^22.17.0",
     "eslint": "^8.57.1",
     "eslint-plugin-mdx": "^3.6.2",
     "prettier": "^3.6.2",
@@ -32,7 +32,7 @@
     "remark-lint-no-heading-punctuation": "^4.0.1",
     "remark-lint-restrict-elements": "workspace:*",
     "turbo": "^2.5.5",
-    "typescript": "^5.8.3"
+    "typescript": "^5.9.2"
   },
   "resolutions": {
     "@babel/core": "7.26.7"
diff --git a/packages/og-image/package.json b/packages/og-image/package.json
index 71eaa27b1a6b..e7e35759b360 100644
--- a/packages/og-image/package.json
+++ b/packages/og-image/package.json
@@ -12,17 +12,17 @@
   "dependencies": {
     "@resvg/resvg-wasm": "^2.6.2",
     "react": "^18.3.1",
-    "satori": "^0.16.1",
+    "satori": "^0.16.2",
     "yoga-wasm-web": "^0.3.3"
   },
   "devDependencies": {
-    "@cloudflare/workers-types": "^4.20250724.0",
+    "@cloudflare/workers-types": "^4.20250807.0",
     "@types/react": "^18.3.23",
     "jest-image-snapshot": "^6.5.1",
     "tsx": "^4.20.3",
-    "typescript": "^5.8.3",
+    "typescript": "^5.9.2",
     "vitest": "^2.1.9",
-    "wrangler": "^3.114.11"
+    "wrangler": "^3.114.13"
   },
   "sideEffects": false
 }
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 8f3bf7a54bfe..ba69e768366f 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -13,10 +13,10 @@ importers:
     devDependencies:
       '@edgeandnode/eslint-config':
         specifier: ^2.0.3
-        version: 2.0.3(eslint@8.57.1)(typescript@5.8.3)
+        version: 2.0.3(eslint@8.57.1)(typescript@5.9.2)
       '@types/node':
-        specifier: ^22.16.5
-        version: 22.16.5
+        specifier: ^22.17.0
+        version: 22.17.0
       eslint:
         specifier: ^8.57.1
         version: 8.57.1
@@ -48,8 +48,8 @@ importers:
         specifier: ^2.5.5
         version: 2.5.5
       typescript:
-        specifier: ^5.8.3
-        version: 5.8.3
+        specifier: ^5.9.2
+        version: 5.9.2
 
   packages/og-image:
     dependencies:
@@ -60,15 +60,15 @@ importers:
         specifier: ^18.3.1
         version: 18.3.1
       satori:
-        specifier: ^0.16.1
-        version: 0.16.1
+        specifier: ^0.16.2
+        version: 0.16.2
       yoga-wasm-web:
         specifier: ^0.3.3
         version: 0.3.3
     devDependencies:
       '@cloudflare/workers-types':
-        specifier: ^4.20250724.0
-        version: 4.20250724.0
+        specifier: ^4.20250807.0
+        version: 4.20250807.0
       '@types/react':
         specifier: ^18.3.23
         version: 18.3.23
@@ -79,14 +79,14 @@ importers:
         specifier: ^4.20.3
         version: 4.20.3
       typescript:
-        specifier: ^5.8.3
-        version: 5.8.3
+        specifier: ^5.9.2
+        version: 5.9.2
       vitest:
         specifier: ^2.1.9
-        version: 2.1.9(@types/node@22.16.5)(jsdom@24.1.3)
+        version: 2.1.9(@types/node@22.17.0)(jsdom@24.1.3)
       wrangler:
-        specifier: ^3.114.11
-        version: 3.114.11(@cloudflare/workers-types@4.20250724.0)
+        specifier: ^3.114.13
+        version: 3.114.13(@cloudflare/workers-types@4.20250807.0)
 
   packages/remark-lint-restrict-elements:
     dependencies:
@@ -101,16 +101,16 @@ importers:
     dependencies:
       '@docsearch/react':
         specifier: ^3.9.0
-        version: 3.9.0(@algolia/client-search@5.34.1)(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)
+        version: 3.9.0(@algolia/client-search@5.35.0)(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)
       '@edgeandnode/common':
         specifier: ^7.0.4
-        version: 7.0.4(hardhat@2.26.1(typescript@5.8.3))
+        version: 7.0.4(hardhat@2.26.2(typescript@5.9.2))
       '@edgeandnode/gds':
-        specifier: ^6.7.1
-        version: 6.7.1(@emotion/is-prop-valid@0.8.8)(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(@theme-ui/core@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(dayjs@1.11.13)(hardhat@2.26.1(typescript@5.8.3))(next@14.2.30(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)(theme-ui@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(typescript@5.8.3)
+        specifier: ^6.7.3
+        version: 6.7.3(@emotion/is-prop-valid@0.8.8)(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(@theme-ui/core@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(dayjs@1.11.13)(hardhat@2.26.2(typescript@5.9.2))(next@14.2.31(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)(theme-ui@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(typescript@5.9.2)
       '@edgeandnode/go':
-        specifier: ^10.3.1
-        version: 10.3.1(1b29eee08dfa1082e05ffae0de269dca)
+        specifier: ^10.3.4
+        version: 10.3.4(62939e709471f89a98fd1d6f2cc625da)
       '@emotion/react':
         specifier: ^11.14.0
         version: 11.14.0(@types/react@18.3.23)(react@18.3.1)
@@ -151,20 +151,20 @@ importers:
         specifier: ^2.67.0
         version: 2.67.0
       motion:
-        specifier: ^12.23.9
-        version: 12.23.9(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+        specifier: ^12.23.12
+        version: 12.23.12(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       next:
-        specifier: ^14.2.30
-        version: 14.2.30(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+        specifier: ^14.2.31
+        version: 14.2.31(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       next-seo:
         specifier: ^6.8.0
-        version: 6.8.0(next@14.2.30(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+        version: 6.8.0(next@14.2.31(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       next-sitemap:
         specifier: ^4.2.3
-        version: 4.2.3(next@14.2.30(react-dom@18.3.1(react@18.3.1))(react@18.3.1))
+        version: 4.2.3(next@14.2.31(react-dom@18.3.1(react@18.3.1))(react@18.3.1))
       nextra:
         specifier: ^3.3.1
-        version: 3.3.1(@types/react@18.3.23)(acorn@8.15.0)(next@14.2.30(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3)
+        version: 3.3.1(@types/react@18.3.23)(acorn@8.15.0)(next@14.2.31(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)
       openapi-types:
         specifier: ^12.1.3
         version: 12.1.3
@@ -209,8 +209,8 @@ importers:
         specifier: ^2.66.0
         version: 2.66.0
       '@types/node':
-        specifier: ^22.16.5
-        version: 22.16.5
+        specifier: ^22.17.0
+        version: 22.17.0
       '@types/react':
         specifier: ^18.3.23
         version: 18.3.23
@@ -234,7 +234,7 @@ importers:
         version: 3.4.17
       tsup:
         specifier: ^8.5.0
-        version: 8.5.0(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.8.0)
+        version: 8.5.0(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1)
       tsx:
         specifier: ^4.20.3
         version: 4.20.3
@@ -247,6 +247,10 @@ packages:
   '@adraffy/ens-normalize@1.11.0':
     resolution: {integrity: sha512-/3DDPKHqqIqxUULp8yP4zODUY1i+2xvVWsv8A79xGWdCAG+8sb0hRh0Rk2QyOJUnnbyPUAZYcpBuRe3nS2OIUg==}
 
+  '@algolia/abtesting@1.1.0':
+    resolution: {integrity: sha512-sEyWjw28a/9iluA37KLGu8vjxEIlb60uxznfTUmXImy7H5NvbpSO6yYgmgH5KiD7j+zTUUihiST0jEP12IoXow==}
+    engines: {node: '>= 14.0.0'}
+
   '@algolia/autocomplete-core@1.17.9':
     resolution: {integrity: sha512-O7BxrpLDPJWWHv/DLA9DRFWs+iY1uOJZkqUwjS5HSZAGcl0hIVCQ97LTLewiZmZ402JYUrun+8NqFP+hCknlbQ==}
 
@@ -267,56 +271,56 @@ packages:
       '@algolia/client-search': '>= 4.9.1 < 6'
       algoliasearch: '>= 4.9.1 < 6'
 
-  '@algolia/client-abtesting@5.34.1':
-    resolution: {integrity: sha512-M4zb6J7q+pg9V9Xk0k1WDgvupfCtXcxjKGTrNVYemiredLVGOmvVIPAUjg2rx4QmK7DWNApWLsieYwk7PAaOXw==}
+  '@algolia/client-abtesting@5.35.0':
+    resolution: {integrity: sha512-uUdHxbfHdoppDVflCHMxRlj49/IllPwwQ2cQ8DLC4LXr3kY96AHBpW0dMyi6ygkn2MtFCc6BxXCzr668ZRhLBQ==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/client-analytics@5.34.1':
-    resolution: {integrity: sha512-h18zlL+bVUlbNE92olo1d/r6HQPkxhmP7yCpA1osERwpgC6F058kWm0O0aYdrHJIHtWBcs9aRqq7IkQSkpjPJg==}
+  '@algolia/client-analytics@5.35.0':
+    resolution: {integrity: sha512-SunAgwa9CamLcRCPnPHx1V2uxdQwJGqb1crYrRWktWUdld0+B2KyakNEeVn5lln4VyeNtW17Ia7V7qBWyM/Skw==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/client-common@5.34.1':
-    resolution: {integrity: sha512-otPWALs72KvmVuP0CN0DI6sqVx1jQWKi+/DgAiP8DysVMgiNlva3GDKTtAK6XVGlT08f4h32FNuL0yQODuCfKA==}
+  '@algolia/client-common@5.35.0':
+    resolution: {integrity: sha512-ipE0IuvHu/bg7TjT2s+187kz/E3h5ssfTtjpg1LbWMgxlgiaZIgTTbyynM7NfpSJSKsgQvCQxWjGUO51WSCu7w==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/client-insights@5.34.1':
-    resolution: {integrity: sha512-SNDb5wuEpQFM6S5Shk2iytLMusvGycm9uTuYh7cGa1h3U7O65OjjjIgQ0lLY5HPybHNtmXr4Zh/EZ23pZvAJHg==}
+  '@algolia/client-insights@5.35.0':
+    resolution: {integrity: sha512-UNbCXcBpqtzUucxExwTSfAe8gknAJ485NfPN6o1ziHm6nnxx97piIbcBQ3edw823Tej2Wxu1C0xBY06KgeZ7gA==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/client-personalization@5.34.1':
-    resolution: {integrity: sha512-T8z9KqYJOup83Hw0mgICYWfJoLh//FNWbf4roFd95ZJzZ4v1cN/hvr7Eqml1qWMoCkJb4y/XQjrXsJ6Y9XnMLw==}
+  '@algolia/client-personalization@5.35.0':
+    resolution: {integrity: sha512-/KWjttZ6UCStt4QnWoDAJ12cKlQ+fkpMtyPmBgSS2WThJQdSV/4UWcqCUqGH7YLbwlj3JjNirCu3Y7uRTClxvA==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/client-query-suggestions@5.34.1':
-    resolution: {integrity: sha512-YA0kC4CwO1mc1dliNgbFgToweRa7Uihjz3izEaV4cXninF1v4SaOrPkQUsiFPprAffjMzOUoT7vahQZ/HZyiKQ==}
+  '@algolia/client-query-suggestions@5.35.0':
+    resolution: {integrity: sha512-8oCuJCFf/71IYyvQQC+iu4kgViTODbXDk3m7yMctEncRSRV+u2RtDVlpGGfPlJQOrAY7OONwJlSHkmbbm2Kp/w==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/client-search@5.34.1':
-    resolution: {integrity: sha512-bt5hC9vvjaKvdvsgzfXJ42Sl3qjQqoi/FD8V7HOQgtNFhwSauZOlgLwFoUiw67sM+r7ehF7QDk5WRDgY7fAkIg==}
+  '@algolia/client-search@5.35.0':
+    resolution: {integrity: sha512-FfmdHTrXhIduWyyuko1YTcGLuicVbhUyRjO3HbXE4aP655yKZgdTIfMhZ/V5VY9bHuxv/fGEh3Od1Lvv2ODNTg==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/ingestion@1.34.1':
-    resolution: {integrity: sha512-QLxiBskQxFGzPqKZvBNEvNN95kgDCbBd2X29ZGfh6Sr2QOSU34US6Z9x2duiF4o9FwsB0i6eQ2c9vHfuH0lAQg==}
+  '@algolia/ingestion@1.35.0':
+    resolution: {integrity: sha512-gPzACem9IL1Co8mM1LKMhzn1aSJmp+Vp434An4C0OBY4uEJRcqsLN3uLBlY+bYvFg8C8ImwM9YRiKczJXRk0XA==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/monitoring@1.34.1':
-    resolution: {integrity: sha512-NteCvWcWXXdnPGyZH8rXHslcf2pM1WGDNMGNZFXLFtOt1Gf1Tjy2t0NZLp+Mxap3JMV4mbYmactbXrvpQf/lLA==}
+  '@algolia/monitoring@1.35.0':
+    resolution: {integrity: sha512-w9MGFLB6ashI8BGcQoVt7iLgDIJNCn4OIu0Q0giE3M2ItNrssvb8C0xuwJQyTy1OFZnemG0EB1OvXhIHOvQwWw==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/recommend@5.34.1':
-    resolution: {integrity: sha512-UdgDSrunLIBAAAxQlYLXYLnYFN4wkzkrAYx+wMLEk/pzASWyza3BkecbUFVqoYOBIgwo7Mt4iymzVtFkzL2uCQ==}
+  '@algolia/recommend@5.35.0':
+    resolution: {integrity: sha512-AhrVgaaXAb8Ue0u2nuRWwugt0dL5UmRgS9LXe0Hhz493a8KFeZVUE56RGIV3hAa6tHzmAV7eIoqcWTQvxzlJeQ==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/requester-browser-xhr@5.34.1':
-    resolution: {integrity: sha512-567LfFTc9VOiPtuySQohoqaWMeohYWbXK71aMSin+SLMgeKX7hz5LrVmkmMQj9udwWK6/mtHEYZGPYHSuXpLQg==}
+  '@algolia/requester-browser-xhr@5.35.0':
+    resolution: {integrity: sha512-diY415KLJZ6x1Kbwl9u96Jsz0OstE3asjXtJ9pmk1d+5gPuQ5jQyEsgC+WmEXzlec3iuVszm8AzNYYaqw6B+Zw==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/requester-fetch@5.34.1':
-    resolution: {integrity: sha512-YRbygPgGBEik5U593JvyjgxFjcsyZMR25eIQxNHvSQumdAzt5A4E4Idw3yXnwhrmMdjML54ZXT7EAjnTjWy8Xw==}
+  '@algolia/requester-fetch@5.35.0':
+    resolution: {integrity: sha512-uydqnSmpAjrgo8bqhE9N1wgcB98psTRRQXcjc4izwMB7yRl9C8uuAQ/5YqRj04U0mMQ+fdu2fcNF6m9+Z1BzDQ==}
     engines: {node: '>= 14.0.0'}
 
-  '@algolia/requester-node-http@5.34.1':
-    resolution: {integrity: sha512-o0mqRYbS82Rt4DE02Od7RL6pNtV7oSxScPuIw8LW4aqO2V5eCF05Pry/SnUgcI/Vb2QCYC66hytBCqzyC/toZA==}
+  '@algolia/requester-node-http@5.35.0':
+    resolution: {integrity: sha512-RgLX78ojYOrThJHrIiPzT4HW3yfQa0D7K+MQ81rhxqaNyNBu4F1r+72LNHYH/Z+y9I1Mrjrd/c/Ue5zfDgAEjQ==}
     engines: {node: '>= 14.0.0'}
 
   '@alloc/quick-lru@5.2.0':
@@ -427,38 +431,38 @@ packages:
       workerd:
         optional: true
 
-  '@cloudflare/workerd-darwin-64@1.20250408.0':
-    resolution: {integrity: sha512-bxhIwBWxaNItZLXDNOKY2dCv0FHjDiDkfJFpwv4HvtvU5MKcrivZHVmmfDzLW85rqzfcDOmKbZeMPVfiKxdBZw==}
+  '@cloudflare/workerd-darwin-64@1.20250718.0':
+    resolution: {integrity: sha512-FHf4t7zbVN8yyXgQ/r/GqLPaYZSGUVzeR7RnL28Mwj2djyw2ZergvytVc7fdGcczl6PQh+VKGfZCfUqpJlbi9g==}
     engines: {node: '>=16'}
     cpu: [x64]
     os: [darwin]
 
-  '@cloudflare/workerd-darwin-arm64@1.20250408.0':
-    resolution: {integrity: sha512-5XZ2Oykr8bSo7zBmERtHh18h5BZYC/6H1YFWVxEj3PtalF3+6SHsO4KZsbGvDml9Pu7sHV277jiZE5eny8Hlyw==}
+  '@cloudflare/workerd-darwin-arm64@1.20250718.0':
+    resolution: {integrity: sha512-fUiyUJYyqqp4NqJ0YgGtp4WJh/II/YZsUnEb6vVy5Oeas8lUOxnN+ZOJ8N/6/5LQCVAtYCChRiIrBbfhTn5Z8Q==}
     engines: {node: '>=16'}
     cpu: [arm64]
     os: [darwin]
 
-  '@cloudflare/workerd-linux-64@1.20250408.0':
-    resolution: {integrity: sha512-WbgItXWln6G5d7GvYLWcuOzAVwafysZaWunH3UEfsm95wPuRofpYnlDD861gdWJX10IHSVgMStGESUcs7FLerQ==}
+  '@cloudflare/workerd-linux-64@1.20250718.0':
+    resolution: {integrity: sha512-5+eb3rtJMiEwp08Kryqzzu8d1rUcK+gdE442auo5eniMpT170Dz0QxBrqkg2Z48SFUPYbj+6uknuA5tzdRSUSg==}
     engines: {node: '>=16'}
     cpu: [x64]
     os: [linux]
 
-  '@cloudflare/workerd-linux-arm64@1.20250408.0':
-    resolution: {integrity: sha512-pAhEywPPvr92SLylnQfZEPgXz+9pOG9G9haAPLpEatncZwYiYd9yiR6HYWhKp2erzCoNrOqKg9IlQwU3z1IDiw==}
+  '@cloudflare/workerd-linux-arm64@1.20250718.0':
+    resolution: {integrity: sha512-Aa2M/DVBEBQDdATMbn217zCSFKE+ud/teS+fFS+OQqKABLn0azO2qq6ANAHYOIE6Q3Sq4CxDIQr8lGdaJHwUog==}
     engines: {node: '>=16'}
     cpu: [arm64]
     os: [linux]
 
-  '@cloudflare/workerd-windows-64@1.20250408.0':
-    resolution: {integrity: sha512-nJ3RjMKGae2aF2rZ/CNeBvQPM+W5V1SUK0FYWG/uomyr7uQ2l4IayHna1ODg/OHHTEgIjwom0Mbn58iXb0WOcQ==}
+  '@cloudflare/workerd-windows-64@1.20250718.0':
+    resolution: {integrity: sha512-dY16RXKffmugnc67LTbyjdDHZn5NoTF1yHEf2fN4+OaOnoGSp3N1x77QubTDwqZ9zECWxgQfDLjddcH8dWeFhg==}
     engines: {node: '>=16'}
     cpu: [x64]
     os: [win32]
 
-  '@cloudflare/workers-types@4.20250724.0':
-    resolution: {integrity: sha512-TRuz+kMArBpW3lR7xoPR7Ek+/ymvukE5JC7RITlaRyHbs6vWPfwpH9TWQ1dfztYFmSQl5ZiAbLcK8UDRjgiW7g==}
+  '@cloudflare/workers-types@4.20250807.0':
+    resolution: {integrity: sha512-Zbrz9egAfwmlkUaZ1tQ+19pt5eomCJ57mAviT1HCsvnSFP1MoffMbYiU/xUomuekHtx0aVO4EacZwchCgjSvmw==}
 
   '@corex/deepmerge@4.0.43':
     resolution: {integrity: sha512-N8uEMrMPL0cu/bdboEWpQYb/0i2K5Qn8eCsxzOmxSggJbbQte7ljMRoXm917AbntqTGOzdTu+vP3KOOzoC70HQ==}
@@ -532,8 +536,8 @@ packages:
       typescript:
         optional: true
 
-  '@edgeandnode/gds@6.7.1':
-    resolution: {integrity: sha512-4AhN0IMUJuQMnV3k/vJ6wRkdT4ZPEYmG/cSkHBrT/Elaz1/x/erOrlgYwCusWGKBwjsQAlAxNA6QJaL13zxgyw==}
+  '@edgeandnode/gds@6.7.3':
+    resolution: {integrity: sha512-ODoYfMmRaXHCfzeJ14CjxPzOWIwEIRNet3O7shnVOuRE96XKJjDTz+1aRFfCLKgLhkc160WmnaeviOrEiDBACA==}
     peerDependencies:
       '@emotion/react': ^11
       dayjs: ^1.11
@@ -545,12 +549,12 @@ packages:
       next:
         optional: true
 
-  '@edgeandnode/go@10.3.1':
-    resolution: {integrity: sha512-fwUnJdm4MWps1ILvJ9ft7zYQx1noSsQwSDa8sWJ2Pkeml4UKP3m65KCovo/M5Xvi4fp1vr+fvIWDzWa8mo7IqA==}
+  '@edgeandnode/go@10.3.4':
+    resolution: {integrity: sha512-PiJcOYKpAaPBNt+WApFg/5qDQU6p4M5WKWh8DdGIQgp8LGVxrY+8jdDAbMBF2DQ8AkjGFfScOcVF/C8wWemf7Q==}
     peerDependencies:
       '@edgeandnode/common': ^7.0.4
       '@edgeandnode/ens': ^2.3.0
-      '@edgeandnode/gds': ^6.7.1
+      '@edgeandnode/gds': ^6.7.3
       '@emotion/react': ^11
       '@tanstack/react-query': ^5
       graphql: '>=16.9'
@@ -1208,14 +1212,14 @@ packages:
     engines: {node: '>=18'}
     hasBin: true
 
-  '@floating-ui/core@1.7.2':
-    resolution: {integrity: sha512-wNB5ooIKHQc+Kui96jE/n69rHFWAVoxn5CAzL1Xdd8FG03cgY3MLO+GF9U3W737fYDSgPWA6MReKhBQBop6Pcw==}
+  '@floating-ui/core@1.7.3':
+    resolution: {integrity: sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==}
 
-  '@floating-ui/dom@1.7.2':
-    resolution: {integrity: sha512-7cfaOQuCS27HD7DX+6ib2OrnW+b4ZBwDNnCcT0uTyidcmyWb03FnQqJybDBoCnpdxwBSfA94UAYlRCt7mV+TbA==}
+  '@floating-ui/dom@1.7.3':
+    resolution: {integrity: sha512-uZA413QEpNuhtb3/iIKoYMSK07keHPYeXF02Zhd6e213j+d1NamLix/mCLxBUDW/Gx52sPH2m+chlUsyaBs/Ag==}
 
-  '@floating-ui/react-dom@2.1.4':
-    resolution: {integrity: sha512-JbbpPhp38UmXDDAu60RJmbeme37Jbgsm7NrHGgzYYFKmblzRUh6Pa641dII6LsjwF4XlScDrde2UAzDo/b9KPw==}
+  '@floating-ui/react-dom@2.1.5':
+    resolution: {integrity: sha512-HDO/1/1oH9fjj4eLgegrlH3dklZpHtUYYFiVwMUwfGvk9jWDRWqkklA2/NFScknrcNSspbV868WjXORvreDX+Q==}
     peerDependencies:
       react: '>=16.8.0'
       react-dom: '>=16.8.0'
@@ -1226,8 +1230,8 @@ packages:
       react: '>=16.8.0'
       react-dom: '>=16.8.0'
 
-  '@floating-ui/react@0.27.13':
-    resolution: {integrity: sha512-Qmj6t9TjgWAvbygNEu1hj4dbHI9CY0ziCMIJrmYoDIn9TUAH5lRmiIeZmRd4c6QEZkzdoH7jNnoNyoY1AIESiA==}
+  '@floating-ui/react@0.27.15':
+    resolution: {integrity: sha512-0LGxhBi3BB1DwuSNQAmuaSuertFzNAerlMdPbotjTVnvPtdOs7CkrHLaev5NIXemhzDXNC0tFzuseut7cWA5mw==}
     peerDependencies:
       react: '>=17.0.0'
       react-dom: '>=17.0.0'
@@ -1264,8 +1268,8 @@ packages:
   '@hasparus/eslint-plugin@1.0.0':
     resolution: {integrity: sha512-Pef5tKZVNdMxkbO5RJE9KFzdN/vgMOAcZLd9gfmXZa1Th+zKMh8N+JP0p9+oVTeSH1n7MaFmuW23tBJTjzqL0w==}
 
-  '@headlessui/react@2.2.6':
-    resolution: {integrity: sha512-gN5CT8Kf4IWwL04GQOjZ/ZnHMFoeFHZmVSFoDKeTmbtmy9oFqQqJMthdBiO3Pl5LXk2w03fGFLpQV6EW84vjjQ==}
+  '@headlessui/react@2.2.7':
+    resolution: {integrity: sha512-WKdTymY8Y49H8/gUc/lIyYK1M+/6dq0Iywh4zTZVAaiTDprRfioxSgD0wnXTQTBpjpGJuTL1NO/mqEvc//5SSg==}
     engines: {node: '>=10'}
     peerDependencies:
       react: ^18 || ^19 || ^19.0.0-rc
@@ -1546,62 +1550,62 @@ packages:
   '@next/env@13.5.11':
     resolution: {integrity: sha512-fbb2C7HChgM7CemdCY+y3N1n8pcTKdqtQLbC7/EQtPdLvlMUT9JX/dBYl8MMZAtYG4uVMyPFHXckb68q/NRwqg==}
 
-  '@next/env@14.2.30':
-    resolution: {integrity: sha512-KBiBKrDY6kxTQWGzKjQB7QirL3PiiOkV7KW98leHFjtVRKtft76Ra5qSA/SL75xT44dp6hOcqiiJ6iievLOYug==}
+  '@next/env@14.2.31':
+    resolution: {integrity: sha512-X8VxxYL6VuezrG82h0pUA1V+DuTSJp7Nv15bxq3ivrFqZLjx81rfeHMWOE9T0jm1n3DtHGv8gdn6B0T0kr0D3Q==}
 
   '@next/eslint-plugin-next@13.4.9':
     resolution: {integrity: sha512-nDtGpa992tNyAkT/KmSMy7QkHfNZmGCBYhHtafU97DubqxzNdvLsqRtliQ4FU04CysRCtvP2hg8rRC1sAKUTUA==}
 
-  '@next/swc-darwin-arm64@14.2.30':
-    resolution: {integrity: sha512-EAqfOTb3bTGh9+ewpO/jC59uACadRHM6TSA9DdxJB/6gxOpyV+zrbqeXiFTDy9uV6bmipFDkfpAskeaDcO+7/g==}
+  '@next/swc-darwin-arm64@14.2.31':
+    resolution: {integrity: sha512-dTHKfaFO/xMJ3kzhXYgf64VtV6MMwDs2viedDOdP+ezd0zWMOQZkxcwOfdcQeQCpouTr9b+xOqMCUXxgLizl8Q==}
     engines: {node: '>= 10'}
     cpu: [arm64]
     os: [darwin]
 
-  '@next/swc-darwin-x64@14.2.30':
-    resolution: {integrity: sha512-TyO7Wz1IKE2kGv8dwQ0bmPL3s44EKVencOqwIY69myoS3rdpO1NPg5xPM5ymKu7nfX4oYJrpMxv8G9iqLsnL4A==}
+  '@next/swc-darwin-x64@14.2.31':
+    resolution: {integrity: sha512-iSavebQgeMukUAfjfW8Fi2Iz01t95yxRl2w2wCzjD91h5In9la99QIDKcKSYPfqLjCgwz3JpIWxLG6LM/sxL4g==}
     engines: {node: '>= 10'}
     cpu: [x64]
     os: [darwin]
 
-  '@next/swc-linux-arm64-gnu@14.2.30':
-    resolution: {integrity: sha512-I5lg1fgPJ7I5dk6mr3qCH1hJYKJu1FsfKSiTKoYwcuUf53HWTrEkwmMI0t5ojFKeA6Vu+SfT2zVy5NS0QLXV4Q==}
+  '@next/swc-linux-arm64-gnu@14.2.31':
+    resolution: {integrity: sha512-XJb3/LURg1u1SdQoopG6jDL2otxGKChH2UYnUTcby4izjM0il7ylBY5TIA7myhvHj9lG5pn9F2nR2s3i8X9awQ==}
     engines: {node: '>= 10'}
     cpu: [arm64]
     os: [linux]
 
-  '@next/swc-linux-arm64-musl@14.2.30':
-    resolution: {integrity: sha512-8GkNA+sLclQyxgzCDs2/2GSwBc92QLMrmYAmoP2xehe5MUKBLB2cgo34Yu242L1siSkwQkiV4YLdCnjwc/Micw==}
+  '@next/swc-linux-arm64-musl@14.2.31':
+    resolution: {integrity: sha512-IInDAcchNCu3BzocdqdCv1bKCmUVO/bKJHnBFTeq3svfaWpOPewaLJ2Lu3GL4yV76c/86ZvpBbG/JJ1lVIs5MA==}
     engines: {node: '>= 10'}
     cpu: [arm64]
     os: [linux]
 
-  '@next/swc-linux-x64-gnu@14.2.30':
-    resolution: {integrity: sha512-8Ly7okjssLuBoe8qaRCcjGtcMsv79hwzn/63wNeIkzJVFVX06h5S737XNr7DZwlsbTBDOyI6qbL2BJB5n6TV/w==}
+  '@next/swc-linux-x64-gnu@14.2.31':
+    resolution: {integrity: sha512-YTChJL5/9e4NXPKW+OJzsQa42RiWUNbE+k+ReHvA+lwXk+bvzTsVQboNcezWOuCD+p/J+ntxKOB/81o0MenBhw==}
     engines: {node: '>= 10'}
     cpu: [x64]
     os: [linux]
 
-  '@next/swc-linux-x64-musl@14.2.30':
-    resolution: {integrity: sha512-dBmV1lLNeX4mR7uI7KNVHsGQU+OgTG5RGFPi3tBJpsKPvOPtg9poyav/BYWrB3GPQL4dW5YGGgalwZ79WukbKQ==}
+  '@next/swc-linux-x64-musl@14.2.31':
+    resolution: {integrity: sha512-A0JmD1y4q/9ufOGEAhoa60Sof++X10PEoiWOH0gZ2isufWZeV03NnyRlRmJpRQWGIbRkJUmBo9I3Qz5C10vx4w==}
     engines: {node: '>= 10'}
     cpu: [x64]
     os: [linux]
 
-  '@next/swc-win32-arm64-msvc@14.2.30':
-    resolution: {integrity: sha512-6MMHi2Qc1Gkq+4YLXAgbYslE1f9zMGBikKMdmQRHXjkGPot1JY3n5/Qrbg40Uvbi8//wYnydPnyvNhI1DMUW1g==}
+  '@next/swc-win32-arm64-msvc@14.2.31':
+    resolution: {integrity: sha512-nowJ5GbMeDOMzbTm29YqrdrD6lTM8qn2wnZfGpYMY7SZODYYpaJHH1FJXE1l1zWICHR+WfIMytlTDBHu10jb8A==}
     engines: {node: '>= 10'}
     cpu: [arm64]
     os: [win32]
 
-  '@next/swc-win32-ia32-msvc@14.2.30':
-    resolution: {integrity: sha512-pVZMnFok5qEX4RT59mK2hEVtJX+XFfak+/rjHpyFh7juiT52r177bfFKhnlafm0UOSldhXjj32b+LZIOdswGTg==}
+  '@next/swc-win32-ia32-msvc@14.2.31':
+    resolution: {integrity: sha512-pk9Bu4K0015anTS1OS9d/SpS0UtRObC+xe93fwnm7Gvqbv/W1ZbzhK4nvc96RURIQOux3P/bBH316xz8wjGSsA==}
     engines: {node: '>= 10'}
     cpu: [ia32]
     os: [win32]
 
-  '@next/swc-win32-x64-msvc@14.2.30':
-    resolution: {integrity: sha512-4KCo8hMZXMjpTzs3HOqOGYYwAXymXIy7PEPAXNEcEOyKqkjiDlECumrWziy+JEF0Oi4ILHGxzgQ3YiMGG2t/Lg==}
+  '@next/swc-win32-x64-msvc@14.2.31':
+    resolution: {integrity: sha512-LwFZd4JFnMHGceItR9+jtlMm8lGLU/IPkgjBBgYmdYSfalbHCiDpjMYtgDQ2wtwiAOSJOCyFI4m8PikrsDyA6Q==}
     engines: {node: '>= 10'}
     cpu: [x64]
     os: [win32]
@@ -1621,8 +1625,8 @@ packages:
     resolution: {integrity: sha512-HxngEd2XUcg9xi20JkwlLCtYwfoFw4JGkuZpT+WlsPD4gB/cxkvTD8fSsoAnphGZhFdZYKeQIPCuFlWPm1uE0g==}
     engines: {node: ^14.21.3 || >=16}
 
-  '@noble/curves@1.9.4':
-    resolution: {integrity: sha512-2bKONnuM53lINoDrSmK8qP8W271ms7pygDhZt4SiLOoLwBtoHqeCFi6RG42V8zd3mLHuJFhU/Bmaqo4nX0/kBw==}
+  '@noble/curves@1.9.6':
+    resolution: {integrity: sha512-GIKz/j99FRthB8icyJQA51E8Uk5hXmdyThjgQXRKiv9h0zeRlzSCLIzFw6K1LotZ3XuB7yzlf76qk7uBmTdFqA==}
     engines: {node: ^14.21.3 || >=16}
 
   '@noble/hashes@1.2.0':
@@ -2783,103 +2787,103 @@ packages:
     resolution: {integrity: sha512-FqALmHI8D4o6lk/LRWDnhw95z5eO+eAa6ORjVg09YRR7BkcM6oPHU9uyC0gtQG5vpFLvgpeU4+zEAz2H8APHNw==}
     engines: {node: '>= 10'}
 
-  '@rollup/rollup-android-arm-eabi@4.45.1':
-    resolution: {integrity: sha512-NEySIFvMY0ZQO+utJkgoMiCAjMrGvnbDLHvcmlA33UXJpYBCvlBEbMMtV837uCkS+plG2umfhn0T5mMAxGrlRA==}
+  '@rollup/rollup-android-arm-eabi@4.46.2':
+    resolution: {integrity: sha512-Zj3Hl6sN34xJtMv7Anwb5Gu01yujyE/cLBDB2gnHTAHaWS1Z38L7kuSG+oAh0giZMqG060f/YBStXtMH6FvPMA==}
     cpu: [arm]
     os: [android]
 
-  '@rollup/rollup-android-arm64@4.45.1':
-    resolution: {integrity: sha512-ujQ+sMXJkg4LRJaYreaVx7Z/VMgBBd89wGS4qMrdtfUFZ+TSY5Rs9asgjitLwzeIbhwdEhyj29zhst3L1lKsRQ==}
+  '@rollup/rollup-android-arm64@4.46.2':
+    resolution: {integrity: sha512-nTeCWY83kN64oQ5MGz3CgtPx8NSOhC5lWtsjTs+8JAJNLcP3QbLCtDDgUKQc/Ro/frpMq4SHUaHN6AMltcEoLQ==}
     cpu: [arm64]
     os: [android]
 
-  '@rollup/rollup-darwin-arm64@4.45.1':
-    resolution: {integrity: sha512-FSncqHvqTm3lC6Y13xncsdOYfxGSLnP+73k815EfNmpewPs+EyM49haPS105Rh4aF5mJKywk9X0ogzLXZzN9lA==}
+  '@rollup/rollup-darwin-arm64@4.46.2':
+    resolution: {integrity: sha512-HV7bW2Fb/F5KPdM/9bApunQh68YVDU8sO8BvcW9OngQVN3HHHkw99wFupuUJfGR9pYLLAjcAOA6iO+evsbBaPQ==}
     cpu: [arm64]
     os: [darwin]
 
-  '@rollup/rollup-darwin-x64@4.45.1':
-    resolution: {integrity: sha512-2/vVn/husP5XI7Fsf/RlhDaQJ7x9zjvC81anIVbr4b/f0xtSmXQTFcGIQ/B1cXIYM6h2nAhJkdMHTnD7OtQ9Og==}
+  '@rollup/rollup-darwin-x64@4.46.2':
+    resolution: {integrity: sha512-SSj8TlYV5nJixSsm/y3QXfhspSiLYP11zpfwp6G/YDXctf3Xkdnk4woJIF5VQe0of2OjzTt8EsxnJDCdHd2xMA==}
     cpu: [x64]
     os: [darwin]
 
-  '@rollup/rollup-freebsd-arm64@4.45.1':
-    resolution: {integrity: sha512-4g1kaDxQItZsrkVTdYQ0bxu4ZIQ32cotoQbmsAnW1jAE4XCMbcBPDirX5fyUzdhVCKgPcrwWuucI8yrVRBw2+g==}
+  '@rollup/rollup-freebsd-arm64@4.46.2':
+    resolution: {integrity: sha512-ZyrsG4TIT9xnOlLsSSi9w/X29tCbK1yegE49RYm3tu3wF1L/B6LVMqnEWyDB26d9Ecx9zrmXCiPmIabVuLmNSg==}
     cpu: [arm64]
     os: [freebsd]
 
-  '@rollup/rollup-freebsd-x64@4.45.1':
-    resolution: {integrity: sha512-L/6JsfiL74i3uK1Ti2ZFSNsp5NMiM4/kbbGEcOCps99aZx3g8SJMO1/9Y0n/qKlWZfn6sScf98lEOUe2mBvW9A==}
+  '@rollup/rollup-freebsd-x64@4.46.2':
+    resolution: {integrity: sha512-pCgHFoOECwVCJ5GFq8+gR8SBKnMO+xe5UEqbemxBpCKYQddRQMgomv1104RnLSg7nNvgKy05sLsY51+OVRyiVw==}
     cpu: [x64]
     os: [freebsd]
 
-  '@rollup/rollup-linux-arm-gnueabihf@4.45.1':
-    resolution: {integrity: sha512-RkdOTu2jK7brlu+ZwjMIZfdV2sSYHK2qR08FUWcIoqJC2eywHbXr0L8T/pONFwkGukQqERDheaGTeedG+rra6Q==}
+  '@rollup/rollup-linux-arm-gnueabihf@4.46.2':
+    resolution: {integrity: sha512-EtP8aquZ0xQg0ETFcxUbU71MZlHaw9MChwrQzatiE8U/bvi5uv/oChExXC4mWhjiqK7azGJBqU0tt5H123SzVA==}
     cpu: [arm]
     os: [linux]
 
-  '@rollup/rollup-linux-arm-musleabihf@4.45.1':
-    resolution: {integrity: sha512-3kJ8pgfBt6CIIr1o+HQA7OZ9mp/zDk3ctekGl9qn/pRBgrRgfwiffaUmqioUGN9hv0OHv2gxmvdKOkARCtRb8Q==}
+  '@rollup/rollup-linux-arm-musleabihf@4.46.2':
+    resolution: {integrity: sha512-qO7F7U3u1nfxYRPM8HqFtLd+raev2K137dsV08q/LRKRLEc7RsiDWihUnrINdsWQxPR9jqZ8DIIZ1zJJAm5PjQ==}
     cpu: [arm]
     os: [linux]
 
-  '@rollup/rollup-linux-arm64-gnu@4.45.1':
-    resolution: {integrity: sha512-k3dOKCfIVixWjG7OXTCOmDfJj3vbdhN0QYEqB+OuGArOChek22hn7Uy5A/gTDNAcCy5v2YcXRJ/Qcnm4/ma1xw==}
+  '@rollup/rollup-linux-arm64-gnu@4.46.2':
+    resolution: {integrity: sha512-3dRaqLfcOXYsfvw5xMrxAk9Lb1f395gkoBYzSFcc/scgRFptRXL9DOaDpMiehf9CO8ZDRJW2z45b6fpU5nwjng==}
     cpu: [arm64]
     os: [linux]
 
-  '@rollup/rollup-linux-arm64-musl@4.45.1':
-    resolution: {integrity: sha512-PmI1vxQetnM58ZmDFl9/Uk2lpBBby6B6rF4muJc65uZbxCs0EA7hhKCk2PKlmZKuyVSHAyIw3+/SiuMLxKxWog==}
+  '@rollup/rollup-linux-arm64-musl@4.46.2':
+    resolution: {integrity: sha512-fhHFTutA7SM+IrR6lIfiHskxmpmPTJUXpWIsBXpeEwNgZzZZSg/q4i6FU4J8qOGyJ0TR+wXBwx/L7Ho9z0+uDg==}
     cpu: [arm64]
     os: [linux]
 
-  '@rollup/rollup-linux-loongarch64-gnu@4.45.1':
-    resolution: {integrity: sha512-9UmI0VzGmNJ28ibHW2GpE2nF0PBQqsyiS4kcJ5vK+wuwGnV5RlqdczVocDSUfGX/Na7/XINRVoUgJyFIgipoRg==}
+  '@rollup/rollup-linux-loongarch64-gnu@4.46.2':
+    resolution: {integrity: sha512-i7wfGFXu8x4+FRqPymzjD+Hyav8l95UIZ773j7J7zRYc3Xsxy2wIn4x+llpunexXe6laaO72iEjeeGyUFmjKeA==}
     cpu: [loong64]
     os: [linux]
 
-  '@rollup/rollup-linux-powerpc64le-gnu@4.45.1':
-    resolution: {integrity: sha512-7nR2KY8oEOUTD3pBAxIBBbZr0U7U+R9HDTPNy+5nVVHDXI4ikYniH1oxQz9VoB5PbBU1CZuDGHkLJkd3zLMWsg==}
+  '@rollup/rollup-linux-ppc64-gnu@4.46.2':
+    resolution: {integrity: sha512-B/l0dFcHVUnqcGZWKcWBSV2PF01YUt0Rvlurci5P+neqY/yMKchGU8ullZvIv5e8Y1C6wOn+U03mrDylP5q9Yw==}
     cpu: [ppc64]
     os: [linux]
 
-  '@rollup/rollup-linux-riscv64-gnu@4.45.1':
-    resolution: {integrity: sha512-nlcl3jgUultKROfZijKjRQLUu9Ma0PeNv/VFHkZiKbXTBQXhpytS8CIj5/NfBeECZtY2FJQubm6ltIxm/ftxpw==}
+  '@rollup/rollup-linux-riscv64-gnu@4.46.2':
+    resolution: {integrity: sha512-32k4ENb5ygtkMwPMucAb8MtV8olkPT03oiTxJbgkJa7lJ7dZMr0GCFJlyvy+K8iq7F/iuOr41ZdUHaOiqyR3iQ==}
     cpu: [riscv64]
     os: [linux]
 
-  '@rollup/rollup-linux-riscv64-musl@4.45.1':
-    resolution: {integrity: sha512-HJV65KLS51rW0VY6rvZkiieiBnurSzpzore1bMKAhunQiECPuxsROvyeaot/tcK3A3aGnI+qTHqisrpSgQrpgA==}
+  '@rollup/rollup-linux-riscv64-musl@4.46.2':
+    resolution: {integrity: sha512-t5B2loThlFEauloaQkZg9gxV05BYeITLvLkWOkRXogP4qHXLkWSbSHKM9S6H1schf/0YGP/qNKtiISlxvfmmZw==}
     cpu: [riscv64]
     os: [linux]
 
-  '@rollup/rollup-linux-s390x-gnu@4.45.1':
-    resolution: {integrity: sha512-NITBOCv3Qqc6hhwFt7jLV78VEO/il4YcBzoMGGNxznLgRQf43VQDae0aAzKiBeEPIxnDrACiMgbqjuihx08OOw==}
+  '@rollup/rollup-linux-s390x-gnu@4.46.2':
+    resolution: {integrity: sha512-YKjekwTEKgbB7n17gmODSmJVUIvj8CX7q5442/CK80L8nqOUbMtf8b01QkG3jOqyr1rotrAnW6B/qiHwfcuWQA==}
     cpu: [s390x]
     os: [linux]
 
-  '@rollup/rollup-linux-x64-gnu@4.45.1':
-    resolution: {integrity: sha512-+E/lYl6qu1zqgPEnTrs4WysQtvc/Sh4fC2nByfFExqgYrqkKWp1tWIbe+ELhixnenSpBbLXNi6vbEEJ8M7fiHw==}
+  '@rollup/rollup-linux-x64-gnu@4.46.2':
+    resolution: {integrity: sha512-Jj5a9RUoe5ra+MEyERkDKLwTXVu6s3aACP51nkfnK9wJTraCC8IMe3snOfALkrjTYd2G1ViE1hICj0fZ7ALBPA==}
     cpu: [x64]
     os: [linux]
 
-  '@rollup/rollup-linux-x64-musl@4.45.1':
-    resolution: {integrity: sha512-a6WIAp89p3kpNoYStITT9RbTbTnqarU7D8N8F2CV+4Cl9fwCOZraLVuVFvlpsW0SbIiYtEnhCZBPLoNdRkjQFw==}
+  '@rollup/rollup-linux-x64-musl@4.46.2':
+    resolution: {integrity: sha512-7kX69DIrBeD7yNp4A5b81izs8BqoZkCIaxQaOpumcJ1S/kmqNFjPhDu1LHeVXv0SexfHQv5cqHsxLOjETuqDuA==}
     cpu: [x64]
     os: [linux]
 
-  '@rollup/rollup-win32-arm64-msvc@4.45.1':
-    resolution: {integrity: sha512-T5Bi/NS3fQiJeYdGvRpTAP5P02kqSOpqiopwhj0uaXB6nzs5JVi2XMJb18JUSKhCOX8+UE1UKQufyD6Or48dJg==}
+  '@rollup/rollup-win32-arm64-msvc@4.46.2':
+    resolution: {integrity: sha512-wiJWMIpeaak/jsbaq2HMh/rzZxHVW1rU6coyeNNpMwk5isiPjSTx0a4YLSlYDwBH/WBvLz+EtsNqQScZTLJy3g==}
     cpu: [arm64]
     os: [win32]
 
-  '@rollup/rollup-win32-ia32-msvc@4.45.1':
-    resolution: {integrity: sha512-lxV2Pako3ujjuUe9jiU3/s7KSrDfH6IgTSQOnDWr9aJ92YsFd7EurmClK0ly/t8dzMkDtd04g60WX6yl0sGfdw==}
+  '@rollup/rollup-win32-ia32-msvc@4.46.2':
+    resolution: {integrity: sha512-gBgaUDESVzMgWZhcyjfs9QFK16D8K6QZpwAaVNJxYDLHWayOta4ZMjGm/vsAEy3hvlS2GosVFlBlP9/Wb85DqQ==}
     cpu: [ia32]
     os: [win32]
 
-  '@rollup/rollup-win32-x64-msvc@4.45.1':
-    resolution: {integrity: sha512-M/fKi4sasCdM8i0aWJjCSFm2qEnYRR8AMLG2kxp6wD13+tMGA4Z1tVAuHkNRjud5SW2EM3naLuK35w9twvf6aA==}
+  '@rollup/rollup-win32-x64-msvc@4.46.2':
+    resolution: {integrity: sha512-CvUo2ixeIQGtF6WvuB87XWqPQkoFAFqW+HUo/WzHwuHDvIwZCtjdWXoYCcr06iKGydiqTclC4jU/TNObC/xKZg==}
     cpu: [x64]
     os: [win32]
 
@@ -2950,32 +2954,32 @@ packages:
   '@shikijs/core@1.29.2':
     resolution: {integrity: sha512-vju0lY9r27jJfOY4Z7+Rt/nIOjzJpZ3y+nYpqtUZInVoXQ/TJZcfGnNOGnKjFdVZb8qexiCuSlZRKcGfhhTTZQ==}
 
-  '@shikijs/core@3.8.1':
-    resolution: {integrity: sha512-uTSXzUBQ/IgFcUa6gmGShCHr4tMdR3pxUiiWKDm8pd42UKJdYhkAYsAmHX5mTwybQ5VyGDgTjW4qKSsRvGSang==}
+  '@shikijs/core@3.9.2':
+    resolution: {integrity: sha512-3q/mzmw09B2B6PgFNeiaN8pkNOixWS726IHmJEpjDAcneDPMQmUg2cweT9cWXY4XcyQS3i6mOOUgQz9RRUP6HA==}
 
   '@shikijs/engine-javascript@1.29.2':
     resolution: {integrity: sha512-iNEZv4IrLYPv64Q6k7EPpOCE/nuvGiKl7zxdq0WFuRPF5PAE9PRo2JGq/d8crLusM59BRemJ4eOqrFrC4wiQ+A==}
 
-  '@shikijs/engine-javascript@3.8.1':
-    resolution: {integrity: sha512-rZRp3BM1llrHkuBPAdYAzjlF7OqlM0rm/7EWASeCcY7cRYZIrOnGIHE9qsLz5TCjGefxBFnwgIECzBs2vmOyKA==}
+  '@shikijs/engine-javascript@3.9.2':
+    resolution: {integrity: sha512-kUTRVKPsB/28H5Ko6qEsyudBiWEDLst+Sfi+hwr59E0GLHV0h8RfgbQU7fdN5Lt9A8R1ulRiZyTvAizkROjwDA==}
 
   '@shikijs/engine-oniguruma@1.29.2':
     resolution: {integrity: sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA==}
 
-  '@shikijs/engine-oniguruma@3.8.1':
-    resolution: {integrity: sha512-KGQJZHlNY7c656qPFEQpIoqOuC4LrxjyNndRdzk5WKB/Ie87+NJCF1xo9KkOUxwxylk7rT6nhlZyTGTC4fCe1g==}
+  '@shikijs/engine-oniguruma@3.9.2':
+    resolution: {integrity: sha512-Vn/w5oyQ6TUgTVDIC/BrpXwIlfK6V6kGWDVVz2eRkF2v13YoENUvaNwxMsQU/t6oCuZKzqp9vqtEtEzKl9VegA==}
 
   '@shikijs/langs@1.29.2':
     resolution: {integrity: sha512-FIBA7N3LZ+223U7cJDUYd5shmciFQlYkFXlkKVaHsCPgfVLiO+e12FmQE6Tf9vuyEsFe3dIl8qGWKXgEHL9wmQ==}
 
-  '@shikijs/langs@3.8.1':
-    resolution: {integrity: sha512-TjOFg2Wp1w07oKnXjs0AUMb4kJvujML+fJ1C5cmEj45lhjbUXtziT1x2bPQb9Db6kmPhkG5NI2tgYW1/DzhUuQ==}
+  '@shikijs/langs@3.9.2':
+    resolution: {integrity: sha512-X1Q6wRRQXY7HqAuX3I8WjMscjeGjqXCg/Sve7J2GWFORXkSrXud23UECqTBIdCSNKJioFtmUGJQNKtlMMZMn0w==}
 
   '@shikijs/themes@1.29.2':
     resolution: {integrity: sha512-i9TNZlsq4uoyqSbluIcZkmPL9Bfi3djVxRnofUHwvx/h6SRW3cwgBC5SML7vsDcWyukY0eCzVN980rqP6qNl9g==}
 
-  '@shikijs/themes@3.8.1':
-    resolution: {integrity: sha512-Vu3t3BBLifc0GB0UPg2Pox1naTemrrvyZv2lkiSw3QayVV60me1ujFQwPZGgUTmwXl1yhCPW8Lieesm0CYruLQ==}
+  '@shikijs/themes@3.9.2':
+    resolution: {integrity: sha512-6z5lBPBMRfLyyEsgf6uJDHPa6NAGVzFJqH4EAZ+03+7sedYir2yJBRu2uPZOKmj43GyhVHWHvyduLDAwJQfDjA==}
 
   '@shikijs/twoslash@1.29.2':
     resolution: {integrity: sha512-2S04ppAEa477tiaLfGEn1QJWbZUmbk8UoPbAEw4PifsrxkBXtAtOflIZJNtuCwz8ptc/TPxy7CO7gW4Uoi6o/g==}
@@ -2983,8 +2987,8 @@ packages:
   '@shikijs/types@1.29.2':
     resolution: {integrity: sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw==}
 
-  '@shikijs/types@3.8.1':
-    resolution: {integrity: sha512-5C39Q8/8r1I26suLh+5TPk1DTrbY/kn3IdWA5HdizR0FhlhD05zx5nKCqhzSfDHH3p4S0ZefxWd77DLV+8FhGg==}
+  '@shikijs/types@3.9.2':
+    resolution: {integrity: sha512-/M5L0Uc2ljyn2jKvj4Yiah7ow/W+DJSglVafvWAJ/b8AZDeeRAdMu3c2riDzB7N42VD+jSnWxeP9AKtd4TfYVw==}
 
   '@shikijs/vscode-textmate@10.0.2':
     resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==}
@@ -3056,11 +3060,11 @@ packages:
       react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
       react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
 
-  '@tanstack/query-core@5.83.0':
-    resolution: {integrity: sha512-0M8dA+amXUkyz5cVUm/B+zSk3xkQAcuXuz5/Q/LveT4ots2rBpPTZOzd7yJa2Utsf8D2Upl5KyjhHRY+9lB/XA==}
+  '@tanstack/query-core@5.83.1':
+    resolution: {integrity: sha512-OG69LQgT7jSp+5pPuCfzltq/+7l2xoweggjme9vlbCPa/d7D7zaqv5vN/S82SzSYZ4EDLTxNO1PWrv49RAS64Q==}
 
-  '@tanstack/react-query@5.83.0':
-    resolution: {integrity: sha512-/XGYhZ3foc5H0VM2jLSD/NyBRIOK4q9kfeml4+0x2DlL6xVuAcVEW+hTlTapAmejObg0i3eNqhkr2dT+eciwoQ==}
+  '@tanstack/react-query@5.84.1':
+    resolution: {integrity: sha512-zo7EUygcWJMQfFNWDSG7CBhy8irje/XY0RDVKKV4IQJAysb+ZJkkJPcnQi+KboyGUgT+SQebRFoTqLuTtfoDLw==}
     peerDependencies:
       react: ^18 || ^19
 
@@ -3160,8 +3164,8 @@ packages:
   '@types/d3-delaunay@6.0.4':
     resolution: {integrity: sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==}
 
-  '@types/d3-dispatch@3.0.6':
-    resolution: {integrity: sha512-4fvZhzMeeuBJYZXRXrRIQnvUYfyXwYmLsdiN7XXmVNQKKw1cM8a5WdID0g1hVFZDqT9ZqZEY5pD44p24VS7iZQ==}
+  '@types/d3-dispatch@3.0.7':
+    resolution: {integrity: sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA==}
 
   '@types/d3-drag@3.0.7':
     resolution: {integrity: sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==}
@@ -3281,8 +3285,8 @@ packages:
   '@types/nlcst@2.0.3':
     resolution: {integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==}
 
-  '@types/node@22.16.5':
-    resolution: {integrity: sha512-bJFoMATwIGaxxx8VJPeM8TonI8t579oRvgAuT8zFugJsJZgzqv0Fu8Mhp68iecjzG7cnN3mO2dJQ5uUM2EFrgQ==}
+  '@types/node@22.17.0':
+    resolution: {integrity: sha512-bbAKTCqX5aNVryi7qXVMi+OkB3w/OyblodicMbvE38blyAz7GxXf6XYhklokijuPwwVg9sDLKRxt0ZHXQwZVfQ==}
 
   '@types/parse-json@4.0.2':
     resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==}
@@ -3650,8 +3654,8 @@ packages:
   ajv@8.17.1:
     resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==}
 
-  algoliasearch@5.34.1:
-    resolution: {integrity: sha512-s70HlfBgswgEdmCYkUJG8i/ULYhbkk8N9+N8JsWUwszcp7eauPEr5tIX4BY0qDGeKWQ/qZvmt4mxwTusYY23sg==}
+  algoliasearch@5.35.0:
+    resolution: {integrity: sha512-Y+moNhsqgLmvJdgTsO4GZNgsaDWv8AOGAaPeIeHKlDn/XunoAqYbA+XNpBd1dW8GOXAUDyxC9Rxc7AV4kpFcIg==}
     engines: {node: '>= 14.0.0'}
 
   ansi-align@3.0.1:
@@ -3919,8 +3923,8 @@ packages:
   camelize@1.0.1:
     resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==}
 
-  caniuse-lite@1.0.30001727:
-    resolution: {integrity: sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==}
+  caniuse-lite@1.0.30001731:
+    resolution: {integrity: sha512-lDdp2/wrOmTRWuoB5DpfNkC0rJDU8DqRa6nYL6HK6sytw70QMopt/NIc/9SM7ylItlBWfACXk0tEn37UWM/+mg==}
 
   ccount@2.0.1:
     resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
@@ -3933,8 +3937,8 @@ packages:
     resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
     engines: {node: '>=10'}
 
-  chalk@5.4.1:
-    resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==}
+  chalk@5.5.0:
+    resolution: {integrity: sha512-1tm8DTaJhPBG3bIkVeZt1iZM9GfSX2lzOeDVZH9R9ffRHpmHvxZ/QhgQH/aDTkswQVt+YHdXAdS/In/30OjCbg==}
     engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
 
   character-entities-html4@2.1.0:
@@ -4140,8 +4144,8 @@ packages:
     resolution: {integrity: sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==}
     engines: {node: '>=4'}
 
-  css-gradient-parser@0.0.16:
-    resolution: {integrity: sha512-3O5QdqgFRUbXvK1x5INf1YkBz1UKSWqrd63vWsum8MNHDBYD5urm3QtxZbKU259OrEXNM26lP/MPY3d1IGkBgA==}
+  css-gradient-parser@0.0.17:
+    resolution: {integrity: sha512-w2Xy9UMMwlKtou0vlRnXvWglPAceXCTtcmVSo8ZBUvqCV5aXEFP/PC6d+I464810I9FT++UACwTD5511bmGPUg==}
     engines: {node: '>=16'}
 
   css-to-react-native@3.2.0:
@@ -4169,8 +4173,8 @@ packages:
     peerDependencies:
       cytoscape: ^3.2.0
 
-  cytoscape@3.32.1:
-    resolution: {integrity: sha512-dbeqFTLYEwlFg7UGtcZhCCG/2WayX72zK3Sq323CEX29CY81tYfVhw1MIdduCtpstB0cTOhJswWlM/OEB3Xp+Q==}
+  cytoscape@3.33.0:
+    resolution: {integrity: sha512-2d2EwwhaxLWC8ahkH1PpQwCyu6EY3xDRdcEJXrLTb4fOUtVc+YWQalHU67rFS1a6ngj1fgv9dQLtJxP/KAFZEw==}
     engines: {node: '>=0.10'}
 
   d3-array@2.12.1:
@@ -4470,8 +4474,8 @@ packages:
   eastasianwidth@0.2.0:
     resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
 
-  electron-to-chromium@1.5.190:
-    resolution: {integrity: sha512-k4McmnB2091YIsdCgkS0fMVMPOJgxl93ltFzaryXqwip1AaxeDqKCGLxkXODDA5Ab/D+tV5EL5+aTx76RvLRxw==}
+  electron-to-chromium@1.5.198:
+    resolution: {integrity: sha512-G5COfnp3w+ydVu80yprgWSfmfQaYRh9DOxfhAxstLyetKaLyl55QrNjx8C38Pc/C+RaDmb1M0Lk8wPEMQ+bGgQ==}
 
   elliptic@6.6.1:
     resolution: {integrity: sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==}
@@ -4875,8 +4879,8 @@ packages:
   flatted@3.3.3:
     resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==}
 
-  follow-redirects@1.15.9:
-    resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==}
+  follow-redirects@1.15.11:
+    resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==}
     engines: {node: '>=4.0'}
     peerDependencies:
       debug: '*'
@@ -4906,8 +4910,8 @@ packages:
   fraction.js@4.3.7:
     resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==}
 
-  framer-motion@12.23.9:
-    resolution: {integrity: sha512-TqEHXj8LWfQSKqfdr5Y4mYltYLw96deu6/K9kGDd+ysqRJPNwF9nb5mZcrLmybHbU7gcJ+HQar41U3UTGanbbQ==}
+  framer-motion@12.23.12:
+    resolution: {integrity: sha512-6e78rdVtnBvlEVgu6eFEAgG9v3wLnYEboM8I5O5EXvfKC8gxGQB8wXJdhkMy10iVcn05jl6CNw7/HTsTCfwcWg==}
     peerDependencies:
       '@emotion/is-prop-valid': '*'
       react: ^18.0.0 || ^19.0.0
@@ -5074,8 +5078,8 @@ packages:
     peerDependencies:
       hardhat: ^2.0.0
 
-  hardhat@2.26.1:
-    resolution: {integrity: sha512-CXWuUaTtehxiHPCdlitntctfeYRgujmXkNX5gnrD5jdA6HhRQt+WWBZE/gHXbE29y/wDmmUL2d652rI0ctjqjw==}
+  hardhat@2.26.2:
+    resolution: {integrity: sha512-uIETdC1MAWSnu+48B+583r3b8JqHtkBGEiXoAPV5hcXYGkCW5Fnnpn7SIgPa8owhObm9oUqIqMXMJ6H92N7Pyg==}
     hasBin: true
     peerDependencies:
       ts-node: '*'
@@ -5712,8 +5716,8 @@ packages:
   markdown-table@3.0.4:
     resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==}
 
-  marked@16.1.1:
-    resolution: {integrity: sha512-ij/2lXfCRT71L6u0M29tJPhP0bM5shLL3u5BePhFwPELj2blMJ6GDtD7PfJhRLhJ/c2UwrK17ySVcDzy2YHjHQ==}
+  marked@16.1.2:
+    resolution: {integrity: sha512-rNQt5EvRinalby7zJZu/mB+BvaAY2oz3wCuCjt1RDrWNpS1Pdf9xqMOeC9Hm5adBdcV/3XZPJpG58eT+WBc0XQ==}
     engines: {node: '>= 20'}
     hasBin: true
 
@@ -5940,8 +5944,8 @@ packages:
     resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==}
     engines: {node: '>=12'}
 
-  miniflare@3.20250408.2:
-    resolution: {integrity: sha512-uTs7cGWFErgJTKtBdmtctwhuoxniuCQqDT8+xaEiJdEC8d+HsaZVYfZwIX2NuSmdAiHMe7NtbdZYjFMbIXtJsQ==}
+  miniflare@3.20250718.1:
+    resolution: {integrity: sha512-9QAOHVKIVHmnQ1dJT9Fls8aVA8R5JjEizzV889Dinq/+bEPltqIepCvm9Z+fbNUgLvV7D/H1NUk8VdlLRgp9Wg==}
     engines: {node: '>=16.13'}
     hasBin: true
 
@@ -5998,14 +6002,14 @@ packages:
     engines: {node: '>= 14.0.0'}
     hasBin: true
 
-  motion-dom@12.23.9:
-    resolution: {integrity: sha512-6Sv++iWS8XMFCgU1qwKj9l4xuC47Hp4+2jvPfyTXkqDg2tTzSgX6nWKD4kNFXk0k7llO59LZTPuJigza4A2K1A==}
+  motion-dom@12.23.12:
+    resolution: {integrity: sha512-RcR4fvMCTESQBD/uKQe49D5RUeDOokkGRmz4ceaJKDBgHYtZtntC/s2vLvY38gqGaytinij/yi3hMcWVcEF5Kw==}
 
   motion-utils@12.23.6:
     resolution: {integrity: sha512-eAWoPgr4eFEOFfg2WjIsMoqJTW6Z8MTUCgn/GZ3VRpClWBdnbjryiA3ZSNLyxCTmCQx4RmYX6jX1iWHbenUPNQ==}
 
-  motion@12.23.9:
-    resolution: {integrity: sha512-5PDgsbNtZ4cpfew3STYL0p06rIiy8vOveQuQBXUAa2+m1WMzjf65DXYn6eo88dM2s+XLxAQq3ZiOjcnKMACEtQ==}
+  motion@12.23.12:
+    resolution: {integrity: sha512-8jCD8uW5GD1csOoqh1WhH1A6j5APHVE15nuBkFeRiMzYBdRwyAHmSP/oXSuW0WJPZRXTFdBoG4hY9TFWNhhwng==}
     peerDependencies:
       '@emotion/is-prop-valid': '*'
       react: ^18.0.0 || ^19.0.0
@@ -6063,8 +6067,8 @@ packages:
     peerDependencies:
       next: '*'
 
-  next@14.2.30:
-    resolution: {integrity: sha512-+COdu6HQrHHFQ1S/8BBsCag61jZacmvbuL2avHvQFbWa2Ox7bE+d8FyNgxRLjXQ5wtPyQwEmk85js/AuaG2Sbg==}
+  next@14.2.31:
+    resolution: {integrity: sha512-Wyw1m4t8PhqG+or5a1U/Deb888YApC4rAez9bGhHkTsfwAy4SWKVro0GhEx4sox1856IbLhvhce2hAA6o8vkog==}
     engines: {node: '>=18.17.0'}
     hasBin: true
     peerDependencies:
@@ -6155,8 +6159,8 @@ packages:
   numeral@2.0.6:
     resolution: {integrity: sha512-qaKRmtYPZ5qdw4jWJD6bxEf1FJEqllJrwxCLIm0sQU/A7v2/czigzOb+C2uSiFsa9lBUzeH7M1oK+Q+OLxL3kA==}
 
-  nwsapi@2.2.20:
-    resolution: {integrity: sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA==}
+  nwsapi@2.2.21:
+    resolution: {integrity: sha512-o6nIY3qwiSXl7/LuOU0Dmuctd34Yay0yeuZRLFmDPrrdHpXKFndPj3hM+YEPVHYC5fx2otBx4Ilc/gyYSAUaIA==}
 
   object-assign@4.1.1:
     resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
@@ -6239,8 +6243,8 @@ packages:
     resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==}
     engines: {node: '>= 0.4'}
 
-  ox@0.8.1:
-    resolution: {integrity: sha512-e+z5epnzV+Zuz91YYujecW8cF01mzmrUtWotJ0oEPym/G82uccs7q0WDHTYL3eiONbTUEvcZrptAKLgTBD3u2A==}
+  ox@0.8.6:
+    resolution: {integrity: sha512-eiKcgiVVEGDtEpEdFi1EGoVVI48j6icXHce9nFwCNM7CKG3uoCXKdr4TPhS00Iy1TR2aWSF1ltPD0x/YgqIL9w==}
     peerDependencies:
       typescript: '>=5.4.0'
     peerDependenciesMeta:
@@ -6750,8 +6754,10 @@ packages:
   recma-build-jsx@1.0.0:
     resolution: {integrity: sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==}
 
-  recma-jsx@1.0.0:
-    resolution: {integrity: sha512-5vwkv65qWwYxg+Atz95acp8DMu1JDSqdGkA2Of1j6rCreyFUE/gp15fC8MnGEuG1W68UKjM6x6+YTWIh7hZM/Q==}
+  recma-jsx@1.0.1:
+    resolution: {integrity: sha512-huSIy7VU2Z5OLv6oFLosQGGDqPqdO1iq6bWNAdhzMxSJP7RAso4fCZ1cKu8j9YHCZf3TPrq4dw3okhrylgcd7w==}
+    peerDependencies:
+      acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
 
   recma-parse@1.0.0:
     resolution: {integrity: sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==}
@@ -6916,8 +6922,8 @@ packages:
   rollup-pluginutils@2.8.2:
     resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==}
 
-  rollup@4.45.1:
-    resolution: {integrity: sha512-4iya7Jb76fVpQyLoiVpzUrsjQ12r3dM7fIVz+4NwoYvZOShknRmiv+iu9CClZml5ZLGb0XMcYLutK6w9tgxHDw==}
+  rollup@4.46.2:
+    resolution: {integrity: sha512-WMmLFI+Boh6xbop+OAGo9cQ3OgX9MIg7xOQjn+pTCwOkk+FNDAeAemXkJ3HzDJrVXleLOFVa1ipuc1AmEx1Dwg==}
     engines: {node: '>=18.0.0', npm: '>=8.0.0'}
     hasBin: true
 
@@ -6967,8 +6973,8 @@ packages:
   safer-buffer@2.1.2:
     resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
 
-  satori@0.16.1:
-    resolution: {integrity: sha512-JM4bFaca8HMA11Xyfgrclv9qIPnd9uhUDr2oYrVlzqTrV7EA/VEeq/7hwe8r0eQP4JwNVW70JBtLRk0v48BTXg==}
+  satori@0.16.2:
+    resolution: {integrity: sha512-tORnR2UZ1cB9N81WDjx5ZC4ToPmkybnJWyR8N1OC/z+5kWZcG1mcLssJ5WLNBj1lNr2igIFW0bIiugCxRKL/jQ==}
     engines: {node: '>=16'}
 
   saxes@6.0.0:
@@ -7034,8 +7040,8 @@ packages:
   shiki@1.29.2:
     resolution: {integrity: sha512-njXuliz/cP+67jU2hukkxCNuH1yUi4QfdZZY+sMr5PPrIyXSu5iTb/qYC4BiWWB0vZ+7TbdvYUCeL23zpwCfbg==}
 
-  shiki@3.8.1:
-    resolution: {integrity: sha512-+MYIyjwGPCaegbpBeFN9+oOifI8CKiKG3awI/6h3JeT85c//H2wDW/xCJEGuQ5jPqtbboKNqNy+JyX9PYpGwNg==}
+  shiki@3.9.2:
+    resolution: {integrity: sha512-t6NKl5e/zGTvw/IyftLcumolgOczhuroqwXngDeMqJ3h3EQiTY/7wmfgPlsmloD8oYfqkEDqxiaH37Pjm1zUhQ==}
 
   side-channel-list@1.0.0:
     resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==}
@@ -7108,6 +7114,7 @@ packages:
   source-map@0.8.0-beta.0:
     resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==}
     engines: {node: '>= 8'}
+    deprecated: The work that was done in this beta branch won't be included in future versions
 
   sourcemap-codec@1.4.8:
     resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==}
@@ -7125,8 +7132,8 @@ packages:
   spdx-expression-parse@3.0.1:
     resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==}
 
-  spdx-license-ids@3.0.21:
-    resolution: {integrity: sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==}
+  spdx-license-ids@3.0.22:
+    resolution: {integrity: sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==}
 
   speech-rule-engine@4.1.2:
     resolution: {integrity: sha512-S6ji+flMEga+1QU79NDbwZ8Ivf0S/MpupQQiIC0rTpU/ZTKgcajijJJb1OcByBQDjrXCN1/DJtGz4ZJeBMPGJw==}
@@ -7437,8 +7444,8 @@ packages:
   ts-morph@23.0.0:
     resolution: {integrity: sha512-FcvFx7a9E8TUe6T3ShihXJLiJOiqyafzFKUO4aqIHDUCIvADdGNShcbc2W5PMr3LerXRv7mafvFZ9lRENxJmug==}
 
-  ts-pattern@5.7.1:
-    resolution: {integrity: sha512-EGs8PguQqAAUIcQfK4E9xdXxB6s2GK4sJfT/vcc9V1ELIvC4LH/zXu2t/5fajtv6oiRCxdv7BgtVK3vWgROxag==}
+  ts-pattern@5.8.0:
+    resolution: {integrity: sha512-kIjN2qmWiHnhgr5DAkAafF9fwb0T5OhMVSWrm8XEdTFnX6+wfXwYOFjeF86UZ54vduqiR7BfqScFmXSzSaH8oA==}
 
   tsconfig-paths@3.15.0:
     resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==}
@@ -7565,8 +7572,8 @@ packages:
     engines: {node: '>=14.17'}
     hasBin: true
 
-  typescript@5.8.3:
-    resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==}
+  typescript@5.9.2:
+    resolution: {integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==}
     engines: {node: '>=14.17'}
     hasBin: true
 
@@ -7741,8 +7748,8 @@ packages:
   vfile-location@5.0.3:
     resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==}
 
-  vfile-message@4.0.2:
-    resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==}
+  vfile-message@4.0.3:
+    resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==}
 
   vfile-reporter@8.1.1:
     resolution: {integrity: sha512-qxRZcnFSQt6pWKn3PAk81yLK2rO2i7CDXpy8v8ZquiEOMLSnPw6BMSi9Y1sUCwGGl7a9b3CJT1CKpnRF7pp66g==}
@@ -7759,8 +7766,8 @@ packages:
   victory-vendor@36.9.2:
     resolution: {integrity: sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ==}
 
-  viem@2.33.0:
-    resolution: {integrity: sha512-SxBM3CmeU+LWLlBclV9MPdbuFV8mQEl0NeRc9iyYU4a7Xb5sr5oku3s/bRGTPpEP+1hCAHYpM09/ui3/dQ6EsA==}
+  viem@2.33.3:
+    resolution: {integrity: sha512-aWDr6i6r3OfNCs0h9IieHFhn7xQJJ8YsuA49+9T5JRyGGAkWhLgcbLq2YMecgwM7HdUZpx1vPugZjsShqNi7Gw==}
     peerDependencies:
       typescript: '>=5.0.4'
     peerDependenciesMeta:
@@ -7931,16 +7938,16 @@ packages:
     resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
     engines: {node: '>=0.10.0'}
 
-  workerd@1.20250408.0:
-    resolution: {integrity: sha512-bBUX+UsvpzAqiWFNeZrlZmDGddiGZdBBbftZJz2wE6iUg/cIAJeVQYTtS/3ahaicguoLBz4nJiDo8luqM9fx1A==}
+  workerd@1.20250718.0:
+    resolution: {integrity: sha512-kqkIJP/eOfDlUyBzU7joBg+tl8aB25gEAGqDap+nFWb+WHhnooxjGHgxPBy3ipw2hnShPFNOQt5lFRxbwALirg==}
     engines: {node: '>=16'}
     hasBin: true
 
   workerpool@6.5.1:
     resolution: {integrity: sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==}
 
-  wrangler@3.114.11:
-    resolution: {integrity: sha512-g0KhNj0AzlDXrW/XNzOrbfjBnDHbmf3a+3+UR67BbKnS8EUC9yTPrKCRymERdFKfiSvlPs34tHGAzOTw62Jb4g==}
+  wrangler@3.114.13:
+    resolution: {integrity: sha512-bJbKJGTjClEp5XeyjiIKXodHW6j14ZsXuMphjvTZSwkQjGg6QlOol74/44d/u1Uso+hhIzYFg6m/d/1ggxUqWQ==}
     engines: {node: '>=16.17.0'}
     hasBin: true
     peerDependencies:
@@ -8026,8 +8033,8 @@ packages:
     resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
     engines: {node: '>= 6'}
 
-  yaml@2.8.0:
-    resolution: {integrity: sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==}
+  yaml@2.8.1:
+    resolution: {integrity: sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==}
     engines: {node: '>= 14.6'}
     hasBin: true
 
@@ -8084,110 +8091,117 @@ snapshots:
 
   '@adraffy/ens-normalize@1.11.0': {}
 
-  '@algolia/autocomplete-core@1.17.9(@algolia/client-search@5.34.1)(algoliasearch@5.34.1)(search-insights@2.17.3)':
+  '@algolia/abtesting@1.1.0':
     dependencies:
-      '@algolia/autocomplete-plugin-algolia-insights': 1.17.9(@algolia/client-search@5.34.1)(algoliasearch@5.34.1)(search-insights@2.17.3)
-      '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.34.1)(algoliasearch@5.34.1)
+      '@algolia/client-common': 5.35.0
+      '@algolia/requester-browser-xhr': 5.35.0
+      '@algolia/requester-fetch': 5.35.0
+      '@algolia/requester-node-http': 5.35.0
+
+  '@algolia/autocomplete-core@1.17.9(@algolia/client-search@5.35.0)(algoliasearch@5.35.0)(search-insights@2.17.3)':
+    dependencies:
+      '@algolia/autocomplete-plugin-algolia-insights': 1.17.9(@algolia/client-search@5.35.0)(algoliasearch@5.35.0)(search-insights@2.17.3)
+      '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.35.0)(algoliasearch@5.35.0)
     transitivePeerDependencies:
       - '@algolia/client-search'
       - algoliasearch
       - search-insights
 
-  '@algolia/autocomplete-plugin-algolia-insights@1.17.9(@algolia/client-search@5.34.1)(algoliasearch@5.34.1)(search-insights@2.17.3)':
+  '@algolia/autocomplete-plugin-algolia-insights@1.17.9(@algolia/client-search@5.35.0)(algoliasearch@5.35.0)(search-insights@2.17.3)':
     dependencies:
-      '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.34.1)(algoliasearch@5.34.1)
+      '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.35.0)(algoliasearch@5.35.0)
       search-insights: 2.17.3
     transitivePeerDependencies:
       - '@algolia/client-search'
       - algoliasearch
 
-  '@algolia/autocomplete-preset-algolia@1.17.9(@algolia/client-search@5.34.1)(algoliasearch@5.34.1)':
+  '@algolia/autocomplete-preset-algolia@1.17.9(@algolia/client-search@5.35.0)(algoliasearch@5.35.0)':
     dependencies:
-      '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.34.1)(algoliasearch@5.34.1)
-      '@algolia/client-search': 5.34.1
-      algoliasearch: 5.34.1
+      '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.35.0)(algoliasearch@5.35.0)
+      '@algolia/client-search': 5.35.0
+      algoliasearch: 5.35.0
 
-  '@algolia/autocomplete-shared@1.17.9(@algolia/client-search@5.34.1)(algoliasearch@5.34.1)':
+  '@algolia/autocomplete-shared@1.17.9(@algolia/client-search@5.35.0)(algoliasearch@5.35.0)':
     dependencies:
-      '@algolia/client-search': 5.34.1
-      algoliasearch: 5.34.1
+      '@algolia/client-search': 5.35.0
+      algoliasearch: 5.35.0
 
-  '@algolia/client-abtesting@5.34.1':
+  '@algolia/client-abtesting@5.35.0':
     dependencies:
-      '@algolia/client-common': 5.34.1
-      '@algolia/requester-browser-xhr': 5.34.1
-      '@algolia/requester-fetch': 5.34.1
-      '@algolia/requester-node-http': 5.34.1
+      '@algolia/client-common': 5.35.0
+      '@algolia/requester-browser-xhr': 5.35.0
+      '@algolia/requester-fetch': 5.35.0
+      '@algolia/requester-node-http': 5.35.0
 
-  '@algolia/client-analytics@5.34.1':
+  '@algolia/client-analytics@5.35.0':
     dependencies:
-      '@algolia/client-common': 5.34.1
-      '@algolia/requester-browser-xhr': 5.34.1
-      '@algolia/requester-fetch': 5.34.1
-      '@algolia/requester-node-http': 5.34.1
+      '@algolia/client-common': 5.35.0
+      '@algolia/requester-browser-xhr': 5.35.0
+      '@algolia/requester-fetch': 5.35.0
+      '@algolia/requester-node-http': 5.35.0
 
-  '@algolia/client-common@5.34.1': {}
+  '@algolia/client-common@5.35.0': {}
 
-  '@algolia/client-insights@5.34.1':
+  '@algolia/client-insights@5.35.0':
     dependencies:
-      '@algolia/client-common': 5.34.1
-      '@algolia/requester-browser-xhr': 5.34.1
-      '@algolia/requester-fetch': 5.34.1
-      '@algolia/requester-node-http': 5.34.1
+      '@algolia/client-common': 5.35.0
+      '@algolia/requester-browser-xhr': 5.35.0
+      '@algolia/requester-fetch': 5.35.0
+      '@algolia/requester-node-http': 5.35.0
 
-  '@algolia/client-personalization@5.34.1':
+  '@algolia/client-personalization@5.35.0':
     dependencies:
-      '@algolia/client-common': 5.34.1
-      '@algolia/requester-browser-xhr': 5.34.1
-      '@algolia/requester-fetch': 5.34.1
-      '@algolia/requester-node-http': 5.34.1
+      '@algolia/client-common': 5.35.0
+      '@algolia/requester-browser-xhr': 5.35.0
+      '@algolia/requester-fetch': 5.35.0
+      '@algolia/requester-node-http': 5.35.0
 
-  '@algolia/client-query-suggestions@5.34.1':
+  '@algolia/client-query-suggestions@5.35.0':
     dependencies:
-      '@algolia/client-common': 5.34.1
-      '@algolia/requester-browser-xhr': 5.34.1
-      '@algolia/requester-fetch': 5.34.1
-      '@algolia/requester-node-http': 5.34.1
+      '@algolia/client-common': 5.35.0
+      '@algolia/requester-browser-xhr': 5.35.0
+      '@algolia/requester-fetch': 5.35.0
+      '@algolia/requester-node-http': 5.35.0
 
-  '@algolia/client-search@5.34.1':
+  '@algolia/client-search@5.35.0':
     dependencies:
-      '@algolia/client-common': 5.34.1
-      '@algolia/requester-browser-xhr': 5.34.1
-      '@algolia/requester-fetch': 5.34.1
-      '@algolia/requester-node-http': 5.34.1
+      '@algolia/client-common': 5.35.0
+      '@algolia/requester-browser-xhr': 5.35.0
+      '@algolia/requester-fetch': 5.35.0
+      '@algolia/requester-node-http': 5.35.0
 
-  '@algolia/ingestion@1.34.1':
+  '@algolia/ingestion@1.35.0':
     dependencies:
-      '@algolia/client-common': 5.34.1
-      '@algolia/requester-browser-xhr': 5.34.1
-      '@algolia/requester-fetch': 5.34.1
-      '@algolia/requester-node-http': 5.34.1
+      '@algolia/client-common': 5.35.0
+      '@algolia/requester-browser-xhr': 5.35.0
+      '@algolia/requester-fetch': 5.35.0
+      '@algolia/requester-node-http': 5.35.0
 
-  '@algolia/monitoring@1.34.1':
+  '@algolia/monitoring@1.35.0':
     dependencies:
-      '@algolia/client-common': 5.34.1
-      '@algolia/requester-browser-xhr': 5.34.1
-      '@algolia/requester-fetch': 5.34.1
-      '@algolia/requester-node-http': 5.34.1
+      '@algolia/client-common': 5.35.0
+      '@algolia/requester-browser-xhr': 5.35.0
+      '@algolia/requester-fetch': 5.35.0
+      '@algolia/requester-node-http': 5.35.0
 
-  '@algolia/recommend@5.34.1':
+  '@algolia/recommend@5.35.0':
     dependencies:
-      '@algolia/client-common': 5.34.1
-      '@algolia/requester-browser-xhr': 5.34.1
-      '@algolia/requester-fetch': 5.34.1
-      '@algolia/requester-node-http': 5.34.1
+      '@algolia/client-common': 5.35.0
+      '@algolia/requester-browser-xhr': 5.35.0
+      '@algolia/requester-fetch': 5.35.0
+      '@algolia/requester-node-http': 5.35.0
 
-  '@algolia/requester-browser-xhr@5.34.1':
+  '@algolia/requester-browser-xhr@5.35.0':
     dependencies:
-      '@algolia/client-common': 5.34.1
+      '@algolia/client-common': 5.35.0
 
-  '@algolia/requester-fetch@5.34.1':
+  '@algolia/requester-fetch@5.35.0':
     dependencies:
-      '@algolia/client-common': 5.34.1
+      '@algolia/client-common': 5.35.0
 
-  '@algolia/requester-node-http@5.34.1':
+  '@algolia/requester-node-http@5.35.0':
     dependencies:
-      '@algolia/client-common': 5.34.1
+      '@algolia/client-common': 5.35.0
 
   '@alloc/quick-lru@5.2.0': {}
 
@@ -8270,7 +8284,7 @@ snapshots:
   '@base-ui-components/react@1.0.0-alpha.7(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
       '@babel/runtime': 7.28.2
-      '@floating-ui/react': 0.27.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@floating-ui/react': 0.27.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@floating-ui/utils': 0.2.10
       '@react-aria/overlays': 3.28.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       prop-types: 15.8.1
@@ -8305,28 +8319,28 @@ snapshots:
     dependencies:
       mime: 3.0.0
 
-  '@cloudflare/unenv-preset@2.0.2(unenv@2.0.0-rc.14)(workerd@1.20250408.0)':
+  '@cloudflare/unenv-preset@2.0.2(unenv@2.0.0-rc.14)(workerd@1.20250718.0)':
     dependencies:
       unenv: 2.0.0-rc.14
     optionalDependencies:
-      workerd: 1.20250408.0
+      workerd: 1.20250718.0
 
-  '@cloudflare/workerd-darwin-64@1.20250408.0':
+  '@cloudflare/workerd-darwin-64@1.20250718.0':
     optional: true
 
-  '@cloudflare/workerd-darwin-arm64@1.20250408.0':
+  '@cloudflare/workerd-darwin-arm64@1.20250718.0':
     optional: true
 
-  '@cloudflare/workerd-linux-64@1.20250408.0':
+  '@cloudflare/workerd-linux-64@1.20250718.0':
     optional: true
 
-  '@cloudflare/workerd-linux-arm64@1.20250408.0':
+  '@cloudflare/workerd-linux-arm64@1.20250718.0':
     optional: true
 
-  '@cloudflare/workerd-windows-64@1.20250408.0':
+  '@cloudflare/workerd-windows-64@1.20250718.0':
     optional: true
 
-  '@cloudflare/workers-types@4.20250724.0': {}
+  '@cloudflare/workers-types@4.20250807.0': {}
 
   '@corex/deepmerge@4.0.43': {}
 
@@ -8356,12 +8370,12 @@ snapshots:
 
   '@docsearch/css@3.9.0': {}
 
-  '@docsearch/react@3.9.0(@algolia/client-search@5.34.1)(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)':
+  '@docsearch/react@3.9.0(@algolia/client-search@5.35.0)(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)':
     dependencies:
-      '@algolia/autocomplete-core': 1.17.9(@algolia/client-search@5.34.1)(algoliasearch@5.34.1)(search-insights@2.17.3)
-      '@algolia/autocomplete-preset-algolia': 1.17.9(@algolia/client-search@5.34.1)(algoliasearch@5.34.1)
+      '@algolia/autocomplete-core': 1.17.9(@algolia/client-search@5.35.0)(algoliasearch@5.35.0)(search-insights@2.17.3)
+      '@algolia/autocomplete-preset-algolia': 1.17.9(@algolia/client-search@5.35.0)(algoliasearch@5.35.0)
       '@docsearch/css': 3.9.0
-      algoliasearch: 5.34.1
+      algoliasearch: 5.35.0
     optionalDependencies:
       '@types/react': 18.3.23
       react: 18.3.1
@@ -8370,13 +8384,13 @@ snapshots:
     transitivePeerDependencies:
       - '@algolia/client-search'
 
-  '@edgeandnode/common@7.0.4(hardhat@2.26.1(typescript@5.8.3))':
+  '@edgeandnode/common@7.0.4(hardhat@2.26.2(typescript@5.9.2))':
     dependencies:
       '@ethersproject/providers': 5.8.0
       '@pinax/graph-networks-registry': 0.6.7
       '@uniswap/sdk-core': 7.7.2
       '@uniswap/v3-core': 1.0.1
-      '@uniswap/v3-sdk': 3.25.2(hardhat@2.26.1(typescript@5.8.3))
+      '@uniswap/v3-sdk': 3.25.2(hardhat@2.26.2(typescript@5.9.2))
       dataloader: 2.2.3
       dayjs: 1.11.13
       decimal.js: 10.6.0
@@ -8390,49 +8404,49 @@ snapshots:
       - hardhat
       - utf-8-validate
 
-  '@edgeandnode/ens@2.3.0(typescript@5.8.3)(viem@2.33.0(typescript@5.8.3)(zod@3.25.76))':
+  '@edgeandnode/ens@2.3.0(typescript@5.9.2)(viem@2.33.3(typescript@5.9.2)(zod@3.25.76))':
     dependencies:
-      '@ensdomains/ensjs': 4.0.2(typescript@5.8.3)(viem@2.33.0(typescript@5.8.3)(zod@3.25.76))(zod@3.25.76)
+      '@ensdomains/ensjs': 4.0.2(typescript@5.9.2)(viem@2.33.3(typescript@5.9.2)(zod@3.25.76))(zod@3.25.76)
       graphql: 16.11.0
       graphql-request: 7.2.0(graphql@16.11.0)
-      viem: 2.33.0(typescript@5.8.3)(zod@3.25.76)
+      viem: 2.33.3(typescript@5.9.2)(zod@3.25.76)
       zod: 3.25.76
     transitivePeerDependencies:
       - encoding
       - typescript
 
-  '@edgeandnode/eslint-config@2.0.3(eslint@8.57.1)(typescript@5.8.3)':
+  '@edgeandnode/eslint-config@2.0.3(eslint@8.57.1)(typescript@5.9.2)':
     dependencies:
       '@hasparus/eslint-plugin': 1.0.0
       '@next/eslint-plugin-next': 13.4.9
       '@rushstack/eslint-patch': 1.12.0
-      '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3)
-      '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.8.3)
+      '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2)
+      '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.9.2)
       eslint: 8.57.1
       eslint-import-resolver-node: 0.3.9
       eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1)
-      eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1)
+      eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1)
       eslint-plugin-jsx-a11y: 6.10.2(eslint@8.57.1)
       eslint-plugin-react: 7.37.5(eslint@8.57.1)
       eslint-plugin-react-hooks: 4.6.2(eslint@8.57.1)
       eslint-plugin-simple-import-sort: 10.0.0(eslint@8.57.1)
       eslint-plugin-sonarjs: 0.19.0(eslint@8.57.1)
     optionalDependencies:
-      typescript: 5.8.3
+      typescript: 5.9.2
     transitivePeerDependencies:
       - eslint-import-resolver-webpack
       - eslint-plugin-import-x
       - supports-color
 
-  '@edgeandnode/gds@6.7.1(@emotion/is-prop-valid@0.8.8)(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(@theme-ui/core@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(dayjs@1.11.13)(hardhat@2.26.1(typescript@5.8.3))(next@14.2.30(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)(theme-ui@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(typescript@5.8.3)':
+  '@edgeandnode/gds@6.7.3(@emotion/is-prop-valid@0.8.8)(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(@theme-ui/core@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(dayjs@1.11.13)(hardhat@2.26.2(typescript@5.9.2))(next@14.2.31(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)(theme-ui@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(typescript@5.9.2)':
     dependencies:
       '@base-ui-components/react': 1.0.0-alpha.7(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@bramus/style-observer': 2.0.2
-      '@edgeandnode/common': 7.0.4(hardhat@2.26.1(typescript@5.8.3))
+      '@edgeandnode/common': 7.0.4(hardhat@2.26.2(typescript@5.9.2))
       '@emotion/react': 11.14.0(@types/react@18.3.23)(react@18.3.1)
       '@figma/code-connect': 1.3.4
-      '@floating-ui/react-dom': 2.1.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@headlessui/react': 2.2.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@floating-ui/react-dom': 2.1.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@headlessui/react': 2.2.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@phosphor-icons/react': 2.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@radix-ui/react-accordion': 1.2.11(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@radix-ui/react-alert-dialog': 1.1.14(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -8452,7 +8466,7 @@ snapshots:
       '@tanem/react-nprogress': 5.0.55(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@theme-ui/css': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))
       '@theme-ui/match-media': 0.17.2(@theme-ui/core@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(@theme-ui/css@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1)))(react@18.3.1)
-      '@web3icons/react': 4.0.19(react@18.3.1)(typescript@5.8.3)
+      '@web3icons/react': 4.0.19(react@18.3.1)(typescript@5.9.2)
       '@xstate/react': 3.2.2(@types/react@18.3.23)(react@18.3.1)(xstate@4.38.3)
       color: 5.0.0
       dayjs: 1.11.13
@@ -8460,7 +8474,7 @@ snapshots:
       ethers: 5.8.0
       lodash: 4.17.21
       md5: 2.3.0
-      motion: 12.23.9(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      motion: 12.23.12(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       numeral: 2.0.6
       prism-react-renderer: 2.4.1(react@18.3.1)
       prismjs: 1.30.0
@@ -8475,14 +8489,14 @@ snapshots:
       react-transition-group: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       react-virtuoso: 4.13.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       recharts: 2.15.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      shiki: 3.8.1
+      shiki: 3.9.2
       tailwindcss: 3.4.17
       theme-ui: 0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)
       typy: 3.3.0
       universal-cookie: 7.2.2
       xstate: 4.38.3
     optionalDependencies:
-      next: 14.2.30(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      next: 14.2.31(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
     transitivePeerDependencies:
       - '@emotion/is-prop-valid'
       - '@theme-ui/core'
@@ -8499,11 +8513,11 @@ snapshots:
       - typescript
       - utf-8-validate
 
-  '@edgeandnode/go@10.3.1(1b29eee08dfa1082e05ffae0de269dca)':
+  '@edgeandnode/go@10.3.4(62939e709471f89a98fd1d6f2cc625da)':
     dependencies:
-      '@edgeandnode/common': 7.0.4(hardhat@2.26.1(typescript@5.8.3))
-      '@edgeandnode/ens': 2.3.0(typescript@5.8.3)(viem@2.33.0(typescript@5.8.3)(zod@3.25.76))
-      '@edgeandnode/gds': 6.7.1(@emotion/is-prop-valid@0.8.8)(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(@theme-ui/core@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(dayjs@1.11.13)(hardhat@2.26.1(typescript@5.8.3))(next@14.2.30(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)(theme-ui@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(typescript@5.8.3)
+      '@edgeandnode/common': 7.0.4(hardhat@2.26.2(typescript@5.9.2))
+      '@edgeandnode/ens': 2.3.0(typescript@5.9.2)(viem@2.33.3(typescript@5.9.2)(zod@3.25.76))
+      '@edgeandnode/gds': 6.7.3(@emotion/is-prop-valid@0.8.8)(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(@theme-ui/core@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(dayjs@1.11.13)(hardhat@2.26.2(typescript@5.9.2))(next@14.2.31(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)(theme-ui@0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(typescript@5.9.2)
       '@emotion/react': 11.14.0(@types/react@18.3.23)(react@18.3.1)
       '@graphql-typed-document-node/core': 3.2.0(graphql@16.11.0)
       '@radix-ui/react-collapsible': 1.1.11(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -8511,19 +8525,19 @@ snapshots:
       '@radix-ui/react-navigation-menu': 1.2.13(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/utils': 3.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@tanstack/react-query': 5.83.0(react@18.3.1)
+      '@tanstack/react-query': 5.84.1(react@18.3.1)
       '@theme-ui/css': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))
-      '@web3icons/react': 4.0.19(react@18.3.1)(typescript@5.8.3)
+      '@web3icons/react': 4.0.19(react@18.3.1)(typescript@5.9.2)
       escape-string-regexp: 5.0.0
       graphql: 16.11.0
       graphql-request: 7.2.0(graphql@16.11.0)
-      motion: 12.23.9(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      motion: 12.23.12(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
       tailwindcss: 3.4.17
       theme-ui: 0.17.2(@emotion/react@11.14.0(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)
     optionalDependencies:
-      next: 14.2.30(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      next: 14.2.31(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
     transitivePeerDependencies:
       - '@emotion/is-prop-valid'
       - '@types/react'
@@ -8621,20 +8635,20 @@ snapshots:
 
   '@ensdomains/address-encoder@1.0.0-rc.3':
     dependencies:
-      '@noble/curves': 1.9.4
+      '@noble/curves': 1.9.6
       '@noble/hashes': 1.8.0
       '@scure/base': 1.2.6
 
   '@ensdomains/address-encoder@1.1.1':
     dependencies:
-      '@noble/curves': 1.9.4
+      '@noble/curves': 1.9.6
       '@noble/hashes': 1.8.0
       '@scure/base': 1.2.6
 
   '@ensdomains/content-hash@3.1.0-rc.1':
     dependencies:
       '@ensdomains/address-encoder': 1.0.0-rc.3
-      '@noble/curves': 1.9.4
+      '@noble/curves': 1.9.6
       '@scure/base': 1.2.6
 
   '@ensdomains/dnsprovejs@0.5.1':
@@ -8643,19 +8657,19 @@ snapshots:
       dns-packet: 5.6.1
       typescript-logging: 1.0.1
 
-  '@ensdomains/ensjs@4.0.2(typescript@5.8.3)(viem@2.33.0(typescript@5.8.3)(zod@3.25.76))(zod@3.25.76)':
+  '@ensdomains/ensjs@4.0.2(typescript@5.9.2)(viem@2.33.3(typescript@5.9.2)(zod@3.25.76))(zod@3.25.76)':
     dependencies:
       '@adraffy/ens-normalize': 1.10.1
       '@ensdomains/address-encoder': 1.1.1
       '@ensdomains/content-hash': 3.1.0-rc.1
       '@ensdomains/dnsprovejs': 0.5.1
-      abitype: 1.0.8(typescript@5.8.3)(zod@3.25.76)
+      abitype: 1.0.8(typescript@5.9.2)(zod@3.25.76)
       dns-packet: 5.6.1
       graphql: 16.11.0
       graphql-request: 6.1.0(graphql@16.11.0)
       pako: 2.1.0
-      ts-pattern: 5.7.1
-      viem: 2.33.0(typescript@5.8.3)(zod@3.25.76)
+      ts-pattern: 5.8.0
+      viem: 2.33.3(typescript@5.9.2)(zod@3.25.76)
     transitivePeerDependencies:
       - encoding
       - typescript
@@ -9212,32 +9226,32 @@ snapshots:
       - supports-color
       - utf-8-validate
 
-  '@floating-ui/core@1.7.2':
+  '@floating-ui/core@1.7.3':
     dependencies:
       '@floating-ui/utils': 0.2.10
 
-  '@floating-ui/dom@1.7.2':
+  '@floating-ui/dom@1.7.3':
     dependencies:
-      '@floating-ui/core': 1.7.2
+      '@floating-ui/core': 1.7.3
       '@floating-ui/utils': 0.2.10
 
-  '@floating-ui/react-dom@2.1.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@floating-ui/react-dom@2.1.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@floating-ui/dom': 1.7.2
+      '@floating-ui/dom': 1.7.3
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
   '@floating-ui/react@0.26.28(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@floating-ui/react-dom': 2.1.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@floating-ui/react-dom': 2.1.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@floating-ui/utils': 0.2.10
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
       tabbable: 6.2.0
 
-  '@floating-ui/react@0.27.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@floating-ui/react@0.27.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@floating-ui/react-dom': 2.1.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@floating-ui/react-dom': 2.1.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@floating-ui/utils': 0.2.10
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
@@ -9283,9 +9297,9 @@ snapshots:
 
   '@hasparus/eslint-plugin@1.0.0':
     dependencies:
-      typescript: 5.8.3
+      typescript: 5.9.2
 
-  '@headlessui/react@2.2.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@headlessui/react@2.2.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
       '@floating-ui/react': 0.26.28(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@react-aria/focus': 3.21.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -9460,7 +9474,7 @@ snapshots:
       hast-util-to-jsx-runtime: 2.3.6
       markdown-extensions: 2.0.0
       recma-build-jsx: 1.0.0
-      recma-jsx: 1.0.0(acorn@8.15.0)
+      recma-jsx: 1.0.1(acorn@8.15.0)
       recma-stringify: 1.0.0
       rehype-recma: 1.0.0
       remark-mdx: 3.1.0
@@ -9558,37 +9572,37 @@ snapshots:
 
   '@next/env@13.5.11': {}
 
-  '@next/env@14.2.30': {}
+  '@next/env@14.2.31': {}
 
   '@next/eslint-plugin-next@13.4.9':
     dependencies:
       glob: 7.1.7
 
-  '@next/swc-darwin-arm64@14.2.30':
+  '@next/swc-darwin-arm64@14.2.31':
     optional: true
 
-  '@next/swc-darwin-x64@14.2.30':
+  '@next/swc-darwin-x64@14.2.31':
     optional: true
 
-  '@next/swc-linux-arm64-gnu@14.2.30':
+  '@next/swc-linux-arm64-gnu@14.2.31':
     optional: true
 
-  '@next/swc-linux-arm64-musl@14.2.30':
+  '@next/swc-linux-arm64-musl@14.2.31':
     optional: true
 
-  '@next/swc-linux-x64-gnu@14.2.30':
+  '@next/swc-linux-x64-gnu@14.2.31':
     optional: true
 
-  '@next/swc-linux-x64-musl@14.2.30':
+  '@next/swc-linux-x64-musl@14.2.31':
     optional: true
 
-  '@next/swc-win32-arm64-msvc@14.2.30':
+  '@next/swc-win32-arm64-msvc@14.2.31':
     optional: true
 
-  '@next/swc-win32-ia32-msvc@14.2.30':
+  '@next/swc-win32-ia32-msvc@14.2.31':
     optional: true
 
-  '@next/swc-win32-x64-msvc@14.2.30':
+  '@next/swc-win32-x64-msvc@14.2.31':
     optional: true
 
   '@noble/ciphers@1.3.0': {}
@@ -9605,7 +9619,7 @@ snapshots:
     dependencies:
       '@noble/hashes': 1.8.0
 
-  '@noble/curves@1.9.4':
+  '@noble/curves@1.9.6':
     dependencies:
       '@noble/hashes': 1.8.0
 
@@ -10004,7 +10018,7 @@ snapshots:
 
   '@radix-ui/react-popper@1.2.7(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@floating-ui/react-dom': 2.1.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@floating-ui/react-dom': 2.1.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@radix-ui/react-arrow': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.23)(react@18.3.1)
       '@radix-ui/react-context': 1.1.2(@types/react@18.3.23)(react@18.3.1)
@@ -11206,64 +11220,64 @@ snapshots:
 
   '@resvg/resvg-wasm@2.6.2': {}
 
-  '@rollup/rollup-android-arm-eabi@4.45.1':
+  '@rollup/rollup-android-arm-eabi@4.46.2':
     optional: true
 
-  '@rollup/rollup-android-arm64@4.45.1':
+  '@rollup/rollup-android-arm64@4.46.2':
     optional: true
 
-  '@rollup/rollup-darwin-arm64@4.45.1':
+  '@rollup/rollup-darwin-arm64@4.46.2':
     optional: true
 
-  '@rollup/rollup-darwin-x64@4.45.1':
+  '@rollup/rollup-darwin-x64@4.46.2':
     optional: true
 
-  '@rollup/rollup-freebsd-arm64@4.45.1':
+  '@rollup/rollup-freebsd-arm64@4.46.2':
     optional: true
 
-  '@rollup/rollup-freebsd-x64@4.45.1':
+  '@rollup/rollup-freebsd-x64@4.46.2':
     optional: true
 
-  '@rollup/rollup-linux-arm-gnueabihf@4.45.1':
+  '@rollup/rollup-linux-arm-gnueabihf@4.46.2':
     optional: true
 
-  '@rollup/rollup-linux-arm-musleabihf@4.45.1':
+  '@rollup/rollup-linux-arm-musleabihf@4.46.2':
     optional: true
 
-  '@rollup/rollup-linux-arm64-gnu@4.45.1':
+  '@rollup/rollup-linux-arm64-gnu@4.46.2':
     optional: true
 
-  '@rollup/rollup-linux-arm64-musl@4.45.1':
+  '@rollup/rollup-linux-arm64-musl@4.46.2':
     optional: true
 
-  '@rollup/rollup-linux-loongarch64-gnu@4.45.1':
+  '@rollup/rollup-linux-loongarch64-gnu@4.46.2':
     optional: true
 
-  '@rollup/rollup-linux-powerpc64le-gnu@4.45.1':
+  '@rollup/rollup-linux-ppc64-gnu@4.46.2':
     optional: true
 
-  '@rollup/rollup-linux-riscv64-gnu@4.45.1':
+  '@rollup/rollup-linux-riscv64-gnu@4.46.2':
     optional: true
 
-  '@rollup/rollup-linux-riscv64-musl@4.45.1':
+  '@rollup/rollup-linux-riscv64-musl@4.46.2':
     optional: true
 
-  '@rollup/rollup-linux-s390x-gnu@4.45.1':
+  '@rollup/rollup-linux-s390x-gnu@4.46.2':
     optional: true
 
-  '@rollup/rollup-linux-x64-gnu@4.45.1':
+  '@rollup/rollup-linux-x64-gnu@4.46.2':
     optional: true
 
-  '@rollup/rollup-linux-x64-musl@4.45.1':
+  '@rollup/rollup-linux-x64-musl@4.46.2':
     optional: true
 
-  '@rollup/rollup-win32-arm64-msvc@4.45.1':
+  '@rollup/rollup-win32-arm64-msvc@4.46.2':
     optional: true
 
-  '@rollup/rollup-win32-ia32-msvc@4.45.1':
+  '@rollup/rollup-win32-ia32-msvc@4.46.2':
     optional: true
 
-  '@rollup/rollup-win32-x64-msvc@4.45.1':
+  '@rollup/rollup-win32-x64-msvc@4.46.2':
     optional: true
 
   '@rrweb/types@2.0.0-alpha.18': {}
@@ -11369,9 +11383,9 @@ snapshots:
       '@types/hast': 3.0.4
       hast-util-to-html: 9.0.5
 
-  '@shikijs/core@3.8.1':
+  '@shikijs/core@3.9.2':
     dependencies:
-      '@shikijs/types': 3.8.1
+      '@shikijs/types': 3.9.2
       '@shikijs/vscode-textmate': 10.0.2
       '@types/hast': 3.0.4
       hast-util-to-html: 9.0.5
@@ -11382,9 +11396,9 @@ snapshots:
       '@shikijs/vscode-textmate': 10.0.2
       oniguruma-to-es: 2.3.0
 
-  '@shikijs/engine-javascript@3.8.1':
+  '@shikijs/engine-javascript@3.9.2':
     dependencies:
-      '@shikijs/types': 3.8.1
+      '@shikijs/types': 3.9.2
       '@shikijs/vscode-textmate': 10.0.2
       oniguruma-to-es: 4.3.3
 
@@ -11393,32 +11407,32 @@ snapshots:
       '@shikijs/types': 1.29.2
       '@shikijs/vscode-textmate': 10.0.2
 
-  '@shikijs/engine-oniguruma@3.8.1':
+  '@shikijs/engine-oniguruma@3.9.2':
     dependencies:
-      '@shikijs/types': 3.8.1
+      '@shikijs/types': 3.9.2
       '@shikijs/vscode-textmate': 10.0.2
 
   '@shikijs/langs@1.29.2':
     dependencies:
       '@shikijs/types': 1.29.2
 
-  '@shikijs/langs@3.8.1':
+  '@shikijs/langs@3.9.2':
     dependencies:
-      '@shikijs/types': 3.8.1
+      '@shikijs/types': 3.9.2
 
   '@shikijs/themes@1.29.2':
     dependencies:
       '@shikijs/types': 1.29.2
 
-  '@shikijs/themes@3.8.1':
+  '@shikijs/themes@3.9.2':
     dependencies:
-      '@shikijs/types': 3.8.1
+      '@shikijs/types': 3.9.2
 
-  '@shikijs/twoslash@1.29.2(typescript@5.8.3)':
+  '@shikijs/twoslash@1.29.2(typescript@5.9.2)':
     dependencies:
       '@shikijs/core': 1.29.2
       '@shikijs/types': 1.29.2
-      twoslash: 0.2.12(typescript@5.8.3)
+      twoslash: 0.2.12(typescript@5.9.2)
     transitivePeerDependencies:
       - supports-color
       - typescript
@@ -11428,7 +11442,7 @@ snapshots:
       '@shikijs/vscode-textmate': 10.0.2
       '@types/hast': 3.0.4
 
-  '@shikijs/types@3.8.1':
+  '@shikijs/types@3.9.2':
     dependencies:
       '@shikijs/vscode-textmate': 10.0.2
       '@types/hast': 3.0.4
@@ -11519,11 +11533,11 @@ snapshots:
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@tanstack/query-core@5.83.0': {}
+  '@tanstack/query-core@5.83.1': {}
 
-  '@tanstack/react-query@5.83.0(react@18.3.1)':
+  '@tanstack/react-query@5.84.1(react@18.3.1)':
     dependencies:
-      '@tanstack/query-core': 5.83.0
+      '@tanstack/query-core': 5.83.1
       react: 18.3.1
 
   '@tanstack/react-virtual@3.13.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
@@ -11614,7 +11628,7 @@ snapshots:
 
   '@types/concat-stream@2.0.3':
     dependencies:
-      '@types/node': 22.16.5
+      '@types/node': 22.17.0
 
   '@types/cookie@0.6.0': {}
 
@@ -11641,7 +11655,7 @@ snapshots:
 
   '@types/d3-delaunay@6.0.4': {}
 
-  '@types/d3-dispatch@3.0.6': {}
+  '@types/d3-dispatch@3.0.7': {}
 
   '@types/d3-drag@3.0.7':
     dependencies:
@@ -11713,7 +11727,7 @@ snapshots:
       '@types/d3-color': 3.1.3
       '@types/d3-contour': 3.0.6
       '@types/d3-delaunay': 6.0.4
-      '@types/d3-dispatch': 3.0.6
+      '@types/d3-dispatch': 3.0.7
       '@types/d3-drag': 3.0.7
       '@types/d3-dsv': 3.0.7
       '@types/d3-ease': 3.0.2
@@ -11781,7 +11795,7 @@ snapshots:
     dependencies:
       '@types/unist': 3.0.3
 
-  '@types/node@22.16.5':
+  '@types/node@22.17.0':
     dependencies:
       undici-types: 6.21.0
 
@@ -11819,13 +11833,13 @@ snapshots:
     dependencies:
       vfile: 6.0.3
 
-  '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3)':
+  '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2)':
     dependencies:
       '@eslint-community/regexpp': 4.12.1
-      '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.8.3)
+      '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.9.2)
       '@typescript-eslint/scope-manager': 6.21.0
-      '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.1)(typescript@5.8.3)
-      '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.8.3)
+      '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.1)(typescript@5.9.2)
+      '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.9.2)
       '@typescript-eslint/visitor-keys': 6.21.0
       debug: 4.4.1(supports-color@8.1.1)
       eslint: 8.57.1
@@ -11833,22 +11847,22 @@ snapshots:
       ignore: 5.3.2
       natural-compare: 1.4.0
       semver: 7.7.2
-      ts-api-utils: 1.4.3(typescript@5.8.3)
+      ts-api-utils: 1.4.3(typescript@5.9.2)
     optionalDependencies:
-      typescript: 5.8.3
+      typescript: 5.9.2
     transitivePeerDependencies:
       - supports-color
 
-  '@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.3)':
+  '@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2)':
     dependencies:
       '@typescript-eslint/scope-manager': 6.21.0
       '@typescript-eslint/types': 6.21.0
-      '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.8.3)
+      '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.9.2)
       '@typescript-eslint/visitor-keys': 6.21.0
       debug: 4.4.1(supports-color@8.1.1)
       eslint: 8.57.1
     optionalDependencies:
-      typescript: 5.8.3
+      typescript: 5.9.2
     transitivePeerDependencies:
       - supports-color
 
@@ -11857,21 +11871,21 @@ snapshots:
       '@typescript-eslint/types': 6.21.0
       '@typescript-eslint/visitor-keys': 6.21.0
 
-  '@typescript-eslint/type-utils@6.21.0(eslint@8.57.1)(typescript@5.8.3)':
+  '@typescript-eslint/type-utils@6.21.0(eslint@8.57.1)(typescript@5.9.2)':
     dependencies:
-      '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.8.3)
-      '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.8.3)
+      '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.9.2)
+      '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.9.2)
       debug: 4.4.1(supports-color@8.1.1)
       eslint: 8.57.1
-      ts-api-utils: 1.4.3(typescript@5.8.3)
+      ts-api-utils: 1.4.3(typescript@5.9.2)
     optionalDependencies:
-      typescript: 5.8.3
+      typescript: 5.9.2
     transitivePeerDependencies:
       - supports-color
 
   '@typescript-eslint/types@6.21.0': {}
 
-  '@typescript-eslint/typescript-estree@6.21.0(typescript@5.8.3)':
+  '@typescript-eslint/typescript-estree@6.21.0(typescript@5.9.2)':
     dependencies:
       '@typescript-eslint/types': 6.21.0
       '@typescript-eslint/visitor-keys': 6.21.0
@@ -11880,20 +11894,20 @@ snapshots:
       is-glob: 4.0.3
       minimatch: 9.0.3
       semver: 7.7.2
-      ts-api-utils: 1.4.3(typescript@5.8.3)
+      ts-api-utils: 1.4.3(typescript@5.9.2)
     optionalDependencies:
-      typescript: 5.8.3
+      typescript: 5.9.2
     transitivePeerDependencies:
       - supports-color
 
-  '@typescript-eslint/utils@6.21.0(eslint@8.57.1)(typescript@5.8.3)':
+  '@typescript-eslint/utils@6.21.0(eslint@8.57.1)(typescript@5.9.2)':
     dependencies:
       '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1)
       '@types/json-schema': 7.0.15
       '@types/semver': 7.7.0
       '@typescript-eslint/scope-manager': 6.21.0
       '@typescript-eslint/types': 6.21.0
-      '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.8.3)
+      '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.9.2)
       eslint: 8.57.1
       semver: 7.7.2
     transitivePeerDependencies:
@@ -11905,10 +11919,10 @@ snapshots:
       '@typescript-eslint/types': 6.21.0
       eslint-visitor-keys: 3.4.3
 
-  '@typescript/vfs@1.6.1(typescript@5.8.3)':
+  '@typescript/vfs@1.6.1(typescript@5.9.2)':
     dependencies:
       debug: 4.4.1(supports-color@8.1.1)
-      typescript: 5.8.3
+      typescript: 5.9.2
     transitivePeerDependencies:
       - supports-color
 
@@ -11928,14 +11942,14 @@ snapshots:
       tiny-invariant: 1.3.3
       toformat: 2.0.0
 
-  '@uniswap/swap-router-contracts@1.3.1(hardhat@2.26.1(typescript@5.8.3))':
+  '@uniswap/swap-router-contracts@1.3.1(hardhat@2.26.2(typescript@5.9.2))':
     dependencies:
       '@openzeppelin/contracts': 3.4.2-solc-0.7
       '@uniswap/v2-core': 1.0.1
       '@uniswap/v3-core': 1.0.1
       '@uniswap/v3-periphery': 1.4.4
       dotenv: 14.3.2
-      hardhat-watcher: 2.5.0(hardhat@2.26.1(typescript@5.8.3))
+      hardhat-watcher: 2.5.0(hardhat@2.26.2(typescript@5.9.2))
     transitivePeerDependencies:
       - hardhat
 
@@ -11953,12 +11967,12 @@ snapshots:
       '@uniswap/v3-core': 1.0.1
       base64-sol: 1.0.1
 
-  '@uniswap/v3-sdk@3.25.2(hardhat@2.26.1(typescript@5.8.3))':
+  '@uniswap/v3-sdk@3.25.2(hardhat@2.26.2(typescript@5.9.2))':
     dependencies:
       '@ethersproject/abi': 5.8.0
       '@ethersproject/solidity': 5.8.0
       '@uniswap/sdk-core': 7.7.2
-      '@uniswap/swap-router-contracts': 1.3.1(hardhat@2.26.1(typescript@5.8.3))
+      '@uniswap/swap-router-contracts': 1.3.1(hardhat@2.26.2(typescript@5.9.2))
       '@uniswap/v3-periphery': 1.4.4
       '@uniswap/v3-staker': 1.0.0
       tiny-invariant: 1.3.3
@@ -12040,13 +12054,13 @@ snapshots:
       chai: 5.2.1
       tinyrainbow: 1.2.0
 
-  '@vitest/mocker@2.1.9(vite@5.4.19(@types/node@22.16.5))':
+  '@vitest/mocker@2.1.9(vite@5.4.19(@types/node@22.17.0))':
     dependencies:
       '@vitest/spy': 2.1.9
       estree-walker: 3.0.3
       magic-string: 0.30.17
     optionalDependencies:
-      vite: 5.4.19(@types/node@22.16.5)
+      vite: 5.4.19(@types/node@22.17.0)
 
   '@vitest/pretty-format@2.1.9':
     dependencies:
@@ -12073,13 +12087,13 @@ snapshots:
       loupe: 3.2.0
       tinyrainbow: 1.2.0
 
-  '@web3icons/common@0.11.15(typescript@5.8.3)':
+  '@web3icons/common@0.11.15(typescript@5.9.2)':
     dependencies:
-      typescript: 5.8.3
+      typescript: 5.9.2
 
-  '@web3icons/react@4.0.19(react@18.3.1)(typescript@5.8.3)':
+  '@web3icons/react@4.0.19(react@18.3.1)(typescript@5.9.2)':
     dependencies:
-      '@web3icons/common': 0.11.15(typescript@5.8.3)
+      '@web3icons/common': 0.11.15(typescript@5.9.2)
       react: 18.3.1
     transitivePeerDependencies:
       - typescript
@@ -12100,9 +12114,9 @@ snapshots:
 
   abbrev@2.0.0: {}
 
-  abitype@1.0.8(typescript@5.8.3)(zod@3.25.76):
+  abitype@1.0.8(typescript@5.9.2)(zod@3.25.76):
     optionalDependencies:
-      typescript: 5.8.3
+      typescript: 5.9.2
       zod: 3.25.76
 
   acorn-jsx@5.3.2(acorn@8.15.0):
@@ -12150,21 +12164,22 @@ snapshots:
       json-schema-traverse: 1.0.0
       require-from-string: 2.0.2
 
-  algoliasearch@5.34.1:
-    dependencies:
-      '@algolia/client-abtesting': 5.34.1
-      '@algolia/client-analytics': 5.34.1
-      '@algolia/client-common': 5.34.1
-      '@algolia/client-insights': 5.34.1
-      '@algolia/client-personalization': 5.34.1
-      '@algolia/client-query-suggestions': 5.34.1
-      '@algolia/client-search': 5.34.1
-      '@algolia/ingestion': 1.34.1
-      '@algolia/monitoring': 1.34.1
-      '@algolia/recommend': 5.34.1
-      '@algolia/requester-browser-xhr': 5.34.1
-      '@algolia/requester-fetch': 5.34.1
-      '@algolia/requester-node-http': 5.34.1
+  algoliasearch@5.35.0:
+    dependencies:
+      '@algolia/abtesting': 1.1.0
+      '@algolia/client-abtesting': 5.35.0
+      '@algolia/client-analytics': 5.35.0
+      '@algolia/client-common': 5.35.0
+      '@algolia/client-insights': 5.35.0
+      '@algolia/client-personalization': 5.35.0
+      '@algolia/client-query-suggestions': 5.35.0
+      '@algolia/client-search': 5.35.0
+      '@algolia/ingestion': 1.35.0
+      '@algolia/monitoring': 1.35.0
+      '@algolia/recommend': 5.35.0
+      '@algolia/requester-browser-xhr': 5.35.0
+      '@algolia/requester-fetch': 5.35.0
+      '@algolia/requester-node-http': 5.35.0
 
   ansi-align@3.0.1:
     dependencies:
@@ -12297,7 +12312,7 @@ snapshots:
   autoprefixer@10.4.21(postcss@8.5.6):
     dependencies:
       browserslist: 4.25.1
-      caniuse-lite: 1.0.30001727
+      caniuse-lite: 1.0.30001731
       fraction.js: 4.3.7
       normalize-range: 0.1.2
       picocolors: 1.1.1
@@ -12394,8 +12409,8 @@ snapshots:
 
   browserslist@4.25.1:
     dependencies:
-      caniuse-lite: 1.0.30001727
-      electron-to-chromium: 1.5.190
+      caniuse-lite: 1.0.30001731
+      electron-to-chromium: 1.5.198
       node-releases: 2.0.19
       update-browserslist-db: 1.1.3(browserslist@4.25.1)
 
@@ -12444,7 +12459,7 @@ snapshots:
 
   camelize@1.0.1: {}
 
-  caniuse-lite@1.0.30001727: {}
+  caniuse-lite@1.0.30001731: {}
 
   ccount@2.0.1: {}
 
@@ -12461,7 +12476,7 @@ snapshots:
       ansi-styles: 4.3.0
       supports-color: 7.2.0
 
-  chalk@5.4.1: {}
+  chalk@5.5.0: {}
 
   character-entities-html4@2.1.0: {}
 
@@ -12651,7 +12666,7 @@ snapshots:
 
   css-color-keywords@1.0.0: {}
 
-  css-gradient-parser@0.0.16: {}
+  css-gradient-parser@0.0.17: {}
 
   css-to-react-native@3.2.0:
     dependencies:
@@ -12668,17 +12683,17 @@ snapshots:
 
   csstype@3.1.3: {}
 
-  cytoscape-cose-bilkent@4.1.0(cytoscape@3.32.1):
+  cytoscape-cose-bilkent@4.1.0(cytoscape@3.33.0):
     dependencies:
       cose-base: 1.0.3
-      cytoscape: 3.32.1
+      cytoscape: 3.33.0
 
-  cytoscape-fcose@2.2.0(cytoscape@3.32.1):
+  cytoscape-fcose@2.2.0(cytoscape@3.33.0):
     dependencies:
       cose-base: 2.2.0
-      cytoscape: 3.32.1
+      cytoscape: 3.33.0
 
-  cytoscape@3.32.1: {}
+  cytoscape@3.33.0: {}
 
   d3-array@2.12.1:
     dependencies:
@@ -12989,7 +13004,7 @@ snapshots:
 
   eastasianwidth@0.2.0: {}
 
-  electron-to-chromium@1.5.190: {}
+  electron-to-chromium@1.5.198: {}
 
   elliptic@6.6.1:
     dependencies:
@@ -13145,7 +13160,7 @@ snapshots:
       '@types/estree-jsx': 1.0.5
       acorn: 8.15.0
       esast-util-from-estree: 2.0.0
-      vfile-message: 4.0.2
+      vfile-message: 4.0.3
 
   esbuild@0.17.19:
     optionalDependencies:
@@ -13254,7 +13269,7 @@ snapshots:
       tinyglobby: 0.2.14
       unrs-resolver: 1.11.1
     optionalDependencies:
-      eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1)
+      eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1)
     transitivePeerDependencies:
       - supports-color
 
@@ -13278,18 +13293,18 @@ snapshots:
       - bluebird
       - supports-color
 
-  eslint-module-utils@2.12.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1):
+  eslint-module-utils@2.12.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1):
     dependencies:
       debug: 3.2.7
     optionalDependencies:
-      '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.8.3)
+      '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.9.2)
       eslint: 8.57.1
       eslint-import-resolver-node: 0.3.9
       eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1)
     transitivePeerDependencies:
       - supports-color
 
-  eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1):
+  eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1):
     dependencies:
       '@rtsao/scc': 1.1.0
       array-includes: 3.1.9
@@ -13300,7 +13315,7 @@ snapshots:
       doctrine: 2.1.0
       eslint: 8.57.1
       eslint-import-resolver-node: 0.3.9
-      eslint-module-utils: 2.12.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1)
+      eslint-module-utils: 2.12.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1)
       hasown: 2.0.2
       is-core-module: 2.16.1
       is-glob: 4.0.3
@@ -13312,7 +13327,7 @@ snapshots:
       string.prototype.trimend: 1.0.9
       tsconfig-paths: 3.15.0
     optionalDependencies:
-      '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.8.3)
+      '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.9.2)
     transitivePeerDependencies:
       - eslint-import-resolver-typescript
       - eslint-import-resolver-webpack
@@ -13656,7 +13671,7 @@ snapshots:
     dependencies:
       magic-string: 0.30.17
       mlly: 1.7.4
-      rollup: 4.45.1
+      rollup: 4.46.2
 
   flat-cache@3.2.0:
     dependencies:
@@ -13668,7 +13683,7 @@ snapshots:
 
   flatted@3.3.3: {}
 
-  follow-redirects@1.15.9(debug@4.4.1):
+  follow-redirects@1.15.11(debug@4.4.1):
     optionalDependencies:
       debug: 4.4.1(supports-color@8.1.1)
 
@@ -13695,9 +13710,9 @@ snapshots:
 
   fraction.js@4.3.7: {}
 
-  framer-motion@12.23.9(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+  framer-motion@12.23.12(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
     dependencies:
-      motion-dom: 12.23.9
+      motion-dom: 12.23.12
       motion-utils: 12.23.6
       tslib: 2.8.1
     optionalDependencies:
@@ -13881,12 +13896,12 @@ snapshots:
 
   hachure-fill@0.5.2: {}
 
-  hardhat-watcher@2.5.0(hardhat@2.26.1(typescript@5.8.3)):
+  hardhat-watcher@2.5.0(hardhat@2.26.2(typescript@5.9.2)):
     dependencies:
       chokidar: 3.6.0
-      hardhat: 2.26.1(typescript@5.8.3)
+      hardhat: 2.26.2(typescript@5.9.2)
 
-  hardhat@2.26.1(typescript@5.8.3):
+  hardhat@2.26.2(typescript@5.9.2):
     dependencies:
       '@ethereumjs/util': 9.1.0
       '@ethersproject/abi': 5.8.0
@@ -13928,7 +13943,7 @@ snapshots:
       uuid: 8.3.2
       ws: 7.5.10
     optionalDependencies:
-      typescript: 5.8.3
+      typescript: 5.9.2
     transitivePeerDependencies:
       - bufferutil
       - supports-color
@@ -13981,7 +13996,7 @@ snapshots:
       hast-util-from-parse5: 8.0.3
       parse5: 7.3.0
       vfile: 6.0.3
-      vfile-message: 4.0.2
+      vfile-message: 4.0.3
 
   hast-util-from-parse5@8.0.3:
     dependencies:
@@ -14082,7 +14097,7 @@ snapshots:
       space-separated-tokens: 2.0.2
       style-to-js: 1.1.17
       unist-util-position: 5.0.0
-      vfile-message: 4.0.2
+      vfile-message: 4.0.3
     transitivePeerDependencies:
       - supports-color
 
@@ -14472,7 +14487,7 @@ snapshots:
       http-proxy-agent: 7.0.2
       https-proxy-agent: 7.0.6
       is-potential-custom-element-name: 1.0.1
-      nwsapi: 2.2.20
+      nwsapi: 2.2.21
       parse5: 7.3.0
       rrweb-cssom: 0.7.1
       saxes: 6.0.0
@@ -14639,7 +14654,7 @@ snapshots:
 
   markdown-table@3.0.4: {}
 
-  marked@16.1.1: {}
+  marked@16.1.2: {}
 
   math-intrinsics@1.1.0: {}
 
@@ -14784,7 +14799,7 @@ snapshots:
       parse-entities: 4.0.2
       stringify-entities: 4.0.4
       unist-util-stringify-position: 4.0.0
-      vfile-message: 4.0.2
+      vfile-message: 4.0.3
     transitivePeerDependencies:
       - supports-color
 
@@ -14854,9 +14869,9 @@ snapshots:
       '@iconify/utils': 2.3.0
       '@mermaid-js/parser': 0.6.2
       '@types/d3': 7.4.3
-      cytoscape: 3.32.1
-      cytoscape-cose-bilkent: 4.1.0(cytoscape@3.32.1)
-      cytoscape-fcose: 2.2.0(cytoscape@3.32.1)
+      cytoscape: 3.33.0
+      cytoscape-cose-bilkent: 4.1.0(cytoscape@3.33.0)
+      cytoscape-fcose: 2.2.0(cytoscape@3.33.0)
       d3: 7.9.0
       d3-sankey: 0.12.3
       dagre-d3-es: 7.0.11
@@ -14865,7 +14880,7 @@ snapshots:
       katex: 0.16.22
       khroma: 2.1.0
       lodash-es: 4.17.21
-      marked: 16.1.1
+      marked: 16.1.2
       roughjs: 4.6.6
       stylis: 4.3.6
       ts-dedent: 2.2.0
@@ -15001,7 +15016,7 @@ snapshots:
       micromark-util-events-to-acorn: 2.0.3
       micromark-util-symbol: 2.0.1
       micromark-util-types: 2.0.2
-      vfile-message: 4.0.2
+      vfile-message: 4.0.3
 
   micromark-extension-mdx-md@2.0.0:
     dependencies:
@@ -15017,7 +15032,7 @@ snapshots:
       micromark-util-symbol: 2.0.1
       micromark-util-types: 2.0.2
       unist-util-position-from-estree: 2.0.0
-      vfile-message: 4.0.2
+      vfile-message: 4.0.3
 
   micromark-extension-mdxjs@3.0.0:
     dependencies:
@@ -15053,7 +15068,7 @@ snapshots:
       micromark-util-symbol: 2.0.1
       micromark-util-types: 2.0.2
       unist-util-position-from-estree: 2.0.0
-      vfile-message: 4.0.2
+      vfile-message: 4.0.3
 
   micromark-factory-space@2.0.1:
     dependencies:
@@ -15115,7 +15130,7 @@ snapshots:
       estree-util-visit: 2.0.0
       micromark-util-symbol: 2.0.1
       micromark-util-types: 2.0.2
-      vfile-message: 4.0.2
+      vfile-message: 4.0.3
 
   micromark-util-html-tag-name@2.0.1: {}
 
@@ -15183,7 +15198,7 @@ snapshots:
 
   mimic-fn@4.0.0: {}
 
-  miniflare@3.20250408.2:
+  miniflare@3.20250718.1:
     dependencies:
       '@cspotcode/source-map-support': 0.8.1
       acorn: 8.14.0
@@ -15192,7 +15207,7 @@ snapshots:
       glob-to-regexp: 0.4.1
       stoppable: 1.1.0
       undici: 5.29.0
-      workerd: 1.20250408.0
+      workerd: 1.20250718.0
       ws: 8.18.0
       youch: 3.3.4
       zod: 3.22.3
@@ -15268,15 +15283,15 @@ snapshots:
       yargs-parser: 20.2.9
       yargs-unparser: 2.0.0
 
-  motion-dom@12.23.9:
+  motion-dom@12.23.12:
     dependencies:
       motion-utils: 12.23.6
 
   motion-utils@12.23.6: {}
 
-  motion@12.23.9(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+  motion@12.23.12(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
     dependencies:
-      framer-motion: 12.23.9(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      framer-motion: 12.23.12(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       tslib: 2.8.1
     optionalDependencies:
       '@emotion/is-prop-valid': 0.8.8
@@ -15303,53 +15318,53 @@ snapshots:
 
   negotiator@1.0.0: {}
 
-  next-seo@6.8.0(next@14.2.30(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+  next-seo@6.8.0(next@14.2.31(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
     dependencies:
-      next: 14.2.30(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      next: 14.2.31(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  next-sitemap@4.2.3(next@14.2.30(react-dom@18.3.1(react@18.3.1))(react@18.3.1)):
+  next-sitemap@4.2.3(next@14.2.31(react-dom@18.3.1(react@18.3.1))(react@18.3.1)):
     dependencies:
       '@corex/deepmerge': 4.0.43
       '@next/env': 13.5.11
       fast-glob: 3.3.3
       minimist: 1.2.8
-      next: 14.2.30(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      next: 14.2.31(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
 
-  next@14.2.30(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+  next@14.2.31(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
     dependencies:
-      '@next/env': 14.2.30
+      '@next/env': 14.2.31
       '@swc/helpers': 0.5.5
       busboy: 1.6.0
-      caniuse-lite: 1.0.30001727
+      caniuse-lite: 1.0.30001731
       graceful-fs: 4.2.11
       postcss: 8.4.31
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
       styled-jsx: 5.1.1(react@18.3.1)
     optionalDependencies:
-      '@next/swc-darwin-arm64': 14.2.30
-      '@next/swc-darwin-x64': 14.2.30
-      '@next/swc-linux-arm64-gnu': 14.2.30
-      '@next/swc-linux-arm64-musl': 14.2.30
-      '@next/swc-linux-x64-gnu': 14.2.30
-      '@next/swc-linux-x64-musl': 14.2.30
-      '@next/swc-win32-arm64-msvc': 14.2.30
-      '@next/swc-win32-ia32-msvc': 14.2.30
-      '@next/swc-win32-x64-msvc': 14.2.30
+      '@next/swc-darwin-arm64': 14.2.31
+      '@next/swc-darwin-x64': 14.2.31
+      '@next/swc-linux-arm64-gnu': 14.2.31
+      '@next/swc-linux-arm64-musl': 14.2.31
+      '@next/swc-linux-x64-gnu': 14.2.31
+      '@next/swc-linux-x64-musl': 14.2.31
+      '@next/swc-win32-arm64-msvc': 14.2.31
+      '@next/swc-win32-ia32-msvc': 14.2.31
+      '@next/swc-win32-x64-msvc': 14.2.31
     transitivePeerDependencies:
       - '@babel/core'
       - babel-plugin-macros
 
-  nextra@3.3.1(@types/react@18.3.23)(acorn@8.15.0)(next@14.2.30(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3):
+  nextra@3.3.1(@types/react@18.3.23)(acorn@8.15.0)(next@14.2.31(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2):
     dependencies:
       '@formatjs/intl-localematcher': 0.5.10
-      '@headlessui/react': 2.2.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@headlessui/react': 2.2.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@mdx-js/mdx': 3.1.0(acorn@8.15.0)
       '@mdx-js/react': 3.1.0(@types/react@18.3.23)(react@18.3.1)
       '@napi-rs/simple-git': 0.1.21
-      '@shikijs/twoslash': 1.29.2(typescript@5.8.3)
+      '@shikijs/twoslash': 1.29.2(typescript@5.9.2)
       '@theguild/remark-mermaid': 0.1.3(react@18.3.1)
       '@theguild/remark-npm2yarn': 0.3.3
       better-react-mathjax: 2.3.0(react@18.3.1)
@@ -15365,7 +15380,7 @@ snapshots:
       mdast-util-gfm: 3.1.0
       mdast-util-to-hast: 13.2.0
       negotiator: 1.0.0
-      next: 14.2.30(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      next: 14.2.31(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       p-limit: 6.2.0
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
@@ -15383,7 +15398,7 @@ snapshots:
       title: 4.0.1
       unist-util-remove: 4.0.0
       unist-util-visit: 5.0.0
-      yaml: 2.8.0
+      yaml: 2.8.1
       zod: 3.25.76
       zod-validation-error: 3.5.3(zod@3.25.76)
     transitivePeerDependencies:
@@ -15448,7 +15463,7 @@ snapshots:
 
   numeral@2.0.6: {}
 
-  nwsapi@2.2.20: {}
+  nwsapi@2.2.21: {}
 
   object-assign@4.1.1: {}
 
@@ -15555,7 +15570,7 @@ snapshots:
       object-keys: 1.1.1
       safe-push-apply: 1.0.0
 
-  ox@0.8.1(typescript@5.8.3)(zod@3.25.76):
+  ox@0.8.6(typescript@5.9.2)(zod@3.25.76):
     dependencies:
       '@adraffy/ens-normalize': 1.11.0
       '@noble/ciphers': 1.3.0
@@ -15563,10 +15578,10 @@ snapshots:
       '@noble/hashes': 1.8.0
       '@scure/bip32': 1.7.0
       '@scure/bip39': 1.6.0
-      abitype: 1.0.8(typescript@5.8.3)(zod@3.25.76)
+      abitype: 1.0.8(typescript@5.9.2)(zod@3.25.76)
       eventemitter3: 5.0.1
     optionalDependencies:
-      typescript: 5.8.3
+      typescript: 5.9.2
     transitivePeerDependencies:
       - zod
 
@@ -15728,18 +15743,18 @@ snapshots:
   postcss-load-config@4.0.2(postcss@8.5.6):
     dependencies:
       lilconfig: 3.1.3
-      yaml: 2.8.0
+      yaml: 2.8.1
     optionalDependencies:
       postcss: 8.5.6
 
-  postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.3)(yaml@2.8.0):
+  postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.3)(yaml@2.8.1):
     dependencies:
       lilconfig: 3.1.3
     optionalDependencies:
       jiti: 1.21.7
       postcss: 8.5.6
       tsx: 4.20.3
-      yaml: 2.8.0
+      yaml: 2.8.1
 
   postcss-nested@6.2.0(postcss@8.5.6):
     dependencies:
@@ -16027,15 +16042,14 @@ snapshots:
       estree-util-build-jsx: 3.0.1
       vfile: 6.0.3
 
-  recma-jsx@1.0.0(acorn@8.15.0):
+  recma-jsx@1.0.1(acorn@8.15.0):
     dependencies:
+      acorn: 8.15.0
       acorn-jsx: 5.3.2(acorn@8.15.0)
       estree-util-to-js: 2.0.0
       recma-parse: 1.0.0
       recma-stringify: 1.0.0
       unified: 11.0.5
-    transitivePeerDependencies:
-      - acorn
 
   recma-parse@1.0.0:
     dependencies:
@@ -16178,7 +16192,7 @@ snapshots:
       mdast-util-mdx: 3.0.0
       unified-lint-rule: 3.0.1
       unist-util-visit-parents: 6.0.1
-      vfile-message: 4.0.2
+      vfile-message: 4.0.3
     transitivePeerDependencies:
       - supports-color
 
@@ -16327,30 +16341,30 @@ snapshots:
     dependencies:
       estree-walker: 0.6.1
 
-  rollup@4.45.1:
+  rollup@4.46.2:
     dependencies:
       '@types/estree': 1.0.8
     optionalDependencies:
-      '@rollup/rollup-android-arm-eabi': 4.45.1
-      '@rollup/rollup-android-arm64': 4.45.1
-      '@rollup/rollup-darwin-arm64': 4.45.1
-      '@rollup/rollup-darwin-x64': 4.45.1
-      '@rollup/rollup-freebsd-arm64': 4.45.1
-      '@rollup/rollup-freebsd-x64': 4.45.1
-      '@rollup/rollup-linux-arm-gnueabihf': 4.45.1
-      '@rollup/rollup-linux-arm-musleabihf': 4.45.1
-      '@rollup/rollup-linux-arm64-gnu': 4.45.1
-      '@rollup/rollup-linux-arm64-musl': 4.45.1
-      '@rollup/rollup-linux-loongarch64-gnu': 4.45.1
-      '@rollup/rollup-linux-powerpc64le-gnu': 4.45.1
-      '@rollup/rollup-linux-riscv64-gnu': 4.45.1
-      '@rollup/rollup-linux-riscv64-musl': 4.45.1
-      '@rollup/rollup-linux-s390x-gnu': 4.45.1
-      '@rollup/rollup-linux-x64-gnu': 4.45.1
-      '@rollup/rollup-linux-x64-musl': 4.45.1
-      '@rollup/rollup-win32-arm64-msvc': 4.45.1
-      '@rollup/rollup-win32-ia32-msvc': 4.45.1
-      '@rollup/rollup-win32-x64-msvc': 4.45.1
+      '@rollup/rollup-android-arm-eabi': 4.46.2
+      '@rollup/rollup-android-arm64': 4.46.2
+      '@rollup/rollup-darwin-arm64': 4.46.2
+      '@rollup/rollup-darwin-x64': 4.46.2
+      '@rollup/rollup-freebsd-arm64': 4.46.2
+      '@rollup/rollup-freebsd-x64': 4.46.2
+      '@rollup/rollup-linux-arm-gnueabihf': 4.46.2
+      '@rollup/rollup-linux-arm-musleabihf': 4.46.2
+      '@rollup/rollup-linux-arm64-gnu': 4.46.2
+      '@rollup/rollup-linux-arm64-musl': 4.46.2
+      '@rollup/rollup-linux-loongarch64-gnu': 4.46.2
+      '@rollup/rollup-linux-ppc64-gnu': 4.46.2
+      '@rollup/rollup-linux-riscv64-gnu': 4.46.2
+      '@rollup/rollup-linux-riscv64-musl': 4.46.2
+      '@rollup/rollup-linux-s390x-gnu': 4.46.2
+      '@rollup/rollup-linux-x64-gnu': 4.46.2
+      '@rollup/rollup-linux-x64-musl': 4.46.2
+      '@rollup/rollup-win32-arm64-msvc': 4.46.2
+      '@rollup/rollup-win32-ia32-msvc': 4.46.2
+      '@rollup/rollup-win32-x64-msvc': 4.46.2
       fsevents: 2.3.3
 
   roughjs@4.6.6:
@@ -16416,12 +16430,12 @@ snapshots:
 
   safer-buffer@2.1.2: {}
 
-  satori@0.16.1:
+  satori@0.16.2:
     dependencies:
       '@shuding/opentype.js': 1.4.0-beta.0
       css-background-parser: 0.1.0
       css-box-shadow: 1.0.0-3
-      css-gradient-parser: 0.0.16
+      css-gradient-parser: 0.0.17
       css-to-react-native: 3.2.0
       emoji-regex-xs: 2.0.1
       escape-html: 1.0.3
@@ -16525,14 +16539,14 @@ snapshots:
       '@shikijs/vscode-textmate': 10.0.2
       '@types/hast': 3.0.4
 
-  shiki@3.8.1:
+  shiki@3.9.2:
     dependencies:
-      '@shikijs/core': 3.8.1
-      '@shikijs/engine-javascript': 3.8.1
-      '@shikijs/engine-oniguruma': 3.8.1
-      '@shikijs/langs': 3.8.1
-      '@shikijs/themes': 3.8.1
-      '@shikijs/types': 3.8.1
+      '@shikijs/core': 3.9.2
+      '@shikijs/engine-javascript': 3.9.2
+      '@shikijs/engine-oniguruma': 3.9.2
+      '@shikijs/langs': 3.9.2
+      '@shikijs/themes': 3.9.2
+      '@shikijs/types': 3.9.2
       '@shikijs/vscode-textmate': 10.0.2
       '@types/hast': 3.0.4
 
@@ -16585,7 +16599,7 @@ snapshots:
     dependencies:
       command-exists: 1.2.9
       commander: 8.3.0
-      follow-redirects: 1.15.9(debug@4.4.1)
+      follow-redirects: 1.15.11(debug@4.4.1)
       js-sha3: 0.8.0
       memorystream: 0.3.1
       semver: 5.7.2
@@ -16619,16 +16633,16 @@ snapshots:
   spdx-correct@3.2.0:
     dependencies:
       spdx-expression-parse: 3.0.1
-      spdx-license-ids: 3.0.21
+      spdx-license-ids: 3.0.22
 
   spdx-exceptions@2.5.0: {}
 
   spdx-expression-parse@3.0.1:
     dependencies:
       spdx-exceptions: 2.5.0
-      spdx-license-ids: 3.0.21
+      spdx-license-ids: 3.0.22
 
-  spdx-license-ids@3.0.21: {}
+  spdx-license-ids@3.0.22: {}
 
   speech-rule-engine@4.1.2:
     dependencies:
@@ -16927,7 +16941,7 @@ snapshots:
   title@4.0.1:
     dependencies:
       arg: 5.0.2
-      chalk: 5.4.1
+      chalk: 5.5.0
       clipboardy: 4.0.0
 
   tmp@0.0.33:
@@ -16965,9 +16979,9 @@ snapshots:
 
   trough@2.2.0: {}
 
-  ts-api-utils@1.4.3(typescript@5.8.3):
+  ts-api-utils@1.4.3(typescript@5.9.2):
     dependencies:
-      typescript: 5.8.3
+      typescript: 5.9.2
 
   ts-dedent@2.2.0: {}
 
@@ -16978,7 +16992,7 @@ snapshots:
       '@ts-morph/common': 0.24.0
       code-block-writer: 13.0.3
 
-  ts-pattern@5.7.1: {}
+  ts-pattern@5.8.0: {}
 
   tsconfig-paths@3.15.0:
     dependencies:
@@ -16993,7 +17007,7 @@ snapshots:
 
   tsort@0.0.1: {}
 
-  tsup@8.5.0(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.3)(typescript@5.8.3)(yaml@2.8.0):
+  tsup@8.5.0(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.3)(typescript@5.9.2)(yaml@2.8.1):
     dependencies:
       bundle-require: 5.1.0(esbuild@0.25.8)
       cac: 6.7.14
@@ -17004,9 +17018,9 @@ snapshots:
       fix-dts-default-cjs-exports: 1.0.1
       joycon: 3.1.1
       picocolors: 1.1.1
-      postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.3)(yaml@2.8.0)
+      postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.3)(yaml@2.8.1)
       resolve-from: 5.0.0
-      rollup: 4.45.1
+      rollup: 4.46.2
       source-map: 0.8.0-beta.0
       sucrase: 3.35.0
       tinyexec: 0.3.2
@@ -17014,7 +17028,7 @@ snapshots:
       tree-kill: 1.2.2
     optionalDependencies:
       postcss: 8.5.6
-      typescript: 5.8.3
+      typescript: 5.9.2
     transitivePeerDependencies:
       - jiti
       - supports-color
@@ -17057,11 +17071,11 @@ snapshots:
 
   twoslash-protocol@0.2.12: {}
 
-  twoslash@0.2.12(typescript@5.8.3):
+  twoslash@0.2.12(typescript@5.9.2):
     dependencies:
-      '@typescript/vfs': 1.6.1(typescript@5.8.3)
+      '@typescript/vfs': 1.6.1(typescript@5.9.2)
       twoslash-protocol: 0.2.12
-      typescript: 5.8.3
+      typescript: 5.9.2
     transitivePeerDependencies:
       - supports-color
 
@@ -17118,7 +17132,7 @@ snapshots:
 
   typescript@5.5.4: {}
 
-  typescript@5.8.3: {}
+  typescript@5.9.2: {}
 
   typy@3.3.0: {}
 
@@ -17157,7 +17171,7 @@ snapshots:
       '@types/concat-stream': 2.0.3
       '@types/debug': 4.1.12
       '@types/is-empty': 1.2.3
-      '@types/node': 22.16.5
+      '@types/node': 22.17.0
       '@types/unist': 3.0.3
       concat-stream: 2.0.0
       debug: 4.4.1(supports-color@8.1.1)
@@ -17171,10 +17185,10 @@ snapshots:
       trough: 2.2.0
       unist-util-inspect: 8.1.0
       vfile: 6.0.3
-      vfile-message: 4.0.2
+      vfile-message: 4.0.3
       vfile-reporter: 8.1.1
       vfile-statistics: 3.0.0
-      yaml: 2.8.0
+      yaml: 2.8.1
     transitivePeerDependencies:
       - bluebird
       - supports-color
@@ -17367,7 +17381,7 @@ snapshots:
       '@types/unist': 3.0.3
       vfile: 6.0.3
 
-  vfile-message@4.0.2:
+  vfile-message@4.0.3:
     dependencies:
       '@types/unist': 3.0.3
       unist-util-stringify-position: 4.0.0
@@ -17379,24 +17393,24 @@ snapshots:
       supports-color: 9.4.0
       unist-util-stringify-position: 4.0.0
       vfile: 6.0.3
-      vfile-message: 4.0.2
+      vfile-message: 4.0.3
       vfile-sort: 4.0.0
       vfile-statistics: 3.0.0
 
   vfile-sort@4.0.0:
     dependencies:
       vfile: 6.0.3
-      vfile-message: 4.0.2
+      vfile-message: 4.0.3
 
   vfile-statistics@3.0.0:
     dependencies:
       vfile: 6.0.3
-      vfile-message: 4.0.2
+      vfile-message: 4.0.3
 
   vfile@6.0.3:
     dependencies:
       '@types/unist': 3.0.3
-      vfile-message: 4.0.2
+      vfile-message: 4.0.3
 
   victory-vendor@36.9.2:
     dependencies:
@@ -17415,30 +17429,30 @@ snapshots:
       d3-time: 3.1.0
       d3-timer: 3.0.1
 
-  viem@2.33.0(typescript@5.8.3)(zod@3.25.76):
+  viem@2.33.3(typescript@5.9.2)(zod@3.25.76):
     dependencies:
       '@noble/curves': 1.9.2
       '@noble/hashes': 1.8.0
       '@scure/bip32': 1.7.0
       '@scure/bip39': 1.6.0
-      abitype: 1.0.8(typescript@5.8.3)(zod@3.25.76)
+      abitype: 1.0.8(typescript@5.9.2)(zod@3.25.76)
       isows: 1.0.7(ws@8.18.2)
-      ox: 0.8.1(typescript@5.8.3)(zod@3.25.76)
+      ox: 0.8.6(typescript@5.9.2)(zod@3.25.76)
       ws: 8.18.2
     optionalDependencies:
-      typescript: 5.8.3
+      typescript: 5.9.2
     transitivePeerDependencies:
       - bufferutil
       - utf-8-validate
       - zod
 
-  vite-node@2.1.9(@types/node@22.16.5):
+  vite-node@2.1.9(@types/node@22.17.0):
     dependencies:
       cac: 6.7.14
       debug: 4.4.1(supports-color@8.1.1)
       es-module-lexer: 1.7.0
       pathe: 1.1.2
-      vite: 5.4.19(@types/node@22.16.5)
+      vite: 5.4.19(@types/node@22.17.0)
     transitivePeerDependencies:
       - '@types/node'
       - less
@@ -17450,19 +17464,19 @@ snapshots:
       - supports-color
       - terser
 
-  vite@5.4.19(@types/node@22.16.5):
+  vite@5.4.19(@types/node@22.17.0):
     dependencies:
       esbuild: 0.21.5
       postcss: 8.5.6
-      rollup: 4.45.1
+      rollup: 4.46.2
     optionalDependencies:
-      '@types/node': 22.16.5
+      '@types/node': 22.17.0
       fsevents: 2.3.3
 
-  vitest@2.1.9(@types/node@22.16.5)(jsdom@24.1.3):
+  vitest@2.1.9(@types/node@22.17.0)(jsdom@24.1.3):
     dependencies:
       '@vitest/expect': 2.1.9
-      '@vitest/mocker': 2.1.9(vite@5.4.19(@types/node@22.16.5))
+      '@vitest/mocker': 2.1.9(vite@5.4.19(@types/node@22.17.0))
       '@vitest/pretty-format': 2.1.9
       '@vitest/runner': 2.1.9
       '@vitest/snapshot': 2.1.9
@@ -17478,11 +17492,11 @@ snapshots:
       tinyexec: 0.3.2
       tinypool: 1.1.1
       tinyrainbow: 1.2.0
-      vite: 5.4.19(@types/node@22.16.5)
-      vite-node: 2.1.9(@types/node@22.16.5)
+      vite: 5.4.19(@types/node@22.17.0)
+      vite-node: 2.1.9(@types/node@22.17.0)
       why-is-node-running: 2.3.0
     optionalDependencies:
-      '@types/node': 22.16.5
+      '@types/node': 22.17.0
       jsdom: 24.1.3
     transitivePeerDependencies:
       - less
@@ -17614,30 +17628,30 @@ snapshots:
 
   word-wrap@1.2.5: {}
 
-  workerd@1.20250408.0:
+  workerd@1.20250718.0:
     optionalDependencies:
-      '@cloudflare/workerd-darwin-64': 1.20250408.0
-      '@cloudflare/workerd-darwin-arm64': 1.20250408.0
-      '@cloudflare/workerd-linux-64': 1.20250408.0
-      '@cloudflare/workerd-linux-arm64': 1.20250408.0
-      '@cloudflare/workerd-windows-64': 1.20250408.0
+      '@cloudflare/workerd-darwin-64': 1.20250718.0
+      '@cloudflare/workerd-darwin-arm64': 1.20250718.0
+      '@cloudflare/workerd-linux-64': 1.20250718.0
+      '@cloudflare/workerd-linux-arm64': 1.20250718.0
+      '@cloudflare/workerd-windows-64': 1.20250718.0
 
   workerpool@6.5.1: {}
 
-  wrangler@3.114.11(@cloudflare/workers-types@4.20250724.0):
+  wrangler@3.114.13(@cloudflare/workers-types@4.20250807.0):
     dependencies:
       '@cloudflare/kv-asset-handler': 0.3.4
-      '@cloudflare/unenv-preset': 2.0.2(unenv@2.0.0-rc.14)(workerd@1.20250408.0)
+      '@cloudflare/unenv-preset': 2.0.2(unenv@2.0.0-rc.14)(workerd@1.20250718.0)
       '@esbuild-plugins/node-globals-polyfill': 0.2.3(esbuild@0.17.19)
       '@esbuild-plugins/node-modules-polyfill': 0.2.2(esbuild@0.17.19)
       blake3-wasm: 2.1.5
       esbuild: 0.17.19
-      miniflare: 3.20250408.2
+      miniflare: 3.20250718.1
       path-to-regexp: 6.3.0
       unenv: 2.0.0-rc.14
-      workerd: 1.20250408.0
+      workerd: 1.20250718.0
     optionalDependencies:
-      '@cloudflare/workers-types': 4.20250724.0
+      '@cloudflare/workers-types': 4.20250807.0
       fsevents: 2.3.3
       sharp: 0.33.5
     transitivePeerDependencies:
@@ -17676,7 +17690,7 @@ snapshots:
 
   yaml@1.10.2: {}
 
-  yaml@2.8.0: {}
+  yaml@2.8.1: {}
 
   yargs-parser@20.2.9: {}
 
diff --git a/website/package.json b/website/package.json
index eb72f314f6f4..811e9520d4c5 100644
--- a/website/package.json
+++ b/website/package.json
@@ -19,8 +19,8 @@
   "dependencies": {
     "@docsearch/react": "^3.9.0",
     "@edgeandnode/common": "^7.0.4",
-    "@edgeandnode/gds": "^6.7.1",
-    "@edgeandnode/go": "^10.3.1",
+    "@edgeandnode/gds": "^6.7.3",
+    "@edgeandnode/go": "^10.3.4",
     "@emotion/react": "^11.14.0",
     "@graphprotocol/contracts": "^7.3.0",
     "@pinax/graph-networks-registry": "^0.7.1",
@@ -34,8 +34,8 @@
     "mdast-util-mdx-jsx": "^3.2.0",
     "mdast-util-to-hast": "^13.2.0",
     "mixpanel-browser": "^2.67.0",
-    "motion": "^12.23.9",
-    "next": "^14.2.30",
+    "motion": "^12.23.12",
+    "next": "^14.2.31",
     "next-seo": "^6.8.0",
     "next-sitemap": "^4.2.3",
     "nextra": "^3.3.1",
@@ -55,7 +55,7 @@
     "@types/lodash": "^4.17.20",
     "@types/mdast": "^4.0.4",
     "@types/mixpanel-browser": "^2.66.0",
-    "@types/node": "^22.16.5",
+    "@types/node": "^22.17.0",
     "@types/react": "^18.3.23",
     "@types/react-dom": "^18.3.7",
     "@types/vfile": "^4.0.0",
diff --git a/website/route-lockfile.txt b/website/route-lockfile.txt
index d301b3204365..a6d25ebbe09a 100644
--- a/website/route-lockfile.txt
+++ b/website/route-lockfile.txt
@@ -129,11 +129,9 @@
 /ar/supported-networks/chapel/
 /ar/supported-networks/chiliz-testnet/
 /ar/supported-networks/chiliz/
-/ar/supported-networks/clover/
 /ar/supported-networks/corn-testnet/
 /ar/supported-networks/corn/
 /ar/supported-networks/cronos/
-/ar/supported-networks/eos-evm/
 /ar/supported-networks/eos/
 /ar/supported-networks/etherlink-mainnet/
 /ar/supported-networks/etherlink-testnet/
@@ -168,7 +166,6 @@
 /ar/supported-networks/iotex/
 /ar/supported-networks/joc-testnet/
 /ar/supported-networks/joc/
-/ar/supported-networks/jungle4-evm/
 /ar/supported-networks/jungle4/
 /ar/supported-networks/kaia-testnet/
 /ar/supported-networks/kaia/
@@ -404,11 +401,9 @@
 /cs/supported-networks/chapel/
 /cs/supported-networks/chiliz-testnet/
 /cs/supported-networks/chiliz/
-/cs/supported-networks/clover/
 /cs/supported-networks/corn-testnet/
 /cs/supported-networks/corn/
 /cs/supported-networks/cronos/
-/cs/supported-networks/eos-evm/
 /cs/supported-networks/eos/
 /cs/supported-networks/etherlink-mainnet/
 /cs/supported-networks/etherlink-testnet/
@@ -443,7 +438,6 @@
 /cs/supported-networks/iotex/
 /cs/supported-networks/joc-testnet/
 /cs/supported-networks/joc/
-/cs/supported-networks/jungle4-evm/
 /cs/supported-networks/jungle4/
 /cs/supported-networks/kaia-testnet/
 /cs/supported-networks/kaia/
@@ -679,11 +673,9 @@
 /de/supported-networks/chapel/
 /de/supported-networks/chiliz-testnet/
 /de/supported-networks/chiliz/
-/de/supported-networks/clover/
 /de/supported-networks/corn-testnet/
 /de/supported-networks/corn/
 /de/supported-networks/cronos/
-/de/supported-networks/eos-evm/
 /de/supported-networks/eos/
 /de/supported-networks/etherlink-mainnet/
 /de/supported-networks/etherlink-testnet/
@@ -718,7 +710,6 @@
 /de/supported-networks/iotex/
 /de/supported-networks/joc-testnet/
 /de/supported-networks/joc/
-/de/supported-networks/jungle4-evm/
 /de/supported-networks/jungle4/
 /de/supported-networks/kaia-testnet/
 /de/supported-networks/kaia/
@@ -954,11 +945,9 @@
 /en/supported-networks/chapel/
 /en/supported-networks/chiliz-testnet/
 /en/supported-networks/chiliz/
-/en/supported-networks/clover/
 /en/supported-networks/corn-testnet/
 /en/supported-networks/corn/
 /en/supported-networks/cronos/
-/en/supported-networks/eos-evm/
 /en/supported-networks/eos/
 /en/supported-networks/etherlink-mainnet/
 /en/supported-networks/etherlink-testnet/
@@ -993,7 +982,6 @@
 /en/supported-networks/iotex/
 /en/supported-networks/joc-testnet/
 /en/supported-networks/joc/
-/en/supported-networks/jungle4-evm/
 /en/supported-networks/jungle4/
 /en/supported-networks/kaia-testnet/
 /en/supported-networks/kaia/
@@ -1229,11 +1217,9 @@
 /es/supported-networks/chapel/
 /es/supported-networks/chiliz-testnet/
 /es/supported-networks/chiliz/
-/es/supported-networks/clover/
 /es/supported-networks/corn-testnet/
 /es/supported-networks/corn/
 /es/supported-networks/cronos/
-/es/supported-networks/eos-evm/
 /es/supported-networks/eos/
 /es/supported-networks/etherlink-mainnet/
 /es/supported-networks/etherlink-testnet/
@@ -1268,7 +1254,6 @@
 /es/supported-networks/iotex/
 /es/supported-networks/joc-testnet/
 /es/supported-networks/joc/
-/es/supported-networks/jungle4-evm/
 /es/supported-networks/jungle4/
 /es/supported-networks/kaia-testnet/
 /es/supported-networks/kaia/
@@ -1504,11 +1489,9 @@
 /fr/supported-networks/chapel/
 /fr/supported-networks/chiliz-testnet/
 /fr/supported-networks/chiliz/
-/fr/supported-networks/clover/
 /fr/supported-networks/corn-testnet/
 /fr/supported-networks/corn/
 /fr/supported-networks/cronos/
-/fr/supported-networks/eos-evm/
 /fr/supported-networks/eos/
 /fr/supported-networks/etherlink-mainnet/
 /fr/supported-networks/etherlink-testnet/
@@ -1543,7 +1526,6 @@
 /fr/supported-networks/iotex/
 /fr/supported-networks/joc-testnet/
 /fr/supported-networks/joc/
-/fr/supported-networks/jungle4-evm/
 /fr/supported-networks/jungle4/
 /fr/supported-networks/kaia-testnet/
 /fr/supported-networks/kaia/
@@ -1779,11 +1761,9 @@
 /hi/supported-networks/chapel/
 /hi/supported-networks/chiliz-testnet/
 /hi/supported-networks/chiliz/
-/hi/supported-networks/clover/
 /hi/supported-networks/corn-testnet/
 /hi/supported-networks/corn/
 /hi/supported-networks/cronos/
-/hi/supported-networks/eos-evm/
 /hi/supported-networks/eos/
 /hi/supported-networks/etherlink-mainnet/
 /hi/supported-networks/etherlink-testnet/
@@ -1818,7 +1798,6 @@
 /hi/supported-networks/iotex/
 /hi/supported-networks/joc-testnet/
 /hi/supported-networks/joc/
-/hi/supported-networks/jungle4-evm/
 /hi/supported-networks/jungle4/
 /hi/supported-networks/kaia-testnet/
 /hi/supported-networks/kaia/
@@ -2054,11 +2033,9 @@
 /it/supported-networks/chapel/
 /it/supported-networks/chiliz-testnet/
 /it/supported-networks/chiliz/
-/it/supported-networks/clover/
 /it/supported-networks/corn-testnet/
 /it/supported-networks/corn/
 /it/supported-networks/cronos/
-/it/supported-networks/eos-evm/
 /it/supported-networks/eos/
 /it/supported-networks/etherlink-mainnet/
 /it/supported-networks/etherlink-testnet/
@@ -2093,7 +2070,6 @@
 /it/supported-networks/iotex/
 /it/supported-networks/joc-testnet/
 /it/supported-networks/joc/
-/it/supported-networks/jungle4-evm/
 /it/supported-networks/jungle4/
 /it/supported-networks/kaia-testnet/
 /it/supported-networks/kaia/
@@ -2329,11 +2305,9 @@
 /ja/supported-networks/chapel/
 /ja/supported-networks/chiliz-testnet/
 /ja/supported-networks/chiliz/
-/ja/supported-networks/clover/
 /ja/supported-networks/corn-testnet/
 /ja/supported-networks/corn/
 /ja/supported-networks/cronos/
-/ja/supported-networks/eos-evm/
 /ja/supported-networks/eos/
 /ja/supported-networks/etherlink-mainnet/
 /ja/supported-networks/etherlink-testnet/
@@ -2368,7 +2342,6 @@
 /ja/supported-networks/iotex/
 /ja/supported-networks/joc-testnet/
 /ja/supported-networks/joc/
-/ja/supported-networks/jungle4-evm/
 /ja/supported-networks/jungle4/
 /ja/supported-networks/kaia-testnet/
 /ja/supported-networks/kaia/
@@ -2723,11 +2696,9 @@
 /mr/supported-networks/chapel/
 /mr/supported-networks/chiliz-testnet/
 /mr/supported-networks/chiliz/
-/mr/supported-networks/clover/
 /mr/supported-networks/corn-testnet/
 /mr/supported-networks/corn/
 /mr/supported-networks/cronos/
-/mr/supported-networks/eos-evm/
 /mr/supported-networks/eos/
 /mr/supported-networks/etherlink-mainnet/
 /mr/supported-networks/etherlink-testnet/
@@ -2762,7 +2733,6 @@
 /mr/supported-networks/iotex/
 /mr/supported-networks/joc-testnet/
 /mr/supported-networks/joc/
-/mr/supported-networks/jungle4-evm/
 /mr/supported-networks/jungle4/
 /mr/supported-networks/kaia-testnet/
 /mr/supported-networks/kaia/
@@ -3236,11 +3206,9 @@
 /pt/supported-networks/chapel/
 /pt/supported-networks/chiliz-testnet/
 /pt/supported-networks/chiliz/
-/pt/supported-networks/clover/
 /pt/supported-networks/corn-testnet/
 /pt/supported-networks/corn/
 /pt/supported-networks/cronos/
-/pt/supported-networks/eos-evm/
 /pt/supported-networks/eos/
 /pt/supported-networks/etherlink-mainnet/
 /pt/supported-networks/etherlink-testnet/
@@ -3275,7 +3243,6 @@
 /pt/supported-networks/iotex/
 /pt/supported-networks/joc-testnet/
 /pt/supported-networks/joc/
-/pt/supported-networks/jungle4-evm/
 /pt/supported-networks/jungle4/
 /pt/supported-networks/kaia-testnet/
 /pt/supported-networks/kaia/
@@ -3630,11 +3597,9 @@
 /ru/supported-networks/chapel/
 /ru/supported-networks/chiliz-testnet/
 /ru/supported-networks/chiliz/
-/ru/supported-networks/clover/
 /ru/supported-networks/corn-testnet/
 /ru/supported-networks/corn/
 /ru/supported-networks/cronos/
-/ru/supported-networks/eos-evm/
 /ru/supported-networks/eos/
 /ru/supported-networks/etherlink-mainnet/
 /ru/supported-networks/etherlink-testnet/
@@ -3669,7 +3634,6 @@
 /ru/supported-networks/iotex/
 /ru/supported-networks/joc-testnet/
 /ru/supported-networks/joc/
-/ru/supported-networks/jungle4-evm/
 /ru/supported-networks/jungle4/
 /ru/supported-networks/kaia-testnet/
 /ru/supported-networks/kaia/
@@ -3905,11 +3869,9 @@
 /sv/supported-networks/chapel/
 /sv/supported-networks/chiliz-testnet/
 /sv/supported-networks/chiliz/
-/sv/supported-networks/clover/
 /sv/supported-networks/corn-testnet/
 /sv/supported-networks/corn/
 /sv/supported-networks/cronos/
-/sv/supported-networks/eos-evm/
 /sv/supported-networks/eos/
 /sv/supported-networks/etherlink-mainnet/
 /sv/supported-networks/etherlink-testnet/
@@ -3944,7 +3906,6 @@
 /sv/supported-networks/iotex/
 /sv/supported-networks/joc-testnet/
 /sv/supported-networks/joc/
-/sv/supported-networks/jungle4-evm/
 /sv/supported-networks/jungle4/
 /sv/supported-networks/kaia-testnet/
 /sv/supported-networks/kaia/
@@ -4180,11 +4141,9 @@
 /tr/supported-networks/chapel/
 /tr/supported-networks/chiliz-testnet/
 /tr/supported-networks/chiliz/
-/tr/supported-networks/clover/
 /tr/supported-networks/corn-testnet/
 /tr/supported-networks/corn/
 /tr/supported-networks/cronos/
-/tr/supported-networks/eos-evm/
 /tr/supported-networks/eos/
 /tr/supported-networks/etherlink-mainnet/
 /tr/supported-networks/etherlink-testnet/
@@ -4219,7 +4178,6 @@
 /tr/supported-networks/iotex/
 /tr/supported-networks/joc-testnet/
 /tr/supported-networks/joc/
-/tr/supported-networks/jungle4-evm/
 /tr/supported-networks/jungle4/
 /tr/supported-networks/kaia-testnet/
 /tr/supported-networks/kaia/
@@ -4574,11 +4532,9 @@
 /ur/supported-networks/chapel/
 /ur/supported-networks/chiliz-testnet/
 /ur/supported-networks/chiliz/
-/ur/supported-networks/clover/
 /ur/supported-networks/corn-testnet/
 /ur/supported-networks/corn/
 /ur/supported-networks/cronos/
-/ur/supported-networks/eos-evm/
 /ur/supported-networks/eos/
 /ur/supported-networks/etherlink-mainnet/
 /ur/supported-networks/etherlink-testnet/
@@ -4613,7 +4569,6 @@
 /ur/supported-networks/iotex/
 /ur/supported-networks/joc-testnet/
 /ur/supported-networks/joc/
-/ur/supported-networks/jungle4-evm/
 /ur/supported-networks/jungle4/
 /ur/supported-networks/kaia-testnet/
 /ur/supported-networks/kaia/
@@ -4966,16 +4921,61 @@
 /zh/supported-networks/chapel/
 /zh/supported-networks/chiliz-testnet/
 /zh/supported-networks/chiliz/
-/zh/supported-networks/clover/
 /zh/supported-networks/corn-testnet/
 /zh/supported-networks/corn/
 /zh/supported-networks/cronos/
-/zh/supported-networks/eos-evm/
 /zh/supported-networks/eos/
+/zh/supported-networks/etherlink-mainnet/
+/zh/supported-networks/etherlink-testnet/
+/zh/supported-networks/expchain-testnet/
+/zh/supported-networks/fantom-testnet/
+/zh/supported-networks/fantom/
+/zh/supported-networks/fraxtal/
 /zh/supported-networks/fuji/
-/zh/supported-networks/jungle4-evm/
+/zh/supported-networks/fuse-testnet/
+/zh/supported-networks/fuse/
+/zh/supported-networks/gnosis-chiado-cl/
+/zh/supported-networks/gnosis-chiado/
+/zh/supported-networks/gnosis-cl/
+/zh/supported-networks/gnosis/
+/zh/supported-networks/gravity-mainnet/
+/zh/supported-networks/gravity-testnet/
+/zh/supported-networks/harmony/
+/zh/supported-networks/hashkeychain-sepolia/
+/zh/supported-networks/hashkeychain/
+/zh/supported-networks/hemi-sepolia/
+/zh/supported-networks/hemi/
+/zh/supported-networks/holesky-cl/
+/zh/supported-networks/holesky/
+/zh/supported-networks/hoodi-cl/
+/zh/supported-networks/hoodi/
+/zh/supported-networks/injective-evm-testnet/
+/zh/supported-networks/injective-mainnet/
+/zh/supported-networks/injective-testnet/
+/zh/supported-networks/ink-sepolia/
+/zh/supported-networks/ink/
+/zh/supported-networks/iotex-testnet/
+/zh/supported-networks/iotex/
+/zh/supported-networks/joc-testnet/
+/zh/supported-networks/joc/
 /zh/supported-networks/jungle4/
+/zh/supported-networks/kaia-testnet/
+/zh/supported-networks/kaia/
+/zh/supported-networks/katana-tatara/
+/zh/supported-networks/katana/
 /zh/supported-networks/kylin/
+/zh/supported-networks/lens-testnet/
+/zh/supported-networks/lens/
+/zh/supported-networks/linea-sepolia/
+/zh/supported-networks/linea/
+/zh/supported-networks/litecoin/
+/zh/supported-networks/lumia/
+/zh/supported-networks/mainnet-cl/
+/zh/supported-networks/mainnet/
+/zh/supported-networks/manta/
+/zh/supported-networks/mantra-testnet/
+/zh/supported-networks/sepolia-cl/
+/zh/supported-networks/sepolia/
 /zh/token-api/evm/get-balances-evm-by-address/
 /zh/token-api/evm/get-historical-balances-evm-by-address/
 /zh/token-api/evm/get-holders-evm-by-contract/
diff --git a/website/src/layout/templates/openApi/aside.tsx b/website/src/layout/templates/openApi/aside.tsx
index 7ecc04aba19c..67077300ccc1 100644
--- a/website/src/layout/templates/openApi/aside.tsx
+++ b/website/src/layout/templates/openApi/aside.tsx
@@ -196,7 +196,7 @@ function TemplateOpenApiAsideContent(props: ComponentProps<'div'>) {
       : []),
     ...operation.potentialResponses.map((potentialResponse) => {
       const label = `${potentialResponse.status} ${t('global.openApi.responses.example')}`
-      const exampleResponseText = JSON.stringify(potentialResponse.example, null, 2)
+      const exampleResponseText = JSON.stringify(potentialResponse.example, undefined, 2) || ''
       return {
         label,
         content: (
diff --git a/website/src/openApi/index.ts b/website/src/openApi/index.ts
index 313aa37d7817..447d54719a4f 100644
--- a/website/src/openApi/index.ts
+++ b/website/src/openApi/index.ts
@@ -83,6 +83,12 @@ function isParameterObject(
   return !('$ref' in value) && 'in' in value
 }
 
+function isExampleObject(
+  value: OpenAPIV3_1.ExampleObject | OpenAPIV3_1.ReferenceObject,
+): value is OpenAPIV3_1.ExampleObject {
+  return 'value' in value
+}
+
 function transformParameter(parameter: OpenAPIV3_1.ParameterObject): ApiParameter {
   const schema = (
     parameter.content ? Object.values(parameter.content)[0]?.schema : parameter.schema
@@ -158,11 +164,13 @@ export function getApi(apiId: ApiId, passedDocument?: OpenAPIV3_1.Document): Api
         if (!('content' in response) || typeof response.content !== 'object') continue
         const content = response.content['application/json'] ?? response.content['text/plain']
         if (!content || '$ref' in content || !content.schema || '$ref' in content.schema) continue
+        const exampleObject = content.examples ? Object.values(content.examples)[0] : undefined
+        const example = exampleObject && isExampleObject(exampleObject) ? exampleObject.value : content.example
         potentialResponses.push({
           ...response,
           status,
           schema: content.schema,
-          example: content.example,
+          example,
         })
       }
 
diff --git a/website/src/openApi/tokenApi.json b/website/src/openApi/tokenApi.json
index a2dac810fa48..75c0f2f7a70c 100644
--- a/website/src/openApi/tokenApi.json
+++ b/website/src/openApi/tokenApi.json
@@ -3,7 +3,7 @@
   "info": {
     "title": "Token API (Beta)",
     "description": "Power your apps & AI agents with real-time token data.",
-    "version": "2.3.3+6e8d0f0 (2025-07-24)"
+    "version": "2.4.4+39f504c (2025-08-07)"
   },
   "servers": [
     {
@@ -41,13 +41,13 @@
                             "type": "string"
                           },
                           "token_standard": {
+                            "default": "",
                             "type": "string",
                             "enum": [
                               "",
                               "ERC721",
                               "ERC1155"
-                            ],
-                            "default": ""
+                            ]
                           },
                           "contract": {
                             "type": "string"
@@ -71,6 +71,9 @@
                             "type": "string"
                           },
                           "network_id": {
+                            "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
+                            "example": "mainnet",
+                            "default": "mainnet",
                             "type": "string",
                             "enum": [
                               "arbitrum-one",
@@ -81,10 +84,7 @@
                               "matic",
                               "optimism",
                               "unichain"
-                            ],
-                            "default": "mainnet",
-                            "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
-                            "example": "mainnet"
+                            ]
                           }
                         },
                         "required": [
@@ -93,7 +93,8 @@
                           "contract",
                           "owner",
                           "network_id"
-                        ]
+                        ],
+                        "additionalProperties": false
                       }
                     },
                     "statistics": {
@@ -108,25 +109,81 @@
                         "bytes_read": {
                           "type": "number"
                         }
-                      }
+                      },
+                      "additionalProperties": false
+                    },
+                    "pagination": {
+                      "type": "object",
+                      "properties": {
+                        "previous_page": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        },
+                        "current_page": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        },
+                        "next_page": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        },
+                        "total_pages": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        }
+                      },
+                      "required": [
+                        "previous_page",
+                        "current_page",
+                        "next_page",
+                        "total_pages"
+                      ],
+                      "additionalProperties": false
+                    },
+                    "results": {
+                      "type": "number"
+                    },
+                    "total_results": {
+                      "type": "number"
+                    },
+                    "request_time": {
+                      "type": "string"
+                    },
+                    "duration_ms": {
+                      "type": "number"
                     }
                   },
                   "required": [
-                    "data"
-                  ]
-                },
-                "example": {
-                  "data": [
-                    {
-                      "token_id": "12",
-                      "token_standard": "ERC721",
-                      "contract": "0x000386e3f7559d9b6a2f5c46b4ad1a9587d59dc3",
-                      "owner": "0xd8da6bf26964af9d7eed9e03e53415d37aa96045",
-                      "symbol": "BANC",
-                      "name": "Bored Ape Nike Club",
-                      "network_id": "mainnet"
-                    }
-                  ]
+                    "data",
+                    "statistics",
+                    "pagination",
+                    "results",
+                    "total_results",
+                    "request_time",
+                    "duration_ms"
+                  ],
+                  "additionalProperties": false
+                },
+                "examples": {
+                  "example": {
+                    "value": {
+                      "data": [
+                        {
+                          "token_id": "12",
+                          "token_standard": "ERC721",
+                          "contract": "0x000386e3f7559d9b6a2f5c46b4ad1a9587d59dc3",
+                          "owner": "0xd8da6bf26964af9d7eed9e03e53415d37aa96045",
+                          "symbol": "BANC",
+                          "name": "Bored Ape Nike Club",
+                          "network_id": "mainnet"
+                        }
+                      ]
+                    }
+                  }
                 }
               }
             }
@@ -184,12 +241,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 400,
-                  "code": "bad_query_input",
-                  "message": "Invalid query parameter provided"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 400,
+                      "code": "bad_query_input",
+                      "message": "Invalid query parameter provided"
+                    }
+                  }
                 }
               }
             }
@@ -247,12 +309,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 401,
-                  "code": "unauthorized",
-                  "message": "Authentication required"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 401,
+                      "code": "unauthorized",
+                      "message": "Authentication required"
+                    }
+                  }
                 }
               }
             }
@@ -310,12 +377,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 403,
-                  "code": "forbidden",
-                  "message": "Access denied"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 403,
+                      "code": "forbidden",
+                      "message": "Access denied"
+                    }
+                  }
                 }
               }
             }
@@ -373,12 +445,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 404,
-                  "code": "not_found_data",
-                  "message": "Resource not found"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 404,
+                      "code": "not_found_data",
+                      "message": "Resource not found"
+                    }
+                  }
                 }
               }
             }
@@ -423,12 +500,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 500,
-                  "code": "internal_server_error",
-                  "message": "An unexpected error occurred"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 500,
+                      "code": "internal_server_error",
+                      "message": "An unexpected error occurred"
+                    }
+                  }
                 }
               }
             }
@@ -443,9 +525,10 @@
             "in": "path",
             "name": "address",
             "schema": {
-              "type": "string",
               "description": "Filter by address",
-              "example": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
+              "example": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
+              "default": "",
+              "type": "string"
             },
             "required": true
           },
@@ -453,6 +536,9 @@
             "in": "query",
             "name": "network_id",
             "schema": {
+              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
+              "example": "mainnet",
+              "default": "mainnet",
               "type": "string",
               "enum": [
                 "arbitrum-one",
@@ -463,58 +549,61 @@
                 "matic",
                 "optimism",
                 "unichain"
-              ],
-              "default": "mainnet",
-              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
-              "example": "mainnet"
-            }
+              ]
+            },
+            "required": true
           },
           {
             "in": "query",
             "name": "token_standard",
             "schema": {
+              "default": "",
               "type": "string",
               "enum": [
                 "",
                 "ERC721",
                 "ERC1155"
-              ],
-              "default": ""
-            }
+              ]
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "contract",
             "schema": {
-              "type": "string",
               "description": "Filter by address",
-              "default": ""
-            }
+              "default": "",
+              "type": "string"
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "limit",
             "schema": {
+              "description": "The maximum number of items returned in a single request.",
+              "default": 10,
               "type": "integer",
               "minimum": 1,
-              "maximum": 1000,
-              "default": 10,
-              "description": "The maximum number of items returned in a single request."
-            }
+              "maximum": 1000
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "page",
             "schema": {
+              "description": "The page number of the results to return.",
+              "default": 1,
               "type": "integer",
               "minimum": 1,
-              "default": 1,
-              "description": "The page number of the results to return."
-            }
+              "maximum": 767465558638
+            },
+            "required": false
           }
         ],
-        "summary": "NFT Ownerships",
-        "description": "Provides NFT Ownerships for Account.",
+        "summary": "NFT Ownerships by Address",
+        "description": "Returns NFT tokens owned by a wallet address with metadata and ownership information.",
         "security": [
           {
             "bearerAuth": []
@@ -538,15 +627,17 @@
                         "type": "object",
                         "properties": {
                           "contract": {
-                            "type": "string",
-                            "description": "Filter by address"
+                            "description": "Filter by address",
+                            "default": "",
+                            "type": "string"
                           },
                           "contract_creation": {
                             "type": "string"
                           },
                           "contract_creator": {
-                            "type": "string",
-                            "description": "Filter by address"
+                            "description": "Filter by address",
+                            "default": "",
+                            "type": "string"
                           },
                           "name": {
                             "type": "string"
@@ -567,6 +658,9 @@
                             "type": "number"
                           },
                           "network_id": {
+                            "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
+                            "example": "mainnet",
+                            "default": "mainnet",
                             "type": "string",
                             "enum": [
                               "arbitrum-one",
@@ -577,10 +671,7 @@
                               "matic",
                               "optimism",
                               "unichain"
-                            ],
-                            "default": "mainnet",
-                            "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
-                            "example": "mainnet"
+                            ]
                           }
                         },
                         "required": [
@@ -594,7 +685,8 @@
                           "total_unique_supply",
                           "total_transfers",
                           "network_id"
-                        ]
+                        ],
+                        "additionalProperties": false
                       }
                     },
                     "statistics": {
@@ -609,29 +701,85 @@
                         "bytes_read": {
                           "type": "number"
                         }
-                      }
+                      },
+                      "additionalProperties": false
+                    },
+                    "pagination": {
+                      "type": "object",
+                      "properties": {
+                        "previous_page": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        },
+                        "current_page": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        },
+                        "next_page": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        },
+                        "total_pages": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        }
+                      },
+                      "required": [
+                        "previous_page",
+                        "current_page",
+                        "next_page",
+                        "total_pages"
+                      ],
+                      "additionalProperties": false
+                    },
+                    "results": {
+                      "type": "number"
+                    },
+                    "total_results": {
+                      "type": "number"
+                    },
+                    "request_time": {
+                      "type": "string"
+                    },
+                    "duration_ms": {
+                      "type": "number"
                     }
                   },
                   "required": [
-                    "data"
-                  ]
-                },
-                "example": {
-                  "data": [
-                    {
-                      "token_standard": "ERC721",
-                      "contract": "0xbd3531da5cf5857e7cfaa92426877b022e612cf8",
-                      "contract_creation": "2021-07-22 12:26:01",
-                      "contract_creator": "0xe9da256a28630efdc637bfd4c65f0887be1aeda8",
-                      "name": "PudgyPenguins",
-                      "symbol": "PPG",
-                      "owners": 12258,
-                      "total_supply": 8888,
-                      "total_unique_supply": 8888,
-                      "total_transfers": 185128,
-                      "network_id": "mainnet"
-                    }
-                  ]
+                    "data",
+                    "statistics",
+                    "pagination",
+                    "results",
+                    "total_results",
+                    "request_time",
+                    "duration_ms"
+                  ],
+                  "additionalProperties": false
+                },
+                "examples": {
+                  "example": {
+                    "value": {
+                      "data": [
+                        {
+                          "token_standard": "ERC721",
+                          "contract": "0xbd3531da5cf5857e7cfaa92426877b022e612cf8",
+                          "contract_creation": "2021-07-22 12:26:01",
+                          "contract_creator": "0xe9da256a28630efdc637bfd4c65f0887be1aeda8",
+                          "name": "PudgyPenguins",
+                          "symbol": "PPG",
+                          "owners": 12258,
+                          "total_supply": 8888,
+                          "total_unique_supply": 8888,
+                          "total_transfers": 185128,
+                          "network_id": "mainnet"
+                        }
+                      ]
+                    }
+                  }
                 }
               }
             }
@@ -689,12 +837,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 400,
-                  "code": "bad_query_input",
-                  "message": "Invalid query parameter provided"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 400,
+                      "code": "bad_query_input",
+                      "message": "Invalid query parameter provided"
+                    }
+                  }
                 }
               }
             }
@@ -752,12 +905,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 401,
-                  "code": "unauthorized",
-                  "message": "Authentication required"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 401,
+                      "code": "unauthorized",
+                      "message": "Authentication required"
+                    }
+                  }
                 }
               }
             }
@@ -815,12 +973,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 403,
-                  "code": "forbidden",
-                  "message": "Access denied"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 403,
+                      "code": "forbidden",
+                      "message": "Access denied"
+                    }
+                  }
                 }
               }
             }
@@ -878,12 +1041,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 404,
-                  "code": "not_found_data",
-                  "message": "Resource not found"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 404,
+                      "code": "not_found_data",
+                      "message": "Resource not found"
+                    }
+                  }
                 }
               }
             }
@@ -928,12 +1096,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 500,
-                  "code": "internal_server_error",
-                  "message": "An unexpected error occurred"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 500,
+                      "code": "internal_server_error",
+                      "message": "An unexpected error occurred"
+                    }
+                  }
                 }
               }
             }
@@ -948,9 +1121,10 @@
             "in": "path",
             "name": "contract",
             "schema": {
-              "type": "string",
               "description": "Filter by NFT contract address",
-              "example": "0xbd3531da5cf5857e7cfaa92426877b022e612cf8"
+              "example": "0xbd3531da5cf5857e7cfaa92426877b022e612cf8",
+              "default": "",
+              "type": "string"
             },
             "required": true
           },
@@ -958,6 +1132,9 @@
             "in": "query",
             "name": "network_id",
             "schema": {
+              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
+              "example": "mainnet",
+              "default": "mainnet",
               "type": "string",
               "enum": [
                 "arbitrum-one",
@@ -968,15 +1145,13 @@
                 "matic",
                 "optimism",
                 "unichain"
-              ],
-              "default": "mainnet",
-              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
-              "example": "mainnet"
-            }
+              ]
+            },
+            "required": true
           }
         ],
         "summary": "NFT Collection",
-        "description": "Provides single NFT collection metadata, total supply, owners & total transfers.",
+        "description": "Returns NFT collection metadata, supply statistics, owner count, and transfer history.",
         "security": [
           {
             "bearerAuth": []
@@ -1003,13 +1178,13 @@
                             "type": "string"
                           },
                           "token_standard": {
+                            "default": "",
                             "type": "string",
                             "enum": [
                               "",
                               "ERC721",
                               "ERC1155"
-                            ],
-                            "default": ""
+                            ]
                           },
                           "contract": {
                             "type": "string"
@@ -1047,10 +1222,14 @@
                               "required": [
                                 "trait_type",
                                 "value"
-                              ]
+                              ],
+                              "additionalProperties": false
                             }
                           },
                           "network_id": {
+                            "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
+                            "example": "mainnet",
+                            "default": "mainnet",
                             "type": "string",
                             "enum": [
                               "arbitrum-one",
@@ -1061,10 +1240,7 @@
                               "matic",
                               "optimism",
                               "unichain"
-                            ],
-                            "default": "mainnet",
-                            "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
-                            "example": "mainnet"
+                            ]
                           }
                         },
                         "required": [
@@ -1073,7 +1249,8 @@
                           "contract",
                           "owner",
                           "network_id"
-                        ]
+                        ],
+                        "additionalProperties": false
                       }
                     },
                     "statistics": {
@@ -1088,49 +1265,105 @@
                         "bytes_read": {
                           "type": "number"
                         }
-                      }
+                      },
+                      "additionalProperties": false
+                    },
+                    "pagination": {
+                      "type": "object",
+                      "properties": {
+                        "previous_page": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        },
+                        "current_page": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        },
+                        "next_page": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        },
+                        "total_pages": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        }
+                      },
+                      "required": [
+                        "previous_page",
+                        "current_page",
+                        "next_page",
+                        "total_pages"
+                      ],
+                      "additionalProperties": false
+                    },
+                    "results": {
+                      "type": "number"
+                    },
+                    "total_results": {
+                      "type": "number"
+                    },
+                    "request_time": {
+                      "type": "string"
+                    },
+                    "duration_ms": {
+                      "type": "number"
                     }
                   },
                   "required": [
-                    "data"
-                  ]
-                },
-                "example": {
-                  "data": [
-                    {
-                      "token_standard": "ERC721",
-                      "contract": "0xbd3531da5cf5857e7cfaa92426877b022e612cf8",
-                      "token_id": "5712",
-                      "owner": "0x9379557bdf32f5ee296ca7b360ccb8dcb9543d8e",
-                      "uri": "ipfs://bafybeibc5sgo2plmjkq2tzmhrn54bk3crhnc23zd2msg4ea7a4pxrkgfna/5712",
-                      "name": "Pudgy Penguin #5712",
-                      "description": "A collection 8888 Cute Chubby Pudgy Penquins sliding around on the freezing ETH blockchain.",
-                      "image": "ipfs://QmNf1UsmdGaMbpatQ6toXSkzDpizaGmC9zfunCyoz1enD5/penguin/5712.png",
-                      "attributes": [
-                        {
-                          "trait_type": "Background",
-                          "value": "Blue"
-                        },
-                        {
-                          "trait_type": "Skin",
-                          "value": "Olive Green"
-                        },
-                        {
-                          "trait_type": "Body",
-                          "value": "Turtleneck Green"
-                        },
-                        {
-                          "trait_type": "Face",
-                          "value": "Scar"
-                        },
-                        {
-                          "trait_type": "Head",
-                          "value": "Party Hat"
+                    "data",
+                    "statistics",
+                    "pagination",
+                    "results",
+                    "total_results",
+                    "request_time",
+                    "duration_ms"
+                  ],
+                  "additionalProperties": false
+                },
+                "examples": {
+                  "example": {
+                    "value": {
+                      "data": [
+                        {
+                          "token_standard": "ERC721",
+                          "contract": "0xbd3531da5cf5857e7cfaa92426877b022e612cf8",
+                          "token_id": "5712",
+                          "owner": "0x9379557bdf32f5ee296ca7b360ccb8dcb9543d8e",
+                          "uri": "ipfs://bafybeibc5sgo2plmjkq2tzmhrn54bk3crhnc23zd2msg4ea7a4pxrkgfna/5712",
+                          "name": "Pudgy Penguin #5712",
+                          "description": "A collection 8888 Cute Chubby Pudgy Penquins sliding around on the freezing ETH blockchain.",
+                          "image": "ipfs://QmNf1UsmdGaMbpatQ6toXSkzDpizaGmC9zfunCyoz1enD5/penguin/5712.png",
+                          "attributes": [
+                            {
+                              "trait_type": "Background",
+                              "value": "Blue"
+                            },
+                            {
+                              "trait_type": "Skin",
+                              "value": "Olive Green"
+                            },
+                            {
+                              "trait_type": "Body",
+                              "value": "Turtleneck Green"
+                            },
+                            {
+                              "trait_type": "Face",
+                              "value": "Scar"
+                            },
+                            {
+                              "trait_type": "Head",
+                              "value": "Party Hat"
+                            }
+                          ],
+                          "network_id": "mainnet"
                         }
-                      ],
-                      "network_id": "mainnet"
+                      ]
                     }
-                  ]
+                  }
                 }
               }
             }
@@ -1188,12 +1421,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 400,
-                  "code": "bad_query_input",
-                  "message": "Invalid query parameter provided"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 400,
+                      "code": "bad_query_input",
+                      "message": "Invalid query parameter provided"
+                    }
+                  }
                 }
               }
             }
@@ -1251,12 +1489,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 401,
-                  "code": "unauthorized",
-                  "message": "Authentication required"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 401,
+                      "code": "unauthorized",
+                      "message": "Authentication required"
+                    }
+                  }
                 }
               }
             }
@@ -1314,12 +1557,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 403,
-                  "code": "forbidden",
-                  "message": "Access denied"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 403,
+                      "code": "forbidden",
+                      "message": "Access denied"
+                    }
+                  }
                 }
               }
             }
@@ -1377,12 +1625,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 404,
-                  "code": "not_found_data",
-                  "message": "Resource not found"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 404,
+                      "code": "not_found_data",
+                      "message": "Resource not found"
+                    }
+                  }
                 }
               }
             }
@@ -1427,12 +1680,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 500,
-                  "code": "internal_server_error",
-                  "message": "An unexpected error occurred"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 500,
+                      "code": "internal_server_error",
+                      "message": "An unexpected error occurred"
+                    }
+                  }
                 }
               }
             }
@@ -1447,9 +1705,10 @@
             "in": "path",
             "name": "token_id",
             "schema": {
-              "type": "string",
               "description": "NFT token ID",
-              "example": "5712"
+              "example": "5712",
+              "default": "",
+              "type": "string"
             },
             "required": true
           },
@@ -1457,9 +1716,10 @@
             "in": "path",
             "name": "contract",
             "schema": {
-              "type": "string",
               "description": "Filter by NFT contract address",
-              "example": "0xbd3531da5cf5857e7cfaa92426877b022e612cf8"
+              "example": "0xbd3531da5cf5857e7cfaa92426877b022e612cf8",
+              "default": "",
+              "type": "string"
             },
             "required": true
           },
@@ -1467,6 +1727,9 @@
             "in": "query",
             "name": "network_id",
             "schema": {
+              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
+              "example": "mainnet",
+              "default": "mainnet",
               "type": "string",
               "enum": [
                 "arbitrum-one",
@@ -1477,15 +1740,13 @@
                 "matic",
                 "optimism",
                 "unichain"
-              ],
-              "default": "mainnet",
-              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
-              "example": "mainnet"
-            }
+              ]
+            },
+            "required": true
           }
         ],
         "summary": "NFT Items",
-        "description": "Provides single NFT token metadata, ownership & traits.",
+        "description": "Returns NFT token metadata, attributes, current owner, and media URIs.",
         "security": [
           {
             "bearerAuth": []
@@ -1567,7 +1828,8 @@
                           "to",
                           "token_id",
                           "amount"
-                        ]
+                        ],
+                        "additionalProperties": false
                       }
                     },
                     "statistics": {
@@ -1582,32 +1844,88 @@
                         "bytes_read": {
                           "type": "number"
                         }
-                      }
+                      },
+                      "additionalProperties": false
+                    },
+                    "pagination": {
+                      "type": "object",
+                      "properties": {
+                        "previous_page": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        },
+                        "current_page": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        },
+                        "next_page": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        },
+                        "total_pages": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        }
+                      },
+                      "required": [
+                        "previous_page",
+                        "current_page",
+                        "next_page",
+                        "total_pages"
+                      ],
+                      "additionalProperties": false
+                    },
+                    "results": {
+                      "type": "number"
+                    },
+                    "total_results": {
+                      "type": "number"
+                    },
+                    "request_time": {
+                      "type": "string"
+                    },
+                    "duration_ms": {
+                      "type": "number"
                     }
                   },
                   "required": [
-                    "data"
-                  ]
-                },
-                "example": {
-                  "data": [
-                    {
-                      "@type": "TRANSFER",
-                      "block_num": 22588725,
-                      "block_hash": "0xe8d2f48bb5d7619fd0c180d6d54e7ca94c5f4eddfcfa7a82d4da55b310dd462a",
-                      "timestamp": "2025-05-29 13:32:23",
-                      "tx_hash": "0xa7b3302a5fe4a60e4ece22dfb2d98604daef5dc610fa328d8d0a7a92f3efc7b9",
-                      "token_standard": "ERC721",
-                      "contract": "0xbd3531da5cf5857e7cfaa92426877b022e612cf8",
-                      "name": "PudgyPenguins",
-                      "symbol": "PPG",
-                      "from": "0x2afec1c9af7a5494503f8acfd5c1fdd7d2c57480",
-                      "to": "0x29469395eaf6f95920e59f858042f0e28d98a20b",
-                      "token_id": "500",
-                      "amount": 1,
-                      "transfer_type": "Single"
-                    }
-                  ]
+                    "data",
+                    "statistics",
+                    "pagination",
+                    "results",
+                    "total_results",
+                    "request_time",
+                    "duration_ms"
+                  ],
+                  "additionalProperties": false
+                },
+                "examples": {
+                  "example": {
+                    "value": {
+                      "data": [
+                        {
+                          "@type": "TRANSFER",
+                          "block_num": 22588725,
+                          "block_hash": "0xe8d2f48bb5d7619fd0c180d6d54e7ca94c5f4eddfcfa7a82d4da55b310dd462a",
+                          "timestamp": "2025-05-29 13:32:23",
+                          "tx_hash": "0xa7b3302a5fe4a60e4ece22dfb2d98604daef5dc610fa328d8d0a7a92f3efc7b9",
+                          "token_standard": "ERC721",
+                          "contract": "0xbd3531da5cf5857e7cfaa92426877b022e612cf8",
+                          "name": "PudgyPenguins",
+                          "symbol": "PPG",
+                          "from": "0x2afec1c9af7a5494503f8acfd5c1fdd7d2c57480",
+                          "to": "0x29469395eaf6f95920e59f858042f0e28d98a20b",
+                          "token_id": "500",
+                          "amount": 1,
+                          "transfer_type": "Single"
+                        }
+                      ]
+                    }
+                  }
                 }
               }
             }
@@ -1665,12 +1983,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 400,
-                  "code": "bad_query_input",
-                  "message": "Invalid query parameter provided"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 400,
+                      "code": "bad_query_input",
+                      "message": "Invalid query parameter provided"
+                    }
+                  }
                 }
               }
             }
@@ -1728,12 +2051,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 401,
-                  "code": "unauthorized",
-                  "message": "Authentication required"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 401,
+                      "code": "unauthorized",
+                      "message": "Authentication required"
+                    }
+                  }
                 }
               }
             }
@@ -1791,12 +2119,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 403,
-                  "code": "forbidden",
-                  "message": "Access denied"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 403,
+                      "code": "forbidden",
+                      "message": "Access denied"
+                    }
+                  }
                 }
               }
             }
@@ -1854,12 +2187,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 404,
-                  "code": "not_found_data",
-                  "message": "Resource not found"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 404,
+                      "code": "not_found_data",
+                      "message": "Resource not found"
+                    }
+                  }
                 }
               }
             }
@@ -1904,12 +2242,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 500,
-                  "code": "internal_server_error",
-                  "message": "An unexpected error occurred"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 500,
+                      "code": "internal_server_error",
+                      "message": "An unexpected error occurred"
+                    }
+                  }
                 }
               }
             }
@@ -1924,6 +2267,9 @@
             "in": "query",
             "name": "network_id",
             "schema": {
+              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
+              "example": "mainnet",
+              "default": "mainnet",
               "type": "string",
               "enum": [
                 "arbitrum-one",
@@ -1934,20 +2280,18 @@
                 "matic",
                 "optimism",
                 "unichain"
-              ],
-              "default": "mainnet",
-              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
-              "example": "mainnet"
+              ]
             },
-            "required": false
+            "required": true
           },
           {
             "in": "query",
             "name": "contract",
             "schema": {
-              "type": "string",
               "description": "Filter by NFT contract address",
-              "example": "0xbd3531da5cf5857e7cfaa92426877b022e612cf8"
+              "example": "0xbd3531da5cf5857e7cfaa92426877b022e612cf8",
+              "default": "",
+              "type": "string"
             },
             "required": true
           },
@@ -1955,9 +2299,9 @@
             "in": "query",
             "name": "anyAddress",
             "schema": {
-              "type": "string",
               "description": "Filter by address",
-              "default": ""
+              "default": "",
+              "type": "string"
             },
             "required": false
           },
@@ -1965,9 +2309,9 @@
             "in": "query",
             "name": "fromAddress",
             "schema": {
-              "type": "string",
               "description": "Filter by address",
-              "default": ""
+              "default": "",
+              "type": "string"
             },
             "required": false
           },
@@ -1975,9 +2319,9 @@
             "in": "query",
             "name": "toAddress",
             "schema": {
-              "type": "string",
               "description": "Filter by address",
-              "default": ""
+              "default": "",
+              "type": "string"
             },
             "required": false
           },
@@ -1985,9 +2329,11 @@
             "in": "query",
             "name": "startTime",
             "schema": {
-              "type": "integer",
+              "default": 0,
               "description": "UNIX timestamp in seconds.",
-              "default": 0
+              "type": "integer",
+              "minimum": -9007199254740991,
+              "maximum": 9007199254740991
             },
             "required": false
           },
@@ -1995,9 +2341,11 @@
             "in": "query",
             "name": "endTime",
             "schema": {
-              "type": "integer",
+              "default": 9999999999,
               "description": "UNIX timestamp in seconds.",
-              "default": 9999999999
+              "type": "integer",
+              "minimum": -9007199254740991,
+              "maximum": 9007199254740991
             },
             "required": false
           },
@@ -2005,12 +2353,12 @@
             "in": "query",
             "name": "orderBy",
             "schema": {
+              "description": "The field by which to order the results.",
+              "default": "timestamp",
               "type": "string",
               "enum": [
                 "timestamp"
-              ],
-              "default": "timestamp",
-              "description": "The field by which to order the results."
+              ]
             },
             "required": false
           },
@@ -2018,13 +2366,13 @@
             "in": "query",
             "name": "orderDirection",
             "schema": {
+              "description": "The order in which to return the results: Ascending (asc) or Descending (desc).",
+              "default": "desc",
               "type": "string",
               "enum": [
                 "asc",
                 "desc"
-              ],
-              "default": "desc",
-              "description": "The order in which to return the results: Ascending (asc) or Descending (desc)."
+              ]
             },
             "required": false
           },
@@ -2032,11 +2380,11 @@
             "in": "query",
             "name": "limit",
             "schema": {
+              "description": "The maximum number of items returned in a single request.",
+              "default": 10,
               "type": "integer",
               "minimum": 1,
-              "maximum": 1000,
-              "default": 10,
-              "description": "The maximum number of items returned in a single request."
+              "maximum": 1000
             },
             "required": false
           },
@@ -2044,16 +2392,17 @@
             "in": "query",
             "name": "page",
             "schema": {
+              "description": "The page number of the results to return.",
+              "default": 1,
               "type": "integer",
               "minimum": 1,
-              "default": 1,
-              "description": "The page number of the results to return."
+              "maximum": 767465558638
             },
             "required": false
           }
         ],
         "summary": "NFT Activities",
-        "description": "Provides NFT Activities (ex: transfers, mints & burns).",
+        "description": "Returns NFT transfer events including mints, burns, and ownership changes.",
         "security": [
           {
             "bearerAuth": []
@@ -2080,22 +2429,26 @@
                             "type": "string"
                           },
                           "address": {
-                            "type": "string",
-                            "description": "Filter by address"
+                            "description": "Filter by address",
+                            "default": "",
+                            "type": "string"
                           },
                           "quantity": {
-                            "type": "number",
-                            "description": "Number of tokens held by this address"
+                            "description": "Number of tokens held by this address",
+                            "type": "number"
                           },
                           "unique_tokens": {
-                            "type": "number",
-                            "description": "Number of unique token IDs held by this address"
+                            "description": "Number of unique token IDs held by this address",
+                            "type": "number"
                           },
                           "percentage": {
-                            "type": "number",
-                            "description": "Percentage of total supply held by this address"
+                            "description": "Percentage of total supply held by this address",
+                            "type": "number"
                           },
                           "network_id": {
+                            "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
+                            "example": "mainnet",
+                            "default": "mainnet",
                             "type": "string",
                             "enum": [
                               "arbitrum-one",
@@ -2106,10 +2459,7 @@
                               "matic",
                               "optimism",
                               "unichain"
-                            ],
-                            "default": "mainnet",
-                            "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
-                            "example": "mainnet"
+                            ]
                           }
                         },
                         "required": [
@@ -2119,7 +2469,8 @@
                           "unique_tokens",
                           "percentage",
                           "network_id"
-                        ]
+                        ],
+                        "additionalProperties": false
                       }
                     },
                     "statistics": {
@@ -2134,24 +2485,80 @@
                         "bytes_read": {
                           "type": "number"
                         }
-                      }
+                      },
+                      "additionalProperties": false
+                    },
+                    "pagination": {
+                      "type": "object",
+                      "properties": {
+                        "previous_page": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        },
+                        "current_page": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        },
+                        "next_page": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        },
+                        "total_pages": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        }
+                      },
+                      "required": [
+                        "previous_page",
+                        "current_page",
+                        "next_page",
+                        "total_pages"
+                      ],
+                      "additionalProperties": false
+                    },
+                    "results": {
+                      "type": "number"
+                    },
+                    "total_results": {
+                      "type": "number"
+                    },
+                    "request_time": {
+                      "type": "string"
+                    },
+                    "duration_ms": {
+                      "type": "number"
                     }
                   },
                   "required": [
-                    "data"
-                  ]
-                },
-                "example": {
-                  "data": [
-                    {
-                      "token_standard": "ERC721",
-                      "address": "0x29469395eaf6f95920e59f858042f0e28d98a20b",
-                      "quantity": 534,
-                      "unique_tokens": 534,
-                      "percentage": 0.06008100810081008,
-                      "network_id": "mainnet"
-                    }
-                  ]
+                    "data",
+                    "statistics",
+                    "pagination",
+                    "results",
+                    "total_results",
+                    "request_time",
+                    "duration_ms"
+                  ],
+                  "additionalProperties": false
+                },
+                "examples": {
+                  "example": {
+                    "value": {
+                      "data": [
+                        {
+                          "token_standard": "ERC721",
+                          "address": "0x29469395eaf6f95920e59f858042f0e28d98a20b",
+                          "quantity": 534,
+                          "unique_tokens": 534,
+                          "percentage": 0.06008100810081008,
+                          "network_id": "mainnet"
+                        }
+                      ]
+                    }
+                  }
                 }
               }
             }
@@ -2209,12 +2616,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 400,
-                  "code": "bad_query_input",
-                  "message": "Invalid query parameter provided"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 400,
+                      "code": "bad_query_input",
+                      "message": "Invalid query parameter provided"
+                    }
+                  }
                 }
               }
             }
@@ -2272,12 +2684,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 401,
-                  "code": "unauthorized",
-                  "message": "Authentication required"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 401,
+                      "code": "unauthorized",
+                      "message": "Authentication required"
+                    }
+                  }
                 }
               }
             }
@@ -2335,12 +2752,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 403,
-                  "code": "forbidden",
-                  "message": "Access denied"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 403,
+                      "code": "forbidden",
+                      "message": "Access denied"
+                    }
+                  }
                 }
               }
             }
@@ -2398,12 +2820,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 404,
-                  "code": "not_found_data",
-                  "message": "Resource not found"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 404,
+                      "code": "not_found_data",
+                      "message": "Resource not found"
+                    }
+                  }
                 }
               }
             }
@@ -2448,12 +2875,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 500,
-                  "code": "internal_server_error",
-                  "message": "An unexpected error occurred"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 500,
+                      "code": "internal_server_error",
+                      "message": "An unexpected error occurred"
+                    }
+                  }
                 }
               }
             }
@@ -2468,9 +2900,10 @@
             "in": "path",
             "name": "contract",
             "schema": {
-              "type": "string",
               "description": "Filter by NFT contract address",
-              "example": "0xbd3531da5cf5857e7cfaa92426877b022e612cf8"
+              "example": "0xbd3531da5cf5857e7cfaa92426877b022e612cf8",
+              "default": "",
+              "type": "string"
             },
             "required": true
           },
@@ -2478,6 +2911,9 @@
             "in": "query",
             "name": "network_id",
             "schema": {
+              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
+              "example": "mainnet",
+              "default": "mainnet",
               "type": "string",
               "enum": [
                 "arbitrum-one",
@@ -2488,15 +2924,13 @@
                 "matic",
                 "optimism",
                 "unichain"
-              ],
-              "default": "mainnet",
-              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
-              "example": "mainnet"
-            }
+              ]
+            },
+            "required": true
           }
         ],
         "summary": "NFT Holders",
-        "description": "Provides NFT holders per contract.",
+        "description": "Returns wallet addresses holding NFT collection tokens with quantity and percentage distribution.",
         "security": [
           {
             "bearerAuth": []
@@ -2565,7 +2999,8 @@
                           "recipient",
                           "sale_amount",
                           "sale_currency"
-                        ]
+                        ],
+                        "additionalProperties": false
                       }
                     },
                     "statistics": {
@@ -2580,35 +3015,91 @@
                         "bytes_read": {
                           "type": "number"
                         }
-                      }
-                    }
-                  },
-                  "required": [
-                    "data"
-                  ]
-                },
-                "example": {
-                  "data": [
-                    {
-                      "timestamp": "2025-05-29 07:52:47",
-                      "block_num": 22587041,
-                      "tx_hash": "0x6755df1514a066150357d454254e1ce6c1e043f873193125dc98d4c4417861ff",
-                      "token": "0xbd3531da5cf5857e7cfaa92426877b022e612cf8",
-                      "token_id": "6398",
-                      "symbol": "PPG",
-                      "name": "PudgyPenguins",
-                      "offerer": "0xf671888173bf2fe28d71fba3106cf36d10f470fe",
-                      "recipient": "0x43bf952762b087195b8ea70cf81cb6715b6bf5a9",
-                      "sale_amount": 10.0667234,
-                      "sale_currency": "ETH"
-                    }
-                  ]
-                }
-              }
-            }
-          },
-          "400": {
-            "description": "Client side error",
+                      },
+                      "additionalProperties": false
+                    },
+                    "pagination": {
+                      "type": "object",
+                      "properties": {
+                        "previous_page": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        },
+                        "current_page": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        },
+                        "next_page": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        },
+                        "total_pages": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        }
+                      },
+                      "required": [
+                        "previous_page",
+                        "current_page",
+                        "next_page",
+                        "total_pages"
+                      ],
+                      "additionalProperties": false
+                    },
+                    "results": {
+                      "type": "number"
+                    },
+                    "total_results": {
+                      "type": "number"
+                    },
+                    "request_time": {
+                      "type": "string"
+                    },
+                    "duration_ms": {
+                      "type": "number"
+                    }
+                  },
+                  "required": [
+                    "data",
+                    "statistics",
+                    "pagination",
+                    "results",
+                    "total_results",
+                    "request_time",
+                    "duration_ms"
+                  ],
+                  "additionalProperties": false
+                },
+                "examples": {
+                  "example": {
+                    "value": {
+                      "data": [
+                        {
+                          "timestamp": "2025-05-29 07:52:47",
+                          "block_num": 22587041,
+                          "tx_hash": "0x6755df1514a066150357d454254e1ce6c1e043f873193125dc98d4c4417861ff",
+                          "token": "0xbd3531da5cf5857e7cfaa92426877b022e612cf8",
+                          "token_id": "6398",
+                          "symbol": "PPG",
+                          "name": "PudgyPenguins",
+                          "offerer": "0xf671888173bf2fe28d71fba3106cf36d10f470fe",
+                          "recipient": "0x43bf952762b087195b8ea70cf81cb6715b6bf5a9",
+                          "sale_amount": 10.0667234,
+                          "sale_currency": "ETH"
+                        }
+                      ]
+                    }
+                  }
+                }
+              }
+            }
+          },
+          "400": {
+            "description": "Client side error",
             "content": {
               "application/json": {
                 "schema": {
@@ -2660,12 +3151,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 400,
-                  "code": "bad_query_input",
-                  "message": "Invalid query parameter provided"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 400,
+                      "code": "bad_query_input",
+                      "message": "Invalid query parameter provided"
+                    }
+                  }
                 }
               }
             }
@@ -2723,12 +3219,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 401,
-                  "code": "unauthorized",
-                  "message": "Authentication required"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 401,
+                      "code": "unauthorized",
+                      "message": "Authentication required"
+                    }
+                  }
                 }
               }
             }
@@ -2786,12 +3287,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 403,
-                  "code": "forbidden",
-                  "message": "Access denied"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 403,
+                      "code": "forbidden",
+                      "message": "Access denied"
+                    }
+                  }
                 }
               }
             }
@@ -2849,12 +3355,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 404,
-                  "code": "not_found_data",
-                  "message": "Resource not found"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 404,
+                      "code": "not_found_data",
+                      "message": "Resource not found"
+                    }
+                  }
                 }
               }
             }
@@ -2899,12 +3410,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 500,
-                  "code": "internal_server_error",
-                  "message": "An unexpected error occurred"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 500,
+                      "code": "internal_server_error",
+                      "message": "An unexpected error occurred"
+                    }
+                  }
                 }
               }
             }
@@ -2919,6 +3435,9 @@
             "in": "query",
             "name": "network_id",
             "schema": {
+              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
+              "example": "mainnet",
+              "default": "mainnet",
               "type": "string",
               "enum": [
                 "arbitrum-one",
@@ -2929,20 +3448,18 @@
                 "matic",
                 "optimism",
                 "unichain"
-              ],
-              "default": "mainnet",
-              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
-              "example": "mainnet"
+              ]
             },
-            "required": false
+            "required": true
           },
           {
             "in": "query",
             "name": "contract",
             "schema": {
-              "type": "string",
               "description": "Filter by NFT contract address",
-              "example": "0xbd3531da5cf5857e7cfaa92426877b022e612cf8"
+              "example": "0xbd3531da5cf5857e7cfaa92426877b022e612cf8",
+              "default": "",
+              "type": "string"
             },
             "required": true
           },
@@ -2950,10 +3467,10 @@
             "in": "query",
             "name": "token_id",
             "schema": {
-              "type": "string",
               "description": "NFT token ID",
               "example": "5712",
-              "default": ""
+              "default": "",
+              "type": "string"
             },
             "required": false
           },
@@ -2961,9 +3478,9 @@
             "in": "query",
             "name": "anyAddress",
             "schema": {
-              "type": "string",
               "description": "Filter by address",
-              "default": ""
+              "default": "",
+              "type": "string"
             },
             "required": false
           },
@@ -2971,9 +3488,9 @@
             "in": "query",
             "name": "offererAddress",
             "schema": {
-              "type": "string",
               "description": "Filter by address",
-              "default": ""
+              "default": "",
+              "type": "string"
             },
             "required": false
           },
@@ -2981,9 +3498,9 @@
             "in": "query",
             "name": "recipientAddress",
             "schema": {
-              "type": "string",
               "description": "Filter by address",
-              "default": ""
+              "default": "",
+              "type": "string"
             },
             "required": false
           },
@@ -2991,9 +3508,11 @@
             "in": "query",
             "name": "startTime",
             "schema": {
-              "type": "integer",
+              "default": 0,
               "description": "UNIX timestamp in seconds.",
-              "default": 0
+              "type": "integer",
+              "minimum": -9007199254740991,
+              "maximum": 9007199254740991
             },
             "required": false
           },
@@ -3001,9 +3520,11 @@
             "in": "query",
             "name": "endTime",
             "schema": {
-              "type": "integer",
+              "default": 9999999999,
               "description": "UNIX timestamp in seconds.",
-              "default": 9999999999
+              "type": "integer",
+              "minimum": -9007199254740991,
+              "maximum": 9007199254740991
             },
             "required": false
           },
@@ -3011,12 +3532,12 @@
             "in": "query",
             "name": "orderBy",
             "schema": {
+              "description": "The field by which to order the results.",
+              "default": "timestamp",
               "type": "string",
               "enum": [
                 "timestamp"
-              ],
-              "default": "timestamp",
-              "description": "The field by which to order the results."
+              ]
             },
             "required": false
           },
@@ -3024,13 +3545,13 @@
             "in": "query",
             "name": "orderDirection",
             "schema": {
+              "description": "The order in which to return the results: Ascending (asc) or Descending (desc).",
+              "default": "desc",
               "type": "string",
               "enum": [
                 "asc",
                 "desc"
-              ],
-              "default": "desc",
-              "description": "The order in which to return the results: Ascending (asc) or Descending (desc)."
+              ]
             },
             "required": false
           },
@@ -3038,11 +3559,11 @@
             "in": "query",
             "name": "limit",
             "schema": {
+              "description": "The maximum number of items returned in a single request.",
+              "default": 10,
               "type": "integer",
               "minimum": 1,
-              "maximum": 1000,
-              "default": 10,
-              "description": "The maximum number of items returned in a single request."
+              "maximum": 1000
             },
             "required": false
           },
@@ -3050,16 +3571,17 @@
             "in": "query",
             "name": "page",
             "schema": {
+              "description": "The page number of the results to return.",
+              "default": 1,
               "type": "integer",
               "minimum": 1,
-              "default": 1,
-              "description": "The page number of the results to return."
+              "maximum": 767465558638
             },
             "required": false
           }
         ],
         "summary": "NFT Sales",
-        "description": "Provides latest NFT marketplace sales.",
+        "description": "Returns NFT marketplace sales with price, buyer, seller, and transaction data.",
         "security": [
           {
             "bearerAuth": []
@@ -3089,8 +3611,9 @@
                             "type": "string"
                           },
                           "contract": {
-                            "type": "string",
-                            "description": "Filter by address"
+                            "description": "Filter by address",
+                            "default": "",
+                            "type": "string"
                           },
                           "amount": {
                             "type": "string"
@@ -3099,6 +3622,9 @@
                             "type": "number"
                           },
                           "network_id": {
+                            "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
+                            "example": "mainnet",
+                            "default": "mainnet",
                             "type": "string",
                             "enum": [
                               "arbitrum-one",
@@ -3109,10 +3635,7 @@
                               "matic",
                               "optimism",
                               "unichain"
-                            ],
-                            "default": "mainnet",
-                            "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
-                            "example": "mainnet"
+                            ]
                           },
                           "name": {
                             "type": "string"
@@ -3140,7 +3663,8 @@
                           "amount",
                           "value",
                           "network_id"
-                        ]
+                        ],
+                        "additionalProperties": false
                       }
                     },
                     "statistics": {
@@ -3155,27 +3679,83 @@
                         "bytes_read": {
                           "type": "number"
                         }
-                      }
+                      },
+                      "additionalProperties": false
+                    },
+                    "pagination": {
+                      "type": "object",
+                      "properties": {
+                        "previous_page": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        },
+                        "current_page": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        },
+                        "next_page": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        },
+                        "total_pages": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        }
+                      },
+                      "required": [
+                        "previous_page",
+                        "current_page",
+                        "next_page",
+                        "total_pages"
+                      ],
+                      "additionalProperties": false
+                    },
+                    "results": {
+                      "type": "number"
+                    },
+                    "total_results": {
+                      "type": "number"
+                    },
+                    "request_time": {
+                      "type": "string"
+                    },
+                    "duration_ms": {
+                      "type": "number"
                     }
                   },
                   "required": [
-                    "data"
-                  ]
-                },
-                "example": {
-                  "data": [
-                    {
-                      "block_num": 22968741,
-                      "last_balance_update": "2025-07-21 16:24:47",
-                      "contract": "0x6993301413c1867aafe2caaa692ec53a0118f06e",
-                      "amount": "7917650000000000000000",
-                      "value": 7917.65,
-                      "name": "BOLD",
-                      "symbol": "BOLD",
-                      "decimals": 18,
-                      "network_id": "mainnet"
-                    }
-                  ]
+                    "data",
+                    "statistics",
+                    "pagination",
+                    "results",
+                    "total_results",
+                    "request_time",
+                    "duration_ms"
+                  ],
+                  "additionalProperties": false
+                },
+                "examples": {
+                  "example": {
+                    "value": {
+                      "data": [
+                        {
+                          "block_num": 22968741,
+                          "last_balance_update": "2025-07-21 16:24:47",
+                          "contract": "0x6993301413c1867aafe2caaa692ec53a0118f06e",
+                          "amount": "7917650000000000000000",
+                          "value": 7917.65,
+                          "name": "BOLD",
+                          "symbol": "BOLD",
+                          "decimals": 18,
+                          "network_id": "mainnet"
+                        }
+                      ]
+                    }
+                  }
                 }
               }
             }
@@ -3233,12 +3813,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 400,
-                  "code": "bad_query_input",
-                  "message": "Invalid query parameter provided"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 400,
+                      "code": "bad_query_input",
+                      "message": "Invalid query parameter provided"
+                    }
+                  }
                 }
               }
             }
@@ -3296,12 +3881,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 401,
-                  "code": "unauthorized",
-                  "message": "Authentication required"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 401,
+                      "code": "unauthorized",
+                      "message": "Authentication required"
+                    }
+                  }
                 }
               }
             }
@@ -3359,12 +3949,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 403,
-                  "code": "forbidden",
-                  "message": "Access denied"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 403,
+                      "code": "forbidden",
+                      "message": "Access denied"
+                    }
+                  }
                 }
               }
             }
@@ -3422,12 +4017,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 404,
-                  "code": "not_found_data",
-                  "message": "Resource not found"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 404,
+                      "code": "not_found_data",
+                      "message": "Resource not found"
+                    }
+                  }
                 }
               }
             }
@@ -3472,12 +4072,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 500,
-                  "code": "internal_server_error",
-                  "message": "An unexpected error occurred"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 500,
+                      "code": "internal_server_error",
+                      "message": "An unexpected error occurred"
+                    }
+                  }
                 }
               }
             }
@@ -3492,9 +4097,10 @@
             "in": "path",
             "name": "address",
             "schema": {
-              "type": "string",
               "description": "Filter by address",
-              "example": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
+              "example": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
+              "default": "",
+              "type": "string"
             },
             "required": true
           },
@@ -3502,6 +4108,9 @@
             "in": "query",
             "name": "network_id",
             "schema": {
+              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
+              "example": "mainnet",
+              "default": "mainnet",
               "type": "string",
               "enum": [
                 "arbitrum-one",
@@ -3512,45 +4121,47 @@
                 "matic",
                 "optimism",
                 "unichain"
-              ],
-              "default": "mainnet",
-              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
-              "example": "mainnet"
-            }
+              ]
+            },
+            "required": true
           },
           {
             "in": "query",
             "name": "contract",
             "schema": {
-              "type": "string",
               "description": "Filter by address",
-              "default": ""
-            }
+              "default": "",
+              "type": "string"
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "limit",
             "schema": {
+              "description": "The maximum number of items returned in a single request.",
+              "default": 10,
               "type": "integer",
               "minimum": 1,
-              "maximum": 1000,
-              "default": 10,
-              "description": "The maximum number of items returned in a single request."
-            }
+              "maximum": 1000
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "page",
             "schema": {
+              "description": "The page number of the results to return.",
+              "default": 1,
               "type": "integer",
               "minimum": 1,
-              "default": 1,
-              "description": "The page number of the results to return."
-            }
+              "maximum": 767465558638
+            },
+            "required": false
           }
         ],
-        "summary": "Balances by Address",
-        "description": "Provides latest ERC-20 & Native balances by wallet address.",
+        "summary": "Token Balances",
+        "description": "Returns ERC-20 and native token balances for a wallet address with USD values.",
         "security": [
           {
             "bearerAuth": []
@@ -3583,16 +4194,19 @@
                             "type": "number"
                           },
                           "program_id": {
-                            "type": "string",
-                            "description": "Filter by address"
+                            "description": "Filter by address",
+                            "default": "",
+                            "type": "string"
                           },
                           "token_account": {
-                            "type": "string",
-                            "description": "Filter by address"
+                            "description": "Filter by address",
+                            "default": "",
+                            "type": "string"
                           },
                           "mint": {
-                            "type": "string",
-                            "description": "Filter by address"
+                            "description": "Filter by address",
+                            "default": "",
+                            "type": "string"
                           },
                           "amount": {
                             "type": "string"
@@ -3604,13 +4218,13 @@
                             "type": "number"
                           },
                           "network_id": {
+                            "description": "The Graph Network ID for SVM networks https://thegraph.com/networks",
+                            "example": "solana",
+                            "default": "solana",
                             "type": "string",
                             "enum": [
                               "solana"
-                            ],
-                            "default": "solana",
-                            "description": "The Graph Network ID for SVM networks https://thegraph.com/networks",
-                            "example": "solana"
+                            ]
                           }
                         },
                         "required": [
@@ -3624,7 +4238,8 @@
                           "value",
                           "decimals",
                           "network_id"
-                        ]
+                        ],
+                        "additionalProperties": false
                       }
                     },
                     "statistics": {
@@ -3639,28 +4254,84 @@
                         "bytes_read": {
                           "type": "number"
                         }
-                      }
+                      },
+                      "additionalProperties": false
+                    },
+                    "pagination": {
+                      "type": "object",
+                      "properties": {
+                        "previous_page": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        },
+                        "current_page": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        },
+                        "next_page": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        },
+                        "total_pages": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        }
+                      },
+                      "required": [
+                        "previous_page",
+                        "current_page",
+                        "next_page",
+                        "total_pages"
+                      ],
+                      "additionalProperties": false
+                    },
+                    "results": {
+                      "type": "number"
+                    },
+                    "total_results": {
+                      "type": "number"
+                    },
+                    "request_time": {
+                      "type": "string"
+                    },
+                    "duration_ms": {
+                      "type": "number"
                     }
                   },
                   "required": [
-                    "data"
-                  ]
-                },
-                "example": {
-                  "data": [
-                    {
-                      "block_num": 352305913,
-                      "datetime": "2025-07-10 05:14:43",
-                      "timestamp": 1752124483,
-                      "program_id": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
-                      "token_account": "4ct7br2vTPzfdmY3S5HLtTxcGSBfn6pnw98hsS6v359A",
-                      "mint": "So11111111111111111111111111111111111111112",
-                      "amount": "30697740781078",
-                      "value": 30697.740781078,
-                      "decimals": 9,
-                      "network_id": "solana"
-                    }
-                  ]
+                    "data",
+                    "statistics",
+                    "pagination",
+                    "results",
+                    "total_results",
+                    "request_time",
+                    "duration_ms"
+                  ],
+                  "additionalProperties": false
+                },
+                "examples": {
+                  "example": {
+                    "value": {
+                      "data": [
+                        {
+                          "block_num": 352305913,
+                          "datetime": "2025-07-10 05:14:43",
+                          "timestamp": 1752124483,
+                          "program_id": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
+                          "token_account": "4ct7br2vTPzfdmY3S5HLtTxcGSBfn6pnw98hsS6v359A",
+                          "mint": "So11111111111111111111111111111111111111112",
+                          "amount": "30697740781078",
+                          "value": 30697.740781078,
+                          "decimals": 9,
+                          "network_id": "solana"
+                        }
+                      ]
+                    }
+                  }
                 }
               }
             }
@@ -3718,12 +4389,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 400,
-                  "code": "bad_query_input",
-                  "message": "Invalid query parameter provided"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 400,
+                      "code": "bad_query_input",
+                      "message": "Invalid query parameter provided"
+                    }
+                  }
                 }
               }
             }
@@ -3781,12 +4457,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 401,
-                  "code": "unauthorized",
-                  "message": "Authentication required"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 401,
+                      "code": "unauthorized",
+                      "message": "Authentication required"
+                    }
+                  }
                 }
               }
             }
@@ -3844,12 +4525,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 403,
-                  "code": "forbidden",
-                  "message": "Access denied"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 403,
+                      "code": "forbidden",
+                      "message": "Access denied"
+                    }
+                  }
                 }
               }
             }
@@ -3907,12 +4593,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 404,
-                  "code": "not_found_data",
-                  "message": "Resource not found"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 404,
+                      "code": "not_found_data",
+                      "message": "Resource not found"
+                    }
+                  }
                 }
               }
             }
@@ -3957,12 +4648,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 500,
-                  "code": "internal_server_error",
-                  "message": "An unexpected error occurred"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 500,
+                      "code": "internal_server_error",
+                      "message": "An unexpected error occurred"
+                    }
+                  }
                 }
               }
             }
@@ -3975,74 +4671,81 @@
         "parameters": [
           {
             "in": "query",
-            "name": "token_account",
+            "name": "network_id",
             "schema": {
+              "description": "The Graph Network ID for SVM networks https://thegraph.com/networks",
+              "example": "solana",
+              "default": "solana",
               "type": "string",
+              "enum": [
+                "solana"
+              ]
+            },
+            "required": true
+          },
+          {
+            "in": "query",
+            "name": "token_account",
+            "schema": {
               "description": "Filter by token account address",
-              "default": ""
-            }
+              "default": "",
+              "type": "string"
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "mint",
             "schema": {
-              "type": "string",
               "description": "Filter by mint address",
               "example": "So11111111111111111111111111111111111111112",
-              "default": ""
-            }
+              "default": "",
+              "type": "string"
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "program_id",
             "schema": {
+              "description": "Filter by program ID",
+              "default": "",
               "type": "string",
               "enum": [
                 "",
                 "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb",
                 "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
-              ],
-              "description": "Filter by program ID",
-              "default": ""
-            }
-          },
-          {
-            "in": "query",
-            "name": "network_id",
-            "schema": {
-              "type": "string",
-              "enum": [
-                "solana"
-              ],
-              "default": "solana",
-              "description": "The Graph Network ID for SVM networks https://thegraph.com/networks",
-              "example": "solana"
-            }
+              ]
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "limit",
             "schema": {
+              "description": "The maximum number of items returned in a single request.",
+              "default": 10,
               "type": "integer",
               "minimum": 1,
-              "maximum": 1000,
-              "default": 10,
-              "description": "The maximum number of items returned in a single request."
-            }
+              "maximum": 1000
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "page",
             "schema": {
+              "description": "The page number of the results to return.",
+              "default": 1,
               "type": "integer",
               "minimum": 1,
-              "default": 1,
-              "description": "The page number of the results to return."
-            }
+              "maximum": 767465558638
+            },
+            "required": false
           }
         ],
-        "summary": "Balances",
-        "description": "Provides Solana SPL tokens balances by token account address.",
+        "summary": "Solana Balances",
+        "description": "Returns SPL token balances for Solana token accounts with mint and program data.",
         "security": [
           {
             "bearerAuth": []
@@ -4069,7 +4772,9 @@
                             "type": "number"
                           },
                           "datetime": {
-                            "type": "string"
+                            "type": "string",
+                            "format": "date-time",
+                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
                           },
                           "timestamp": {
                             "type": "number"
@@ -4078,16 +4783,19 @@
                             "type": "string"
                           },
                           "contract": {
-                            "type": "string",
-                            "description": "Filter by address"
+                            "description": "Filter by address",
+                            "default": "",
+                            "type": "string"
                           },
                           "from": {
-                            "type": "string",
-                            "description": "Filter by address"
+                            "description": "Filter by address",
+                            "default": "",
+                            "type": "string"
                           },
                           "to": {
-                            "type": "string",
-                            "description": "Filter by address"
+                            "description": "Filter by address",
+                            "default": "",
+                            "type": "string"
                           },
                           "amount": {
                             "type": "string"
@@ -4096,6 +4804,9 @@
                             "type": "number"
                           },
                           "network_id": {
+                            "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
+                            "example": "mainnet",
+                            "default": "mainnet",
                             "type": "string",
                             "enum": [
                               "arbitrum-one",
@@ -4106,10 +4817,7 @@
                               "matic",
                               "optimism",
                               "unichain"
-                            ],
-                            "default": "mainnet",
-                            "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
-                            "example": "mainnet"
+                            ]
                           },
                           "symbol": {
                             "type": "string"
@@ -4129,7 +4837,8 @@
                           "amount",
                           "value",
                           "network_id"
-                        ]
+                        ],
+                        "additionalProperties": false
                       }
                     },
                     "statistics": {
@@ -4144,28 +4853,84 @@
                         "bytes_read": {
                           "type": "number"
                         }
-                      }
+                      },
+                      "additionalProperties": false
+                    },
+                    "pagination": {
+                      "type": "object",
+                      "properties": {
+                        "previous_page": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        },
+                        "current_page": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        },
+                        "next_page": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        },
+                        "total_pages": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        }
+                      },
+                      "required": [
+                        "previous_page",
+                        "current_page",
+                        "next_page",
+                        "total_pages"
+                      ],
+                      "additionalProperties": false
+                    },
+                    "results": {
+                      "type": "number"
+                    },
+                    "total_results": {
+                      "type": "number"
+                    },
+                    "request_time": {
+                      "type": "string"
+                    },
+                    "duration_ms": {
+                      "type": "number"
                     }
                   },
                   "required": [
-                    "data"
-                  ]
-                },
-                "example": {
-                  "data": [
-                    {
-                      "block_num": 22349873,
-                      "datetime": "2025-04-26 01:18:47",
-                      "timestamp": 1745630327,
-                      "transaction_id": "0xd80ed9764b0bc25b982668f66ec1cf46dbe27bcd01dffcd487f43c92f72b2a84",
-                      "contract": "0xc944e90c64b2c07662a292be6244bdf05cda44a7",
-                      "from": "0x7d2fbc0eefdb8721b27d216469e79ef288910a83",
-                      "to": "0xa5eb953d1ce9d6a99893cbf6d83d8abcca9b8804",
-                      "decimals": 18,
-                      "symbol": "GRT",
-                      "value": 11068.393958659999
-                    }
-                  ]
+                    "data",
+                    "statistics",
+                    "pagination",
+                    "results",
+                    "total_results",
+                    "request_time",
+                    "duration_ms"
+                  ],
+                  "additionalProperties": false
+                },
+                "examples": {
+                  "example": {
+                    "value": {
+                      "data": [
+                        {
+                          "block_num": 22349873,
+                          "datetime": "2025-04-26 01:18:47",
+                          "timestamp": 1745630327,
+                          "transaction_id": "0xd80ed9764b0bc25b982668f66ec1cf46dbe27bcd01dffcd487f43c92f72b2a84",
+                          "contract": "0xc944e90c64b2c07662a292be6244bdf05cda44a7",
+                          "from": "0x7d2fbc0eefdb8721b27d216469e79ef288910a83",
+                          "to": "0xa5eb953d1ce9d6a99893cbf6d83d8abcca9b8804",
+                          "decimals": 18,
+                          "symbol": "GRT",
+                          "value": 11068.393958659999
+                        }
+                      ]
+                    }
+                  }
                 }
               }
             }
@@ -4223,12 +4988,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 400,
-                  "code": "bad_query_input",
-                  "message": "Invalid query parameter provided"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 400,
+                      "code": "bad_query_input",
+                      "message": "Invalid query parameter provided"
+                    }
+                  }
                 }
               }
             }
@@ -4286,12 +5056,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 401,
-                  "code": "unauthorized",
-                  "message": "Authentication required"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 401,
+                      "code": "unauthorized",
+                      "message": "Authentication required"
+                    }
+                  }
                 }
               }
             }
@@ -4349,12 +5124,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 403,
-                  "code": "forbidden",
-                  "message": "Access denied"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 403,
+                      "code": "forbidden",
+                      "message": "Access denied"
+                    }
+                  }
                 }
               }
             }
@@ -4412,12 +5192,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 404,
-                  "code": "not_found_data",
-                  "message": "Resource not found"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 404,
+                      "code": "not_found_data",
+                      "message": "Resource not found"
+                    }
+                  }
                 }
               }
             }
@@ -4462,12 +5247,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 500,
-                  "code": "internal_server_error",
-                  "message": "An unexpected error occurred"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 500,
+                      "code": "internal_server_error",
+                      "message": "An unexpected error occurred"
+                    }
+                  }
                 }
               }
             }
@@ -4482,6 +5272,9 @@
             "in": "query",
             "name": "network_id",
             "schema": {
+              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
+              "example": "mainnet",
+              "default": "mainnet",
               "type": "string",
               "enum": [
                 "arbitrum-one",
@@ -4492,116 +5285,129 @@
                 "matic",
                 "optimism",
                 "unichain"
-              ],
-              "default": "mainnet",
-              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
-              "example": "mainnet"
-            }
+              ]
+            },
+            "required": true
           },
           {
             "in": "query",
             "name": "from",
             "schema": {
-              "type": "string",
               "description": "Filter by address",
-              "default": ""
-            }
+              "default": "",
+              "type": "string"
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "to",
             "schema": {
-              "type": "string",
               "description": "Filter by address",
               "example": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
-              "default": ""
-            }
+              "default": "",
+              "type": "string"
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "contract",
             "schema": {
-              "type": "string",
               "description": "Filter by address",
-              "default": ""
-            }
+              "default": "",
+              "type": "string"
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "startTime",
             "schema": {
-              "type": "integer",
+              "default": 0,
               "description": "UNIX timestamp in seconds.",
-              "default": 0
-            }
-          },
+              "type": "integer",
+              "minimum": -9007199254740991,
+              "maximum": 9007199254740991
+            },
+            "required": false
+          },
           {
             "in": "query",
             "name": "endTime",
             "schema": {
-              "type": "integer",
+              "default": 9999999999,
               "description": "UNIX timestamp in seconds.",
-              "default": 9999999999
-            }
+              "type": "integer",
+              "minimum": -9007199254740991,
+              "maximum": 9007199254740991
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "orderBy",
             "schema": {
+              "description": "The field by which to order the results.",
+              "default": "timestamp",
               "type": "string",
               "enum": [
                 "timestamp"
-              ],
-              "default": "timestamp",
-              "description": "The field by which to order the results."
-            }
+              ]
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "orderDirection",
             "schema": {
+              "description": "The order in which to return the results: Ascending (asc) or Descending (desc).",
+              "default": "desc",
               "type": "string",
               "enum": [
                 "asc",
                 "desc"
-              ],
-              "default": "desc",
-              "description": "The order in which to return the results: Ascending (asc) or Descending (desc)."
-            }
+              ]
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "transaction_id",
             "schema": {
-              "type": "string",
               "description": "Filter by transaction",
-              "default": ""
-            }
+              "default": "",
+              "type": "string"
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "limit",
             "schema": {
+              "description": "The maximum number of items returned in a single request.",
+              "default": 10,
               "type": "integer",
               "minimum": 1,
-              "maximum": 1000,
-              "default": 10,
-              "description": "The maximum number of items returned in a single request."
-            }
+              "maximum": 1000
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "page",
             "schema": {
+              "description": "The page number of the results to return.",
+              "default": 1,
               "type": "integer",
               "minimum": 1,
-              "default": 1,
-              "description": "The page number of the results to return."
-            }
+              "maximum": 767465558638
+            },
+            "required": false
           }
         ],
-        "summary": "Transfers Events",
-        "description": "Provides ERC-20 & Native transfer events.",
+        "summary": "Token Transfers",
+        "description": "Returns ERC-20 and native token transfers with transaction and block data.",
         "security": [
           {
             "bearerAuth": []
@@ -4628,7 +5434,9 @@
                             "type": "number"
                           },
                           "datetime": {
-                            "type": "string"
+                            "type": "string",
+                            "format": "date-time",
+                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
                           },
                           "timestamp": {
                             "type": "number"
@@ -4637,24 +5445,29 @@
                             "type": "string"
                           },
                           "program_id": {
-                            "type": "string",
-                            "description": "Filter by address"
+                            "description": "Filter by address",
+                            "default": "",
+                            "type": "string"
                           },
                           "mint": {
-                            "type": "string",
-                            "description": "Filter by address"
+                            "description": "Filter by address",
+                            "default": "",
+                            "type": "string"
                           },
                           "authority": {
-                            "type": "string",
-                            "description": "Filter by address"
+                            "description": "Filter by address",
+                            "default": "",
+                            "type": "string"
                           },
                           "source": {
-                            "type": "string",
-                            "description": "Filter by address"
+                            "description": "Filter by address",
+                            "default": "",
+                            "type": "string"
                           },
                           "destination": {
-                            "type": "string",
-                            "description": "Filter by address"
+                            "description": "Filter by address",
+                            "default": "",
+                            "type": "string"
                           },
                           "amount": {
                             "type": "string"
@@ -4663,19 +5476,25 @@
                             "type": "number"
                           },
                           "decimals": {
-                            "type": [
-                              "integer",
-                              "null"
+                            "anyOf": [
+                              {
+                                "type": "integer",
+                                "minimum": -9007199254740991,
+                                "maximum": 9007199254740991
+                              },
+                              {
+                                "type": "null"
+                              }
                             ]
                           },
                           "network_id": {
+                            "description": "The Graph Network ID for SVM networks https://thegraph.com/networks",
+                            "example": "solana",
+                            "default": "solana",
                             "type": "string",
                             "enum": [
                               "solana"
-                            ],
-                            "default": "solana",
-                            "description": "The Graph Network ID for SVM networks https://thegraph.com/networks",
-                            "example": "solana"
+                            ]
                           }
                         },
                         "required": [
@@ -4692,7 +5511,8 @@
                           "value",
                           "decimals",
                           "network_id"
-                        ]
+                        ],
+                        "additionalProperties": false
                       }
                     },
                     "statistics": {
@@ -4707,31 +5527,87 @@
                         "bytes_read": {
                           "type": "number"
                         }
-                      }
+                      },
+                      "additionalProperties": false
+                    },
+                    "pagination": {
+                      "type": "object",
+                      "properties": {
+                        "previous_page": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        },
+                        "current_page": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        },
+                        "next_page": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        },
+                        "total_pages": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        }
+                      },
+                      "required": [
+                        "previous_page",
+                        "current_page",
+                        "next_page",
+                        "total_pages"
+                      ],
+                      "additionalProperties": false
+                    },
+                    "results": {
+                      "type": "number"
+                    },
+                    "total_results": {
+                      "type": "number"
+                    },
+                    "request_time": {
+                      "type": "string"
+                    },
+                    "duration_ms": {
+                      "type": "number"
                     }
                   },
                   "required": [
-                    "data"
-                  ]
-                },
-                "example": {
-                  "data": [
-                    {
-                      "block_num": 352372432,
-                      "datetime": "2025-07-10 12:32:03",
-                      "timestamp": 1752150723,
-                      "signature": "4t7ZD3Fd8i9md6CTF6SEoZ9aPkr1fhRpXXSK2DhrUe5Wcm9VFdJ9Sn4WvbhdQaetLkiq8Xm3r5YgU1ffSJaA6c2e",
-                      "program_id": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
-                      "authority": "J5kWrUKVPrtjwMVQLNgUEC9RY9Ujh8pYTN3nqWUkg1zp",
-                      "mint": "So11111111111111111111111111111111111111112",
-                      "source": "G4sbSww72omqHsC6tYe4syFtzHyBieS6MjbRWmSn1mt5",
-                      "destination": "7ds7shXvLdNzihJXrjuoYYTr8bD5c2zwRxmZrrSZXgmM",
-                      "amount": 333993128,
-                      "decimals": 9,
-                      "value": 0.333993128,
-                      "network_id": "solana"
-                    }
-                  ]
+                    "data",
+                    "statistics",
+                    "pagination",
+                    "results",
+                    "total_results",
+                    "request_time",
+                    "duration_ms"
+                  ],
+                  "additionalProperties": false
+                },
+                "examples": {
+                  "example": {
+                    "value": {
+                      "data": [
+                        {
+                          "block_num": 352372432,
+                          "datetime": "2025-07-10 12:32:03",
+                          "timestamp": 1752150723,
+                          "signature": "4t7ZD3Fd8i9md6CTF6SEoZ9aPkr1fhRpXXSK2DhrUe5Wcm9VFdJ9Sn4WvbhdQaetLkiq8Xm3r5YgU1ffSJaA6c2e",
+                          "program_id": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
+                          "authority": "J5kWrUKVPrtjwMVQLNgUEC9RY9Ujh8pYTN3nqWUkg1zp",
+                          "mint": "So11111111111111111111111111111111111111112",
+                          "source": "G4sbSww72omqHsC6tYe4syFtzHyBieS6MjbRWmSn1mt5",
+                          "destination": "7ds7shXvLdNzihJXrjuoYYTr8bD5c2zwRxmZrrSZXgmM",
+                          "amount": 333993128,
+                          "decimals": 9,
+                          "value": 0.333993128,
+                          "network_id": "solana"
+                        }
+                      ]
+                    }
+                  }
                 }
               }
             }
@@ -4789,12 +5665,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 400,
-                  "code": "bad_query_input",
-                  "message": "Invalid query parameter provided"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 400,
+                      "code": "bad_query_input",
+                      "message": "Invalid query parameter provided"
+                    }
+                  }
                 }
               }
             }
@@ -4852,12 +5733,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 401,
-                  "code": "unauthorized",
-                  "message": "Authentication required"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 401,
+                      "code": "unauthorized",
+                      "message": "Authentication required"
+                    }
+                  }
                 }
               }
             }
@@ -4915,12 +5801,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 403,
-                  "code": "forbidden",
-                  "message": "Access denied"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 403,
+                      "code": "forbidden",
+                      "message": "Access denied"
+                    }
+                  }
                 }
               }
             }
@@ -4978,12 +5869,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 404,
-                  "code": "not_found_data",
-                  "message": "Resource not found"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 404,
+                      "code": "not_found_data",
+                      "message": "Resource not found"
+                    }
+                  }
                 }
               }
             }
@@ -5028,12 +5924,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 500,
-                  "code": "internal_server_error",
-                  "message": "An unexpected error occurred"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 500,
+                      "code": "internal_server_error",
+                      "message": "An unexpected error occurred"
+                    }
+                  }
                 }
               }
             }
@@ -5048,133 +5949,150 @@
             "in": "query",
             "name": "network_id",
             "schema": {
+              "description": "The Graph Network ID for SVM networks https://thegraph.com/networks",
+              "example": "solana",
+              "default": "solana",
               "type": "string",
               "enum": [
                 "solana"
-              ],
-              "default": "solana",
-              "description": "The Graph Network ID for SVM networks https://thegraph.com/networks",
-              "example": "solana"
-            }
+              ]
+            },
+            "required": true
           },
           {
             "in": "query",
             "name": "mint",
             "schema": {
-              "type": "string",
               "description": "Filter by mint address",
               "example": "So11111111111111111111111111111111111111112",
-              "default": ""
-            }
+              "default": "",
+              "type": "string"
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "source",
             "schema": {
-              "type": "string",
               "description": "Filter by token account address",
-              "default": ""
-            }
+              "default": "",
+              "type": "string"
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "destination",
             "schema": {
-              "type": "string",
               "description": "Filter by token account address",
-              "default": ""
-            }
+              "default": "",
+              "type": "string"
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "authority",
             "schema": {
-              "type": "string",
               "description": "Filter by authority token account address",
-              "default": ""
-            }
+              "default": "",
+              "type": "string"
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "program_id",
             "schema": {
+              "description": "Filter by program ID",
+              "default": "",
               "type": "string",
               "enum": [
                 "",
                 "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb",
                 "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
-              ],
-              "description": "Filter by program ID",
-              "default": ""
-            }
+              ]
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "startTime",
             "schema": {
-              "type": "integer",
+              "default": 0,
               "description": "UNIX timestamp in seconds.",
-              "default": 0
-            }
+              "type": "integer",
+              "minimum": -9007199254740991,
+              "maximum": 9007199254740991
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "endTime",
             "schema": {
-              "type": "integer",
+              "default": 9999999999,
               "description": "UNIX timestamp in seconds.",
-              "default": 9999999999
-            }
+              "type": "integer",
+              "minimum": -9007199254740991,
+              "maximum": 9007199254740991
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "orderBy",
             "schema": {
+              "description": "The field by which to order the results.",
+              "default": "timestamp",
               "type": "string",
               "enum": [
                 "timestamp"
-              ],
-              "default": "timestamp",
-              "description": "The field by which to order the results."
-            }
+              ]
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "orderDirection",
             "schema": {
+              "description": "The order in which to return the results: Ascending (asc) or Descending (desc).",
+              "default": "desc",
               "type": "string",
               "enum": [
                 "asc",
                 "desc"
-              ],
-              "default": "desc",
-              "description": "The order in which to return the results: Ascending (asc) or Descending (desc)."
-            }
+              ]
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "limit",
             "schema": {
+              "description": "The maximum number of items returned in a single request.",
+              "default": 10,
               "type": "integer",
               "minimum": 1,
-              "maximum": 1000,
-              "default": 10,
-              "description": "The maximum number of items returned in a single request."
-            }
+              "maximum": 1000
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "page",
             "schema": {
+              "description": "The page number of the results to return.",
+              "default": 1,
               "type": "integer",
               "minimum": 1,
-              "default": 1,
-              "description": "The page number of the results to return."
-            }
+              "maximum": 767465558638
+            },
+            "required": false
           }
         ],
-        "summary": "Transfers Events",
-        "description": "Provides SPL transfer events.",
+        "summary": "Solana Transfers",
+        "description": "Returns SPL token transfers with program, authority, and account information.",
         "security": [
           {
             "bearerAuth": []
@@ -5201,14 +6119,17 @@
                             "type": "number"
                           },
                           "datetime": {
-                            "type": "string"
+                            "type": "string",
+                            "format": "date-time",
+                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
                           },
                           "timestamp": {
                             "type": "number"
                           },
                           "contract": {
-                            "type": "string",
-                            "description": "Filter by address"
+                            "description": "Filter by address",
+                            "default": "",
+                            "type": "string"
                           },
                           "circulating_supply": {
                             "type": "number"
@@ -5220,6 +6141,9 @@
                             "type": "number"
                           },
                           "network_id": {
+                            "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
+                            "example": "mainnet",
+                            "default": "mainnet",
                             "type": "string",
                             "enum": [
                               "arbitrum-one",
@@ -5230,10 +6154,7 @@
                               "matic",
                               "optimism",
                               "unichain"
-                            ],
-                            "default": "mainnet",
-                            "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
-                            "example": "mainnet"
+                            ]
                           },
                           "icon": {
                             "type": "object",
@@ -5244,7 +6165,8 @@
                             },
                             "required": [
                               "web3icon"
-                            ]
+                            ],
+                            "additionalProperties": false
                           },
                           "symbol": {
                             "type": "string"
@@ -5275,7 +6197,8 @@
                           "holders",
                           "network_id",
                           "icon"
-                        ]
+                        ],
+                        "additionalProperties": false
                       }
                     },
                     "statistics": {
@@ -5290,32 +6213,88 @@
                         "bytes_read": {
                           "type": "number"
                         }
-                      }
+                      },
+                      "additionalProperties": false
+                    },
+                    "pagination": {
+                      "type": "object",
+                      "properties": {
+                        "previous_page": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        },
+                        "current_page": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        },
+                        "next_page": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        },
+                        "total_pages": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        }
+                      },
+                      "required": [
+                        "previous_page",
+                        "current_page",
+                        "next_page",
+                        "total_pages"
+                      ],
+                      "additionalProperties": false
+                    },
+                    "results": {
+                      "type": "number"
+                    },
+                    "total_results": {
+                      "type": "number"
+                    },
+                    "request_time": {
+                      "type": "string"
+                    },
+                    "duration_ms": {
+                      "type": "number"
                     }
                   },
                   "required": [
-                    "data"
-                  ]
-                },
-                "example": {
-                  "data": [
-                    {
-                      "block_num": 22966816,
-                      "datetime": "2025-07-21 09:57:35",
-                      "timestamp": 1753091855,
-                      "contract": "0xc944e90c64b2c07662a292be6244bdf05cda44a7",
-                      "decimals": 18,
-                      "symbol": "GRT",
-                      "name": "Graph Token",
-                      "circulating_supply": 27051707794.58071,
-                      "total_supply": 10800262823.318213,
-                      "holders": 175151,
-                      "network_id": "mainnet",
-                      "icon": {
-                        "web3icon": "GRT"
-                      }
+                    "data",
+                    "statistics",
+                    "pagination",
+                    "results",
+                    "total_results",
+                    "request_time",
+                    "duration_ms"
+                  ],
+                  "additionalProperties": false
+                },
+                "examples": {
+                  "example": {
+                    "value": {
+                      "data": [
+                        {
+                          "block_num": 22966816,
+                          "datetime": "2025-07-21 09:57:35",
+                          "timestamp": 1753091855,
+                          "contract": "0xc944e90c64b2c07662a292be6244bdf05cda44a7",
+                          "decimals": 18,
+                          "symbol": "GRT",
+                          "name": "Graph Token",
+                          "circulating_supply": 27051707794.58071,
+                          "total_supply": 10800262823.318213,
+                          "holders": 175151,
+                          "network_id": "mainnet",
+                          "icon": {
+                            "web3icon": "GRT"
+                          }
+                        }
+                      ]
                     }
-                  ]
+                  }
                 }
               }
             }
@@ -5373,12 +6352,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 400,
-                  "code": "bad_query_input",
-                  "message": "Invalid query parameter provided"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 400,
+                      "code": "bad_query_input",
+                      "message": "Invalid query parameter provided"
+                    }
+                  }
                 }
               }
             }
@@ -5436,12 +6420,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 401,
-                  "code": "unauthorized",
-                  "message": "Authentication required"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 401,
+                      "code": "unauthorized",
+                      "message": "Authentication required"
+                    }
+                  }
                 }
               }
             }
@@ -5499,12 +6488,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 403,
-                  "code": "forbidden",
-                  "message": "Access denied"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 403,
+                      "code": "forbidden",
+                      "message": "Access denied"
+                    }
+                  }
                 }
               }
             }
@@ -5562,12 +6556,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 404,
-                  "code": "not_found_data",
-                  "message": "Resource not found"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 404,
+                      "code": "not_found_data",
+                      "message": "Resource not found"
+                    }
+                  }
                 }
               }
             }
@@ -5612,12 +6611,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 500,
-                  "code": "internal_server_error",
-                  "message": "An unexpected error occurred"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 500,
+                      "code": "internal_server_error",
+                      "message": "An unexpected error occurred"
+                    }
+                  }
                 }
               }
             }
@@ -5632,9 +6636,10 @@
             "in": "path",
             "name": "contract",
             "schema": {
-              "type": "string",
               "description": "Filter by contract address",
-              "example": "0xc944e90c64b2c07662a292be6244bdf05cda44a7"
+              "example": "0xc944e90c64b2c07662a292be6244bdf05cda44a7",
+              "default": "",
+              "type": "string"
             },
             "required": true
           },
@@ -5642,6 +6647,9 @@
             "in": "query",
             "name": "network_id",
             "schema": {
+              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
+              "example": "mainnet",
+              "default": "mainnet",
               "type": "string",
               "enum": [
                 "arbitrum-one",
@@ -5652,15 +6660,13 @@
                 "matic",
                 "optimism",
                 "unichain"
-              ],
-              "default": "mainnet",
-              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
-              "example": "mainnet"
-            }
+              ]
+            },
+            "required": true
           }
         ],
         "summary": "Token Metadata",
-        "description": "Provides ERC-20 token contract metadata.",
+        "description": "Returns ERC-20 token metadata including supply, holder count, and price data.",
         "security": [
           {
             "bearerAuth": []
@@ -5690,8 +6696,9 @@
                             "type": "string"
                           },
                           "address": {
-                            "type": "string",
-                            "description": "Filter by address"
+                            "description": "Filter by address",
+                            "default": "",
+                            "type": "string"
                           },
                           "amount": {
                             "type": "string"
@@ -5700,6 +6707,9 @@
                             "type": "number"
                           },
                           "network_id": {
+                            "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
+                            "example": "mainnet",
+                            "default": "mainnet",
                             "type": "string",
                             "enum": [
                               "arbitrum-one",
@@ -5710,10 +6720,7 @@
                               "matic",
                               "optimism",
                               "unichain"
-                            ],
-                            "default": "mainnet",
-                            "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
-                            "example": "mainnet"
+                            ]
                           },
                           "name": {
                             "type": "string"
@@ -5741,7 +6748,8 @@
                           "amount",
                           "value",
                           "network_id"
-                        ]
+                        ],
+                        "additionalProperties": false
                       }
                     },
                     "statistics": {
@@ -5756,27 +6764,83 @@
                         "bytes_read": {
                           "type": "number"
                         }
-                      }
+                      },
+                      "additionalProperties": false
+                    },
+                    "pagination": {
+                      "type": "object",
+                      "properties": {
+                        "previous_page": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        },
+                        "current_page": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        },
+                        "next_page": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        },
+                        "total_pages": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        }
+                      },
+                      "required": [
+                        "previous_page",
+                        "current_page",
+                        "next_page",
+                        "total_pages"
+                      ],
+                      "additionalProperties": false
+                    },
+                    "results": {
+                      "type": "number"
+                    },
+                    "total_results": {
+                      "type": "number"
+                    },
+                    "request_time": {
+                      "type": "string"
+                    },
+                    "duration_ms": {
+                      "type": "number"
                     }
                   },
                   "required": [
-                    "data"
-                  ]
-                },
-                "example": {
-                  "data": [
-                    {
-                      "block_num": 22966764,
-                      "last_balance_update": "2025-07-21 09:47:11",
-                      "address": "0x36aff7001294dae4c2ed4fdefc478a00de77f090",
-                      "amount": "2904244446383157108596275005",
-                      "value": 2904244446.3831573,
-                      "name": "Graph Token",
-                      "decimals": 18,
-                      "symbol": "GRT",
-                      "network_id": "mainnet"
-                    }
-                  ]
+                    "data",
+                    "statistics",
+                    "pagination",
+                    "results",
+                    "total_results",
+                    "request_time",
+                    "duration_ms"
+                  ],
+                  "additionalProperties": false
+                },
+                "examples": {
+                  "example": {
+                    "value": {
+                      "data": [
+                        {
+                          "block_num": 22966764,
+                          "last_balance_update": "2025-07-21 09:47:11",
+                          "address": "0x36aff7001294dae4c2ed4fdefc478a00de77f090",
+                          "amount": "2904244446383157108596275005",
+                          "value": 2904244446.3831573,
+                          "name": "Graph Token",
+                          "decimals": 18,
+                          "symbol": "GRT",
+                          "network_id": "mainnet"
+                        }
+                      ]
+                    }
+                  }
                 }
               }
             }
@@ -5834,12 +6898,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 400,
-                  "code": "bad_query_input",
-                  "message": "Invalid query parameter provided"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 400,
+                      "code": "bad_query_input",
+                      "message": "Invalid query parameter provided"
+                    }
+                  }
                 }
               }
             }
@@ -5897,12 +6966,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 401,
-                  "code": "unauthorized",
-                  "message": "Authentication required"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 401,
+                      "code": "unauthorized",
+                      "message": "Authentication required"
+                    }
+                  }
                 }
               }
             }
@@ -5960,12 +7034,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 403,
-                  "code": "forbidden",
-                  "message": "Access denied"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 403,
+                      "code": "forbidden",
+                      "message": "Access denied"
+                    }
+                  }
                 }
               }
             }
@@ -6023,12 +7102,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 404,
-                  "code": "not_found_data",
-                  "message": "Resource not found"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 404,
+                      "code": "not_found_data",
+                      "message": "Resource not found"
+                    }
+                  }
                 }
               }
             }
@@ -6073,12 +7157,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 500,
-                  "code": "internal_server_error",
-                  "message": "An unexpected error occurred"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 500,
+                      "code": "internal_server_error",
+                      "message": "An unexpected error occurred"
+                    }
+                  }
                 }
               }
             }
@@ -6093,9 +7182,10 @@
             "in": "path",
             "name": "contract",
             "schema": {
-              "type": "string",
               "description": "Filter by contract address",
-              "example": "0xc944e90c64b2c07662a292be6244bdf05cda44a7"
+              "example": "0xc944e90c64b2c07662a292be6244bdf05cda44a7",
+              "default": "",
+              "type": "string"
             },
             "required": true
           },
@@ -6103,6 +7193,9 @@
             "in": "query",
             "name": "network_id",
             "schema": {
+              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
+              "example": "mainnet",
+              "default": "mainnet",
               "type": "string",
               "enum": [
                 "arbitrum-one",
@@ -6113,61 +7206,64 @@
                 "matic",
                 "optimism",
                 "unichain"
-              ],
-              "default": "mainnet",
-              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
-              "example": "mainnet"
-            }
+              ]
+            },
+            "required": true
           },
           {
             "in": "query",
             "name": "orderBy",
             "schema": {
+              "description": "The field by which to order the results.",
+              "default": "value",
               "type": "string",
               "enum": [
                 "value"
-              ],
-              "default": "value",
-              "description": "The field by which to order the results."
-            }
+              ]
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "orderDirection",
             "schema": {
+              "description": "The order in which to return the results: Ascending (asc) or Descending (desc).",
+              "default": "desc",
               "type": "string",
               "enum": [
                 "asc",
                 "desc"
-              ],
-              "default": "desc",
-              "description": "The order in which to return the results: Ascending (asc) or Descending (desc)."
-            }
+              ]
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "limit",
             "schema": {
+              "description": "The maximum number of items returned in a single request.",
+              "default": 10,
               "type": "integer",
               "minimum": 1,
-              "maximum": 1000,
-              "default": 10,
-              "description": "The maximum number of items returned in a single request."
-            }
+              "maximum": 1000
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "page",
             "schema": {
+              "description": "The page number of the results to return.",
+              "default": 1,
               "type": "integer",
               "minimum": 1,
-              "default": 1,
-              "description": "The page number of the results to return."
-            }
+              "maximum": 767465558638
+            },
+            "required": false
           }
         ],
         "summary": "Token Holders",
-        "description": "Provides ERC-20 token holder balances by contract address.",
+        "description": "Returns token holders ranked by balance with holdings and supply percentage.",
         "security": [
           {
             "bearerAuth": []
@@ -6194,12 +7290,17 @@
                             "type": "number"
                           },
                           "datetime": {
-                            "type": "string"
+                            "type": "string",
+                            "format": "date-time",
+                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
                           },
                           "timestamp": {
                             "type": "number"
                           },
                           "network_id": {
+                            "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
+                            "example": "mainnet",
+                            "default": "mainnet",
                             "type": "string",
                             "enum": [
                               "arbitrum-one",
@@ -6210,40 +7311,43 @@
                               "matic",
                               "optimism",
                               "unichain"
-                            ],
-                            "default": "mainnet",
-                            "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
-                            "example": "mainnet"
+                            ]
                           },
                           "transaction_id": {
                             "type": "string"
                           },
                           "caller": {
-                            "type": "string",
-                            "description": "Filter by address"
+                            "description": "Filter by address",
+                            "default": "",
+                            "type": "string"
                           },
                           "sender": {
-                            "type": "string",
-                            "description": "Filter by address"
+                            "description": "Filter by address",
+                            "default": "",
+                            "type": "string"
                           },
                           "recipient": {
-                            "type": "string",
-                            "description": "Filter by address"
+                            "description": "Filter by address",
+                            "default": "",
+                            "type": "string"
                           },
                           "factory": {
-                            "type": "string",
-                            "description": "Filter by address"
+                            "description": "Filter by address",
+                            "default": "",
+                            "type": "string"
                           },
                           "pool": {
-                            "type": "string",
-                            "description": "Filter by pool"
+                            "description": "Filter by pool",
+                            "default": "",
+                            "type": "string"
                           },
                           "token0": {
                             "type": "object",
                             "properties": {
                               "address": {
-                                "type": "string",
-                                "description": "Filter by address"
+                                "description": "Filter by address",
+                                "default": "",
+                                "type": "string"
                               },
                               "symbol": {
                                 "type": "string"
@@ -6256,14 +7360,16 @@
                               "address",
                               "symbol",
                               "decimals"
-                            ]
+                            ],
+                            "additionalProperties": false
                           },
                           "token1": {
                             "type": "object",
                             "properties": {
                               "address": {
-                                "type": "string",
-                                "description": "Filter by address"
+                                "description": "Filter by address",
+                                "default": "",
+                                "type": "string"
                               },
                               "symbol": {
                                 "type": "string"
@@ -6276,7 +7382,8 @@
                               "address",
                               "symbol",
                               "decimals"
-                            ]
+                            ],
+                            "additionalProperties": false
                           },
                           "amount0": {
                             "type": "string"
@@ -6324,7 +7431,8 @@
                           "value1",
                           "fee",
                           "protocol"
-                        ]
+                        ],
+                        "additionalProperties": false
                       }
                     },
                     "statistics": {
@@ -6339,45 +7447,101 @@
                         "bytes_read": {
                           "type": "number"
                         }
-                      }
+                      },
+                      "additionalProperties": false
+                    },
+                    "pagination": {
+                      "type": "object",
+                      "properties": {
+                        "previous_page": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        },
+                        "current_page": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        },
+                        "next_page": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        },
+                        "total_pages": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        }
+                      },
+                      "required": [
+                        "previous_page",
+                        "current_page",
+                        "next_page",
+                        "total_pages"
+                      ],
+                      "additionalProperties": false
+                    },
+                    "results": {
+                      "type": "number"
+                    },
+                    "total_results": {
+                      "type": "number"
+                    },
+                    "request_time": {
+                      "type": "string"
+                    },
+                    "duration_ms": {
+                      "type": "number"
                     }
                   },
                   "required": [
-                    "data"
-                  ]
-                },
-                "example": {
-                  "data": [
-                    {
-                      "block_num": 22589391,
-                      "datetime": "2025-05-29 15:47:47",
-                      "timestamp": 1748533667,
-                      "transaction_id": "0x1ce019b0ad129b8bd21b6c83b75de5e5fd7cd07f2ee739ca3198adcbeb61f5a9",
-                      "caller": "0x66a9893cc07d91d95644aedd05d03f95e1dba8af",
-                      "pool": "0xb98437c7ba28c6590dd4e1cc46aa89eed181f97108e5b6221730d41347bc817f",
-                      "factory": "0x000000000004444c5dc75cb358380d2e3de08a90",
-                      "token0": {
-                        "address": "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599",
-                        "symbol": "WBTC",
-                        "decimals": 8
-                      },
-                      "token1": {
-                        "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
-                        "symbol": "USDC",
-                        "decimals": 6
-                      },
-                      "sender": "0x66a9893cc07d91d95644aedd05d03f95e1dba8af",
-                      "recipient": null,
-                      "amount0": "-894320",
-                      "amount1": "957798098",
-                      "value0": -0.0089432,
-                      "value1": 957.798098,
-                      "price0": 107417.48517180652,
-                      "price1": 0.00000930947134352077,
-                      "protocol": "uniswap_v4",
-                      "network_id": "mainnet"
-                    }
-                  ]
+                    "data",
+                    "statistics",
+                    "pagination",
+                    "results",
+                    "total_results",
+                    "request_time",
+                    "duration_ms"
+                  ],
+                  "additionalProperties": false
+                },
+                "examples": {
+                  "example": {
+                    "value": {
+                      "data": [
+                        {
+                          "block_num": 22589391,
+                          "datetime": "2025-05-29 15:47:47",
+                          "timestamp": 1748533667,
+                          "transaction_id": "0x1ce019b0ad129b8bd21b6c83b75de5e5fd7cd07f2ee739ca3198adcbeb61f5a9",
+                          "caller": "0x66a9893cc07d91d95644aedd05d03f95e1dba8af",
+                          "pool": "0xb98437c7ba28c6590dd4e1cc46aa89eed181f97108e5b6221730d41347bc817f",
+                          "factory": "0x000000000004444c5dc75cb358380d2e3de08a90",
+                          "token0": {
+                            "address": "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599",
+                            "symbol": "WBTC",
+                            "decimals": 8
+                          },
+                          "token1": {
+                            "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
+                            "symbol": "USDC",
+                            "decimals": 6
+                          },
+                          "sender": "0x66a9893cc07d91d95644aedd05d03f95e1dba8af",
+                          "recipient": null,
+                          "amount0": "-894320",
+                          "amount1": "957798098",
+                          "value0": -0.0089432,
+                          "value1": 957.798098,
+                          "price0": 107417.48517180652,
+                          "price1": 0.00000930947134352077,
+                          "protocol": "uniswap_v4",
+                          "network_id": "mainnet"
+                        }
+                      ]
+                    }
+                  }
                 }
               }
             }
@@ -6435,12 +7599,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 400,
-                  "code": "bad_query_input",
-                  "message": "Invalid query parameter provided"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 400,
+                      "code": "bad_query_input",
+                      "message": "Invalid query parameter provided"
+                    }
+                  }
                 }
               }
             }
@@ -6498,12 +7667,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 401,
-                  "code": "unauthorized",
-                  "message": "Authentication required"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 401,
+                      "code": "unauthorized",
+                      "message": "Authentication required"
+                    }
+                  }
                 }
               }
             }
@@ -6561,12 +7735,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 403,
-                  "code": "forbidden",
-                  "message": "Access denied"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 403,
+                      "code": "forbidden",
+                      "message": "Access denied"
+                    }
+                  }
                 }
               }
             }
@@ -6624,12 +7803,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 404,
-                  "code": "not_found_data",
-                  "message": "Resource not found"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 404,
+                      "code": "not_found_data",
+                      "message": "Resource not found"
+                    }
+                  }
                 }
               }
             }
@@ -6674,12 +7858,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 500,
-                  "code": "internal_server_error",
-                  "message": "An unexpected error occurred"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 500,
+                      "code": "internal_server_error",
+                      "message": "An unexpected error occurred"
+                    }
+                  }
                 }
               }
             }
@@ -6694,6 +7883,9 @@
             "in": "query",
             "name": "network_id",
             "schema": {
+              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
+              "example": "mainnet",
+              "default": "mainnet",
               "type": "string",
               "enum": [
                 "arbitrum-one",
@@ -6704,148 +7896,156 @@
                 "matic",
                 "optimism",
                 "unichain"
-              ],
-              "default": "mainnet",
-              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
-              "example": "mainnet"
-            }
+              ]
+            },
+            "required": true
           },
           {
             "in": "query",
             "name": "pool",
             "schema": {
-              "anyOf": [
-                {
-                  "type": "string"
-                },
-                {
-                  "type": "string"
-                }
-              ],
               "description": "Filter by pool address",
               "example": "0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640",
-              "default": ""
-            }
+              "default": "",
+              "type": "string"
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "caller",
             "schema": {
-              "type": "string",
               "description": "Filter by address",
-              "default": ""
-            }
+              "default": "",
+              "type": "string"
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "sender",
             "schema": {
-              "type": "string",
               "description": "Filter by address",
-              "default": ""
-            }
+              "default": "",
+              "type": "string"
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "recipient",
             "schema": {
-              "type": "string",
               "description": "Filter by address",
-              "default": ""
-            }
+              "default": "",
+              "type": "string"
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "protocol",
             "schema": {
+              "description": "Protocol name",
+              "example": "uniswap_v3",
+              "default": "",
               "type": "string",
               "enum": [
                 "",
                 "uniswap_v2",
                 "uniswap_v3",
                 "uniswap_v4"
-              ],
-              "default": "",
-              "description": "Protocol name",
-              "example": "uniswap_v3"
-            }
+              ]
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "startTime",
             "schema": {
-              "type": "integer",
+              "default": 0,
               "description": "UNIX timestamp in seconds.",
-              "default": 0
-            }
+              "type": "integer",
+              "minimum": -9007199254740991,
+              "maximum": 9007199254740991
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "endTime",
             "schema": {
-              "type": "integer",
+              "default": 9999999999,
               "description": "UNIX timestamp in seconds.",
-              "default": 9999999999
-            }
+              "type": "integer",
+              "minimum": -9007199254740991,
+              "maximum": 9007199254740991
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "orderBy",
             "schema": {
+              "description": "The field by which to order the results.",
+              "default": "timestamp",
               "type": "string",
               "enum": [
                 "timestamp"
-              ],
-              "default": "timestamp",
-              "description": "The field by which to order the results."
-            }
+              ]
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "orderDirection",
             "schema": {
+              "description": "The order in which to return the results: Ascending (asc) or Descending (desc).",
+              "default": "desc",
               "type": "string",
               "enum": [
                 "asc",
                 "desc"
-              ],
-              "default": "desc",
-              "description": "The order in which to return the results: Ascending (asc) or Descending (desc)."
-            }
+              ]
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "transaction_id",
             "schema": {
-              "type": "string",
               "description": "Filter by transaction",
-              "default": ""
-            }
+              "default": "",
+              "type": "string"
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "limit",
             "schema": {
+              "description": "The maximum number of items returned in a single request.",
+              "default": 10,
               "type": "integer",
               "minimum": 1,
-              "maximum": 1000,
-              "default": 10,
-              "description": "The maximum number of items returned in a single request."
-            }
+              "maximum": 1000
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "page",
             "schema": {
+              "description": "The page number of the results to return.",
+              "default": 1,
               "type": "integer",
               "minimum": 1,
-              "default": 1,
-              "description": "The page number of the results to return."
-            }
+              "maximum": 767465558638
+            },
+            "required": false
           }
         ],
         "summary": "Swap Events",
-        "description": "Provides Uniswap V2 & V3 swap events.",
+        "description": "Returns DEX swap transactions from Uniswap protocols with token amounts and prices.",
         "security": [
           {
             "bearerAuth": []
@@ -6872,7 +8072,9 @@
                             "type": "number"
                           },
                           "datetime": {
-                            "type": "string"
+                            "type": "string",
+                            "format": "date-time",
+                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
                           },
                           "timestamp": {
                             "type": "number"
@@ -6887,33 +8089,38 @@
                             "type": "string"
                           },
                           "program_id": {
-                            "type": "string",
-                            "description": "Filter by address"
+                            "description": "Filter by address",
+                            "default": "",
+                            "type": "string"
                           },
                           "program_name": {
                             "type": "string"
                           },
                           "user": {
-                            "type": "string",
-                            "description": "Filter by address"
+                            "description": "Filter by address",
+                            "default": "",
+                            "type": "string"
                           },
                           "amm": {
-                            "type": "string",
-                            "description": "Filter by address"
+                            "description": "Filter by address",
+                            "default": "",
+                            "type": "string"
                           },
                           "amm_name": {
                             "type": "string"
                           },
                           "amm_pool": {
-                            "type": "string",
-                            "description": "Filter by address"
+                            "description": "Filter by address",
+                            "default": "",
+                            "type": "string"
                           },
                           "input_mint": {
                             "type": "object",
                             "properties": {
                               "address": {
-                                "type": "string",
-                                "description": "Filter by address"
+                                "description": "Filter by address",
+                                "default": "",
+                                "type": "string"
                               },
                               "symbol": {
                                 "type": "string"
@@ -6926,7 +8133,8 @@
                               "address",
                               "symbol",
                               "decimals"
-                            ]
+                            ],
+                            "additionalProperties": false
                           },
                           "input_amount": {
                             "type": "number"
@@ -6935,8 +8143,9 @@
                             "type": "object",
                             "properties": {
                               "address": {
-                                "type": "string",
-                                "description": "Filter by address"
+                                "description": "Filter by address",
+                                "default": "",
+                                "type": "string"
                               },
                               "symbol": {
                                 "type": "string"
@@ -6949,19 +8158,20 @@
                               "address",
                               "symbol",
                               "decimals"
-                            ]
+                            ],
+                            "additionalProperties": false
                           },
                           "output_amount": {
                             "type": "number"
                           },
                           "network_id": {
+                            "description": "The Graph Network ID for SVM networks https://thegraph.com/networks",
+                            "example": "solana",
+                            "default": "solana",
                             "type": "string",
                             "enum": [
                               "solana"
-                            ],
-                            "default": "solana",
-                            "description": "The Graph Network ID for SVM networks https://thegraph.com/networks",
-                            "example": "solana"
+                            ]
                           }
                         },
                         "required": [
@@ -6981,7 +8191,8 @@
                           "output_mint",
                           "output_amount",
                           "network_id"
-                        ]
+                        ],
+                        "additionalProperties": false
                       }
                     },
                     "statistics": {
@@ -6996,33 +8207,89 @@
                         "bytes_read": {
                           "type": "number"
                         }
-                      }
+                      },
+                      "additionalProperties": false
+                    },
+                    "pagination": {
+                      "type": "object",
+                      "properties": {
+                        "previous_page": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        },
+                        "current_page": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        },
+                        "next_page": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        },
+                        "total_pages": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        }
+                      },
+                      "required": [
+                        "previous_page",
+                        "current_page",
+                        "next_page",
+                        "total_pages"
+                      ],
+                      "additionalProperties": false
+                    },
+                    "results": {
+                      "type": "number"
+                    },
+                    "total_results": {
+                      "type": "number"
+                    },
+                    "request_time": {
+                      "type": "string"
+                    },
+                    "duration_ms": {
+                      "type": "number"
                     }
                   },
                   "required": [
-                    "data"
-                  ]
-                },
-                "example": {
-                  "data": [
-                    {
-                      "block_num": 352243599,
-                      "datetime": "2025-07-09 22:24:36",
-                      "timestamp": 1752099876,
-                      "signature": "oWHA7wPQwpZhr9RJSbTNxsnPkBo1wnd68Zt2fJZPyK3cf1vYVzQiC9Et2mRNvh1t9Zt5dtmoEeSErSCqmMQ58Ls\u0000",
-                      "program_id": "pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA",
-                      "program_name": "Pump.fun AMM",
-                      "amm": "pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA",
-                      "amm_name": "Pump.fun AMM",
-                      "amm_pool": "AmmpSnW5xVeKHTAU9fMjyKEMPgrzmUj3ah5vgvHhAB5J",
-                      "user": "AEWxmZPEdHkCjJXVT9MreY7fCvzbpEK3wCVouCoEnmvE",
-                      "input_mint": "9BB6NFEcjBCtnNLFko2FqVQBq8HHM13kCyYcdQbgpump",
-                      "input_amount": 3653743,
-                      "output_mint": "So11111111111111111111111111111111111111112",
-                      "output_amount": 25548025,
-                      "network_id": "solana"
-                    }
-                  ]
+                    "data",
+                    "statistics",
+                    "pagination",
+                    "results",
+                    "total_results",
+                    "request_time",
+                    "duration_ms"
+                  ],
+                  "additionalProperties": false
+                },
+                "examples": {
+                  "example": {
+                    "value": {
+                      "data": [
+                        {
+                          "block_num": 352243599,
+                          "datetime": "2025-07-09 22:24:36",
+                          "timestamp": 1752099876,
+                          "signature": "oWHA7wPQwpZhr9RJSbTNxsnPkBo1wnd68Zt2fJZPyK3cf1vYVzQiC9Et2mRNvh1t9Zt5dtmoEeSErSCqmMQ58Ls\u0000",
+                          "program_id": "pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA",
+                          "program_name": "Pump.fun AMM",
+                          "amm": "pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA",
+                          "amm_name": "Pump.fun AMM",
+                          "amm_pool": "AmmpSnW5xVeKHTAU9fMjyKEMPgrzmUj3ah5vgvHhAB5J",
+                          "user": "AEWxmZPEdHkCjJXVT9MreY7fCvzbpEK3wCVouCoEnmvE",
+                          "input_mint": "9BB6NFEcjBCtnNLFko2FqVQBq8HHM13kCyYcdQbgpump",
+                          "input_amount": 3653743,
+                          "output_mint": "So11111111111111111111111111111111111111112",
+                          "output_amount": 25548025,
+                          "network_id": "solana"
+                        }
+                      ]
+                    }
+                  }
                 }
               }
             }
@@ -7080,12 +8347,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 400,
-                  "code": "bad_query_input",
-                  "message": "Invalid query parameter provided"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 400,
+                      "code": "bad_query_input",
+                      "message": "Invalid query parameter provided"
+                    }
+                  }
                 }
               }
             }
@@ -7143,12 +8415,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 401,
-                  "code": "unauthorized",
-                  "message": "Authentication required"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 401,
+                      "code": "unauthorized",
+                      "message": "Authentication required"
+                    }
+                  }
                 }
               }
             }
@@ -7206,12 +8483,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 403,
-                  "code": "forbidden",
-                  "message": "Access denied"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 403,
+                      "code": "forbidden",
+                      "message": "Access denied"
+                    }
+                  }
                 }
               }
             }
@@ -7269,12 +8551,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 404,
-                  "code": "not_found_data",
-                  "message": "Resource not found"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 404,
+                      "code": "not_found_data",
+                      "message": "Resource not found"
+                    }
+                  }
                 }
               }
             }
@@ -7319,12 +8606,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 500,
-                  "code": "internal_server_error",
-                  "message": "An unexpected error occurred"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 500,
+                      "code": "internal_server_error",
+                      "message": "An unexpected error occurred"
+                    }
+                  }
                 }
               }
             }
@@ -7339,20 +8631,23 @@
             "in": "query",
             "name": "network_id",
             "schema": {
+              "description": "The Graph Network ID for SVM networks https://thegraph.com/networks",
+              "example": "solana",
+              "default": "solana",
               "type": "string",
               "enum": [
                 "solana"
-              ],
-              "default": "solana",
-              "description": "The Graph Network ID for SVM networks https://thegraph.com/networks",
-              "example": "solana"
+              ]
             },
-            "required": false
+            "required": true
           },
           {
             "in": "query",
             "name": "program_id",
             "schema": {
+              "description": "Filter by program ID",
+              "example": "pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA",
+              "default": "",
               "type": "string",
               "enum": [
                 "",
@@ -7361,19 +8656,17 @@
                 "pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA",
                 "JUP4Fb2cqiRUcaTHdrPC8h2gNsA2ETXiPDD33WcGuJB",
                 "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4"
-              ],
-              "description": "Filter by program ID",
-              "example": "pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA"
+              ]
             },
-            "required": true
+            "required": false
           },
           {
             "in": "query",
             "name": "amm",
             "schema": {
-              "type": "string",
               "description": "Filter by amm address",
-              "default": ""
+              "default": "",
+              "type": "string"
             },
             "required": false
           },
@@ -7381,9 +8674,9 @@
             "in": "query",
             "name": "amm_pool",
             "schema": {
-              "type": "string",
               "description": "Filter by amm pool address",
-              "default": ""
+              "default": "",
+              "type": "string"
             },
             "required": false
           },
@@ -7391,9 +8684,9 @@
             "in": "query",
             "name": "user",
             "schema": {
-              "type": "string",
               "description": "Filter by user address",
-              "default": ""
+              "default": "",
+              "type": "string"
             },
             "required": false
           },
@@ -7401,9 +8694,9 @@
             "in": "query",
             "name": "input_mint",
             "schema": {
-              "type": "string",
               "description": "Filter by mint address",
-              "default": ""
+              "default": "",
+              "type": "string"
             },
             "required": false
           },
@@ -7411,9 +8704,9 @@
             "in": "query",
             "name": "output_mint",
             "schema": {
-              "type": "string",
               "description": "Filter by mint address",
-              "default": ""
+              "default": "",
+              "type": "string"
             },
             "required": false
           },
@@ -7421,9 +8714,11 @@
             "in": "query",
             "name": "startTime",
             "schema": {
-              "type": "integer",
+              "default": 0,
               "description": "UNIX timestamp in seconds.",
-              "default": 0
+              "type": "integer",
+              "minimum": -9007199254740991,
+              "maximum": 9007199254740991
             },
             "required": false
           },
@@ -7431,9 +8726,11 @@
             "in": "query",
             "name": "endTime",
             "schema": {
-              "type": "integer",
+              "default": 9999999999,
               "description": "UNIX timestamp in seconds.",
-              "default": 9999999999
+              "type": "integer",
+              "minimum": -9007199254740991,
+              "maximum": 9007199254740991
             },
             "required": false
           },
@@ -7441,12 +8738,12 @@
             "in": "query",
             "name": "orderBy",
             "schema": {
+              "description": "The field by which to order the results.",
+              "default": "timestamp",
               "type": "string",
               "enum": [
                 "timestamp"
-              ],
-              "default": "timestamp",
-              "description": "The field by which to order the results."
+              ]
             },
             "required": false
           },
@@ -7454,13 +8751,13 @@
             "in": "query",
             "name": "orderDirection",
             "schema": {
+              "description": "The order in which to return the results: Ascending (asc) or Descending (desc).",
+              "default": "desc",
               "type": "string",
               "enum": [
                 "asc",
                 "desc"
-              ],
-              "default": "desc",
-              "description": "The order in which to return the results: Ascending (asc) or Descending (desc)."
+              ]
             },
             "required": false
           },
@@ -7468,9 +8765,9 @@
             "in": "query",
             "name": "signature",
             "schema": {
-              "type": "string",
               "description": "Filter by transaction signature",
-              "default": ""
+              "default": "",
+              "type": "string"
             },
             "required": false
           },
@@ -7478,11 +8775,11 @@
             "in": "query",
             "name": "limit",
             "schema": {
+              "description": "The maximum number of items returned in a single request.",
+              "default": 10,
               "type": "integer",
               "minimum": 1,
-              "maximum": 1000,
-              "default": 10,
-              "description": "The maximum number of items returned in a single request."
+              "maximum": 1000
             },
             "required": false
           },
@@ -7490,16 +8787,17 @@
             "in": "query",
             "name": "page",
             "schema": {
+              "description": "The page number of the results to return.",
+              "default": 1,
               "type": "integer",
               "minimum": 1,
-              "default": 1,
-              "description": "The page number of the results to return."
+              "maximum": 767465558638
             },
             "required": false
           }
         ],
-        "summary": "Swap Events",
-        "description": "Provides AMM Swap events.",
+        "summary": "Solana Swaps",
+        "description": "Returns AMM swap events from Solana DEXs with input/output tokens and amounts.",
         "security": [
           {
             "bearerAuth": []
@@ -7526,41 +8824,30 @@
                             "type": "number"
                           },
                           "datetime": {
-                            "type": "string"
-                          },
-                          "network_id": {
                             "type": "string",
-                            "enum": [
-                              "arbitrum-one",
-                              "avalanche",
-                              "base",
-                              "bsc",
-                              "mainnet",
-                              "matic",
-                              "optimism",
-                              "unichain"
-                            ],
-                            "default": "mainnet",
-                            "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
-                            "example": "mainnet"
+                            "format": "date-time",
+                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
                           },
                           "transaction_id": {
                             "type": "string"
                           },
                           "factory": {
-                            "type": "string",
-                            "description": "Filter by address"
+                            "description": "Filter by address",
+                            "default": "",
+                            "type": "string"
                           },
                           "pool": {
-                            "type": "string",
-                            "description": "Filter by pool"
+                            "description": "Filter by pool",
+                            "default": "",
+                            "type": "string"
                           },
                           "token0": {
                             "type": "object",
                             "properties": {
                               "address": {
-                                "type": "string",
-                                "description": "Filter by address"
+                                "description": "Filter by address",
+                                "default": "",
+                                "type": "string"
                               },
                               "symbol": {
                                 "type": "string"
@@ -7573,14 +8860,16 @@
                               "address",
                               "symbol",
                               "decimals"
-                            ]
+                            ],
+                            "additionalProperties": false
                           },
                           "token1": {
                             "type": "object",
                             "properties": {
                               "address": {
-                                "type": "string",
-                                "description": "Filter by address"
+                                "description": "Filter by address",
+                                "default": "",
+                                "type": "string"
                               },
                               "symbol": {
                                 "type": "string"
@@ -7593,27 +8882,45 @@
                               "address",
                               "symbol",
                               "decimals"
-                            ]
+                            ],
+                            "additionalProperties": false
                           },
                           "fee": {
                             "type": "number"
                           },
                           "protocol": {
                             "type": "string"
+                          },
+                          "network_id": {
+                            "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
+                            "example": "mainnet",
+                            "default": "mainnet",
+                            "type": "string",
+                            "enum": [
+                              "arbitrum-one",
+                              "avalanche",
+                              "base",
+                              "bsc",
+                              "mainnet",
+                              "matic",
+                              "optimism",
+                              "unichain"
+                            ]
                           }
                         },
                         "required": [
                           "block_num",
                           "datetime",
-                          "network_id",
                           "transaction_id",
                           "factory",
                           "pool",
                           "token0",
                           "token1",
                           "fee",
-                          "protocol"
-                        ]
+                          "protocol",
+                          "network_id"
+                        ],
+                        "additionalProperties": false
                       }
                     },
                     "statistics": {
@@ -7628,36 +8935,92 @@
                         "bytes_read": {
                           "type": "number"
                         }
-                      }
+                      },
+                      "additionalProperties": false
+                    },
+                    "pagination": {
+                      "type": "object",
+                      "properties": {
+                        "previous_page": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        },
+                        "current_page": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        },
+                        "next_page": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        },
+                        "total_pages": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        }
+                      },
+                      "required": [
+                        "previous_page",
+                        "current_page",
+                        "next_page",
+                        "total_pages"
+                      ],
+                      "additionalProperties": false
+                    },
+                    "results": {
+                      "type": "number"
+                    },
+                    "total_results": {
+                      "type": "number"
+                    },
+                    "request_time": {
+                      "type": "string"
+                    },
+                    "duration_ms": {
+                      "type": "number"
                     }
                   },
                   "required": [
-                    "data"
-                  ]
-                },
-                "example": {
-                  "data": [
-                    {
-                      "block_num": 22589384,
-                      "datetime": "2025-05-29 15:46:23",
-                      "transaction_id": "0x43cee95f1449b6b4d394fab31234fd6decdcd049153cc1338fe627e5483a3d36",
-                      "factory": "0x000000000004444c5dc75cb358380d2e3de08a90",
-                      "pool": "0x12b900f4e5c4b1d2aab6870220345c668b068fc6e588dd59dfe6f223d60608f1",
-                      "token0": {
-                        "address": "0xdac17f958d2ee523a2206206994597c13d831ec7",
-                        "symbol": "USDT",
-                        "decimals": 6
-                      },
-                      "token1": {
-                        "address": "0xf2c88757f8d03634671208935974b60a2a28bdb3",
-                        "symbol": "SHELL",
-                        "decimals": 18
-                      },
-                      "fee": 699000,
-                      "protocol": "uniswap_v4",
-                      "network_id": "mainnet"
+                    "data",
+                    "statistics",
+                    "pagination",
+                    "results",
+                    "total_results",
+                    "request_time",
+                    "duration_ms"
+                  ],
+                  "additionalProperties": false
+                },
+                "examples": {
+                  "example": {
+                    "value": {
+                      "data": [
+                        {
+                          "block_num": 23039540,
+                          "datetime": "2025-07-31 14:00:11",
+                          "transaction_id": "0xd9a2023a8cb1e49639bdab160dc5e706200b10b3bde91709fa41ab7ef44af58f",
+                          "factory": "0x000000000004444c5dc75cb358380d2e3de08a90",
+                          "pool": "0x3bdd63a1dcf34df8f6a568092646c6d49e482ecf3b824c06b352b7e37f96c3b8",
+                          "token0": {
+                            "address": "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0",
+                            "symbol": "wstETH",
+                            "decimals": 18
+                          },
+                          "token1": {
+                            "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
+                            "symbol": "WETH",
+                            "decimals": 18
+                          },
+                          "fee": 50,
+                          "protocol": "uniswap_v4",
+                          "network_id": "mainnet"
+                        }
+                      ]
                     }
-                  ]
+                  }
                 }
               }
             }
@@ -7715,12 +9078,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 400,
-                  "code": "bad_query_input",
-                  "message": "Invalid query parameter provided"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 400,
+                      "code": "bad_query_input",
+                      "message": "Invalid query parameter provided"
+                    }
+                  }
                 }
               }
             }
@@ -7778,12 +9146,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 401,
-                  "code": "unauthorized",
-                  "message": "Authentication required"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 401,
+                      "code": "unauthorized",
+                      "message": "Authentication required"
+                    }
+                  }
                 }
               }
             }
@@ -7841,12 +9214,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 403,
-                  "code": "forbidden",
-                  "message": "Access denied"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 403,
+                      "code": "forbidden",
+                      "message": "Access denied"
+                    }
+                  }
                 }
               }
             }
@@ -7904,12 +9282,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 404,
-                  "code": "not_found_data",
-                  "message": "Resource not found"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 404,
+                      "code": "not_found_data",
+                      "message": "Resource not found"
+                    }
+                  }
                 }
               }
             }
@@ -7954,12 +9337,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 500,
-                  "code": "internal_server_error",
-                  "message": "An unexpected error occurred"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 500,
+                      "code": "internal_server_error",
+                      "message": "An unexpected error occurred"
+                    }
+                  }
                 }
               }
             }
@@ -7974,6 +9362,9 @@
             "in": "query",
             "name": "network_id",
             "schema": {
+              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
+              "example": "mainnet",
+              "default": "mainnet",
               "type": "string",
               "enum": [
                 "arbitrum-one",
@@ -7984,95 +9375,86 @@
                 "matic",
                 "optimism",
                 "unichain"
-              ],
-              "default": "mainnet",
-              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
-              "example": "mainnet"
-            }
+              ]
+            },
+            "required": true
           },
           {
             "in": "query",
             "name": "pool",
             "schema": {
-              "anyOf": [
-                {
-                  "type": "string"
-                },
-                {
-                  "type": "string"
-                }
-              ],
               "description": "Filter by pool address",
               "example": "0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640",
-              "default": ""
-            }
+              "default": "",
+              "type": "string"
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "factory",
             "schema": {
-              "type": "string",
               "description": "Filter by address",
-              "default": ""
-            }
+              "default": "",
+              "type": "string"
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "token",
             "schema": {
-              "type": "string",
-              "description": "Filter by address",
-              "default": ""
-            }
-          },
-          {
-            "in": "query",
-            "name": "symbol",
-            "schema": {
-              "type": "string",
-              "default": ""
-            }
+              "description": "Filter by contract address",
+              "example": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
+              "default": "",
+              "type": "string"
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "protocol",
             "schema": {
+              "description": "Protocol name",
+              "example": "uniswap_v3",
+              "default": "",
               "type": "string",
               "enum": [
                 "",
                 "uniswap_v2",
                 "uniswap_v3",
                 "uniswap_v4"
-              ],
-              "default": "uniswap_v4",
-              "description": "Protocol name",
-              "example": "uniswap_v3"
-            }
+              ]
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "limit",
             "schema": {
+              "description": "The maximum number of items returned in a single request.",
+              "default": 10,
               "type": "integer",
               "minimum": 1,
-              "maximum": 1000,
-              "default": 10,
-              "description": "The maximum number of items returned in a single request."
-            }
+              "maximum": 1000
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "page",
             "schema": {
+              "description": "The page number of the results to return.",
+              "default": 1,
               "type": "integer",
               "minimum": 1,
-              "default": 1,
-              "description": "The page number of the results to return."
-            }
+              "maximum": 767465558638
+            },
+            "required": false
           }
         ],
         "summary": "Liquidity Pools",
-        "description": "Provides Uniswap V2 & V3 liquidity pool metadata.",
+        "description": "Returns Uniswap liquidity pool metadata including token pairs, fees, and protocol versions.",
         "security": [
           {
             "bearerAuth": []
@@ -8097,7 +9479,8 @@
                         "properties": {
                           "datetime": {
                             "type": "string",
-                            "format": "date-time"
+                            "format": "date-time",
+                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
                           },
                           "ticker": {
                             "type": "string"
@@ -8134,7 +9517,8 @@
                           "volume",
                           "uaw",
                           "transactions"
-                        ]
+                        ],
+                        "additionalProperties": false
                       }
                     },
                     "statistics": {
@@ -8149,26 +9533,82 @@
                         "bytes_read": {
                           "type": "number"
                         }
-                      }
+                      },
+                      "additionalProperties": false
+                    },
+                    "pagination": {
+                      "type": "object",
+                      "properties": {
+                        "previous_page": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        },
+                        "current_page": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        },
+                        "next_page": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        },
+                        "total_pages": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        }
+                      },
+                      "required": [
+                        "previous_page",
+                        "current_page",
+                        "next_page",
+                        "total_pages"
+                      ],
+                      "additionalProperties": false
+                    },
+                    "results": {
+                      "type": "number"
+                    },
+                    "total_results": {
+                      "type": "number"
+                    },
+                    "request_time": {
+                      "type": "string"
+                    },
+                    "duration_ms": {
+                      "type": "number"
                     }
                   },
                   "required": [
-                    "data"
-                  ]
-                },
-                "example": {
-                  "data": [
-                    {
-                      "datetime": "2025-05-29 15:00:00",
-                      "ticker": "WETHUSDC",
-                      "open": 2674.206768283323,
-                      "high": 2674.206768283323,
-                      "low": 2648.1288363948797,
-                      "close": 2648.1288363948797,
-                      "volume": 5062048.294222999,
-                      "transactions": 169
-                    }
-                  ]
+                    "data",
+                    "statistics",
+                    "pagination",
+                    "results",
+                    "total_results",
+                    "request_time",
+                    "duration_ms"
+                  ],
+                  "additionalProperties": false
+                },
+                "examples": {
+                  "example": {
+                    "value": {
+                      "data": [
+                        {
+                          "datetime": "2025-05-29 15:00:00",
+                          "ticker": "WETHUSDC",
+                          "open": 2674.206768283323,
+                          "high": 2674.206768283323,
+                          "low": 2648.1288363948797,
+                          "close": 2648.1288363948797,
+                          "volume": 5062048.294222999,
+                          "transactions": 169
+                        }
+                      ]
+                    }
+                  }
                 }
               }
             }
@@ -8226,12 +9666,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 400,
-                  "code": "bad_query_input",
-                  "message": "Invalid query parameter provided"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 400,
+                      "code": "bad_query_input",
+                      "message": "Invalid query parameter provided"
+                    }
+                  }
                 }
               }
             }
@@ -8289,12 +9734,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 401,
-                  "code": "unauthorized",
-                  "message": "Authentication required"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 401,
+                      "code": "unauthorized",
+                      "message": "Authentication required"
+                    }
+                  }
                 }
               }
             }
@@ -8352,12 +9802,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 403,
-                  "code": "forbidden",
-                  "message": "Access denied"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 403,
+                      "code": "forbidden",
+                      "message": "Access denied"
+                    }
+                  }
                 }
               }
             }
@@ -8415,12 +9870,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 404,
-                  "code": "not_found_data",
-                  "message": "Resource not found"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 404,
+                      "code": "not_found_data",
+                      "message": "Resource not found"
+                    }
+                  }
                 }
               }
             }
@@ -8465,12 +9925,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 500,
-                  "code": "internal_server_error",
-                  "message": "An unexpected error occurred"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 500,
+                      "code": "internal_server_error",
+                      "message": "An unexpected error occurred"
+                    }
+                  }
                 }
               }
             }
@@ -8484,17 +9949,11 @@
           {
             "in": "path",
             "name": "pool",
-            "schema": {
-              "anyOf": [
-                {
-                  "type": "string"
-                },
-                {
-                  "type": "string"
-                }
-              ],
+            "schema": {
               "description": "Filter by pool address",
-              "example": "0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640"
+              "example": "0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640",
+              "default": "",
+              "type": "string"
             },
             "required": true
           },
@@ -8502,6 +9961,9 @@
             "in": "query",
             "name": "network_id",
             "schema": {
+              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
+              "example": "mainnet",
+              "default": "mainnet",
               "type": "string",
               "enum": [
                 "arbitrum-one",
@@ -8512,69 +9974,69 @@
                 "matic",
                 "optimism",
                 "unichain"
-              ],
-              "default": "mainnet",
-              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
-              "example": "mainnet"
-            }
+              ]
+            },
+            "required": true
           },
           {
             "in": "query",
             "name": "interval",
             "schema": {
-              "type": "string",
-              "enum": [
-                "1h",
-                "4h",
-                "1d",
-                "1w"
-              ],
-              "default": "1d",
               "description": "The interval for which to aggregate price data (hourly, 4-hours, daily or weekly)."
-            }
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "startTime",
             "schema": {
-              "type": "integer",
+              "default": 0,
               "description": "UNIX timestamp in seconds.",
-              "default": 0
-            }
+              "type": "integer",
+              "minimum": -9007199254740991,
+              "maximum": 9007199254740991
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "endTime",
             "schema": {
-              "type": "integer",
+              "default": 9999999999,
               "description": "UNIX timestamp in seconds.",
-              "default": 9999999999
-            }
+              "type": "integer",
+              "minimum": -9007199254740991,
+              "maximum": 9007199254740991
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "limit",
             "schema": {
+              "description": "The maximum number of items returned in a single request.",
+              "default": 10,
               "type": "integer",
               "minimum": 1,
-              "maximum": 1000,
-              "default": 10,
-              "description": "The maximum number of items returned in a single request."
-            }
+              "maximum": 1000
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "page",
             "schema": {
+              "description": "The page number of the results to return.",
+              "default": 1,
               "type": "integer",
               "minimum": 1,
-              "default": 1,
-              "description": "The page number of the results to return."
-            }
+              "maximum": 767465558638
+            },
+            "required": false
           }
         ],
-        "summary": "OHLCV by Pool",
-        "description": "Provides pricing data in the Open/High/Low/Close/Volume (OHCLV) format.",
+        "summary": "Pool OHLCV Data",
+        "description": "Returns candlestick price data for liquidity pools across time intervals.",
         "security": [
           {
             "bearerAuth": []
@@ -8599,7 +10061,8 @@
                         "properties": {
                           "datetime": {
                             "type": "string",
-                            "format": "date-time"
+                            "format": "date-time",
+                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
                           },
                           "ticker": {
                             "type": "string"
@@ -8636,7 +10099,8 @@
                           "volume",
                           "uaw",
                           "transactions"
-                        ]
+                        ],
+                        "additionalProperties": false
                       }
                     },
                     "statistics": {
@@ -8651,27 +10115,83 @@
                         "bytes_read": {
                           "type": "number"
                         }
-                      }
+                      },
+                      "additionalProperties": false
+                    },
+                    "pagination": {
+                      "type": "object",
+                      "properties": {
+                        "previous_page": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        },
+                        "current_page": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        },
+                        "next_page": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        },
+                        "total_pages": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        }
+                      },
+                      "required": [
+                        "previous_page",
+                        "current_page",
+                        "next_page",
+                        "total_pages"
+                      ],
+                      "additionalProperties": false
+                    },
+                    "results": {
+                      "type": "number"
+                    },
+                    "total_results": {
+                      "type": "number"
+                    },
+                    "request_time": {
+                      "type": "string"
+                    },
+                    "duration_ms": {
+                      "type": "number"
                     }
                   },
                   "required": [
-                    "data"
-                  ]
-                },
-                "example": {
-                  "data": [
-                    {
-                      "datetime": "2025-05-29 15:00:00",
-                      "ticker": "WETHUSD",
-                      "open": 2669.130852861705,
-                      "high": 2669.130852861705,
-                      "low": 2669.130852861705,
-                      "close": 2669.130852861705,
-                      "volume": 184897.1695477702,
-                      "uaw": 31,
-                      "transactions": 35
-                    }
-                  ]
+                    "data",
+                    "statistics",
+                    "pagination",
+                    "results",
+                    "total_results",
+                    "request_time",
+                    "duration_ms"
+                  ],
+                  "additionalProperties": false
+                },
+                "examples": {
+                  "example": {
+                    "value": {
+                      "data": [
+                        {
+                          "datetime": "2025-05-29 15:00:00",
+                          "ticker": "WETHUSD",
+                          "open": 2669.130852861705,
+                          "high": 2669.130852861705,
+                          "low": 2669.130852861705,
+                          "close": 2669.130852861705,
+                          "volume": 184897.1695477702,
+                          "uaw": 31,
+                          "transactions": 35
+                        }
+                      ]
+                    }
+                  }
                 }
               }
             }
@@ -8729,12 +10249,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 400,
-                  "code": "bad_query_input",
-                  "message": "Invalid query parameter provided"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 400,
+                      "code": "bad_query_input",
+                      "message": "Invalid query parameter provided"
+                    }
+                  }
                 }
               }
             }
@@ -8792,12 +10317,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 401,
-                  "code": "unauthorized",
-                  "message": "Authentication required"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 401,
+                      "code": "unauthorized",
+                      "message": "Authentication required"
+                    }
+                  }
                 }
               }
             }
@@ -8855,12 +10385,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 403,
-                  "code": "forbidden",
-                  "message": "Access denied"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 403,
+                      "code": "forbidden",
+                      "message": "Access denied"
+                    }
+                  }
                 }
               }
             }
@@ -8918,12 +10453,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 404,
-                  "code": "not_found_data",
-                  "message": "Resource not found"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 404,
+                      "code": "not_found_data",
+                      "message": "Resource not found"
+                    }
+                  }
                 }
               }
             }
@@ -8968,12 +10508,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 500,
-                  "code": "internal_server_error",
-                  "message": "An unexpected error occurred"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 500,
+                      "code": "internal_server_error",
+                      "message": "An unexpected error occurred"
+                    }
+                  }
                 }
               }
             }
@@ -8988,9 +10533,10 @@
             "in": "path",
             "name": "contract",
             "schema": {
-              "type": "string",
               "description": "Filter by contract address",
-              "example": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"
+              "example": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
+              "default": "",
+              "type": "string"
             },
             "required": true
           },
@@ -8998,6 +10544,9 @@
             "in": "query",
             "name": "network_id",
             "schema": {
+              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
+              "example": "mainnet",
+              "default": "mainnet",
               "type": "string",
               "enum": [
                 "arbitrum-one",
@@ -9008,69 +10557,69 @@
                 "matic",
                 "optimism",
                 "unichain"
-              ],
-              "default": "mainnet",
-              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
-              "example": "mainnet"
-            }
+              ]
+            },
+            "required": true
           },
           {
             "in": "query",
             "name": "interval",
             "schema": {
-              "type": "string",
-              "enum": [
-                "1h",
-                "4h",
-                "1d",
-                "1w"
-              ],
-              "default": "1d",
               "description": "The interval for which to aggregate price data (hourly, 4-hours, daily or weekly)."
-            }
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "startTime",
             "schema": {
-              "type": "integer",
+              "default": 0,
               "description": "UNIX timestamp in seconds.",
-              "default": 0
-            }
+              "type": "integer",
+              "minimum": -9007199254740991,
+              "maximum": 9007199254740991
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "endTime",
             "schema": {
-              "type": "integer",
+              "default": 9999999999,
               "description": "UNIX timestamp in seconds.",
-              "default": 9999999999
-            }
+              "type": "integer",
+              "minimum": -9007199254740991,
+              "maximum": 9007199254740991
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "limit",
             "schema": {
+              "description": "The maximum number of items returned in a single request.",
+              "default": 10,
               "type": "integer",
               "minimum": 1,
-              "maximum": 1000,
-              "default": 10,
-              "description": "The maximum number of items returned in a single request."
-            }
+              "maximum": 1000
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "page",
             "schema": {
+              "description": "The page number of the results to return.",
+              "default": 1,
               "type": "integer",
               "minimum": 1,
-              "default": 1,
-              "description": "The page number of the results to return."
-            }
+              "maximum": 767465558638
+            },
+            "required": false
           }
         ],
-        "summary": "OHLCV by Contract",
-        "description": "Provides pricing data in the Open/High/Low/Close/Volume (OHCLV) format.",
+        "summary": "Token OHLCV Data",
+        "description": "Returns candlestick price data for tokens aggregated across the top 20 trading pairs.",
         "security": [
           {
             "bearerAuth": []
@@ -9095,7 +10644,8 @@
                         "properties": {
                           "datetime": {
                             "type": "string",
-                            "format": "date-time"
+                            "format": "date-time",
+                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
                           },
                           "contract": {
                             "type": "string"
@@ -9132,7 +10682,8 @@
                           "high",
                           "low",
                           "close"
-                        ]
+                        ],
+                        "additionalProperties": false
                       }
                     },
                     "statistics": {
@@ -9147,28 +10698,84 @@
                         "bytes_read": {
                           "type": "number"
                         }
-                      }
+                      },
+                      "additionalProperties": false
+                    },
+                    "pagination": {
+                      "type": "object",
+                      "properties": {
+                        "previous_page": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        },
+                        "current_page": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        },
+                        "next_page": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        },
+                        "total_pages": {
+                          "type": "integer",
+                          "minimum": 1,
+                          "maximum": 9007199254740991
+                        }
+                      },
+                      "required": [
+                        "previous_page",
+                        "current_page",
+                        "next_page",
+                        "total_pages"
+                      ],
+                      "additionalProperties": false
+                    },
+                    "results": {
+                      "type": "number"
+                    },
+                    "total_results": {
+                      "type": "number"
+                    },
+                    "request_time": {
+                      "type": "string"
+                    },
+                    "duration_ms": {
+                      "type": "number"
                     }
                   },
                   "required": [
-                    "data"
-                  ]
-                },
-                "example": {
-                  "data": [
-                    {
-                      "datetime": "2025-05-29 00:00:00",
-                      "contract": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
-                      "name": "Native",
-                      "symbol": "ETH",
-                      "decimals": 18,
-                      "open": 237.63774262699187,
-                      "high": 237.6377453469919,
-                      "low": 0.10533323067535896,
-                      "close": 0.15438623067535898,
-                      "network_id": "mainnet"
-                    }
-                  ]
+                    "data",
+                    "statistics",
+                    "pagination",
+                    "results",
+                    "total_results",
+                    "request_time",
+                    "duration_ms"
+                  ],
+                  "additionalProperties": false
+                },
+                "examples": {
+                  "example": {
+                    "value": {
+                      "data": [
+                        {
+                          "datetime": "2025-05-29 00:00:00",
+                          "contract": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
+                          "name": "Native",
+                          "symbol": "ETH",
+                          "decimals": 18,
+                          "open": 237.63774262699187,
+                          "high": 237.6377453469919,
+                          "low": 0.10533323067535896,
+                          "close": 0.15438623067535898,
+                          "network_id": "mainnet"
+                        }
+                      ]
+                    }
+                  }
                 }
               }
             }
@@ -9226,12 +10833,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 400,
-                  "code": "bad_query_input",
-                  "message": "Invalid query parameter provided"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 400,
+                      "code": "bad_query_input",
+                      "message": "Invalid query parameter provided"
+                    }
+                  }
                 }
               }
             }
@@ -9289,12 +10901,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 401,
-                  "code": "unauthorized",
-                  "message": "Authentication required"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 401,
+                      "code": "unauthorized",
+                      "message": "Authentication required"
+                    }
+                  }
                 }
               }
             }
@@ -9352,12 +10969,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 403,
-                  "code": "forbidden",
-                  "message": "Access denied"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 403,
+                      "code": "forbidden",
+                      "message": "Access denied"
+                    }
+                  }
                 }
               }
             }
@@ -9415,12 +11037,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 404,
-                  "code": "not_found_data",
-                  "message": "Resource not found"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 404,
+                      "code": "not_found_data",
+                      "message": "Resource not found"
+                    }
+                  }
                 }
               }
             }
@@ -9465,12 +11092,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 500,
-                  "code": "internal_server_error",
-                  "message": "An unexpected error occurred"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 500,
+                      "code": "internal_server_error",
+                      "message": "An unexpected error occurred"
+                    }
+                  }
                 }
               }
             }
@@ -9485,31 +11117,20 @@
             "in": "path",
             "name": "address",
             "schema": {
-              "type": "string",
               "description": "Filter by address",
-              "example": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
+              "example": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
+              "default": "",
+              "type": "string"
             },
             "required": true
           },
-          {
-            "in": "query",
-            "name": "interval",
-            "schema": {
-              "type": "string",
-              "enum": [
-                "1h",
-                "4h",
-                "1d",
-                "1w"
-              ],
-              "default": "1d",
-              "description": "The interval for which to aggregate price data (hourly, 4-hours, daily or weekly)."
-            }
-          },
           {
             "in": "query",
             "name": "network_id",
             "schema": {
+              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
+              "example": "mainnet",
+              "default": "mainnet",
               "type": "string",
               "enum": [
                 "arbitrum-one",
@@ -9520,66 +11141,83 @@
                 "matic",
                 "optimism",
                 "unichain"
-              ],
-              "default": "mainnet",
-              "description": "The Graph Network ID for EVM networks https://thegraph.com/networks",
-              "example": "mainnet"
-            }
+              ]
+            },
+            "required": true
+          },
+          {
+            "in": "query",
+            "name": "interval",
+            "schema": {
+              "description": "The interval for which to aggregate price data (hourly, 4-hours, daily or weekly)."
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "contracts",
             "schema": {
+              "default": [],
               "type": "array",
               "items": {
-                "type": "string",
-                "description": "Filter by address"
-              },
-              "default": []
-            }
+                "description": "Filter by address",
+                "default": "",
+                "type": "string"
+              }
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "startTime",
             "schema": {
-              "type": "integer",
+              "default": 0,
               "description": "UNIX timestamp in seconds.",
-              "default": 0
-            }
+              "type": "integer",
+              "minimum": -9007199254740991,
+              "maximum": 9007199254740991
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "endTime",
             "schema": {
-              "type": "integer",
+              "default": 9999999999,
               "description": "UNIX timestamp in seconds.",
-              "default": 9999999999
-            }
+              "type": "integer",
+              "minimum": -9007199254740991,
+              "maximum": 9007199254740991
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "limit",
             "schema": {
+              "description": "The maximum number of items returned in a single request.",
+              "default": 10,
               "type": "integer",
               "minimum": 1,
-              "maximum": 1000,
-              "default": 10,
-              "description": "The maximum number of items returned in a single request."
-            }
+              "maximum": 1000
+            },
+            "required": false
           },
           {
             "in": "query",
             "name": "page",
             "schema": {
+              "description": "The page number of the results to return.",
+              "default": 1,
               "type": "integer",
               "minimum": 1,
-              "default": 1,
-              "description": "The page number of the results to return."
-            }
+              "maximum": 767465558638
+            },
+            "required": false
           }
         ],
         "summary": "Historical Balances",
-        "description": "Provides historical ERC-20 & Native balances by wallet address.",
+        "description": "Returns wallet token balance changes over time in OHLC format.",
         "x-tagGroups": [
           "Historical"
         ],
@@ -9594,13 +11232,102 @@
       "get": {
         "responses": {
           "200": {
-            "description": "Successful Response",
+            "description": "API is healthy or degraded",
             "content": {
-              "text/plain": {
+              "application/json": {
                 "schema": {
-                  "type": "string"
-                },
-                "example": "OK"
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "type": "string",
+                      "enum": [
+                        "healthy",
+                        "degraded",
+                        "unhealthy"
+                      ]
+                    },
+                    "checks": {
+                      "type": "object",
+                      "properties": {
+                        "database": {
+                          "type": "string",
+                          "enum": [
+                            "up",
+                            "down",
+                            "slow"
+                          ]
+                        },
+                        "api_endpoints": {
+                          "type": "string",
+                          "enum": [
+                            "up",
+                            "down",
+                            "partial",
+                            "skipped"
+                          ]
+                        }
+                      },
+                      "required": [
+                        "database",
+                        "api_endpoints"
+                      ],
+                      "additionalProperties": false
+                    },
+                    "request_time": {
+                      "type": "string",
+                      "format": "date-time",
+                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
+                    },
+                    "duration_ms": {
+                      "type": "number"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "checks",
+                    "request_time",
+                    "duration_ms"
+                  ],
+                  "additionalProperties": false
+                },
+                "examples": {
+                  "healthy": {
+                    "summary": "Healthy API",
+                    "value": {
+                      "status": "healthy",
+                      "checks": {
+                        "database": "up",
+                        "api_endpoints": "up"
+                      },
+                      "request_time": "2025-08-06 12:00:00",
+                      "duration_ms": 1250
+                    }
+                  },
+                  "degraded": {
+                    "summary": "Degraded API",
+                    "value": {
+                      "status": "degraded",
+                      "checks": {
+                        "database": "slow",
+                        "api_endpoints": "partial"
+                      },
+                      "request_time": "2025-08-06 12:00:00",
+                      "duration_ms": 3400
+                    }
+                  },
+                  "skipped": {
+                    "summary": "Database-only check",
+                    "value": {
+                      "status": "healthy",
+                      "checks": {
+                        "database": "up",
+                        "api_endpoints": "skipped"
+                      },
+                      "request_time": "2025-08-06 12:00:00",
+                      "duration_ms": 125
+                    }
+                  }
+                }
               }
             }
           },
@@ -9657,12 +11384,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 400,
-                  "code": "bad_query_input",
-                  "message": "Invalid query parameter provided"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 400,
+                      "code": "bad_query_input",
+                      "message": "Invalid query parameter provided"
+                    }
+                  }
                 }
               }
             }
@@ -9720,12 +11452,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 401,
-                  "code": "unauthorized",
-                  "message": "Authentication required"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 401,
+                      "code": "unauthorized",
+                      "message": "Authentication required"
+                    }
+                  }
                 }
               }
             }
@@ -9783,12 +11520,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 403,
-                  "code": "forbidden",
-                  "message": "Access denied"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 403,
+                      "code": "forbidden",
+                      "message": "Access denied"
+                    }
+                  }
                 }
               }
             }
@@ -9846,12 +11588,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 404,
-                  "code": "not_found_data",
-                  "message": "Resource not found"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 404,
+                      "code": "not_found_data",
+                      "message": "Resource not found"
+                    }
+                  }
                 }
               }
             }
@@ -9896,12 +11643,93 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 500,
-                  "code": "internal_server_error",
-                  "message": "An unexpected error occurred"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 500,
+                      "code": "internal_server_error",
+                      "message": "An unexpected error occurred"
+                    }
+                  }
+                }
+              }
+            }
+          },
+          "503": {
+            "description": "API is unhealthy",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "status": {
+                      "type": "string",
+                      "enum": [
+                        "healthy",
+                        "degraded",
+                        "unhealthy"
+                      ]
+                    },
+                    "checks": {
+                      "type": "object",
+                      "properties": {
+                        "database": {
+                          "type": "string",
+                          "enum": [
+                            "up",
+                            "down",
+                            "slow"
+                          ]
+                        },
+                        "api_endpoints": {
+                          "type": "string",
+                          "enum": [
+                            "up",
+                            "down",
+                            "partial",
+                            "skipped"
+                          ]
+                        }
+                      },
+                      "required": [
+                        "database",
+                        "api_endpoints"
+                      ],
+                      "additionalProperties": false
+                    },
+                    "request_time": {
+                      "type": "string",
+                      "format": "date-time",
+                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
+                    },
+                    "duration_ms": {
+                      "type": "number"
+                    }
+                  },
+                  "required": [
+                    "status",
+                    "checks",
+                    "request_time",
+                    "duration_ms"
+                  ],
+                  "additionalProperties": false
+                },
+                "examples": {
+                  "unhealthy": {
+                    "summary": "Unhealthy API",
+                    "value": {
+                      "status": "unhealthy",
+                      "checks": {
+                        "database": "down",
+                        "api_endpoints": "down"
+                      },
+                      "request_time": "2025-08-06 12:00:00",
+                      "duration_ms": 5000
+                    }
+                  }
                 }
               }
             }
@@ -9911,8 +11739,22 @@
         "tags": [
           "Monitoring"
         ],
-        "parameters": [],
-        "description": "Get health status of the API"
+        "parameters": [
+          {
+            "in": "query",
+            "name": "skip_endpoints",
+            "schema": {
+              "default": "true",
+              "type": "string",
+              "enum": [
+                "true",
+                "false"
+              ]
+            }
+          }
+        ],
+        "summary": "Health Check",
+        "description": "Returns API operational status and dependency health. Use `skip_endpoints=true` for faster database-only checks."
       }
     },
     "/version": {
@@ -9939,13 +11781,18 @@
                     "version",
                     "date",
                     "commit"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "version": "2.3.3",
-                  "commit": "6e8d0f0",
-                  "date": "2025-07-24",
-                  "repo": "pinax-network/token-api"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "version": "2.4.4",
+                      "commit": "39f504c",
+                      "date": "2025-08-07",
+                      "repo": "pinax-network/token-api"
+                    }
+                  }
                 }
               }
             }
@@ -10003,12 +11850,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 400,
-                  "code": "bad_query_input",
-                  "message": "Invalid query parameter provided"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 400,
+                      "code": "bad_query_input",
+                      "message": "Invalid query parameter provided"
+                    }
+                  }
                 }
               }
             }
@@ -10066,12 +11918,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 401,
-                  "code": "unauthorized",
-                  "message": "Authentication required"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 401,
+                      "code": "unauthorized",
+                      "message": "Authentication required"
+                    }
+                  }
                 }
               }
             }
@@ -10129,12 +11986,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 403,
-                  "code": "forbidden",
-                  "message": "Access denied"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 403,
+                      "code": "forbidden",
+                      "message": "Access denied"
+                    }
+                  }
                 }
               }
             }
@@ -10192,12 +12054,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 404,
-                  "code": "not_found_data",
-                  "message": "Resource not found"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 404,
+                      "code": "not_found_data",
+                      "message": "Resource not found"
+                    }
+                  }
                 }
               }
             }
@@ -10242,12 +12109,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 500,
-                  "code": "internal_server_error",
-                  "message": "An unexpected error occurred"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 500,
+                      "code": "internal_server_error",
+                      "message": "An unexpected error occurred"
+                    }
+                  }
                 }
               }
             }
@@ -10258,7 +12130,8 @@
           "Monitoring"
         ],
         "parameters": [],
-        "description": "Get the version of the API"
+        "summary": "Version",
+        "description": "Returns API version, build date, and commit information."
       }
     },
     "/networks": {
@@ -10303,12 +12176,14 @@
                                 },
                                 "required": [
                                   "name"
-                                ]
+                                ],
+                                "additionalProperties": false
                               }
                             },
                             "required": [
                               "web3Icons"
-                            ]
+                            ],
+                            "additionalProperties": false
                           },
                           "alias": {
                             "type": "array",
@@ -10325,36 +12200,42 @@
                           "networkType",
                           "icon",
                           "alias"
-                        ]
+                        ],
+                        "additionalProperties": false
                       }
                     }
                   },
                   "required": [
                     "networks"
-                  ]
-                },
-                "example": {
-                  "networks": [
-                    {
-                      "id": "mainnet",
-                      "fullName": "Ethereum Mainnet",
-                      "shortName": "Ethereum",
-                      "networkType": "mainnet",
-                      "nativeToken": "ETH",
-                      "caip2Id": "eip155:1",
-                      "icon": {
-                        "web3Icons": {
-                          "name": "ethereum"
+                  ],
+                  "additionalProperties": false
+                },
+                "examples": {
+                  "example": {
+                    "value": {
+                      "networks": [
+                        {
+                          "id": "mainnet",
+                          "fullName": "Ethereum Mainnet",
+                          "shortName": "Ethereum",
+                          "networkType": "mainnet",
+                          "nativeToken": "ETH",
+                          "caip2Id": "eip155:1",
+                          "icon": {
+                            "web3Icons": {
+                              "name": "ethereum"
+                            }
+                          },
+                          "aliases": [
+                            "ethereum",
+                            "eth",
+                            "eth-mainnet",
+                            "evm-1"
+                          ]
                         }
-                      },
-                      "aliases": [
-                        "ethereum",
-                        "eth",
-                        "eth-mainnet",
-                        "evm-1"
                       ]
                     }
-                  ]
+                  }
                 }
               }
             }
@@ -10412,12 +12293,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 400,
-                  "code": "bad_query_input",
-                  "message": "Invalid query parameter provided"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 400,
+                      "code": "bad_query_input",
+                      "message": "Invalid query parameter provided"
+                    }
+                  }
                 }
               }
             }
@@ -10475,12 +12361,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 401,
-                  "code": "unauthorized",
-                  "message": "Authentication required"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 401,
+                      "code": "unauthorized",
+                      "message": "Authentication required"
+                    }
+                  }
                 }
               }
             }
@@ -10538,12 +12429,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 403,
-                  "code": "forbidden",
-                  "message": "Access denied"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 403,
+                      "code": "forbidden",
+                      "message": "Access denied"
+                    }
+                  }
                 }
               }
             }
@@ -10601,12 +12497,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 404,
-                  "code": "not_found_data",
-                  "message": "Resource not found"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 404,
+                      "code": "not_found_data",
+                      "message": "Resource not found"
+                    }
+                  }
                 }
               }
             }
@@ -10651,12 +12552,17 @@
                     "status",
                     "code",
                     "message"
-                  ]
+                  ],
+                  "additionalProperties": false
                 },
-                "example": {
-                  "status": 500,
-                  "code": "internal_server_error",
-                  "message": "An unexpected error occurred"
+                "examples": {
+                  "example": {
+                    "value": {
+                      "status": 500,
+                      "code": "internal_server_error",
+                      "message": "An unexpected error occurred"
+                    }
+                  }
                 }
               }
             }
@@ -10667,7 +12573,8 @@
           "Monitoring"
         ],
         "parameters": [],
-        "description": "Get supported networks of the API"
+        "summary": "Networks",
+        "description": "Returns supported blockchain networks with identifiers and metadata."
       }
     }
   }
