@frase/mcp-server 0.3.6 → 0.3.7
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 +10 -0
- package/dist/content-types-config-mirror.d.ts +75 -0
- package/dist/content-types-config-mirror.d.ts.map +1 -0
- package/dist/content-types-config-mirror.js +75 -0
- package/dist/content-types-config-mirror.js.map +1 -0
- package/dist/content-types.d.ts +3 -3
- package/dist/content-types.d.ts.map +1 -1
- package/dist/content-types.js +4 -2
- package/dist/content-types.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/prompts/content-pipeline.d.ts.map +1 -1
- package/dist/prompts/content-pipeline.js +5 -2
- package/dist/prompts/content-pipeline.js.map +1 -1
- package/dist/prompts/create-seo-article.d.ts.map +1 -1
- package/dist/prompts/create-seo-article.js +5 -2
- package/dist/prompts/create-seo-article.js.map +1 -1
- package/dist/tools/ai-visibility.d.ts +14 -0
- package/dist/tools/ai-visibility.d.ts.map +1 -1
- package/dist/tools/ai-visibility.js +296 -0
- package/dist/tools/ai-visibility.js.map +1 -1
- package/dist/tools/briefs.d.ts +6 -6
- package/dist/tools/cms-posts.d.ts +2 -0
- package/dist/tools/cms-posts.d.ts.map +1 -1
- package/dist/tools/cms-posts.js +62 -11
- package/dist/tools/cms-posts.js.map +1 -1
- package/dist/tools/serp.d.ts.map +1 -1
- package/dist/tools/serp.js +17 -13
- package/dist/tools/serp.js.map +1 -1
- package/package.json +10 -4
- package/server.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,16 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.3.7] - 2026-06-04
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
- `analyze_serp`: People Also Ask entries rendered as `[object Object]` and several fields showed `undefined`. PAA questions and result fields now render correctly.
|
|
12
|
+
|
|
13
|
+
### Changed
|
|
14
|
+
- Bumped `@frase/core` dependency to `0.1.5`, which adds the `ToolResult.hidden`/`reason` hide-mirror fields and `McpToolDefinition.inputSchema.additionalProperties` that the AI-visibility tools rely on. (The tools had used these since late May, but core was never republished — the build only typechecks at publish time, so it surfaced now.)
|
|
15
|
+
- Updated runtime dependencies (`hono`, `@modelcontextprotocol/sdk`) and upgraded the test toolchain (`vitest` 2.x → 4.x) to clear a critical security advisory.
|
|
16
|
+
- `server.json` `version` (and its nested npm package `version`) corrected from `0.3.5` to track the package version — it had drifted behind `package.json`/`manifest.json` since 0.3.6.
|
|
17
|
+
|
|
8
18
|
## [0.3.6] - 2026-05-18
|
|
9
19
|
|
|
10
20
|
### Added
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-package mirror of the per-content-type JSON Schemas emitted by
|
|
3
|
+
* `src/lib/content/content-type-configs/*` in the main Next.js app.
|
|
4
|
+
*
|
|
5
|
+
* Cross-package import is blocked: the MCP server publishes as its own
|
|
6
|
+
* npm package and cannot reach into the main app's Next.js source. This
|
|
7
|
+
* constant MUST stay in sync with `src/lib/content/content-type-configs/tool-review.ts`.
|
|
8
|
+
*
|
|
9
|
+
* A parity contract test asserts deep-equality against the live
|
|
10
|
+
* `contentTypeConfigRegistry.tool_review.jsonSchema` produced by zod 4's
|
|
11
|
+
* `z.toJSONSchema()`:
|
|
12
|
+
* src/lib/content/content-type-configs/__tests__/mcp-parity.test.ts
|
|
13
|
+
*
|
|
14
|
+
* If you change the Zod schema in the main app, regenerate this constant
|
|
15
|
+
* by running (from repo root):
|
|
16
|
+
* npx tsx -e "import('./src/lib/content/content-type-configs/tool-review').then(m => console.log(JSON.stringify((m.default ?? m).toolReviewConfigModule.jsonSchema, null, 2)))"
|
|
17
|
+
* and paste the output below verbatim. The contract test will fail until
|
|
18
|
+
* the mirror is updated.
|
|
19
|
+
*/
|
|
20
|
+
export declare const TOOL_REVIEW_JSON_SCHEMA: {
|
|
21
|
+
readonly $schema: "https://json-schema.org/draft/2020-12/schema";
|
|
22
|
+
readonly type: "object";
|
|
23
|
+
readonly properties: {
|
|
24
|
+
readonly rating: {
|
|
25
|
+
readonly type: "number";
|
|
26
|
+
readonly minimum: 0;
|
|
27
|
+
readonly maximum: 5;
|
|
28
|
+
};
|
|
29
|
+
readonly prosList: {
|
|
30
|
+
readonly default: readonly [];
|
|
31
|
+
readonly type: "array";
|
|
32
|
+
readonly items: {
|
|
33
|
+
readonly type: "string";
|
|
34
|
+
readonly minLength: 1;
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
readonly consList: {
|
|
38
|
+
readonly default: readonly [];
|
|
39
|
+
readonly type: "array";
|
|
40
|
+
readonly items: {
|
|
41
|
+
readonly type: "string";
|
|
42
|
+
readonly minLength: 1;
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
readonly pricingNote: {
|
|
46
|
+
readonly type: "string";
|
|
47
|
+
readonly minLength: 1;
|
|
48
|
+
};
|
|
49
|
+
readonly verdictSummary: {
|
|
50
|
+
readonly type: "string";
|
|
51
|
+
readonly minLength: 1;
|
|
52
|
+
};
|
|
53
|
+
readonly toolCategory: {
|
|
54
|
+
readonly type: "string";
|
|
55
|
+
readonly minLength: 1;
|
|
56
|
+
};
|
|
57
|
+
readonly toolOS: {
|
|
58
|
+
readonly type: "string";
|
|
59
|
+
readonly minLength: 1;
|
|
60
|
+
};
|
|
61
|
+
readonly aggregateRatingValue: {
|
|
62
|
+
readonly type: "number";
|
|
63
|
+
readonly minimum: 0;
|
|
64
|
+
readonly maximum: 5;
|
|
65
|
+
};
|
|
66
|
+
readonly aggregateRatingCount: {
|
|
67
|
+
readonly type: "integer";
|
|
68
|
+
readonly minimum: 0;
|
|
69
|
+
readonly maximum: 9007199254740991;
|
|
70
|
+
};
|
|
71
|
+
};
|
|
72
|
+
readonly required: readonly ["rating", "prosList", "consList"];
|
|
73
|
+
readonly additionalProperties: false;
|
|
74
|
+
};
|
|
75
|
+
//# sourceMappingURL=content-types-config-mirror.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-types-config-mirror.d.ts","sourceRoot":"","sources":["../src/content-types-config-mirror.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsD1B,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-package mirror of the per-content-type JSON Schemas emitted by
|
|
3
|
+
* `src/lib/content/content-type-configs/*` in the main Next.js app.
|
|
4
|
+
*
|
|
5
|
+
* Cross-package import is blocked: the MCP server publishes as its own
|
|
6
|
+
* npm package and cannot reach into the main app's Next.js source. This
|
|
7
|
+
* constant MUST stay in sync with `src/lib/content/content-type-configs/tool-review.ts`.
|
|
8
|
+
*
|
|
9
|
+
* A parity contract test asserts deep-equality against the live
|
|
10
|
+
* `contentTypeConfigRegistry.tool_review.jsonSchema` produced by zod 4's
|
|
11
|
+
* `z.toJSONSchema()`:
|
|
12
|
+
* src/lib/content/content-type-configs/__tests__/mcp-parity.test.ts
|
|
13
|
+
*
|
|
14
|
+
* If you change the Zod schema in the main app, regenerate this constant
|
|
15
|
+
* by running (from repo root):
|
|
16
|
+
* npx tsx -e "import('./src/lib/content/content-type-configs/tool-review').then(m => console.log(JSON.stringify((m.default ?? m).toolReviewConfigModule.jsonSchema, null, 2)))"
|
|
17
|
+
* and paste the output below verbatim. The contract test will fail until
|
|
18
|
+
* the mirror is updated.
|
|
19
|
+
*/
|
|
20
|
+
export const TOOL_REVIEW_JSON_SCHEMA = {
|
|
21
|
+
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
22
|
+
type: "object",
|
|
23
|
+
properties: {
|
|
24
|
+
rating: {
|
|
25
|
+
type: "number",
|
|
26
|
+
minimum: 0,
|
|
27
|
+
maximum: 5,
|
|
28
|
+
},
|
|
29
|
+
prosList: {
|
|
30
|
+
default: [],
|
|
31
|
+
type: "array",
|
|
32
|
+
items: {
|
|
33
|
+
type: "string",
|
|
34
|
+
minLength: 1,
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
consList: {
|
|
38
|
+
default: [],
|
|
39
|
+
type: "array",
|
|
40
|
+
items: {
|
|
41
|
+
type: "string",
|
|
42
|
+
minLength: 1,
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
pricingNote: {
|
|
46
|
+
type: "string",
|
|
47
|
+
minLength: 1,
|
|
48
|
+
},
|
|
49
|
+
verdictSummary: {
|
|
50
|
+
type: "string",
|
|
51
|
+
minLength: 1,
|
|
52
|
+
},
|
|
53
|
+
toolCategory: {
|
|
54
|
+
type: "string",
|
|
55
|
+
minLength: 1,
|
|
56
|
+
},
|
|
57
|
+
toolOS: {
|
|
58
|
+
type: "string",
|
|
59
|
+
minLength: 1,
|
|
60
|
+
},
|
|
61
|
+
aggregateRatingValue: {
|
|
62
|
+
type: "number",
|
|
63
|
+
minimum: 0,
|
|
64
|
+
maximum: 5,
|
|
65
|
+
},
|
|
66
|
+
aggregateRatingCount: {
|
|
67
|
+
type: "integer",
|
|
68
|
+
minimum: 0,
|
|
69
|
+
maximum: 9007199254740991,
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
required: ["rating", "prosList", "consList"],
|
|
73
|
+
additionalProperties: false,
|
|
74
|
+
};
|
|
75
|
+
//# sourceMappingURL=content-types-config-mirror.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-types-config-mirror.js","sourceRoot":"","sources":["../src/content-types-config-mirror.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,OAAO,EAAE,8CAA8C;IACvD,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;SACX;QACD,QAAQ,EAAE;YACR,OAAO,EAAE,EAAE;YACX,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,SAAS,EAAE,CAAC;aACb;SACF;QACD,QAAQ,EAAE;YACR,OAAO,EAAE,EAAE;YACX,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,SAAS,EAAE,CAAC;aACb;SACF;QACD,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,CAAC;SACb;QACD,cAAc,EAAE;YACd,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,CAAC;SACb;QACD,YAAY,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,CAAC;SACb;QACD,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,CAAC;SACb;QACD,oBAAoB,EAAE;YACpB,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;SACX;QACD,oBAAoB,EAAE;YACpB,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,gBAAgB;SAC1B;KACF;IACD,QAAQ,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC;IAC5C,oBAAoB,EAAE,KAAK;CACnB,CAAC"}
|
package/dist/content-types.d.ts
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The
|
|
2
|
+
* The 18-type content taxonomy used by the Frase platform.
|
|
3
3
|
*
|
|
4
4
|
* This is the canonical list of values the `/api/v1/briefs` endpoint
|
|
5
5
|
* accepts in `content_type`. The API also accepts legacy 5-bucket
|
|
6
6
|
* values (`blog`, `guide`, `landing`, `product`, `comparison`) for
|
|
7
7
|
* back-compat and normalizes them at the boundary, but new MCP
|
|
8
|
-
* integrations should use these
|
|
8
|
+
* integrations should use these 18 values directly.
|
|
9
9
|
*
|
|
10
10
|
* Keep this list in lockstep with `src/lib/core/content-types.ts`
|
|
11
11
|
* in the main app. We can't import from there because the MCP server
|
|
12
12
|
* publishes as its own npm package and can't reach into Next.js source.
|
|
13
13
|
*/
|
|
14
|
-
export declare const CONTENT_TYPES: readonly ["blog_post", "page", "faq", "glossary", "comparison", "pillar", "how_to", "landing", "listicle", "case_study", "tutorial", "news", "product_update", "data_report", "event", "resource"];
|
|
14
|
+
export declare const CONTENT_TYPES: readonly ["blog_post", "page", "faq", "glossary", "comparison", "pillar", "how_to", "landing", "listicle", "case_study", "tutorial", "news", "product_update", "data_report", "event", "resource", "alternative", "tool_review"];
|
|
15
15
|
export type ContentType = (typeof CONTENT_TYPES)[number];
|
|
16
16
|
//# sourceMappingURL=content-types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-types.d.ts","sourceRoot":"","sources":["../src/content-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,aAAa,
|
|
1
|
+
{"version":3,"file":"content-types.d.ts","sourceRoot":"","sources":["../src/content-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,aAAa,kOAmBhB,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC"}
|
package/dist/content-types.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The
|
|
2
|
+
* The 18-type content taxonomy used by the Frase platform.
|
|
3
3
|
*
|
|
4
4
|
* This is the canonical list of values the `/api/v1/briefs` endpoint
|
|
5
5
|
* accepts in `content_type`. The API also accepts legacy 5-bucket
|
|
6
6
|
* values (`blog`, `guide`, `landing`, `product`, `comparison`) for
|
|
7
7
|
* back-compat and normalizes them at the boundary, but new MCP
|
|
8
|
-
* integrations should use these
|
|
8
|
+
* integrations should use these 18 values directly.
|
|
9
9
|
*
|
|
10
10
|
* Keep this list in lockstep with `src/lib/core/content-types.ts`
|
|
11
11
|
* in the main app. We can't import from there because the MCP server
|
|
@@ -28,5 +28,7 @@ export const CONTENT_TYPES = [
|
|
|
28
28
|
"data_report",
|
|
29
29
|
"event",
|
|
30
30
|
"resource",
|
|
31
|
+
"alternative",
|
|
32
|
+
"tool_review",
|
|
31
33
|
];
|
|
32
34
|
//# sourceMappingURL=content-types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-types.js","sourceRoot":"","sources":["../src/content-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,WAAW;IACX,MAAM;IACN,KAAK;IACL,UAAU;IACV,YAAY;IACZ,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,UAAU;IACV,YAAY;IACZ,UAAU;IACV,MAAM;IACN,gBAAgB;IAChB,aAAa;IACb,OAAO;IACP,UAAU;
|
|
1
|
+
{"version":3,"file":"content-types.js","sourceRoot":"","sources":["../src/content-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,WAAW;IACX,MAAM;IACN,KAAK;IACL,UAAU;IACV,YAAY;IACZ,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,UAAU;IACV,YAAY;IACZ,UAAU;IACV,MAAM;IACN,gBAAgB;IAChB,aAAa;IACb,OAAO;IACP,UAAU;IACV,aAAa;IACb,aAAa;CACL,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -65,7 +65,7 @@ import { ALL_RESOURCE_TEMPLATES, listAllResources, readResource, getRootResource
|
|
|
65
65
|
import { ALL_PROMPTS, getPromptByName, getPromptMessages, } from "./prompts/index.js";
|
|
66
66
|
// Server metadata
|
|
67
67
|
const SERVER_NAME = "frase-mcp-server";
|
|
68
|
-
const SERVER_VERSION = "0.3.
|
|
68
|
+
const SERVER_VERSION = "0.3.7";
|
|
69
69
|
/**
|
|
70
70
|
* Main MCP server class
|
|
71
71
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-pipeline.d.ts","sourceRoot":"","sources":["../../src/prompts/content-pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEvD,eAAO,MAAM,qBAAqB,EAAE,
|
|
1
|
+
{"version":3,"file":"content-pipeline.d.ts","sourceRoot":"","sources":["../../src/prompts/content-pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEvD,eAAO,MAAM,qBAAqB,EAAE,mBAwCnC,CAAC;AAEF,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC;IAC9E,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CACzC,CAAC,CAoDD"}
|
|
@@ -34,7 +34,10 @@ export const contentPipelinePrompt = {
|
|
|
34
34
|
},
|
|
35
35
|
{
|
|
36
36
|
name: "content_type",
|
|
37
|
-
description: "
|
|
37
|
+
description: "Canonical content type (one of 18) — e.g. blog_post, how_to, listicle, " +
|
|
38
|
+
"case_study, tutorial, comparison, alternative, tool_review, pillar, landing, " +
|
|
39
|
+
"faq, glossary, news, product_update, data_report, event, resource, page. " +
|
|
40
|
+
"Default: blog_post. See create_brief for the enum.",
|
|
38
41
|
required: false,
|
|
39
42
|
},
|
|
40
43
|
{
|
|
@@ -53,7 +56,7 @@ export function getContentPipelineMessages(args) {
|
|
|
53
56
|
const topic = args.topic || "the requested topic";
|
|
54
57
|
const siteId = args.site_id || "";
|
|
55
58
|
const targetScore = args.target_score || "70";
|
|
56
|
-
const contentType = args.content_type || "
|
|
59
|
+
const contentType = args.content_type || "blog_post";
|
|
57
60
|
const targetLanguage = args.target_language || "en";
|
|
58
61
|
const targetCountry = args.target_country || "us";
|
|
59
62
|
return [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-pipeline.js","sourceRoot":"","sources":["../../src/prompts/content-pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,MAAM,CAAC,MAAM,qBAAqB,GAAwB;IACxD,IAAI,EAAE,kBAAkB;IACxB,WAAW,EACT,mNAAmN;IACrN,SAAS,EAAE;QACT;YACE,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,yDAAyD;YACtE,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,6DAA6D;YAC1E,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,cAAc;YACpB,WAAW,EAAE,0EAA0E;YACvF,QAAQ,EAAE,KAAK;SAChB;QACD;YACE,IAAI,EAAE,cAAc;YACpB,WAAW,
|
|
1
|
+
{"version":3,"file":"content-pipeline.js","sourceRoot":"","sources":["../../src/prompts/content-pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,MAAM,CAAC,MAAM,qBAAqB,GAAwB;IACxD,IAAI,EAAE,kBAAkB;IACxB,WAAW,EACT,mNAAmN;IACrN,SAAS,EAAE;QACT;YACE,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,yDAAyD;YACtE,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,6DAA6D;YAC1E,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,cAAc;YACpB,WAAW,EAAE,0EAA0E;YACvF,QAAQ,EAAE,KAAK;SAChB;QACD;YACE,IAAI,EAAE,cAAc;YACpB,WAAW,EACT,yEAAyE;gBACzE,+EAA+E;gBAC/E,2EAA2E;gBAC3E,oDAAoD;YACtD,QAAQ,EAAE,KAAK;SAChB;QACD;YACE,IAAI,EAAE,iBAAiB;YACvB,WAAW,EAAE,iFAAiF;YAC9F,QAAQ,EAAE,KAAK;SAChB;QACD;YACE,IAAI,EAAE,gBAAgB;YACtB,WAAW,EAAE,6EAA6E;YAC1F,QAAQ,EAAE,KAAK;SAChB;KACF;CACF,CAAC;AAEF,MAAM,UAAU,0BAA0B,CAAC,IAA4B;IAIrE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,qBAAqB,CAAC;IAClD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;IAClC,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC;IAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,IAAI,WAAW,CAAC;IACrD,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC;IACpD,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC;IAElD,OAAO;QACL;YACE,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE;gBACP,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,sCAAsC,KAAK;;;aAG5C,MAAM;kBACD,WAAW;+BACE,WAAW;cAC5B,cAAc;aACf,aAAa;;;;wDAI8B,KAAK,kBAAkB,MAAM;;;;mBAIlE,WAAW;;;;;;0BAMJ,WAAW;;;;;+DAK0B,MAAM,iKAAiK,MAAM;;4FAEhJ,KAAK,wDAAwD,KAAK;;;;;;;gCAO9H;aACzB;SACF;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-seo-article.d.ts","sourceRoot":"","sources":["../../src/prompts/create-seo-article.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEvD,eAAO,MAAM,sBAAsB,EAAE,
|
|
1
|
+
{"version":3,"file":"create-seo-article.d.ts","sourceRoot":"","sources":["../../src/prompts/create-seo-article.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEvD,eAAO,MAAM,sBAAsB,EAAE,mBA8BpC,CAAC;AAEF,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC;IAC/E,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CACzC,CAAC,CA4DD"}
|
|
@@ -26,7 +26,10 @@ export const createSeoArticlePrompt = {
|
|
|
26
26
|
},
|
|
27
27
|
{
|
|
28
28
|
name: "content_type",
|
|
29
|
-
description: "
|
|
29
|
+
description: "Canonical content type (one of 18) — e.g. blog_post, how_to, listicle, " +
|
|
30
|
+
"case_study, tutorial, comparison, alternative, tool_review, pillar, landing, " +
|
|
31
|
+
"faq, glossary, news, product_update, data_report, event, resource, page. " +
|
|
32
|
+
"Default: blog_post. See create_brief for the enum.",
|
|
30
33
|
required: false,
|
|
31
34
|
},
|
|
32
35
|
{
|
|
@@ -38,7 +41,7 @@ export const createSeoArticlePrompt = {
|
|
|
38
41
|
};
|
|
39
42
|
export function getCreateSeoArticleMessages(args) {
|
|
40
43
|
const topic = args.topic || "the requested topic";
|
|
41
|
-
const contentType = args.content_type || "
|
|
44
|
+
const contentType = args.content_type || "blog_post";
|
|
42
45
|
const siteId = args.site_id || "";
|
|
43
46
|
const targetScore = args.target_score || "70";
|
|
44
47
|
return [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-seo-article.js","sourceRoot":"","sources":["../../src/prompts/create-seo-article.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,MAAM,CAAC,MAAM,sBAAsB,GAAwB;IACzD,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EACT,yPAAyP;IAC3P,SAAS,EAAE;QACT;YACE,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,+CAA+C;YAC5D,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,iGAAiG;YAC9G,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,cAAc;YACpB,WAAW,EACT,
|
|
1
|
+
{"version":3,"file":"create-seo-article.js","sourceRoot":"","sources":["../../src/prompts/create-seo-article.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,MAAM,CAAC,MAAM,sBAAsB,GAAwB;IACzD,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EACT,yPAAyP;IAC3P,SAAS,EAAE;QACT;YACE,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,+CAA+C;YAC5D,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,iGAAiG;YAC9G,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,cAAc;YACpB,WAAW,EACT,yEAAyE;gBACzE,+EAA+E;gBAC/E,2EAA2E;gBAC3E,oDAAoD;YACtD,QAAQ,EAAE,KAAK;SAChB;QACD;YACE,IAAI,EAAE,cAAc;YACpB,WAAW,EAAE,4DAA4D;YACzE,QAAQ,EAAE,KAAK;SAChB;KACF;CACF,CAAC;AAEF,MAAM,UAAU,2BAA2B,CAAC,IAA4B;IAItE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,qBAAqB,CAAC;IAClD,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,IAAI,WAAW,CAAC;IACrD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;IAClC,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC;IAE9C,OAAO;QACL;YACE,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE;gBACP,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,uDAAuD,KAAK;;;kBAGxD,WAAW;aAChB,MAAM;+BACY,WAAW;;;;6DAImB,KAAK,kBAAkB,MAAM;;;;sBAIpE,WAAW;;;;;;;;;;;;;;;;;;;6BAmBJ,WAAW;;;;;8CAKM,MAAM;0GACsD,MAAM;;;;4EAIpC,KAAK;;;uEAGV;aAChE;SACF;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -3,9 +3,12 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Track how your content appears in AI-powered search results
|
|
5
5
|
*/
|
|
6
|
+
import { z } from "zod";
|
|
6
7
|
import type { McpToolDefinition, ToolContext, ToolResult } from "../types.js";
|
|
7
8
|
export declare const getAiVisibilityTool: McpToolDefinition;
|
|
8
9
|
export declare function executeGetAiVisibility(input: unknown, context: ToolContext): Promise<ToolResult>;
|
|
10
|
+
export declare const getIndustryBenchmarkTool: McpToolDefinition;
|
|
11
|
+
export declare function executeGetIndustryBenchmark(input: unknown, context: ToolContext): Promise<ToolResult>;
|
|
9
12
|
export declare const listPromptsTool: McpToolDefinition;
|
|
10
13
|
export declare function executeListPrompts(input: unknown, context: ToolContext): Promise<ToolResult>;
|
|
11
14
|
export declare const createPromptTool: McpToolDefinition;
|
|
@@ -22,6 +25,17 @@ export declare const getInsightsTool: McpToolDefinition;
|
|
|
22
25
|
export declare function executeGetInsights(input: unknown, context: ToolContext): Promise<ToolResult>;
|
|
23
26
|
export declare const getCrawlerLogsTool: McpToolDefinition;
|
|
24
27
|
export declare function executeGetCrawlerLogs(input: unknown, context: ToolContext): Promise<ToolResult>;
|
|
28
|
+
export declare const CITATION_FORMULA_FEATURE_LABELS: Record<string, string>;
|
|
29
|
+
export declare function citationFormulaLabelFor(featureName: string): string;
|
|
30
|
+
export declare const getCitationFormulaInputSchema: z.ZodObject<{
|
|
31
|
+
flavor: z.ZodDefault<z.ZodEnum<["active", "full"]>>;
|
|
32
|
+
}, "strict", z.ZodTypeAny, {
|
|
33
|
+
flavor: "full" | "active";
|
|
34
|
+
}, {
|
|
35
|
+
flavor?: "full" | "active" | undefined;
|
|
36
|
+
}>;
|
|
37
|
+
export declare const getCitationFormulaTool: McpToolDefinition;
|
|
38
|
+
export declare function executeGetCitationFormula(input: unknown, context: ToolContext): Promise<ToolResult>;
|
|
25
39
|
export declare const aiVisibilityTools: McpToolDefinition[];
|
|
26
40
|
export declare const aiVisibilityExecutors: Record<string, (input: unknown, context: ToolContext) => Promise<ToolResult>>;
|
|
27
41
|
//# sourceMappingURL=ai-visibility.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-visibility.d.ts","sourceRoot":"","sources":["../../src/tools/ai-visibility.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"ai-visibility.d.ts","sourceRoot":"","sources":["../../src/tools/ai-visibility.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EACV,iBAAiB,EACjB,WAAW,EACX,UAAU,EAGX,MAAM,aAAa,CAAC;AAwIrB,eAAO,MAAM,mBAAmB,EAAE,iBAiBjC,CAAC;AAEF,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,CAmHrB;AA2HD,eAAO,MAAM,wBAAwB,EAAE,iBAmBtC,CAAC;AAEF,wBAAsB,2BAA2B,CAC/C,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,CAoHrB;AAYD,eAAO,MAAM,eAAe,EAAE,iBAoB7B,CAAC;AAEF,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,CA8CrB;AAiBD,eAAO,MAAM,gBAAgB,EAAE,iBA8C9B,CAAC;AAEF,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,CA8CrB;AAUD,eAAO,MAAM,aAAa,EAAE,iBAa3B,CAAC;AAEF,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,CAiErB;AAcD,eAAO,MAAM,gBAAgB,EAAE,iBAiC9B,CAAC;AAEF,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,CAoCrB;AAaD,eAAO,MAAM,kBAAkB,EAAE,iBAwBhC,CAAC;AAEF,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,CAwDrB;AAWD,eAAO,MAAM,aAAa,EAAE,iBAgB3B,CAAC;AAEF,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,CAsDrB;AAYD,eAAO,MAAM,eAAe,EAAE,iBAoB7B,CAAC;AAEF,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,CAoErB;AAoBD,eAAO,MAAM,kBAAkB,EAAE,iBAqBhC,CAAC;AAEF,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,CAqDrB;AA8BD,eAAO,MAAM,+BAA+B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAUlE,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAQnE;AAED,eAAO,MAAM,6BAA6B;;;;;;EAI/B,CAAC;AAEZ,eAAO,MAAM,sBAAsB,EAAE,iBAiBpC,CAAC;AAEF,wBAAsB,yBAAyB,CAC7C,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,CA2FrB;AAMD,eAAO,MAAM,iBAAiB,EAAE,iBAAiB,EAYhD,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,MAAM,CACxC,MAAM,EACN,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,UAAU,CAAC,CAa9D,CAAC"}
|