@socialneuron/mcp-server 1.7.4 → 1.7.9

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 CHANGED
@@ -2,6 +2,85 @@
2
2
 
3
3
  All notable changes to `@socialneuron/mcp-server` will be documented in this file.
4
4
 
5
+ ## [1.7.9] - 2026-05-01
6
+
7
+ ### Security
8
+ - Hardened OAuth Dynamic Client Registration: production defaults now allow only known callback URIs plus localhost Claude development callbacks. Unknown HTTPS callbacks require `MCP_ALLOW_ANY_HTTPS_REDIRECT=true` for staging/onboarding.
9
+ - Made OAuth token revocation authoritative: backend revocation failures now surface as failures instead of silently succeeding after local cache eviction.
10
+ - Reduced auth error detail returned to clients and added no-store cache headers on protected HTTP responses.
11
+ - `MCP_VERSION` bumped to `1.7.9`.
12
+
13
+ ### Fixed
14
+ - Corrected auth documentation: this public server package currently uses an in-memory Dynamic Client Registration store. The earlier 1.7.7 changelog entry overstated persistent DCR storage; persistent DCR storage and separate short-lived connector tokens require companion backend changes outside this repo.
15
+
16
+ ## [1.7.8] - 2026-04-25
17
+
18
+ ### Added
19
+ - **Platform connection deep-link tools**: `start_platform_connection` mints a single-use deep link the user opens in their browser to complete platform OAuth (X/LinkedIn/IG/etc.) in their already-authenticated session; `wait_for_connection` polls until the connection becomes active or the timeout elapses. Closes the "agent can't trigger OAuth from the chat" gap.
20
+ - **Scope mapping**: `start_platform_connection` is `mcp:distribute`; `wait_for_connection` is `mcp:read`.
21
+
22
+ ### Changed
23
+ - `MCP_VERSION` bumped to `1.7.8` (live `mcp.socialneuron.com` continues at `1.7.7` until the next deploy carries this surface).
24
+ - Tool count: **76** (sealed via `tools.lock.json`).
25
+
26
+ ## [1.7.7] - 2026-04-25
27
+
28
+ ### Added
29
+ - **MCP Apps — Calendar (Day 1 read-only scaffold)**: First inline UI surface inside Claude Desktop / claude.ai using `@modelcontextprotocol/ext-apps`. The `open_content_calendar` tool renders a drag-drop calendar of scheduled posts. Backed by existing tools (`list_recent_posts`, `schedule_post`, `find_next_slots`) — no new server-side work required.
30
+ - **Connector icon**: OAuth metadata `logo_uri` points at `https://socialneuron.com/logo-icon.svg`. Custom Connector tile in claude.ai now renders the SN brand mark.
31
+ - **Persistent OAuth client store**: Dynamic Client Registrations are persisted to `public.mcp_oauth_clients` (Supabase). Survives Railway redeploys — claude.ai's saved `client_id` no longer becomes invalid each deploy. Falls back to in-memory mode if the table is unreachable.
32
+ - **Scope-denied OAuth-aware message**: Permission-denied responses now branch the remediation hint between API-key users (regenerate at `/settings/developer`) and OAuth Custom Connector users (scope is plan-tier-gated). [PR #73]
33
+
34
+ ### Changed
35
+ - `MCP_VERSION` bumped to `1.7.7`.
36
+ - Tool count: **74** at this release; subsequent backports brought public surface to 76.
37
+
38
+ ## [1.7.6] - 2026-04-22
39
+
40
+ ### Security
41
+ - **Dependency cooldown re-armed**: `SN_DEP_AGE_ENFORCE` flipped back to `"true"` in `release.yml`. New dependency versions under 14 days old now block publish again. (Was temporarily warn-only in 1.7.5 while Trusted Publishing was being validated — that validation is complete.)
42
+
43
+ ### Changed
44
+ - `MCP_VERSION` bumped to `1.7.6`.
45
+ - First release published via npm Trusted Publishing (OIDC) with full SLSA provenance attestation. No tokens involved in the publish path.
46
+ - **Reproducible `tools.lock.json`**: removed the `generated_at` timestamp so the sealed manifest is byte-identical across builds of the same source. Per-tool sha256 hashes remain the actual integrity seal.
47
+ - **MCP Registry manifest synced**: `server.json` version fields bumped from `1.7.0` → `1.7.6` so registry discovery reflects the real latest package.
48
+ - **Cursor plugin manifest synced**: `.cursor-plugin/plugin.json` bumped from `1.6.0` → `1.7.6`, tool count corrected from 52 → 73, and the `author.email` field (which leaked a real address) replaced with `author.url`.
49
+ - **Docs tool-count drift fixed**: `docs/rest-api.md`, `docs/cli-guide.md`, `docs/integration-methods.md`, `docs/landing-page-brief.md`, `examples/rest/08-tool-proxy.sh`, and `examples/mcp/prompts.md` all updated from stale `52 tools` references to the current `73 tools`. CHANGELOG history entries are left intact.
50
+
51
+ ### Fixed
52
+ - **Flaky CLI e2e test**: `unified JSON envelope > all JSON outputs include schema_version "1"` was occasionally hitting the default 5000ms vitest timeout on machines with slower cold-start. Raised per-test timeout to 15000ms. (Root cause is 6 sequential CLI spawns; a future PR can share the warm process.)
53
+
54
+ ## [1.7.5] - 2026-04-22
55
+
56
+ ### Added
57
+ - **`upload_media` base64 path**: new optional `file_data` + `file_name` params let Claude Desktop, Claude Web, and other remote agents upload bytes directly without a filesystem path. Content-type is validated against an allowlist, base64 charset is checked, and decoded size is capped at 10MB before the Edge Function call. `file_name` is `basename()`-sanitized.
58
+ - **`schedule_post` auto-rehost**: any `media_url` / `media_urls` / `job_id` result URL that is not already R2-signed is automatically persisted into R2 via `upload-to-r2` before posting. Keeps scheduled posts alive past ephemeral-URL expiry (Replicate, OpenAI, DALL-E, kie.ai) and feeds byte-upload platforms (X, LinkedIn, YouTube, Bluesky). New optional `auto_rehost` parameter (default: true) opts out.
59
+ - **`create_carousel` meta-tool** (from v1.7.4): Brand-aware carousel generation that composes `generate_image` with brand color/tone constraints and auto-exports to R2. Catalog now at **73 tools**.
60
+ - **Brand runtime scoring**: `brandScoring.ts` + `colorAudit.ts` modules power multi-dimensional brand alignment checks used by the carousel meta-tool.
61
+
62
+ ### Security
63
+ - **npm Trusted Publishing (OIDC)**: Release workflow publishes to npm via OIDC — no long-lived `NPM_TOKEN` secret. Package ships with SLSA provenance.
64
+ - **Production environment gate**: Release workflow requires manual approval of the `production` environment before publishing.
65
+ - **Perimeter hardening (Sprint 1)**: Repo-level `.npmrc` pins registry, disables funding/audit noise in CI, and enforces `save-exact`. `CODEOWNERS` locks security-sensitive paths (workflows, `.npmrc`, `package.json`, `src/auth/`) to `@socialneuron/sn-maintainers`.
66
+ - **Pre-push identity hook**: Blocks pushes from unexpected git identities; ships with a local allowlist.
67
+ - **Lockfile-lint + dependency cooldown**: CI validates `package-lock.json` integrity. Release enforces a 14-day cooldown on new dependency versions (temporarily warn-only for this release during OIDC validation — re-enforced in 1.7.6).
68
+ - **Sealed tools manifest (CVE-2025-6514 mitigation)**: `tools.lock.json` records a sha256 hash of every tool's `name`/`description`/`module`/`scope`. CI `lint:tools` blocks drift between source and manifest. Mitigates tool-poisoning attacks on MCP clients.
69
+ - **SSRF guard on caller URLs**: every URL passed to auto-rehost is validated by `quickSSRFCheck` — rejects localhost, RFC1918 private ranges, link-local, cloud metadata endpoints (AWS/GCP/Azure), embedded credentials, and non-HTTP(S) protocols.
70
+ - **Hono patched**: `hono` override bumped 4.12.12 → 4.12.14 to resolve GHSA-458j-xx4x-4375 (JSX attribute HTML injection, moderate).
71
+ - Covers **11 Dependabot alerts** pinned via npm `overrides` (security patches for transitive deps).
72
+
73
+ ### Changed
74
+ - `MCP_VERSION` bumped to `1.7.5`.
75
+ - Tool descriptions updated on `upload_media` and `schedule_post.media_url` to tell agents ephemeral URLs are safe to pass directly.
76
+ - CI runners upgraded: `actions/checkout@v6`, `actions/setup-node@v6`.
77
+ - Dependencies: `@supabase/supabase-js` 2.101 → 2.103, `posthog-node` 5.28 → 5.29.2, `hono` → 4.12.14, `@types/node` → 25.6, `typescript` → 6.0, `trufflehog` action → 3.94.2.
78
+
79
+ ### Fixed
80
+ - Missing `sanitizeError` import on the presigned-PUT error branch of `upload_media`.
81
+ - Release workflow: removed stale `registry-url` directive that blocked OIDC Trusted Publishing.
82
+ - Release workflow: removed broken typecheck gate that blocked publish.
83
+
5
84
  ## [1.7.3] - 2026-04-04
6
85
 
7
86
  ### Security
package/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  # @socialneuron/mcp-server
2
2
 
3
- > 64 tools for AI-powered social media management. MCP, REST API, CLI — create content, schedule posts, track analytics, and optimize performance.
3
+ > 76 tools for AI-powered social media management. MCP, REST API, CLI — create content, schedule posts, track analytics, and optimize performance.
4
+ >
5
+ > The live Railway endpoint at [`mcp.socialneuron.com`](https://mcp.socialneuron.com) may surface a small number of additional integrated tools beyond the npm-published surface — see [`/.well-known/mcp/server-card.json`](https://mcp.socialneuron.com/.well-known/mcp/server-card.json) for runtime truth.
4
6
 
5
7
  [![npm version](https://img.shields.io/npm/v/@socialneuron/mcp-server)](https://www.npmjs.com/package/@socialneuron/mcp-server)
6
8
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
@@ -14,7 +16,7 @@
14
16
  | **CLI** | Terminal, CI/CD pipelines | [Guide](docs/cli-guide.md) |
15
17
  | **SDK** | TypeScript/Node.js apps | Coming Q2 2026 |
16
18
 
17
- All methods share the same 64 tools, auth, scopes, and credit system. [Compare methods](docs/integration-methods.md).
19
+ All methods share the same 76 tools, auth, scopes, and credit system. [Compare methods](docs/integration-methods.md).
18
20
 
19
21
  ## Quick Start
20
22
 
@@ -137,7 +139,9 @@ Ask Claude things like:
137
139
  - "Check my analytics and suggest improvements"
138
140
  - "Set up autopilot to post 3 times per week"
139
141
 
140
- ## Tool Categories (64 tools)
142
+ ## Tool Categories (76 tools)
143
+
144
+ > Full machine-readable listing in [`tools.lock.json`](tools.lock.json) (sealed manifest, verified in CI).
141
145
 
142
146
  All tools are accessible via MCP, REST API (`POST /v1/tools/{name}`), and CLI.
143
147
 
@@ -261,7 +265,7 @@ socialneuron-mcp sn loop
261
265
  socialneuron-mcp sn credits
262
266
 
263
267
  # Agent-native CLI v2
264
- socialneuron-mcp sn tools [--module ideation] [--scope mcp:write] # List/filter all 64 tools
268
+ socialneuron-mcp sn tools [--module ideation] [--scope mcp:write] # List/filter all 76 tools
265
269
  socialneuron-mcp sn info # Version, auth, credits, tool count
266
270
  socialneuron-mcp sn plan list|view|approve # Content plan management
267
271
  socialneuron-mcp sn preset list|show|save|delete # Platform presets (6 built-in)