@forgemeshlabs/seo-authority-mcp 0.1.5 → 0.2.0
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/CHANGELOG.md +7 -0
- package/README.md +3 -6
- package/dist/client.js +5 -13
- package/dist/client.js.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/tools.js +8 -11
- package/dist/tools.js.map +1 -1
- package/package.json +1 -1
- package/server.json +3 -3
- package/tool_manifest.json +16 -94
- package/x402-guard.cjs +18 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.2.0 - 2026-11-13
|
|
4
|
+
|
|
5
|
+
- Tool text and schemas refreshed to the live service contract (route integrity pass). Removed `correct_seo_query`, `expand_seo_query` and `find_keyword_opportunities`: the service de-listed those routes on 2026-11-12 (503, never charged).
|
|
6
|
+
- `create_seo_content_brief` now requires 1 to 20 `competitor_pages` (was optional, up to 50). `find_internal_link_opportunities` accepts 1 to 50 pages (was 2 to 50).
|
|
7
|
+
- Descriptions now quote the live responses: Common Crawl snapshot (not live) for authority, `found=false` for domains missing from the graph, the seven on-page checks, uncharged 404/422 refusals.
|
|
8
|
+
- Errors now carry the service's HTTP `status`, `charged` flag and `upstream` body instead of a truncated string.
|
|
9
|
+
|
|
3
10
|
## 0.1.5 - 2026-10-26
|
|
4
11
|
|
|
5
12
|
- Dependency security release, no functional change: body-parser 2.4.0, fast-uri 3.1.9, ip-address 10.7.5, zod pinned to 4.6.x via overrides (GHSA-27r3-jxmh-p828, GHSA-mrhx-c7xc-m3w5, GHSA-rxp7-6hxx-x8q5, fast-uri advisories).
|
package/README.md
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
[](https://glama.ai/mcp/servers/forgemeshlabs/seo-authority-mcp)
|
|
6
6
|
[](https://mcpservers.org/servers/forgemeshlabs/seo-authority-mcp)
|
|
7
7
|
|
|
8
|
-
Give AI agents typed SEO authority,
|
|
8
|
+
Give AI agents typed SEO authority, competitor, content, audit, and internal-link tools backed by [seo.forgemesh.io](https://seo.forgemesh.io). Authority scores use open Common Crawl graph data. The server does not invent search volume, CPC, live SERP positions, complete backlinks, or Google metrics.
|
|
9
9
|
|
|
10
10
|
## Install
|
|
11
11
|
|
|
@@ -54,9 +54,6 @@ Use a dedicated low-balance wallet. Never commit its private key.
|
|
|
54
54
|
| `get_domain_authority` | Common Crawl graph authority | $0.01 |
|
|
55
55
|
| `compare_domain_authority` | Compare 2–20 domains | $0.02 |
|
|
56
56
|
| `score_page_seo` | Deterministic on-page checks | $0.01 |
|
|
57
|
-
| `correct_seo_query` | Did-you-mean correction | $0.005 |
|
|
58
|
-
| `expand_seo_query` | Long-tail query variants | $0.01 |
|
|
59
|
-
| `find_keyword_opportunities` | Prioritized keyword ideas | $0.05 |
|
|
60
57
|
| `find_competitor_content_gaps` | Supplied-content gap analysis | $0.10 |
|
|
61
58
|
| `create_seo_content_brief` | Evidence-tagged brief | $0.10 |
|
|
62
59
|
| `audit_site_seo` | Multi-page SEO audit | $0.15 |
|
|
@@ -68,8 +65,8 @@ Paid tools use exact USDC settlement on Base. Without `SEO_X402_PRIVATE_KEY`, ea
|
|
|
68
65
|
## Docker
|
|
69
66
|
|
|
70
67
|
```bash
|
|
71
|
-
docker build -t seo-authority-mcp:0.
|
|
72
|
-
docker run --rm -i --read-only --cap-drop=ALL seo-authority-mcp:0.
|
|
68
|
+
docker build -t seo-authority-mcp:0.2.0 .
|
|
69
|
+
docker run --rm -i --read-only --cap-drop=ALL seo-authority-mcp:0.2.0
|
|
73
70
|
```
|
|
74
71
|
|
|
75
72
|
For automatic payment, pass the private key at runtime using your secret manager. Do not bake it into the image.
|
package/dist/client.js
CHANGED
|
@@ -65,8 +65,8 @@ function page(field, v, requireHtml = false) {
|
|
|
65
65
|
html: requireHtml ? str(`${field}.html`, p.html, MAX_HTML) : str(`${field}.html`, p.html, MAX_HTML, true)
|
|
66
66
|
};
|
|
67
67
|
}
|
|
68
|
-
function pages(field, v, min, requireHtml = false) {
|
|
69
|
-
return list(field, v, min,
|
|
68
|
+
function pages(field, v, min, requireHtml = false, max = 50) {
|
|
69
|
+
return list(field, v, min, max).map((p, i) => page(`${field}[${i}]`, p, requireHtml));
|
|
70
70
|
}
|
|
71
71
|
function optPages(field, v) {
|
|
72
72
|
return v === undefined ? undefined : pages(field, v, 0);
|
|
@@ -84,14 +84,6 @@ export function requestForTool(name, args) {
|
|
|
84
84
|
case "get_domain_authority": return { path: encodeQuery("/v1/domain-authority", { domain: domainLike("domain", args.domain) }) };
|
|
85
85
|
case "compare_domain_authority": return { path: "/v1/authority-compare", method: "POST", body: { domains: list("domains", args.domains, 2, 20).map((d, i) => domainLike(`domains[${i}]`, d)) } };
|
|
86
86
|
case "score_page_seo": return { path: "/v1/url-seo-score", method: "POST", body: { url: httpsUrl("url", args.url), html: str("html", args.html, MAX_HTML) } };
|
|
87
|
-
case "correct_seo_query": return { path: encodeQuery("/v1/query-correct", { q: str("query", args.query) }) };
|
|
88
|
-
case "expand_seo_query": return { path: encodeQuery("/v1/query-expand", { q: str("query", args.query) }) };
|
|
89
|
-
case "find_keyword_opportunities": {
|
|
90
|
-
const score = args.domain_authority_score;
|
|
91
|
-
if (score !== undefined && (typeof score !== "number" || !Number.isFinite(score) || score < 0 || score > 100))
|
|
92
|
-
fail("domain_authority_score", "must be a number from 0 to 100");
|
|
93
|
-
return { path: "/v1/keyword-opportunity", method: "POST", body: { seed: str("seed", args.seed), audience: str("audience", args.audience, MAX_TEXT, true), domain_authority_score: score } };
|
|
94
|
-
}
|
|
95
87
|
case "find_competitor_content_gaps": {
|
|
96
88
|
const site = obj("site", args.site);
|
|
97
89
|
return { path: "/v1/competitor-gap", method: "POST", body: {
|
|
@@ -102,9 +94,9 @@ export function requestForTool(name, args) {
|
|
|
102
94
|
})
|
|
103
95
|
} };
|
|
104
96
|
}
|
|
105
|
-
case "create_seo_content_brief": return { path: "/v1/content-brief", method: "POST", body: { keyword: str("keyword", args.keyword), competitor_pages:
|
|
97
|
+
case "create_seo_content_brief": return { path: "/v1/content-brief", method: "POST", body: { keyword: str("keyword", args.keyword), competitor_pages: pages("competitor_pages", args.competitor_pages, 1, false, 20), site_pages: optPages("site_pages", args.site_pages) } };
|
|
106
98
|
case "audit_site_seo": return { path: "/v1/site-audit", method: "POST", body: { pages: pages("pages", args.pages, 1, true) } };
|
|
107
|
-
case "find_internal_link_opportunities": return { path: "/v1/internal-link-opportunities", method: "POST", body: { domain: domainLike("domain", args.domain), pages: pages("pages", args.pages,
|
|
99
|
+
case "find_internal_link_opportunities": return { path: "/v1/internal-link-opportunities", method: "POST", body: { domain: domainLike("domain", args.domain), pages: pages("pages", args.pages, 1) } };
|
|
108
100
|
case "vet_placement": return { path: "/v1/placement-vet", method: "POST", body: { domain: domainLike("domain", args.domain), ...(args.sample_url == null ? {} : { sample_url: httpsUrl("sample_url", args.sample_url) }) } };
|
|
109
101
|
default: throw new Error(`Unknown tool: ${name}`);
|
|
110
102
|
}
|
|
@@ -152,7 +144,7 @@ export async function callSeoTool(name, args) {
|
|
|
152
144
|
const firstBody = parseBody(first.text);
|
|
153
145
|
if (first.status !== 402) {
|
|
154
146
|
if (!first.ok)
|
|
155
|
-
throw
|
|
147
|
+
throw guard.httpError(first, "SEO API ", false); // nothing was signed, so nothing was charged
|
|
156
148
|
return firstBody;
|
|
157
149
|
}
|
|
158
150
|
const challenge = parseChallenge(first.headers, firstBody);
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -15,7 +15,9 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
15
15
|
}
|
|
16
16
|
catch (error) {
|
|
17
17
|
const message = error instanceof Error ? error.message : "Unknown error";
|
|
18
|
-
|
|
18
|
+
const e = error;
|
|
19
|
+
const detail = { ...(e.status !== undefined ? { status: e.status } : {}), ...(e.charged !== undefined ? { charged: e.charged } : {}), ...(e.upstream !== undefined ? { upstream: e.upstream, untrusted: true } : {}) };
|
|
20
|
+
return { content: [{ type: "text", text: JSON.stringify({ error: { code: "SEO_TOOL_ERROR", message, ...detail } }) }], isError: true };
|
|
19
21
|
}
|
|
20
22
|
});
|
|
21
23
|
await server.connect(new StdioServerTransport());
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AACnG,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,MAAM,EAAE,OAAO,EAAE,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,iBAAiB,CAAwB,CAAC;AAC7F,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACnG,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AAC1E,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAC,OAAO,EAAC,EAAE;IAC9D,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAA4B,CAAC,CAAC;QACjH,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;IACrE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QACzE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AACnG,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,MAAM,EAAE,OAAO,EAAE,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,iBAAiB,CAAwB,CAAC;AAC7F,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACnG,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AAC1E,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAC,OAAO,EAAC,EAAE;IAC9D,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAA4B,CAAC,CAAC;QACjH,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;IACrE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QACzE,MAAM,CAAC,GAAG,KAAmE,CAAC;QAC9E,MAAM,MAAM,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACvN,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACzI,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC"}
|
package/dist/tools.js
CHANGED
|
@@ -7,15 +7,12 @@ const page = {
|
|
|
7
7
|
};
|
|
8
8
|
export const tools = [
|
|
9
9
|
{ name: "get_seo_capabilities", description: "Retrieve free capability, provenance, and unavailable-metric disclosures before choosing a paid SEO tool.", annotations: readOnly, inputSchema: { type: "object", properties: {} } },
|
|
10
|
-
{ name: "get_domain_authority", description: "Measure one domain's open-web SEO authority
|
|
11
|
-
{ name: "compare_domain_authority", description: "Compare open-web SEO authority for 2 to 20 domains and
|
|
12
|
-
{ name: "score_page_seo", description: "Score
|
|
13
|
-
{ name: "correct_seo_query", description: "Correct likely spelling errors in an SEO search query; costs $0.005 USDC.", annotations: readOnly, inputSchema: { type: "object", properties: { query: string("SEO query to correct.") }, required: ["query"] } },
|
|
14
|
-
{ name: "expand_seo_query", description: "Generate deterministic long-tail and intent-oriented variants of an SEO query; costs $0.01 USDC.", annotations: readOnly, inputSchema: { type: "object", properties: { query: string("Seed SEO query to expand.") }, required: ["query"] } },
|
|
15
|
-
{ name: "find_keyword_opportunities", description: "Generate and prioritize long-tail keyword opportunities without fabricating volume, CPC, SERP, or difficulty metrics; costs $0.05 USDC.", annotations: readOnly, inputSchema: { type: "object", properties: { seed: string("Seed topic or keyword."), audience: string("Optional target audience."), domain_authority_score: { type: "number", minimum: 0, maximum: 100, description: "Optional known authority score used for prioritization." } }, required: ["seed"] } },
|
|
10
|
+
{ name: "get_domain_authority", description: "Measure one domain's open-web SEO authority from a periodic Common Crawl Web Graph snapshot (harmonic centrality weight 0.65, PageRank 0.35): returns domain_authority_score 0-100, authority_percentile and the graph release and crawl period. Not live data. Answers 404 domain_not_covered, uncharged, when the domain is not in the graph; costs $0.01 USDC.", annotations: readOnly, inputSchema: { type: "object", properties: { domain: string("Domain or URL to measure, such as example.com.") }, required: ["domain"] } },
|
|
11
|
+
{ name: "compare_domain_authority", description: "Compare open-web SEO authority for 2 to 20 domains from a periodic Common Crawl Web Graph snapshot, ranked by domain_authority_score; a domain missing from the graph comes back found=false, and 404 no_domain_covered (uncharged) when none is in the graph; costs $0.02 USDC.", annotations: readOnly, inputSchema: { type: "object", properties: { domains: { type: "array", description: "Two to twenty domains or URLs.", minItems: 2, maxItems: 20, items: { type: "string", maxLength: 2000 } } }, required: ["domains"] } },
|
|
12
|
+
{ name: "score_page_seo", description: "Score the page HTML you supply (nothing is fetched) with 7 deterministic on-page checks: title present, title length, meta description, canonical, exactly one H1, structured data, image alt text. Returns url_seo_score 0-100 and per-check booleans; no authority or backlink data; costs $0.01 USDC.", annotations: readOnly, inputSchema: { type: "object", properties: { url: string("Canonical URL for the supplied page."), html: string("Complete page HTML, up to 512 KB.", 524288) }, required: ["url", "html"] } },
|
|
16
13
|
{
|
|
17
14
|
name: "find_competitor_content_gaps",
|
|
18
|
-
description: "Find content gaps from
|
|
15
|
+
description: "Find content gaps from the site and competitor pages you supply (up to 50 pages per site, up to 10 competitors). Returns content_gaps with topic, competitor_coverage, competitor_share and priority, plus evidence and limitations; no live SERP, no backlink index; costs $0.10 USDC.",
|
|
19
16
|
annotations: readOnly,
|
|
20
17
|
inputSchema: {
|
|
21
18
|
type: "object",
|
|
@@ -47,10 +44,10 @@ export const tools = [
|
|
|
47
44
|
required: ["site", "competitors"]
|
|
48
45
|
}
|
|
49
46
|
},
|
|
50
|
-
{ name: "create_seo_content_brief", description: "Create an
|
|
51
|
-
{ name: "audit_site_seo", description: "Audit
|
|
52
|
-
{ name: "find_internal_link_opportunities", description: "Find missing
|
|
53
|
-
{ name: "vet_placement", description: "Vet a directory, publication or sponsor pitch before paying for a listing: domain age from RDAP, Tranco popularity rank, Google News presence, outbound-link dilution and rel=sponsored use on a sample page, badge and pay-to-play wording; returns a 0-100 score, verdict and
|
|
47
|
+
{ name: "create_seo_content_brief", description: "Create an SEO content brief measured from competitor pages you supply: supporting_terms with counts, observed_word_count (minimum, median, maximum), internal_link_targets, a rule-based search_intent and a fixed six-section outline. Requires 1 to 20 competitor_pages; answers 422, uncharged, without usable pages; no live SERP; costs $0.10 USDC.", annotations: readOnly, inputSchema: { type: "object", properties: { keyword: string("Primary keyword or topic."), competitor_pages: { type: "array", minItems: 1, maxItems: 20, items: page, description: "One to twenty competitor pages (url, title, and text or html)." }, site_pages: { type: "array", maxItems: 50, items: page, description: "Optional existing site pages for differentiation and linking." } }, required: ["keyword", "competitor_pages"] } },
|
|
48
|
+
{ name: "audit_site_seo", description: "Audit 1 to 50 pages of HTML you supply (nothing is crawled). Returns site_seo_score, per-page url_seo_score with on-page checks, extracted values and links, and issues: duplicate_titles and orphan_pages; costs $0.15 USDC.", annotations: readOnly, inputSchema: { type: "object", properties: { pages: { type: "array", minItems: 1, maxItems: 50, description: "Pages to audit; each requires url and html.", items: { ...page, required: ["url", "html"] } } }, required: ["pages"] } },
|
|
49
|
+
{ name: "find_internal_link_opportunities", description: "Find missing internal links across 1 to 50 pages you supply: returns opportunities with source_url, target_url, relevance and suggested_anchor for contextually related pages that do not link to each other; costs $0.05 USDC.", annotations: readOnly, inputSchema: { type: "object", properties: { domain: string("Site domain."), pages: { type: "array", minItems: 1, maxItems: 50, items: page, description: "One to fifty site pages with title and text for best results." } }, required: ["domain", "pages"] } },
|
|
50
|
+
{ name: "vet_placement", description: "Vet a directory, publication or sponsor pitch before paying for a listing: domain age from RDAP, Tranco popularity rank, Google News presence, outbound-link dilution and rel=sponsored use on a sample page, badge and pay-to-play wording; returns a rule-based 0-100 score, verdict, red_flags and positives; an unreadable source is marked unavailable and does not move the score; not charged if the domain does not resolve or no source answers; costs $0.05 USDC.", annotations: readOnly, inputSchema: { type: "object", properties: { domain: string("Domain of the directory or publication, such as example.com."), sample_url: string("Optional listing or article URL on the same domain to inspect for outbound links and sponsored markup.") }, required: ["domain"] } }
|
|
54
51
|
];
|
|
55
52
|
export const paidToolNames = new Set(tools.slice(1).map(tool => tool.name));
|
|
56
53
|
//# sourceMappingURL=tools.js.map
|
package/dist/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAEA,MAAM,QAAQ,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAW,CAAC;AACpH,MAAM,MAAM,GAAG,CAAC,WAAmB,EAAE,SAAS,GAAG,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC;AACvG,MAAM,IAAI,GAAG;IACX,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,oBAAoB,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,2BAA2B,EAAE,MAAM,CAAC,EAAE;IAC9K,QAAQ,EAAE,CAAC,KAAK,CAAC;CAClB,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAW;IAC3B,EAAE,IAAI,EAAE,sBAAsB,EAAE,WAAW,EAAE,2GAA2G,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE;IAClO,EAAE,IAAI,EAAE,sBAAsB,EAAE,WAAW,EAAE
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forgemeshlabs/seo-authority-mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"mcpName": "io.github.forgemeshlabs/seo-authority-mcp",
|
|
5
5
|
"description": "SEO authority, keyword opportunities, competitor gaps, content briefs, site audits, and internal-link intelligence via x402.",
|
|
6
6
|
"type": "module",
|
package/server.json
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
|
|
3
3
|
"name": "io.github.forgemeshlabs/seo-authority-mcp",
|
|
4
|
-
"description": "SEO authority,
|
|
4
|
+
"description": "SEO authority, competitor, content, site-audit, and internal-link tools with optional.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"url": "https://github.com/forgemeshlabs/seo-authority-mcp",
|
|
7
7
|
"source": "github"
|
|
8
8
|
},
|
|
9
|
-
"version": "0.
|
|
9
|
+
"version": "0.2.0",
|
|
10
10
|
"packages": [
|
|
11
11
|
{
|
|
12
12
|
"registryType": "npm",
|
|
13
13
|
"identifier": "@forgemeshlabs/seo-authority-mcp",
|
|
14
|
-
"version": "0.
|
|
14
|
+
"version": "0.2.0",
|
|
15
15
|
"transport": {
|
|
16
16
|
"type": "stdio"
|
|
17
17
|
},
|
package/tool_manifest.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"server": "seo-authority-mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"source": "https://seo.forgemesh.io/openapi.json",
|
|
5
5
|
"tools": [
|
|
6
6
|
{
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
},
|
|
20
20
|
{
|
|
21
21
|
"name": "get_domain_authority",
|
|
22
|
-
"description": "Measure one domain's open-web SEO authority
|
|
22
|
+
"description": "Measure one domain's open-web SEO authority from a periodic Common Crawl Web Graph snapshot (harmonic centrality weight 0.65, PageRank 0.35): returns domain_authority_score 0-100, authority_percentile and the graph release and crawl period. Not live data. Answers 404 domain_not_covered, uncharged, when the domain is not in the graph; costs $0.01 USDC.",
|
|
23
23
|
"annotations": {
|
|
24
24
|
"readOnlyHint": true,
|
|
25
25
|
"destructiveHint": false,
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
},
|
|
43
43
|
{
|
|
44
44
|
"name": "compare_domain_authority",
|
|
45
|
-
"description": "Compare open-web SEO authority for 2 to 20 domains and
|
|
45
|
+
"description": "Compare open-web SEO authority for 2 to 20 domains from a periodic Common Crawl Web Graph snapshot, ranked by domain_authority_score; a domain missing from the graph comes back found=false, and 404 no_domain_covered (uncharged) when none is in the graph; costs $0.02 USDC.",
|
|
46
46
|
"annotations": {
|
|
47
47
|
"readOnlyHint": true,
|
|
48
48
|
"destructiveHint": false,
|
|
@@ -70,7 +70,7 @@
|
|
|
70
70
|
},
|
|
71
71
|
{
|
|
72
72
|
"name": "score_page_seo",
|
|
73
|
-
"description": "Score
|
|
73
|
+
"description": "Score the page HTML you supply (nothing is fetched) with 7 deterministic on-page checks: title present, title length, meta description, canonical, exactly one H1, structured data, image alt text. Returns url_seo_score 0-100 and per-check booleans; no authority or backlink data; costs $0.01 USDC.",
|
|
74
74
|
"annotations": {
|
|
75
75
|
"readOnlyHint": true,
|
|
76
76
|
"destructiveHint": false,
|
|
@@ -97,89 +97,9 @@
|
|
|
97
97
|
]
|
|
98
98
|
}
|
|
99
99
|
},
|
|
100
|
-
{
|
|
101
|
-
"name": "correct_seo_query",
|
|
102
|
-
"description": "Correct likely spelling errors in an SEO search query; costs $0.005 USDC.",
|
|
103
|
-
"annotations": {
|
|
104
|
-
"readOnlyHint": true,
|
|
105
|
-
"destructiveHint": false,
|
|
106
|
-
"idempotentHint": true,
|
|
107
|
-
"openWorldHint": true
|
|
108
|
-
},
|
|
109
|
-
"inputSchema": {
|
|
110
|
-
"type": "object",
|
|
111
|
-
"properties": {
|
|
112
|
-
"query": {
|
|
113
|
-
"type": "string",
|
|
114
|
-
"maxLength": 2000,
|
|
115
|
-
"description": "SEO query to correct."
|
|
116
|
-
}
|
|
117
|
-
},
|
|
118
|
-
"required": [
|
|
119
|
-
"query"
|
|
120
|
-
]
|
|
121
|
-
}
|
|
122
|
-
},
|
|
123
|
-
{
|
|
124
|
-
"name": "expand_seo_query",
|
|
125
|
-
"description": "Generate deterministic long-tail and intent-oriented variants of an SEO query; costs $0.01 USDC.",
|
|
126
|
-
"annotations": {
|
|
127
|
-
"readOnlyHint": true,
|
|
128
|
-
"destructiveHint": false,
|
|
129
|
-
"idempotentHint": true,
|
|
130
|
-
"openWorldHint": true
|
|
131
|
-
},
|
|
132
|
-
"inputSchema": {
|
|
133
|
-
"type": "object",
|
|
134
|
-
"properties": {
|
|
135
|
-
"query": {
|
|
136
|
-
"type": "string",
|
|
137
|
-
"maxLength": 2000,
|
|
138
|
-
"description": "Seed SEO query to expand."
|
|
139
|
-
}
|
|
140
|
-
},
|
|
141
|
-
"required": [
|
|
142
|
-
"query"
|
|
143
|
-
]
|
|
144
|
-
}
|
|
145
|
-
},
|
|
146
|
-
{
|
|
147
|
-
"name": "find_keyword_opportunities",
|
|
148
|
-
"description": "Generate and prioritize long-tail keyword opportunities without fabricating volume, CPC, SERP, or difficulty metrics; costs $0.05 USDC.",
|
|
149
|
-
"annotations": {
|
|
150
|
-
"readOnlyHint": true,
|
|
151
|
-
"destructiveHint": false,
|
|
152
|
-
"idempotentHint": true,
|
|
153
|
-
"openWorldHint": true
|
|
154
|
-
},
|
|
155
|
-
"inputSchema": {
|
|
156
|
-
"type": "object",
|
|
157
|
-
"properties": {
|
|
158
|
-
"seed": {
|
|
159
|
-
"type": "string",
|
|
160
|
-
"maxLength": 2000,
|
|
161
|
-
"description": "Seed topic or keyword."
|
|
162
|
-
},
|
|
163
|
-
"audience": {
|
|
164
|
-
"type": "string",
|
|
165
|
-
"maxLength": 2000,
|
|
166
|
-
"description": "Optional target audience."
|
|
167
|
-
},
|
|
168
|
-
"domain_authority_score": {
|
|
169
|
-
"type": "number",
|
|
170
|
-
"minimum": 0,
|
|
171
|
-
"maximum": 100,
|
|
172
|
-
"description": "Optional known authority score used for prioritization."
|
|
173
|
-
}
|
|
174
|
-
},
|
|
175
|
-
"required": [
|
|
176
|
-
"seed"
|
|
177
|
-
]
|
|
178
|
-
}
|
|
179
|
-
},
|
|
180
100
|
{
|
|
181
101
|
"name": "find_competitor_content_gaps",
|
|
182
|
-
"description": "Find content gaps from
|
|
102
|
+
"description": "Find content gaps from the site and competitor pages you supply (up to 50 pages per site, up to 10 competitors). Returns content_gaps with topic, competitor_coverage, competitor_share and priority, plus evidence and limitations; no live SERP, no backlink index; costs $0.10 USDC.",
|
|
183
103
|
"annotations": {
|
|
184
104
|
"readOnlyHint": true,
|
|
185
105
|
"destructiveHint": false,
|
|
@@ -299,7 +219,7 @@
|
|
|
299
219
|
},
|
|
300
220
|
{
|
|
301
221
|
"name": "create_seo_content_brief",
|
|
302
|
-
"description": "Create an
|
|
222
|
+
"description": "Create an SEO content brief measured from competitor pages you supply: supporting_terms with counts, observed_word_count (minimum, median, maximum), internal_link_targets, a rule-based search_intent and a fixed six-section outline. Requires 1 to 20 competitor_pages; answers 422, uncharged, without usable pages; no live SERP; costs $0.10 USDC.",
|
|
303
223
|
"annotations": {
|
|
304
224
|
"readOnlyHint": true,
|
|
305
225
|
"destructiveHint": false,
|
|
@@ -316,7 +236,8 @@
|
|
|
316
236
|
},
|
|
317
237
|
"competitor_pages": {
|
|
318
238
|
"type": "array",
|
|
319
|
-
"
|
|
239
|
+
"minItems": 1,
|
|
240
|
+
"maxItems": 20,
|
|
320
241
|
"items": {
|
|
321
242
|
"type": "object",
|
|
322
243
|
"properties": {
|
|
@@ -345,7 +266,7 @@
|
|
|
345
266
|
"url"
|
|
346
267
|
]
|
|
347
268
|
},
|
|
348
|
-
"description": "
|
|
269
|
+
"description": "One to twenty competitor pages (url, title, and text or html)."
|
|
349
270
|
},
|
|
350
271
|
"site_pages": {
|
|
351
272
|
"type": "array",
|
|
@@ -382,13 +303,14 @@
|
|
|
382
303
|
}
|
|
383
304
|
},
|
|
384
305
|
"required": [
|
|
385
|
-
"keyword"
|
|
306
|
+
"keyword",
|
|
307
|
+
"competitor_pages"
|
|
386
308
|
]
|
|
387
309
|
}
|
|
388
310
|
},
|
|
389
311
|
{
|
|
390
312
|
"name": "audit_site_seo",
|
|
391
|
-
"description": "Audit
|
|
313
|
+
"description": "Audit 1 to 50 pages of HTML you supply (nothing is crawled). Returns site_seo_score, per-page url_seo_score with on-page checks, extracted values and links, and issues: duplicate_titles and orphan_pages; costs $0.15 USDC.",
|
|
392
314
|
"annotations": {
|
|
393
315
|
"readOnlyHint": true,
|
|
394
316
|
"destructiveHint": false,
|
|
@@ -441,7 +363,7 @@
|
|
|
441
363
|
},
|
|
442
364
|
{
|
|
443
365
|
"name": "find_internal_link_opportunities",
|
|
444
|
-
"description": "Find missing
|
|
366
|
+
"description": "Find missing internal links across 1 to 50 pages you supply: returns opportunities with source_url, target_url, relevance and suggested_anchor for contextually related pages that do not link to each other; costs $0.05 USDC.",
|
|
445
367
|
"annotations": {
|
|
446
368
|
"readOnlyHint": true,
|
|
447
369
|
"destructiveHint": false,
|
|
@@ -458,7 +380,7 @@
|
|
|
458
380
|
},
|
|
459
381
|
"pages": {
|
|
460
382
|
"type": "array",
|
|
461
|
-
"minItems":
|
|
383
|
+
"minItems": 1,
|
|
462
384
|
"maxItems": 50,
|
|
463
385
|
"items": {
|
|
464
386
|
"type": "object",
|
|
@@ -488,7 +410,7 @@
|
|
|
488
410
|
"url"
|
|
489
411
|
]
|
|
490
412
|
},
|
|
491
|
-
"description": "
|
|
413
|
+
"description": "One to fifty site pages with title and text for best results."
|
|
492
414
|
}
|
|
493
415
|
},
|
|
494
416
|
"required": [
|
|
@@ -499,7 +421,7 @@
|
|
|
499
421
|
},
|
|
500
422
|
{
|
|
501
423
|
"name": "vet_placement",
|
|
502
|
-
"description": "Vet a directory, publication or sponsor pitch before paying for a listing: domain age from RDAP, Tranco popularity rank, Google News presence, outbound-link dilution and rel=sponsored use on a sample page, badge and pay-to-play wording; returns a 0-100 score, verdict and
|
|
424
|
+
"description": "Vet a directory, publication or sponsor pitch before paying for a listing: domain age from RDAP, Tranco popularity rank, Google News presence, outbound-link dilution and rel=sponsored use on a sample page, badge and pay-to-play wording; returns a rule-based 0-100 score, verdict, red_flags and positives; an unreadable source is marked unavailable and does not move the score; not charged if the domain does not resolve or no source answers; costs $0.05 USDC.",
|
|
503
425
|
"annotations": {
|
|
504
426
|
"readOnlyHint": true,
|
|
505
427
|
"destructiveHint": false,
|
package/x402-guard.cjs
CHANGED
|
@@ -99,6 +99,21 @@ function createGuard(opts) {
|
|
|
99
99
|
}
|
|
100
100
|
}
|
|
101
101
|
|
|
102
|
+
// Keep the service's refusal intact: HTTP status, charged flag, and the body in err.upstream only.
|
|
103
|
+
// The message is short and fixed; upstream content is untrusted and never interpolated into prose.
|
|
104
|
+
function httpError(res, prefix, charged) {
|
|
105
|
+
let upstream;
|
|
106
|
+
try { upstream = JSON.parse(res.text); } catch { upstream = res.text.slice(0, 500); }
|
|
107
|
+
if (typeof upstream !== "string" && JSON.stringify(upstream).length > 1500) upstream = JSON.stringify(upstream).slice(0, 1500);
|
|
108
|
+
const code = upstream && typeof upstream === "object" && typeof upstream.error === "string" && /^[A-Za-z0-9_.:-]{1,64}$/.test(upstream.error) ? `: ${upstream.error}` : "";
|
|
109
|
+
const err = new Error(`${prefix}HTTP ${res.status}${code}`);
|
|
110
|
+
err.status = res.status;
|
|
111
|
+
err.upstream = upstream;
|
|
112
|
+
if (charged !== undefined) err.charged = charged;
|
|
113
|
+
else if (upstream && typeof upstream === "object" && typeof upstream.charged === "boolean") err.charged = upstream.charged;
|
|
114
|
+
return err;
|
|
115
|
+
}
|
|
116
|
+
|
|
102
117
|
function parseJson(res) {
|
|
103
118
|
try { return JSON.parse(res.text); } catch { throw new Error(`HTTP ${res.status}: non-JSON response`); }
|
|
104
119
|
}
|
|
@@ -111,7 +126,7 @@ function createGuard(opts) {
|
|
|
111
126
|
const init = { method, headers: { ...headers, ...(body ? { "content-type": "application/json" } : {}) }, ...(body ? { body: JSON.stringify(body) } : {}) };
|
|
112
127
|
const res = await fetchBounded(url, init);
|
|
113
128
|
if (res.status !== 402) {
|
|
114
|
-
if (!res.ok) throw
|
|
129
|
+
if (!res.ok) throw httpError(res, "", false); // nothing was signed, so nothing was charged
|
|
115
130
|
return parseJson(res);
|
|
116
131
|
}
|
|
117
132
|
let challenge;
|
|
@@ -119,7 +134,7 @@ function createGuard(opts) {
|
|
|
119
134
|
const paymentRequired = httpClient.getPaymentRequiredResponse((n) => res.headers.get(n), challenge);
|
|
120
135
|
const payload = await httpClient.createPaymentPayload(paymentRequired); // policy runs (and reserves budget) inside
|
|
121
136
|
const paid = await fetchBounded(url, { ...init, headers: { ...init.headers, ...httpClient.encodePaymentSignatureHeader(payload) } });
|
|
122
|
-
if (!paid.ok) throw
|
|
137
|
+
if (!paid.ok) throw httpError(paid, "Payment failed — ");
|
|
123
138
|
let settle = null;
|
|
124
139
|
try { settle = httpClient.getPaymentSettleResponse((n) => paid.headers.get(n)) || null; } catch { settle = null; }
|
|
125
140
|
const contentType = paid.headers.get("content-type") || "";
|
|
@@ -134,6 +149,7 @@ function createGuard(opts) {
|
|
|
134
149
|
policy,
|
|
135
150
|
fetchBounded,
|
|
136
151
|
callPaid,
|
|
152
|
+
httpError,
|
|
137
153
|
limits: () => ({ maxPriceUsd, sessionBudgetUsd, spentUsd, origin, payTo: [...payTo] }),
|
|
138
154
|
};
|
|
139
155
|
}
|