@antoinefamibelle/ghost-mcp 1.0.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/README.md +286 -0
- package/build/client.d.ts +8 -0
- package/build/client.d.ts.map +1 -0
- package/build/client.js +28 -0
- package/build/client.js.map +1 -0
- package/build/config.d.ts +6 -0
- package/build/config.d.ts.map +1 -0
- package/build/config.js +17 -0
- package/build/config.js.map +1 -0
- package/build/errors.d.ts +14 -0
- package/build/errors.d.ts.map +1 -0
- package/build/errors.js +34 -0
- package/build/errors.js.map +1 -0
- package/build/prompts/content-audit.d.ts +3 -0
- package/build/prompts/content-audit.d.ts.map +1 -0
- package/build/prompts/content-audit.js +74 -0
- package/build/prompts/content-audit.js.map +1 -0
- package/build/prompts/index.d.ts +3 -0
- package/build/prompts/index.d.ts.map +1 -0
- package/build/prompts/index.js +10 -0
- package/build/prompts/index.js.map +1 -0
- package/build/prompts/summarize-post.d.ts +3 -0
- package/build/prompts/summarize-post.d.ts.map +1 -0
- package/build/prompts/summarize-post.js +33 -0
- package/build/prompts/summarize-post.js.map +1 -0
- package/build/resources/blog.d.ts +3 -0
- package/build/resources/blog.d.ts.map +1 -0
- package/build/resources/blog.js +18 -0
- package/build/resources/blog.js.map +1 -0
- package/build/resources/index.d.ts +8 -0
- package/build/resources/index.d.ts.map +1 -0
- package/build/resources/index.js +18 -0
- package/build/resources/index.js.map +1 -0
- package/build/resources/members.d.ts +3 -0
- package/build/resources/members.d.ts.map +1 -0
- package/build/resources/members.js +23 -0
- package/build/resources/members.js.map +1 -0
- package/build/resources/newsletters.d.ts +3 -0
- package/build/resources/newsletters.d.ts.map +1 -0
- package/build/resources/newsletters.js +23 -0
- package/build/resources/newsletters.js.map +1 -0
- package/build/resources/offers.d.ts +3 -0
- package/build/resources/offers.d.ts.map +1 -0
- package/build/resources/offers.js +23 -0
- package/build/resources/offers.js.map +1 -0
- package/build/resources/posts.d.ts +3 -0
- package/build/resources/posts.d.ts.map +1 -0
- package/build/resources/posts.js +23 -0
- package/build/resources/posts.js.map +1 -0
- package/build/resources/tiers.d.ts +3 -0
- package/build/resources/tiers.d.ts.map +1 -0
- package/build/resources/tiers.js +26 -0
- package/build/resources/tiers.js.map +1 -0
- package/build/resources/users.d.ts +3 -0
- package/build/resources/users.d.ts.map +1 -0
- package/build/resources/users.js +23 -0
- package/build/resources/users.js.map +1 -0
- package/build/server.d.ts +3 -0
- package/build/server.d.ts.map +1 -0
- package/build/server.js +54 -0
- package/build/server.js.map +1 -0
- package/build/tools/invites.d.ts +3 -0
- package/build/tools/invites.d.ts.map +1 -0
- package/build/tools/invites.js +46 -0
- package/build/tools/invites.js.map +1 -0
- package/build/tools/members.d.ts +3 -0
- package/build/tools/members.d.ts.map +1 -0
- package/build/tools/members.js +93 -0
- package/build/tools/members.js.map +1 -0
- package/build/tools/newsletters.d.ts +3 -0
- package/build/tools/newsletters.d.ts.map +1 -0
- package/build/tools/newsletters.js +108 -0
- package/build/tools/newsletters.js.map +1 -0
- package/build/tools/offers.d.ts +3 -0
- package/build/tools/offers.d.ts.map +1 -0
- package/build/tools/offers.js +95 -0
- package/build/tools/offers.js.map +1 -0
- package/build/tools/posts.d.ts +3 -0
- package/build/tools/posts.d.ts.map +1 -0
- package/build/tools/posts.js +120 -0
- package/build/tools/posts.js.map +1 -0
- package/build/tools/roles.d.ts +3 -0
- package/build/tools/roles.d.ts.map +1 -0
- package/build/tools/roles.js +35 -0
- package/build/tools/roles.js.map +1 -0
- package/build/tools/tags.d.ts +3 -0
- package/build/tools/tags.d.ts.map +1 -0
- package/build/tools/tags.js +88 -0
- package/build/tools/tags.js.map +1 -0
- package/build/tools/tiers.d.ts +3 -0
- package/build/tools/tiers.d.ts.map +1 -0
- package/build/tools/tiers.js +96 -0
- package/build/tools/tiers.js.map +1 -0
- package/build/tools/users.d.ts +3 -0
- package/build/tools/users.d.ts.map +1 -0
- package/build/tools/users.js +72 -0
- package/build/tools/users.js.map +1 -0
- package/build/tools/webhooks.d.ts +3 -0
- package/build/tools/webhooks.d.ts.map +1 -0
- package/build/tools/webhooks.js +85 -0
- package/build/tools/webhooks.js.map +1 -0
- package/build/types/entities.d.ts +265 -0
- package/build/types/entities.d.ts.map +1 -0
- package/build/types/entities.js +4 -0
- package/build/types/entities.js.map +1 -0
- package/package.json +54 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"members.d.ts","sourceRoot":"","sources":["../../src/resources/members.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,yCAAyC,CAAC;AAI5F,eAAO,MAAM,oBAAoB,EAAE,4BAmBlC,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleMemberResource = void 0;
|
|
4
|
+
const client_js_1 = require("../client.js");
|
|
5
|
+
const errors_js_1 = require("../errors.js");
|
|
6
|
+
const handleMemberResource = async (uri, variables) => {
|
|
7
|
+
const memberId = variables["member_id"];
|
|
8
|
+
if (!memberId) {
|
|
9
|
+
throw new errors_js_1.GhostMcpError("MISSING_PARAM", "member_id is required in the resource URI");
|
|
10
|
+
}
|
|
11
|
+
const member = await (0, client_js_1.callGhost)(() => client_js_1.ghost.members.read({ id: String(memberId) }));
|
|
12
|
+
return {
|
|
13
|
+
contents: [
|
|
14
|
+
{
|
|
15
|
+
uri: uri.href,
|
|
16
|
+
mimeType: "application/json",
|
|
17
|
+
text: JSON.stringify(member, null, 2),
|
|
18
|
+
},
|
|
19
|
+
],
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
exports.handleMemberResource = handleMemberResource;
|
|
23
|
+
//# sourceMappingURL=members.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"members.js","sourceRoot":"","sources":["../../src/resources/members.ts"],"names":[],"mappings":";;;AACA,4CAAgD;AAChD,4CAA6C;AAEtC,MAAM,oBAAoB,GAAiC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE;IACzF,MAAM,QAAQ,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;IACxC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,yBAAa,CAAC,eAAe,EAAE,2CAA2C,CAAC,CAAC;IACxF,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,IAAA,qBAAS,EAAC,GAAG,EAAE,CAClC,iBAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAC7C,CAAC;IAEF,OAAO;QACL,QAAQ,EAAE;YACR;gBACE,GAAG,EAAE,GAAG,CAAC,IAAI;gBACb,QAAQ,EAAE,kBAAkB;gBAC5B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;aACtC;SACF;KACF,CAAC;AACJ,CAAC,CAAC;AAnBW,QAAA,oBAAoB,wBAmB/B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"newsletters.d.ts","sourceRoot":"","sources":["../../src/resources/newsletters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,yCAAyC,CAAC;AAI5F,eAAO,MAAM,wBAAwB,EAAE,4BAmBtC,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleNewsletterResource = void 0;
|
|
4
|
+
const client_js_1 = require("../client.js");
|
|
5
|
+
const errors_js_1 = require("../errors.js");
|
|
6
|
+
const handleNewsletterResource = async (uri, variables) => {
|
|
7
|
+
const newsletterId = variables["newsletter_id"];
|
|
8
|
+
if (!newsletterId) {
|
|
9
|
+
throw new errors_js_1.GhostMcpError("MISSING_PARAM", "newsletter_id is required in the resource URI");
|
|
10
|
+
}
|
|
11
|
+
const newsletter = await (0, client_js_1.callGhost)(() => client_js_1.ghost.newsletters.read({ id: String(newsletterId) }));
|
|
12
|
+
return {
|
|
13
|
+
contents: [
|
|
14
|
+
{
|
|
15
|
+
uri: uri.href,
|
|
16
|
+
mimeType: "application/json",
|
|
17
|
+
text: JSON.stringify(newsletter, null, 2),
|
|
18
|
+
},
|
|
19
|
+
],
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
exports.handleNewsletterResource = handleNewsletterResource;
|
|
23
|
+
//# sourceMappingURL=newsletters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"newsletters.js","sourceRoot":"","sources":["../../src/resources/newsletters.ts"],"names":[],"mappings":";;;AACA,4CAAgD;AAChD,4CAA6C;AAEtC,MAAM,wBAAwB,GAAiC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE;IAC7F,MAAM,YAAY,GAAG,SAAS,CAAC,eAAe,CAAC,CAAC;IAChD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,yBAAa,CAAC,eAAe,EAAE,+CAA+C,CAAC,CAAC;IAC5F,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,IAAA,qBAAS,EAAC,GAAG,EAAE,CACtC,iBAAK,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CACrD,CAAC;IAEF,OAAO;QACL,QAAQ,EAAE;YACR;gBACE,GAAG,EAAE,GAAG,CAAC,IAAI;gBACb,QAAQ,EAAE,kBAAkB;gBAC5B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;aAC1C;SACF;KACF,CAAC;AACJ,CAAC,CAAC;AAnBW,QAAA,wBAAwB,4BAmBnC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"offers.d.ts","sourceRoot":"","sources":["../../src/resources/offers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,yCAAyC,CAAC;AAI5F,eAAO,MAAM,mBAAmB,EAAE,4BAmBjC,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleOfferResource = void 0;
|
|
4
|
+
const client_js_1 = require("../client.js");
|
|
5
|
+
const errors_js_1 = require("../errors.js");
|
|
6
|
+
const handleOfferResource = async (uri, variables) => {
|
|
7
|
+
const offerId = variables["offer_id"];
|
|
8
|
+
if (!offerId) {
|
|
9
|
+
throw new errors_js_1.GhostMcpError("MISSING_PARAM", "offer_id is required in the resource URI");
|
|
10
|
+
}
|
|
11
|
+
const offer = await (0, client_js_1.callGhost)(() => client_js_1.ghost.offers.read({ id: String(offerId) }));
|
|
12
|
+
return {
|
|
13
|
+
contents: [
|
|
14
|
+
{
|
|
15
|
+
uri: uri.href,
|
|
16
|
+
mimeType: "application/json",
|
|
17
|
+
text: JSON.stringify(offer, null, 2),
|
|
18
|
+
},
|
|
19
|
+
],
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
exports.handleOfferResource = handleOfferResource;
|
|
23
|
+
//# sourceMappingURL=offers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"offers.js","sourceRoot":"","sources":["../../src/resources/offers.ts"],"names":[],"mappings":";;;AACA,4CAAgD;AAChD,4CAA6C;AAEtC,MAAM,mBAAmB,GAAiC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE;IACxF,MAAM,OAAO,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;IACtC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,yBAAa,CAAC,eAAe,EAAE,0CAA0C,CAAC,CAAC;IACvF,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,IAAA,qBAAS,EAAC,GAAG,EAAE,CACjC,iBAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAC3C,CAAC;IAEF,OAAO;QACL,QAAQ,EAAE;YACR;gBACE,GAAG,EAAE,GAAG,CAAC,IAAI;gBACb,QAAQ,EAAE,kBAAkB;gBAC5B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;aACrC;SACF;KACF,CAAC;AACJ,CAAC,CAAC;AAnBW,QAAA,mBAAmB,uBAmB9B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"posts.d.ts","sourceRoot":"","sources":["../../src/resources/posts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,yCAAyC,CAAC;AAI5F,eAAO,MAAM,kBAAkB,EAAE,4BAmBhC,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handlePostResource = void 0;
|
|
4
|
+
const client_js_1 = require("../client.js");
|
|
5
|
+
const errors_js_1 = require("../errors.js");
|
|
6
|
+
const handlePostResource = async (uri, variables) => {
|
|
7
|
+
const postId = variables["post_id"];
|
|
8
|
+
if (!postId) {
|
|
9
|
+
throw new errors_js_1.GhostMcpError("MISSING_PARAM", "post_id is required in the resource URI");
|
|
10
|
+
}
|
|
11
|
+
const post = await (0, client_js_1.callGhost)(() => client_js_1.ghost.posts.read({ id: String(postId), include: "tags,authors" }));
|
|
12
|
+
return {
|
|
13
|
+
contents: [
|
|
14
|
+
{
|
|
15
|
+
uri: uri.href,
|
|
16
|
+
mimeType: "application/json",
|
|
17
|
+
text: JSON.stringify(post, null, 2),
|
|
18
|
+
},
|
|
19
|
+
],
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
exports.handlePostResource = handlePostResource;
|
|
23
|
+
//# sourceMappingURL=posts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"posts.js","sourceRoot":"","sources":["../../src/resources/posts.ts"],"names":[],"mappings":";;;AACA,4CAAgD;AAChD,4CAA6C;AAEtC,MAAM,kBAAkB,GAAiC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE;IACvF,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IACpC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,yBAAa,CAAC,eAAe,EAAE,yCAAyC,CAAC,CAAC;IACtF,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,IAAA,qBAAS,EAAC,GAAG,EAAE,CAChC,iBAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,cAAc,EAA4C,CAAC,CAC5G,CAAC;IAEF,OAAO;QACL,QAAQ,EAAE;YACR;gBACE,GAAG,EAAE,GAAG,CAAC,IAAI;gBACb,QAAQ,EAAE,kBAAkB;gBAC5B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;aACpC;SACF;KACF,CAAC;AACJ,CAAC,CAAC;AAnBW,QAAA,kBAAkB,sBAmB7B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tiers.d.ts","sourceRoot":"","sources":["../../src/resources/tiers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,yCAAyC,CAAC;AAI5F,eAAO,MAAM,kBAAkB,EAAE,4BAsBhC,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleTierResource = void 0;
|
|
4
|
+
const client_js_1 = require("../client.js");
|
|
5
|
+
const errors_js_1 = require("../errors.js");
|
|
6
|
+
const handleTierResource = async (uri, variables) => {
|
|
7
|
+
const tierId = variables["tier_id"];
|
|
8
|
+
if (!tierId) {
|
|
9
|
+
throw new errors_js_1.GhostMcpError("MISSING_PARAM", "tier_id is required in the resource URI");
|
|
10
|
+
}
|
|
11
|
+
const tier = await (0, client_js_1.callGhost)(() => client_js_1.ghost.tiers.read({
|
|
12
|
+
id: String(tierId),
|
|
13
|
+
include: "monthly_price,yearly_price",
|
|
14
|
+
}));
|
|
15
|
+
return {
|
|
16
|
+
contents: [
|
|
17
|
+
{
|
|
18
|
+
uri: uri.href,
|
|
19
|
+
mimeType: "application/json",
|
|
20
|
+
text: JSON.stringify(tier, null, 2),
|
|
21
|
+
},
|
|
22
|
+
],
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
exports.handleTierResource = handleTierResource;
|
|
26
|
+
//# sourceMappingURL=tiers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tiers.js","sourceRoot":"","sources":["../../src/resources/tiers.ts"],"names":[],"mappings":";;;AACA,4CAAgD;AAChD,4CAA6C;AAEtC,MAAM,kBAAkB,GAAiC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE;IACvF,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IACpC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,yBAAa,CAAC,eAAe,EAAE,yCAAyC,CAAC,CAAC;IACtF,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,IAAA,qBAAS,EAAC,GAAG,EAAE,CAChC,iBAAK,CAAC,KAAK,CAAC,IAAI,CAAC;QACf,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC;QAClB,OAAO,EAAE,4BAA4B;KACI,CAAC,CAC7C,CAAC;IAEF,OAAO;QACL,QAAQ,EAAE;YACR;gBACE,GAAG,EAAE,GAAG,CAAC,IAAI;gBACb,QAAQ,EAAE,kBAAkB;gBAC5B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;aACpC;SACF;KACF,CAAC;AACJ,CAAC,CAAC;AAtBW,QAAA,kBAAkB,sBAsB7B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../../src/resources/users.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,yCAAyC,CAAC;AAI5F,eAAO,MAAM,kBAAkB,EAAE,4BAmBhC,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleUserResource = void 0;
|
|
4
|
+
const client_js_1 = require("../client.js");
|
|
5
|
+
const errors_js_1 = require("../errors.js");
|
|
6
|
+
const handleUserResource = async (uri, variables) => {
|
|
7
|
+
const userId = variables["user_id"];
|
|
8
|
+
if (!userId) {
|
|
9
|
+
throw new errors_js_1.GhostMcpError("MISSING_PARAM", "user_id is required in the resource URI");
|
|
10
|
+
}
|
|
11
|
+
const user = await (0, client_js_1.callGhost)(() => client_js_1.ghost.users.read({ id: String(userId), include: "roles" }));
|
|
12
|
+
return {
|
|
13
|
+
contents: [
|
|
14
|
+
{
|
|
15
|
+
uri: uri.href,
|
|
16
|
+
mimeType: "application/json",
|
|
17
|
+
text: JSON.stringify(user, null, 2),
|
|
18
|
+
},
|
|
19
|
+
],
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
exports.handleUserResource = handleUserResource;
|
|
23
|
+
//# sourceMappingURL=users.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"users.js","sourceRoot":"","sources":["../../src/resources/users.ts"],"names":[],"mappings":";;;AACA,4CAAgD;AAChD,4CAA6C;AAEtC,MAAM,kBAAkB,GAAiC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE;IACvF,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IACpC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,yBAAa,CAAC,eAAe,EAAE,yCAAyC,CAAC,CAAC;IACtF,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,IAAA,qBAAS,EAAC,GAAG,EAAE,CAChC,iBAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,EAA4C,CAAC,CACrG,CAAC;IAEF,OAAO;QACL,QAAQ,EAAE;YACR;gBACE,GAAG,EAAE,GAAG,CAAC,IAAI;gBACb,QAAQ,EAAE,kBAAkB;gBAC5B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;aACpC;SACF;KACF,CAAC;AACJ,CAAC,CAAC;AAnBW,QAAA,kBAAkB,sBAmB7B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":""}
|
package/build/server.js
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
|
|
5
|
+
const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
|
|
6
|
+
// Resources
|
|
7
|
+
const index_js_1 = require("./resources/index.js");
|
|
8
|
+
// Tools
|
|
9
|
+
const posts_js_1 = require("./tools/posts.js");
|
|
10
|
+
const members_js_1 = require("./tools/members.js");
|
|
11
|
+
const users_js_1 = require("./tools/users.js");
|
|
12
|
+
const tags_js_1 = require("./tools/tags.js");
|
|
13
|
+
const tiers_js_1 = require("./tools/tiers.js");
|
|
14
|
+
const offers_js_1 = require("./tools/offers.js");
|
|
15
|
+
const newsletters_js_1 = require("./tools/newsletters.js");
|
|
16
|
+
const invites_js_1 = require("./tools/invites.js");
|
|
17
|
+
const roles_js_1 = require("./tools/roles.js");
|
|
18
|
+
const webhooks_js_1 = require("./tools/webhooks.js");
|
|
19
|
+
// Prompts
|
|
20
|
+
const index_js_2 = require("./prompts/index.js");
|
|
21
|
+
// ── Server ──────────────────────────────────────────────────────────────────────
|
|
22
|
+
const server = new mcp_js_1.McpServer({ name: "ghost-mcp", version: "1.0.0" }, { capabilities: { resources: {}, tools: {}, prompts: {}, logging: {} } });
|
|
23
|
+
// ── Resources ───────────────────────────────────────────────────────────────────
|
|
24
|
+
server.resource("post", new mcp_js_1.ResourceTemplate("post://{post_id}", { list: undefined }), index_js_1.handlePostResource);
|
|
25
|
+
server.resource("user", new mcp_js_1.ResourceTemplate("user://{user_id}", { list: undefined }), index_js_1.handleUserResource);
|
|
26
|
+
server.resource("member", new mcp_js_1.ResourceTemplate("member://{member_id}", { list: undefined }), index_js_1.handleMemberResource);
|
|
27
|
+
server.resource("tier", new mcp_js_1.ResourceTemplate("tier://{tier_id}", { list: undefined }), index_js_1.handleTierResource);
|
|
28
|
+
server.resource("offer", new mcp_js_1.ResourceTemplate("offer://{offer_id}", { list: undefined }), index_js_1.handleOfferResource);
|
|
29
|
+
server.resource("newsletter", new mcp_js_1.ResourceTemplate("newsletter://{newsletter_id}", { list: undefined }), index_js_1.handleNewsletterResource);
|
|
30
|
+
server.resource("blog-info", "blog://info", index_js_1.handleBlogInfoResource);
|
|
31
|
+
// ── Tools ────────────────────────────────────────────────────────────────────────
|
|
32
|
+
(0, posts_js_1.registerPostTools)(server);
|
|
33
|
+
(0, members_js_1.registerMemberTools)(server);
|
|
34
|
+
(0, users_js_1.registerUserTools)(server);
|
|
35
|
+
(0, tags_js_1.registerTagTools)(server);
|
|
36
|
+
(0, tiers_js_1.registerTierTools)(server);
|
|
37
|
+
(0, offers_js_1.registerOfferTools)(server);
|
|
38
|
+
(0, newsletters_js_1.registerNewsletterTools)(server);
|
|
39
|
+
(0, invites_js_1.registerInviteTools)(server);
|
|
40
|
+
(0, roles_js_1.registerRoleTools)(server);
|
|
41
|
+
(0, webhooks_js_1.registerWebhookTools)(server);
|
|
42
|
+
// ── Prompts ──────────────────────────────────────────────────────────────────────
|
|
43
|
+
(0, index_js_2.registerPrompts)(server);
|
|
44
|
+
// ── Transport ────────────────────────────────────────────────────────────────────
|
|
45
|
+
async function main() {
|
|
46
|
+
const transport = new stdio_js_1.StdioServerTransport();
|
|
47
|
+
await server.connect(transport);
|
|
48
|
+
console.error("Ghost MCP server running on stdio");
|
|
49
|
+
}
|
|
50
|
+
main().catch((err) => {
|
|
51
|
+
console.error("Fatal error starting Ghost MCP server:", err);
|
|
52
|
+
process.exit(1);
|
|
53
|
+
});
|
|
54
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";;;AAEA,oEAAsF;AACtF,wEAAiF;AAEjF,YAAY;AACZ,mDAQ8B;AAE9B,QAAQ;AACR,+CAAqD;AACrD,mDAAyD;AACzD,+CAAqD;AACrD,6CAAmD;AACnD,+CAAqD;AACrD,iDAAuD;AACvD,2DAAiE;AACjE,mDAAyD;AACzD,+CAAqD;AACrD,qDAA2D;AAE3D,UAAU;AACV,iDAAqD;AAErD,mFAAmF;AAEnF,MAAM,MAAM,GAAG,IAAI,kBAAS,CAC1B,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,EACvC,EAAE,YAAY,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,CACzE,CAAC;AAEF,mFAAmF;AAEnF,MAAM,CAAC,QAAQ,CACb,MAAM,EACN,IAAI,yBAAgB,CAAC,kBAAkB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAC7D,6BAAkB,CACnB,CAAC;AACF,MAAM,CAAC,QAAQ,CACb,MAAM,EACN,IAAI,yBAAgB,CAAC,kBAAkB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAC7D,6BAAkB,CACnB,CAAC;AACF,MAAM,CAAC,QAAQ,CACb,QAAQ,EACR,IAAI,yBAAgB,CAAC,sBAAsB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EACjE,+BAAoB,CACrB,CAAC;AACF,MAAM,CAAC,QAAQ,CACb,MAAM,EACN,IAAI,yBAAgB,CAAC,kBAAkB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAC7D,6BAAkB,CACnB,CAAC;AACF,MAAM,CAAC,QAAQ,CACb,OAAO,EACP,IAAI,yBAAgB,CAAC,oBAAoB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAC/D,8BAAmB,CACpB,CAAC;AACF,MAAM,CAAC,QAAQ,CACb,YAAY,EACZ,IAAI,yBAAgB,CAAC,8BAA8B,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EACzE,mCAAwB,CACzB,CAAC;AACF,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,aAAa,EAAE,iCAAsB,CAAC,CAAC;AAEpE,oFAAoF;AAEpF,IAAA,4BAAiB,EAAC,MAAM,CAAC,CAAC;AAC1B,IAAA,gCAAmB,EAAC,MAAM,CAAC,CAAC;AAC5B,IAAA,4BAAiB,EAAC,MAAM,CAAC,CAAC;AAC1B,IAAA,0BAAgB,EAAC,MAAM,CAAC,CAAC;AACzB,IAAA,4BAAiB,EAAC,MAAM,CAAC,CAAC;AAC1B,IAAA,8BAAkB,EAAC,MAAM,CAAC,CAAC;AAC3B,IAAA,wCAAuB,EAAC,MAAM,CAAC,CAAC;AAChC,IAAA,gCAAmB,EAAC,MAAM,CAAC,CAAC;AAC5B,IAAA,4BAAiB,EAAC,MAAM,CAAC,CAAC;AAC1B,IAAA,kCAAoB,EAAC,MAAM,CAAC,CAAC;AAE7B,oFAAoF;AAEpF,IAAA,0BAAe,EAAC,MAAM,CAAC,CAAC;AAExB,oFAAoF;AAEpF,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,IAAI,+BAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;AACrD,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;IAC5B,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,GAAG,CAAC,CAAC;IAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invites.d.ts","sourceRoot":"","sources":["../../src/tools/invites.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIpE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAoD3D"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.registerInviteTools = registerInviteTools;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const client_js_1 = require("../client.js");
|
|
6
|
+
const errors_js_1 = require("../errors.js");
|
|
7
|
+
function registerInviteTools(server) {
|
|
8
|
+
server.tool("invites_browse", "List pending staff invitations on your Ghost site. Invites are email-based invitations for new team members.", {
|
|
9
|
+
filter: zod_1.z.string().optional().describe("Ghost filter expression, e.g. 'status:pending'"),
|
|
10
|
+
limit: zod_1.z.number().int().positive().optional().describe("Max results to return (default 15)"),
|
|
11
|
+
page: zod_1.z.number().int().positive().optional().describe("Pagination page number (1-based)"),
|
|
12
|
+
order: zod_1.z.string().optional().describe("Sort expression, e.g. 'created_at desc'"),
|
|
13
|
+
}, async (args) => {
|
|
14
|
+
try {
|
|
15
|
+
const invites = await (0, client_js_1.callGhost)(() => client_js_1.ghost.invites.browse(args));
|
|
16
|
+
return { content: [{ type: "text", text: JSON.stringify(invites, null, 2) }] };
|
|
17
|
+
}
|
|
18
|
+
catch (err) {
|
|
19
|
+
return (0, errors_js_1.formatErrorContent)(err);
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
server.tool("invites_add", "Send an email invitation for a new staff member to join your Ghost site with a specific role.", {
|
|
23
|
+
email: zod_1.z.string().email().describe("Email address to send the invitation to (required)"),
|
|
24
|
+
role_id: zod_1.z.string().describe("Ghost role ID to assign to the invited user (required). Use roles_browse to find available role IDs."),
|
|
25
|
+
}, async (args) => {
|
|
26
|
+
try {
|
|
27
|
+
const invite = await (0, client_js_1.callGhost)(() => client_js_1.ghost.invites.add(args));
|
|
28
|
+
return { content: [{ type: "text", text: JSON.stringify(invite, null, 2) }] };
|
|
29
|
+
}
|
|
30
|
+
catch (err) {
|
|
31
|
+
return (0, errors_js_1.formatErrorContent)(err);
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
server.tool("invites_delete", "Cancel and delete a pending staff invitation by ID.", {
|
|
35
|
+
id: zod_1.z.string().describe("Ghost invite ID to delete"),
|
|
36
|
+
}, async (args) => {
|
|
37
|
+
try {
|
|
38
|
+
await (0, client_js_1.callGhost)(() => client_js_1.ghost.invites.delete(args));
|
|
39
|
+
return { content: [{ type: "text", text: `Invite ${args.id} deleted successfully.` }] };
|
|
40
|
+
}
|
|
41
|
+
catch (err) {
|
|
42
|
+
return (0, errors_js_1.formatErrorContent)(err);
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=invites.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invites.js","sourceRoot":"","sources":["../../src/tools/invites.ts"],"names":[],"mappings":";;AAKA,kDAoDC;AAzDD,6BAAwB;AAExB,4CAAgD;AAChD,4CAAkD;AAElD,SAAgB,mBAAmB,CAAC,MAAiB;IACnD,MAAM,CAAC,IAAI,CACT,gBAAgB,EAChB,8GAA8G,EAC9G;QACE,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;QACxF,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;QAC5F,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;QACzF,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;KACjF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAA,qBAAS,EAAC,GAAG,EAAE,CAAC,iBAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YAClE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACjF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,IAAA,8BAAkB,EAAC,GAAG,CAAC,CAAC;QACjC,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,aAAa,EACb,+FAA+F,EAC/F;QACE,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;QACxF,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sGAAsG,CAAC;KACrI,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAA,qBAAS,EAAC,GAAG,EAAE,CAAC,iBAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;YAC9D,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAChF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,IAAA,8BAAkB,EAAC,GAAG,CAAC,CAAC;QACjC,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,gBAAgB,EAChB,qDAAqD,EACrD;QACE,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;KACrD,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,IAAA,qBAAS,EAAC,GAAG,EAAE,CAAC,iBAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YAClD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,IAAI,CAAC,EAAE,wBAAwB,EAAE,CAAC,EAAE,CAAC;QAC1F,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,IAAA,8BAAkB,EAAC,GAAG,CAAC,CAAC;QACjC,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"members.d.ts","sourceRoot":"","sources":["../../src/tools/members.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAapE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAsG3D"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.registerMemberTools = registerMemberTools;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const client_js_1 = require("../client.js");
|
|
6
|
+
const errors_js_1 = require("../errors.js");
|
|
7
|
+
const labelSchema = zod_1.z.object({
|
|
8
|
+
name: zod_1.z.string().describe("Label name"),
|
|
9
|
+
slug: zod_1.z.string().optional().describe("Label slug"),
|
|
10
|
+
});
|
|
11
|
+
const newsletterRef = zod_1.z.object({
|
|
12
|
+
id: zod_1.z.string().describe("Newsletter ID to subscribe/unsubscribe from"),
|
|
13
|
+
});
|
|
14
|
+
function registerMemberTools(server) {
|
|
15
|
+
server.tool("members_browse", "List members of your Ghost site. Supports filtering by email, status, labels, newsletters, and subscription state.", {
|
|
16
|
+
filter: zod_1.z
|
|
17
|
+
.string()
|
|
18
|
+
.optional()
|
|
19
|
+
.describe("Ghost filter expression, e.g. 'status:paid' or 'label:vip'"),
|
|
20
|
+
limit: zod_1.z.number().int().positive().optional().describe("Max results to return (default 15)"),
|
|
21
|
+
page: zod_1.z.number().int().positive().optional().describe("Pagination page number (1-based)"),
|
|
22
|
+
order: zod_1.z.string().optional().describe("Sort expression, e.g. 'created_at desc'"),
|
|
23
|
+
}, async (args) => {
|
|
24
|
+
try {
|
|
25
|
+
const members = await (0, client_js_1.callGhost)(() => client_js_1.ghost.members.browse(args));
|
|
26
|
+
return { content: [{ type: "text", text: JSON.stringify(members, null, 2) }] };
|
|
27
|
+
}
|
|
28
|
+
catch (err) {
|
|
29
|
+
return (0, errors_js_1.formatErrorContent)(err);
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
server.tool("members_read", "Fetch a single Ghost member by their ID or email address.", {
|
|
33
|
+
id: zod_1.z.string().optional().describe("Ghost member ID"),
|
|
34
|
+
email: zod_1.z.string().email().optional().describe("Member email address"),
|
|
35
|
+
}, async (args) => {
|
|
36
|
+
try {
|
|
37
|
+
const member = await (0, client_js_1.callGhost)(() => client_js_1.ghost.members.read(args));
|
|
38
|
+
return { content: [{ type: "text", text: JSON.stringify(member, null, 2) }] };
|
|
39
|
+
}
|
|
40
|
+
catch (err) {
|
|
41
|
+
return (0, errors_js_1.formatErrorContent)(err);
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
server.tool("members_add", "Add a new member to your Ghost site. Only 'email' is required. Use 'newsletters' to subscribe them immediately.", {
|
|
45
|
+
email: zod_1.z.string().email().describe("Member email address (required)"),
|
|
46
|
+
name: zod_1.z.string().optional().describe("Member display name"),
|
|
47
|
+
note: zod_1.z.string().optional().describe("Internal note (not visible to member)"),
|
|
48
|
+
labels: zod_1.z.array(labelSchema).optional().describe("Labels to apply to this member"),
|
|
49
|
+
newsletters: zod_1.z
|
|
50
|
+
.array(newsletterRef)
|
|
51
|
+
.optional()
|
|
52
|
+
.describe("Newsletters to subscribe this member to"),
|
|
53
|
+
}, async (args) => {
|
|
54
|
+
try {
|
|
55
|
+
const member = await (0, client_js_1.callGhost)(() => client_js_1.ghost.members.add(args));
|
|
56
|
+
return { content: [{ type: "text", text: JSON.stringify(member, null, 2) }] };
|
|
57
|
+
}
|
|
58
|
+
catch (err) {
|
|
59
|
+
return (0, errors_js_1.formatErrorContent)(err);
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
server.tool("members_edit", "Update an existing Ghost member. Requires the member ID. Supply only the fields you want to change.", {
|
|
63
|
+
id: zod_1.z.string().describe("Ghost member ID (required)"),
|
|
64
|
+
email: zod_1.z.string().email().optional().describe("New email address"),
|
|
65
|
+
name: zod_1.z.string().optional().describe("New display name"),
|
|
66
|
+
note: zod_1.z.string().optional().describe("Updated internal note"),
|
|
67
|
+
labels: zod_1.z.array(labelSchema).optional().describe("Replacement label set (replaces all existing labels)"),
|
|
68
|
+
newsletters: zod_1.z
|
|
69
|
+
.array(newsletterRef)
|
|
70
|
+
.optional()
|
|
71
|
+
.describe("Replacement newsletter subscriptions (replaces all existing)"),
|
|
72
|
+
}, async (args) => {
|
|
73
|
+
try {
|
|
74
|
+
const member = await (0, client_js_1.callGhost)(() => client_js_1.ghost.members.edit(args));
|
|
75
|
+
return { content: [{ type: "text", text: JSON.stringify(member, null, 2) }] };
|
|
76
|
+
}
|
|
77
|
+
catch (err) {
|
|
78
|
+
return (0, errors_js_1.formatErrorContent)(err);
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
server.tool("members_delete", "Permanently delete a Ghost member by ID. This removes all their data and cannot be undone.", {
|
|
82
|
+
id: zod_1.z.string().describe("Ghost member ID to delete"),
|
|
83
|
+
}, async (args) => {
|
|
84
|
+
try {
|
|
85
|
+
await (0, client_js_1.callGhost)(() => client_js_1.ghost.members.delete(args));
|
|
86
|
+
return { content: [{ type: "text", text: `Member ${args.id} deleted successfully.` }] };
|
|
87
|
+
}
|
|
88
|
+
catch (err) {
|
|
89
|
+
return (0, errors_js_1.formatErrorContent)(err);
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=members.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"members.js","sourceRoot":"","sources":["../../src/tools/members.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"newsletters.d.ts","sourceRoot":"","sources":["../../src/tools/newsletters.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA0CpE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAuF/D"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.registerNewsletterTools = registerNewsletterTools;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const client_js_1 = require("../client.js");
|
|
6
|
+
const errors_js_1 = require("../errors.js");
|
|
7
|
+
const mutableNewsletterFields = {
|
|
8
|
+
description: zod_1.z.string().optional().describe("Short description of the newsletter"),
|
|
9
|
+
status: zod_1.z.enum(["active", "archived"]).optional().describe("Newsletter status"),
|
|
10
|
+
visibility: zod_1.z
|
|
11
|
+
.enum(["members", "paid"])
|
|
12
|
+
.optional()
|
|
13
|
+
.describe("Who can subscribe: members (all) or paid (paying subscribers only)"),
|
|
14
|
+
subscribe_on_signup: zod_1.z
|
|
15
|
+
.boolean()
|
|
16
|
+
.optional()
|
|
17
|
+
.describe("Auto-subscribe new site members to this newsletter"),
|
|
18
|
+
sender_name: zod_1.z.string().optional().describe("From name shown in email clients"),
|
|
19
|
+
sender_email: zod_1.z
|
|
20
|
+
.string()
|
|
21
|
+
.email()
|
|
22
|
+
.optional()
|
|
23
|
+
.describe("From email address (must be verified in Ghost settings)"),
|
|
24
|
+
sender_reply_to: zod_1.z
|
|
25
|
+
.string()
|
|
26
|
+
.optional()
|
|
27
|
+
.describe("Reply-to address: 'newsletter', 'support', or a custom email"),
|
|
28
|
+
show_header_icon: zod_1.z.boolean().optional().describe("Show site icon in email header"),
|
|
29
|
+
show_header_title: zod_1.z.boolean().optional().describe("Show site title in email header"),
|
|
30
|
+
show_header_name: zod_1.z.boolean().optional().describe("Show newsletter name in email header"),
|
|
31
|
+
show_feature_image: zod_1.z.boolean().optional().describe("Include the post's feature image in emails"),
|
|
32
|
+
title_font_category: zod_1.z
|
|
33
|
+
.enum(["serif", "sans_serif"])
|
|
34
|
+
.optional()
|
|
35
|
+
.describe("Font style for post titles in emails"),
|
|
36
|
+
body_font_category: zod_1.z
|
|
37
|
+
.enum(["serif", "sans_serif"])
|
|
38
|
+
.optional()
|
|
39
|
+
.describe("Font style for body text in emails"),
|
|
40
|
+
show_badge: zod_1.z.boolean().optional().describe("Show the 'Powered by Ghost' badge in footer"),
|
|
41
|
+
show_latest_posts: zod_1.z.boolean().optional().describe("Include a latest posts section in emails"),
|
|
42
|
+
footer_content: zod_1.z.string().optional().describe("HTML content for the email footer"),
|
|
43
|
+
};
|
|
44
|
+
function registerNewsletterTools(server) {
|
|
45
|
+
server.tool("newsletters_browse", "List newsletters on your Ghost site. Each newsletter is a separate mailing list members can subscribe to.", {
|
|
46
|
+
filter: zod_1.z.string().optional().describe("Ghost filter expression, e.g. 'status:active'"),
|
|
47
|
+
limit: zod_1.z.number().int().positive().optional().describe("Max results to return (default 15)"),
|
|
48
|
+
page: zod_1.z.number().int().positive().optional().describe("Pagination page number (1-based)"),
|
|
49
|
+
order: zod_1.z.string().optional().describe("Sort expression, e.g. 'name asc'"),
|
|
50
|
+
}, async (args) => {
|
|
51
|
+
try {
|
|
52
|
+
const newsletters = await (0, client_js_1.callGhost)(() => client_js_1.ghost.newsletters.browse(args));
|
|
53
|
+
return { content: [{ type: "text", text: JSON.stringify(newsletters, null, 2) }] };
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
return (0, errors_js_1.formatErrorContent)(err);
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
server.tool("newsletters_read", "Fetch a single newsletter by its ID or slug.", {
|
|
60
|
+
id: zod_1.z.string().optional().describe("Ghost newsletter ID"),
|
|
61
|
+
slug: zod_1.z.string().optional().describe("Newsletter slug"),
|
|
62
|
+
}, async (args) => {
|
|
63
|
+
try {
|
|
64
|
+
const newsletter = await (0, client_js_1.callGhost)(() => client_js_1.ghost.newsletters.read(args));
|
|
65
|
+
return { content: [{ type: "text", text: JSON.stringify(newsletter, null, 2) }] };
|
|
66
|
+
}
|
|
67
|
+
catch (err) {
|
|
68
|
+
return (0, errors_js_1.formatErrorContent)(err);
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
server.tool("newsletters_add", "Create a new newsletter (mailing list) on your Ghost site. Only 'name' is required.", {
|
|
72
|
+
name: zod_1.z.string().describe("Newsletter name (required)"),
|
|
73
|
+
...mutableNewsletterFields,
|
|
74
|
+
}, async (args) => {
|
|
75
|
+
try {
|
|
76
|
+
const newsletter = await (0, client_js_1.callGhost)(() => client_js_1.ghost.newsletters.add(args));
|
|
77
|
+
return { content: [{ type: "text", text: JSON.stringify(newsletter, null, 2) }] };
|
|
78
|
+
}
|
|
79
|
+
catch (err) {
|
|
80
|
+
return (0, errors_js_1.formatErrorContent)(err);
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
server.tool("newsletters_edit", "Update an existing newsletter. Requires the newsletter ID. Supply only the fields you want to change.", {
|
|
84
|
+
id: zod_1.z.string().describe("Ghost newsletter ID (required)"),
|
|
85
|
+
name: zod_1.z.string().optional().describe("Updated newsletter name"),
|
|
86
|
+
...mutableNewsletterFields,
|
|
87
|
+
}, async (args) => {
|
|
88
|
+
try {
|
|
89
|
+
const newsletter = await (0, client_js_1.callGhost)(() => client_js_1.ghost.newsletters.edit(args));
|
|
90
|
+
return { content: [{ type: "text", text: JSON.stringify(newsletter, null, 2) }] };
|
|
91
|
+
}
|
|
92
|
+
catch (err) {
|
|
93
|
+
return (0, errors_js_1.formatErrorContent)(err);
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
server.tool("newsletters_delete", "Delete a newsletter by ID. Members subscribed to it will not be deleted.", {
|
|
97
|
+
id: zod_1.z.string().describe("Ghost newsletter ID to delete"),
|
|
98
|
+
}, async (args) => {
|
|
99
|
+
try {
|
|
100
|
+
await (0, client_js_1.callGhost)(() => client_js_1.ghost.newsletters.delete(args));
|
|
101
|
+
return { content: [{ type: "text", text: `Newsletter ${args.id} deleted successfully.` }] };
|
|
102
|
+
}
|
|
103
|
+
catch (err) {
|
|
104
|
+
return (0, errors_js_1.formatErrorContent)(err);
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=newsletters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"newsletters.js","sourceRoot":"","sources":["../../src/tools/newsletters.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"offers.d.ts","sourceRoot":"","sources":["../../src/tools/offers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIpE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA+G1D"}
|