subgraph-registry-mcp 0.9.2 → 0.9.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/data/openapi.json +60 -3
- package/openapi.yaml +43 -3
- package/package.json +4 -2
- package/src/index.js +8 -0
package/data/openapi.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"info": {
|
|
4
4
|
"title": "Subgraph Registry",
|
|
5
5
|
"description": "Agent-friendly subgraph discovery on The Graph Network. 14,700+ classified subgraphs with semantic search, reliability scoring, schema-evolution tracking, and x402 query URLs ($0.01 USDC on Base, no API key).",
|
|
6
|
-
"version": "0.
|
|
6
|
+
"version": "0.9.3",
|
|
7
7
|
"license": {
|
|
8
8
|
"name": "MIT"
|
|
9
9
|
},
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"post": {
|
|
24
24
|
"operationId": "tool_search_subgraphs",
|
|
25
25
|
"summary": "Search and filter the classified subgraph registry (15,500+ subgraphs).",
|
|
26
|
-
"description": "Search and filter the classified subgraph registry (15,500+ subgraphs). Filter by domain (defi, nfts, dao, gaming, identity, infrastructure, social, analytics), network (mainnet, arbitrum-one, base, matic, bsc, optimism, avalanche), protocol_type (dex, lending, bridge, staking, options, perpetuals, nft-marketplace, yield-aggregator, governance, name-service), canonical entity type (liquidity_pool, trade, token, position, vault, loan, collateral, liquidation, nft_collection, nft_item, nft_sale, proposal, delegate, domain_name, account, transaction, daily_snapshot, hourly_snapshot), or free-text keyword. Returns subgraphs ranked by reliability score. Each result includes query_url_x402 (POST GraphQL and pay $0.01 USDC on Base per query — no API key needed) and a legacy query_url (Studio API key required).",
|
|
26
|
+
"description": "Search and filter the classified subgraph registry (15,500+ subgraphs). Filter by domain (defi, nfts, dao, gaming, identity, infrastructure, social, analytics), network (mainnet, arbitrum-one, base, matic, bsc, optimism, avalanche), protocol_type (dex, lending, bridge, staking, options, perpetuals, nft-marketplace, yield-aggregator, governance, name-service), canonical entity type (liquidity_pool, trade, token, position, vault, loan, collateral, liquidation, nft_collection, nft_item, nft_sale, proposal, delegate, domain_name, account, transaction, daily_snapshot, hourly_snapshot), or free-text keyword. Returns subgraphs ranked by reliability score. Each result includes query_url_x402 (POST GraphQL and pay $0.01 USDC on Base per query — no API key needed) and a legacy query_url (Studio API key required), plus age_days and maturity (new | emerging | established). Because reliability_score is cumulative it structurally favours older deployments, so a separate `emerging` list carries recent matches that ranked below the main cut for age rather than quality — read `emerging_caveat` before offering one to a user.",
|
|
27
27
|
"tags": [
|
|
28
28
|
"mcp-tools"
|
|
29
29
|
],
|
|
@@ -57,12 +57,27 @@
|
|
|
57
57
|
},
|
|
58
58
|
"min_reliability": {
|
|
59
59
|
"type": "number",
|
|
60
|
-
"description": "Minimum reliability score (0-1). Higher = more query fees, volume, curation signal, and indexer allocation."
|
|
60
|
+
"description": "Minimum reliability score (0-1). Higher = more query fees, volume, curation signal, and indexer allocation. NOTE: all four inputs are cumulative, so this score rises with age — setting a floor here filters out good recent subgraphs along with bad ones."
|
|
61
61
|
},
|
|
62
62
|
"limit": {
|
|
63
63
|
"type": "integer",
|
|
64
64
|
"description": "Max results to return (default: 20)",
|
|
65
65
|
"default": 20
|
|
66
|
+
},
|
|
67
|
+
"include_unserved": {
|
|
68
|
+
"type": "boolean",
|
|
69
|
+
"description": "Include subgraphs with 0 active indexer allocations (returns 'no allocations' on query). Default false.",
|
|
70
|
+
"default": false
|
|
71
|
+
},
|
|
72
|
+
"include_denied": {
|
|
73
|
+
"type": "boolean",
|
|
74
|
+
"description": "Include curation-denied deployments (deniedAt > 0 — denied indexing rewards, typically spam, duplicates or deprecations). Default false. When true, each result carries denied: true so the choice stays visible.",
|
|
75
|
+
"default": false
|
|
76
|
+
},
|
|
77
|
+
"include_testnets": {
|
|
78
|
+
"type": "boolean",
|
|
79
|
+
"description": "Include testnet deployments (sepolia, goerli, holesky, chapel, fuji, mumbai, amoy, *-testnet). Default false — a testnet twin's text is near-identical to its mainnet original, so it competes for the top slot without being the thing anyone wanted. Ignored when you explicitly request a testnet network, so network:\"sepolia\" still works. Each result carries testnet: true|false.",
|
|
80
|
+
"default": false
|
|
66
81
|
}
|
|
67
82
|
}
|
|
68
83
|
}
|
|
@@ -282,6 +297,16 @@
|
|
|
282
297
|
"description": "Include subgraphs with 0 active indexer allocations (returns 'no allocations' on query). Default false.",
|
|
283
298
|
"default": false
|
|
284
299
|
},
|
|
300
|
+
"include_denied": {
|
|
301
|
+
"type": "boolean",
|
|
302
|
+
"description": "Include curation-denied deployments (deniedAt > 0 — denied indexing rewards, typically spam, duplicates or deprecations). Default false. When true, each result carries denied: true so the choice stays visible.",
|
|
303
|
+
"default": false
|
|
304
|
+
},
|
|
305
|
+
"include_testnets": {
|
|
306
|
+
"type": "boolean",
|
|
307
|
+
"description": "Include testnet deployments (sepolia, goerli, holesky, chapel, fuji, mumbai, amoy, *-testnet). Default false — a testnet twin's text is near-identical to its mainnet original, so it competes for the top slot without being the thing anyone wanted. Ignored when you explicitly request a testnet network, so network:\"sepolia\" still works. Each result carries testnet: true|false.",
|
|
308
|
+
"default": false
|
|
309
|
+
},
|
|
285
310
|
"domain": {
|
|
286
311
|
"type": "string",
|
|
287
312
|
"description": "Pre-filter by domain (defi, nfts, dao, gaming, identity, infrastructure, social, analytics)"
|
|
@@ -433,6 +458,38 @@
|
|
|
433
458
|
}
|
|
434
459
|
}
|
|
435
460
|
},
|
|
461
|
+
"/graphql": {
|
|
462
|
+
"post": {
|
|
463
|
+
"operationId": "rest_post_graphql",
|
|
464
|
+
"summary": "payql compatibility — search results in subgraphMetadataSearch shape",
|
|
465
|
+
"tags": [
|
|
466
|
+
"rest"
|
|
467
|
+
],
|
|
468
|
+
"responses": {
|
|
469
|
+
"200": {
|
|
470
|
+
"description": "{ data: { subgraphMetadataSearch: [...] } }",
|
|
471
|
+
"content": {
|
|
472
|
+
"application/json": {
|
|
473
|
+
"schema": {
|
|
474
|
+
"type": "object",
|
|
475
|
+
"description": "{ data: { subgraphMetadataSearch: [...] } }"
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
},
|
|
480
|
+
"404": {
|
|
481
|
+
"description": "Not found",
|
|
482
|
+
"content": {
|
|
483
|
+
"application/json": {
|
|
484
|
+
"schema": {
|
|
485
|
+
"$ref": "#/components/schemas/ToolError"
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
}
|
|
492
|
+
},
|
|
436
493
|
"/.well-known/subgraph/{id}.jsonld": {
|
|
437
494
|
"get": {
|
|
438
495
|
"operationId": "rest_get_well_known_subgraph_id_jsonld",
|
package/openapi.yaml
CHANGED
|
@@ -5,7 +5,7 @@ openapi: "3.1.0"
|
|
|
5
5
|
info:
|
|
6
6
|
title: "Subgraph Registry"
|
|
7
7
|
description: "Agent-friendly subgraph discovery on The Graph Network. 14,700+ classified subgraphs with semantic search, reliability scoring, schema-evolution tracking, and x402 query URLs ($0.01 USDC on Base, no API key)."
|
|
8
|
-
version: "0.
|
|
8
|
+
version: "0.9.3"
|
|
9
9
|
license:
|
|
10
10
|
name: "MIT"
|
|
11
11
|
contact:
|
|
@@ -19,7 +19,7 @@ paths:
|
|
|
19
19
|
post:
|
|
20
20
|
operationId: "tool_search_subgraphs"
|
|
21
21
|
summary: "Search and filter the classified subgraph registry (15,500+ subgraphs)."
|
|
22
|
-
description: "Search and filter the classified subgraph registry (15,500+ subgraphs). Filter by domain (defi, nfts, dao, gaming, identity, infrastructure, social, analytics), network (mainnet, arbitrum-one, base, matic, bsc, optimism, avalanche), protocol_type (dex, lending, bridge, staking, options, perpetuals, nft-marketplace, yield-aggregator, governance, name-service), canonical entity type (liquidity_pool, trade, token, position, vault, loan, collateral, liquidation, nft_collection, nft_item, nft_sale, proposal, delegate, domain_name, account, transaction, daily_snapshot, hourly_snapshot), or free-text keyword. Returns subgraphs ranked by reliability score. Each result includes query_url_x402 (POST GraphQL and pay $0.01 USDC on Base per query — no API key needed) and a legacy query_url (Studio API key required)."
|
|
22
|
+
description: "Search and filter the classified subgraph registry (15,500+ subgraphs). Filter by domain (defi, nfts, dao, gaming, identity, infrastructure, social, analytics), network (mainnet, arbitrum-one, base, matic, bsc, optimism, avalanche), protocol_type (dex, lending, bridge, staking, options, perpetuals, nft-marketplace, yield-aggregator, governance, name-service), canonical entity type (liquidity_pool, trade, token, position, vault, loan, collateral, liquidation, nft_collection, nft_item, nft_sale, proposal, delegate, domain_name, account, transaction, daily_snapshot, hourly_snapshot), or free-text keyword. Returns subgraphs ranked by reliability score. Each result includes query_url_x402 (POST GraphQL and pay $0.01 USDC on Base per query — no API key needed) and a legacy query_url (Studio API key required), plus age_days and maturity (new | emerging | established). Because reliability_score is cumulative it structurally favours older deployments, so a separate `emerging` list carries recent matches that ranked below the main cut for age rather than quality — read `emerging_caveat` before offering one to a user."
|
|
23
23
|
tags:
|
|
24
24
|
- "mcp-tools"
|
|
25
25
|
requestBody:
|
|
@@ -47,11 +47,23 @@ paths:
|
|
|
47
47
|
description: "Filter by canonical entity: liquidity_pool, trade, token, position, vault, loan, etc."
|
|
48
48
|
min_reliability:
|
|
49
49
|
type: "number"
|
|
50
|
-
description: "Minimum reliability score (0-1). Higher = more query fees, volume, curation signal, and indexer allocation."
|
|
50
|
+
description: "Minimum reliability score (0-1). Higher = more query fees, volume, curation signal, and indexer allocation. NOTE: all four inputs are cumulative, so this score rises with age — setting a floor here filters out good recent subgraphs along with bad ones."
|
|
51
51
|
limit:
|
|
52
52
|
type: "integer"
|
|
53
53
|
description: "Max results to return (default: 20)"
|
|
54
54
|
default: 20
|
|
55
|
+
include_unserved:
|
|
56
|
+
type: "boolean"
|
|
57
|
+
description: "Include subgraphs with 0 active indexer allocations (returns 'no allocations' on query). Default false."
|
|
58
|
+
default: false
|
|
59
|
+
include_denied:
|
|
60
|
+
type: "boolean"
|
|
61
|
+
description: "Include curation-denied deployments (deniedAt > 0 — denied indexing rewards, typically spam, duplicates or deprecations). Default false. When true, each result carries denied: true so the choice stays visible."
|
|
62
|
+
default: false
|
|
63
|
+
include_testnets:
|
|
64
|
+
type: "boolean"
|
|
65
|
+
description: "Include testnet deployments (sepolia, goerli, holesky, chapel, fuji, mumbai, amoy, *-testnet). Default false — a testnet twin's text is near-identical to its mainnet original, so it competes for the top slot without being the thing anyone wanted. Ignored when you explicitly request a testnet network, so network:\"sepolia\" still works. Each result carries testnet: true|false."
|
|
66
|
+
default: false
|
|
55
67
|
responses:
|
|
56
68
|
"200":
|
|
57
69
|
description: "Tool result (JSON-encoded)"
|
|
@@ -194,6 +206,14 @@ paths:
|
|
|
194
206
|
type: "boolean"
|
|
195
207
|
description: "Include subgraphs with 0 active indexer allocations (returns 'no allocations' on query). Default false."
|
|
196
208
|
default: false
|
|
209
|
+
include_denied:
|
|
210
|
+
type: "boolean"
|
|
211
|
+
description: "Include curation-denied deployments (deniedAt > 0 — denied indexing rewards, typically spam, duplicates or deprecations). Default false. When true, each result carries denied: true so the choice stays visible."
|
|
212
|
+
default: false
|
|
213
|
+
include_testnets:
|
|
214
|
+
type: "boolean"
|
|
215
|
+
description: "Include testnet deployments (sepolia, goerli, holesky, chapel, fuji, mumbai, amoy, *-testnet). Default false — a testnet twin's text is near-identical to its mainnet original, so it competes for the top slot without being the thing anyone wanted. Ignored when you explicitly request a testnet network, so network:\"sepolia\" still works. Each result carries testnet: true|false."
|
|
216
|
+
default: false
|
|
197
217
|
domain:
|
|
198
218
|
type: "string"
|
|
199
219
|
description: "Pre-filter by domain (defi, nfts, dao, gaming, identity, infrastructure, social, analytics)"
|
|
@@ -287,6 +307,26 @@ paths:
|
|
|
287
307
|
application/json:
|
|
288
308
|
schema:
|
|
289
309
|
"$ref": "#/components/schemas/ToolError"
|
|
310
|
+
"/graphql":
|
|
311
|
+
post:
|
|
312
|
+
operationId: "rest_post_graphql"
|
|
313
|
+
summary: "payql compatibility — search results in subgraphMetadataSearch shape"
|
|
314
|
+
tags:
|
|
315
|
+
- "rest"
|
|
316
|
+
responses:
|
|
317
|
+
"200":
|
|
318
|
+
description: "{ data: { subgraphMetadataSearch: [...] } }"
|
|
319
|
+
content:
|
|
320
|
+
application/json:
|
|
321
|
+
schema:
|
|
322
|
+
type: "object"
|
|
323
|
+
description: "{ data: { subgraphMetadataSearch: [...] } }"
|
|
324
|
+
"404":
|
|
325
|
+
description: "Not found"
|
|
326
|
+
content:
|
|
327
|
+
application/json:
|
|
328
|
+
schema:
|
|
329
|
+
"$ref": "#/components/schemas/ToolError"
|
|
290
330
|
"/.well-known/subgraph/{id}.jsonld":
|
|
291
331
|
get:
|
|
292
332
|
operationId: "rest_get_well_known_subgraph_id_jsonld"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "subgraph-registry-mcp",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.3",
|
|
4
4
|
"mcpName": "io.github.PaulieB14/subgraph-registry-mcp",
|
|
5
5
|
"description": "MCP server for agent-friendly subgraph discovery on The Graph Network. 15,330 classified subgraphs with x402 query URLs ($0.01 USDC on Base, no API key required), reliability scoring, and protocol classification.",
|
|
6
6
|
"type": "module",
|
|
@@ -18,7 +18,9 @@
|
|
|
18
18
|
"start": "node src/index.js",
|
|
19
19
|
"start:http": "node src/index.js --http",
|
|
20
20
|
"start:http-only": "node src/index.js --http-only",
|
|
21
|
-
"test": "node --test test/"
|
|
21
|
+
"test": "node --test test/",
|
|
22
|
+
"sync:server": "node scripts/sync-server-json.js",
|
|
23
|
+
"version": "node scripts/sync-server-json.js && node scripts/gen-openapi.js && git add server.json openapi.yaml data/openapi.json"
|
|
22
24
|
},
|
|
23
25
|
"keywords": [
|
|
24
26
|
"mcp",
|
package/src/index.js
CHANGED
|
@@ -1640,6 +1640,14 @@ export const REST_ROUTES = [
|
|
|
1640
1640
|
required: ["status", "subgraphs"],
|
|
1641
1641
|
},
|
|
1642
1642
|
},
|
|
1643
|
+
{
|
|
1644
|
+
method: "post",
|
|
1645
|
+
path: "/graphql",
|
|
1646
|
+
summary: "payql compatibility — search results in subgraphMetadataSearch shape",
|
|
1647
|
+
description:
|
|
1648
|
+
"Answers a `subgraphMetadataSearch` query in The Graph network subgraph's shape, so payql (PAYQL_REGISTRY_URL) can use this registry as a free discovery source with no change on its side. Only the `text` and `first` variables are read; results come from the same index search_subgraphs uses.",
|
|
1649
|
+
response: { type: "object", description: "{ data: { subgraphMetadataSearch: [...] } }" },
|
|
1650
|
+
},
|
|
1643
1651
|
{
|
|
1644
1652
|
method: "get",
|
|
1645
1653
|
path: "/.well-known/subgraph/{id}.jsonld",
|