From aca08954881ac242685d647f9e3ed40fba9ebb55 Mon Sep 17 00:00:00 2001 From: "Eve (PAI Digital Assistant)" Date: Mon, 16 Mar 2026 17:16:00 -0400 Subject: [PATCH 1/2] Update package-lock and add MCP config Co-Authored-By: Claude Opus 4.6 --- .mcp.json | 3 +++ package-lock.json | 18 ++++++++++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 .mcp.json diff --git a/.mcp.json b/.mcp.json new file mode 100644 index 00000000..da39e4ff --- /dev/null +++ b/.mcp.json @@ -0,0 +1,3 @@ +{ + "mcpServers": {} +} diff --git a/package-lock.json b/package-lock.json index f733e19b..13031a20 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,11 +1,11 @@ { - "name": "ghl-mcp", + "name": "@mastanley13/ghl-mcp-server", "version": "1.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "ghl-mcp", + "name": "@mastanley13/ghl-mcp-server", "version": "1.0.0", "license": "ISC", "dependencies": { @@ -17,6 +17,9 @@ "dotenv": "^16.5.0", "express": "^5.1.0" }, + "bin": { + "ghl-mcp-server": "dist/server.js" + }, "devDependencies": { "@types/jest": "^29.5.14", "@types/node": "^22.15.29", @@ -25,6 +28,9 @@ "ts-jest": "^29.3.4", "ts-node": "^10.9.2", "typescript": "^5.8.3" + }, + "engines": { + "node": ">=18.0.0" } }, "node_modules/@ampproject/remapping": { @@ -68,6 +74,7 @@ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.27.4.tgz", "integrity": "sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g==", "dev": true, + "peer": true, "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.27.1", @@ -1078,6 +1085,7 @@ "version": "22.15.29", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.29.tgz", "integrity": "sha512-LNdjOkUDlU1RZb8e1kOIUpN1qQUlzGkEtbVNo53vbrwDg5om6oduhm4SiUaPW5ASTXhAiP0jInWG8Qx9fVlOeQ==", + "peer": true, "dependencies": { "undici-types": "~6.21.0" } @@ -1459,6 +1467,7 @@ "url": "https://github.com/sponsors/ai" } ], + "peer": true, "dependencies": { "caniuse-lite": "^1.0.30001718", "electron-to-chromium": "^1.5.160", @@ -2123,6 +2132,7 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz", "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", + "peer": true, "dependencies": { "accepts": "^2.0.0", "body-parser": "^2.2.0", @@ -2842,6 +2852,7 @@ "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", "dev": true, + "peer": true, "dependencies": { "@jest/core": "^29.7.0", "@jest/types": "^29.6.3", @@ -4651,6 +4662,7 @@ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", "dev": true, + "peer": true, "dependencies": { "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", @@ -4728,6 +4740,7 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", "dev": true, + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -4946,6 +4959,7 @@ "version": "3.25.51", "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.51.tgz", "integrity": "sha512-TQSnBldh+XSGL+opiSIq0575wvDPqu09AqWe1F7JhUMKY+M91/aGlK4MhpVNO7MgYfHcVCB1ffwAUTJzllKJqg==", + "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } From f1fcaf8e3404bf8ae815dde3bbd4587440a99614 Mon Sep 17 00:00:00 2001 From: "Eve (PAI Digital Assistant)" Date: Wed, 17 Jun 2026 14:55:42 -0400 Subject: [PATCH 2/2] fix(social): correct search_social_posts response parsing The /posts/list API returns results nested under a `results` key ({ results: { posts, total } }) but the tool was reading response.data.posts directly, always resolving to undefined and returning an empty list. Co-Authored-By: Claude Sonnet 4.6 --- src/tools/social-media-tools.ts | 8 +++++--- src/types/ghl-types.ts | 8 ++++++-- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/tools/social-media-tools.ts b/src/tools/social-media-tools.ts index 5623a450..122d2188 100644 --- a/src/tools/social-media-tools.ts +++ b/src/tools/social-media-tools.ts @@ -384,11 +384,13 @@ export class SocialMediaTools { postType: params.postType }); + const posts = response.data?.results?.posts || response.data?.posts || []; + const count = response.data?.results?.total ?? response.data?.count ?? posts.length; return { success: true, - posts: response.data?.posts || [], - count: response.data?.count || 0, - message: `Found ${response.data?.count || 0} social media posts` + posts, + count, + message: `Found ${count} social media posts` }; } diff --git a/src/types/ghl-types.ts b/src/types/ghl-types.ts index 0d465170..1a6b3961 100644 --- a/src/types/ghl-types.ts +++ b/src/types/ghl-types.ts @@ -2689,8 +2689,12 @@ export interface GHLAttachTikTokAccountRequest { // Response Interfaces export interface GHLSearchPostsResponse { - posts: GHLSocialPost[]; - count: number; + posts?: GHLSocialPost[]; + count?: number; + results?: { + posts: GHLSocialPost[]; + total: number; + }; } export interface GHLGetPostResponse {