{"_id":"@blaze283/social-agent-mcp","_rev":"6-e1d229e80fcca9fa042550a57a7b83f5","name":"@blaze283/social-agent-mcp","dist-tags":{"latest":"0.5.0"},"versions":{"0.3.0":{"name":"@blaze283/social-agent-mcp","version":"0.3.0","_id":"@blaze283/social-agent-mcp@0.3.0","maintainers":[{"name":"blaze283","email":"naik.tanmay283@gmail.com"}],"bin":{"paperclip-social-mcp":"dist/stdio.js"},"dist":{"shasum":"ea80d1436696e0dcddbd36ef552bec8394b2dc03","tarball":"https://registry.npmjs.org/@blaze283/social-agent-mcp/-/social-agent-mcp-0.3.0.tgz","fileCount":14,"integrity":"sha512-x6bLabeficlzbxhuIoZ1IcqiOwqEk6PqDVVocRKI31b7WMWLKduo1W3ymnmDiFV7IgG7vCXSsAIc1ha3gY+YXA==","signatures":[{"sig":"MEUCIQDdiQLPT06VvLpWPhSpER2RSbypj0EPz0U41L4Sb/dt7gIgA53JKgZUdxa9P/noSnEWqTXvyK23epIvUwdysCuGfCU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19178},"type":"module","gitHead":"2f1b3a550cfae50c9432576c4f5398de2451c99e","scripts":{"test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"blaze283","email":"naik.tanmay283@gmail.com"},"_npmVersion":"11.7.0","description":"Stdio MCP wrapper that surfaces social-agent-plugin tools to MCP clients via the plugin's agent-auth dispatch route. Workaround while paperclipai/paperclip#4192 is open.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"zod":"^3.24.2","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.5","typescript":"^5.7.3","@types/node":"^24.6.0"},"_npmOperationalInternal":{"tmp":"tmp/social-agent-mcp_0.3.0_1777975699551_0.8907663605200258","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@blaze283/social-agent-mcp","version":"0.3.1","_id":"@blaze283/social-agent-mcp@0.3.1","maintainers":[{"name":"blaze283","email":"naik.tanmay283@gmail.com"}],"bin":{"paperclip-social-mcp":"dist/stdio.js"},"dist":{"shasum":"c04013260f926f8f7808af69aea76a8e6a1d78ff","tarball":"https://registry.npmjs.org/@blaze283/social-agent-mcp/-/social-agent-mcp-0.3.1.tgz","fileCount":14,"integrity":"sha512-5knPa1FHQnnDNNV94QkkoQ5MEf34SLfjB7Cj7h6hzcQsvANTrqyQqQRqhh0Wl0wTp2gMH5xVpghWrNsX9rx5Ag==","signatures":[{"sig":"MEYCIQD9GSpBKrz+3JcSnRicY7IBRynYfDMlnjSnB5bXC5GLngIhAMZf+xkI6iikdgovJKfVs/zxEDJBbqXmLTiq2FauNxZH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19178},"type":"module","gitHead":"b2f5e49ee6e38a7d401657d5635a90fc526e12df","scripts":{"test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"blaze283","email":"naik.tanmay283@gmail.com"},"_npmVersion":"11.7.0","description":"Stdio MCP wrapper that surfaces social-agent-plugin tools to MCP clients via the plugin's agent-auth dispatch route. Workaround while paperclipai/paperclip#4192 is open.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"zod":"^3.24.2","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.5","typescript":"^5.7.3","@types/node":"^24.6.0"},"_npmOperationalInternal":{"tmp":"tmp/social-agent-mcp_0.3.1_1777976955429_0.8645408914771522","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@blaze283/social-agent-mcp","version":"0.3.2","_id":"@blaze283/social-agent-mcp@0.3.2","maintainers":[{"name":"blaze283","email":"naik.tanmay283@gmail.com"}],"bin":{"paperclip-social-mcp":"dist/stdio.js"},"dist":{"shasum":"ee817e55b9104d0bf182412f8354f715125a0f65","tarball":"https://registry.npmjs.org/@blaze283/social-agent-mcp/-/social-agent-mcp-0.3.2.tgz","fileCount":14,"integrity":"sha512-Sh7zjA4ekl/HJlsjavNV1lMx6KT9t8bjLPg025UQrmZ9srw8qGmmLm7YMYWVNifM96uOWyO4/VrmNvKbcHlN5Q==","signatures":[{"sig":"MEQCIFopkEzB/Q5LYgl61U+JTJN39ZieE9sasaPKb614qMMWAiATw3XgAlMlqyX+Tp0yabvsy56g8HpHmdsYjXiO66bhNQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19182},"type":"module","gitHead":"54b09b81ed13dfac8a18247dae7da98f82809791","scripts":{"test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"blaze283","email":"naik.tanmay283@gmail.com"},"_npmVersion":"11.7.0","description":"Stdio MCP wrapper that surfaces social-agent-plugin tools to MCP clients via the plugin's agent-auth dispatch route. Workaround while paperclipai/paperclip#4192 is open.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"zod":"^3.24.2","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.5","typescript":"^5.7.3","@types/node":"^24.6.0"},"_npmOperationalInternal":{"tmp":"tmp/social-agent-mcp_0.3.2_1777991500446_0.8925362153417793","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@blaze283/social-agent-mcp","version":"0.4.0","_id":"@blaze283/social-agent-mcp@0.4.0","maintainers":[{"name":"blaze283","email":"naik.tanmay283@gmail.com"}],"bin":{"paperclip-social-mcp":"dist/stdio.js"},"dist":{"shasum":"da60699d994e0390ea063e93ebc9fc95aca5c20b","tarball":"https://registry.npmjs.org/@blaze283/social-agent-mcp/-/social-agent-mcp-0.4.0.tgz","fileCount":14,"integrity":"sha512-jcVHFlFYc1lsFW7oUpnQCbM74VplKkN3rvC750DXnJONtZgJY5DxHyf6/oOzEie6ZxRBFiCkLJSTtUP1ANKxSw==","signatures":[{"sig":"MEQCIB/ePtS2jUdTyNOS8vnft+I0RVqqVHCPXnx0062lW21YAiBbNxBWdSC/Usz5p28h9wtDJW3Njmeii0o6u4QmX+6eQQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20431},"type":"module","gitHead":"98b822adeb8701d7224d3274c19742beef28dfcf","scripts":{"test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"blaze283","email":"naik.tanmay283@gmail.com"},"_npmVersion":"11.7.0","description":"Stdio MCP wrapper that surfaces social-agent-plugin tools to MCP clients via the plugin's agent-auth dispatch route. Workaround while paperclipai/paperclip#4192 is open.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"zod":"^3.24.2","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.5","typescript":"^5.7.3","@types/node":"^24.6.0"},"_npmOperationalInternal":{"tmp":"tmp/social-agent-mcp_0.4.0_1778482653114_0.9096169186717309","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@blaze283/social-agent-mcp","version":"0.4.2","_id":"@blaze283/social-agent-mcp@0.4.2","maintainers":[{"name":"blaze283","email":"naik.tanmay283@gmail.com"}],"bin":{"paperclip-social-mcp":"dist/stdio.js"},"dist":{"shasum":"47995c150cbc65ce6070bd12e0e73c2b37a4763b","tarball":"https://registry.npmjs.org/@blaze283/social-agent-mcp/-/social-agent-mcp-0.4.2.tgz","fileCount":14,"integrity":"sha512-4lg+iL/KfQoBm/EDtSKjzkCFTPnmOCkmayWODTr+q9eR6jf7sRWD99oYQ84bdnBXS6rKyJg+cpawMkJIacyJ6A==","signatures":[{"sig":"MEUCIGsTISAQwqCjNM+MDr/1Re9baBrdUnifxe7zhkfUdVgMAiEA4B7jQDtuQChaSlytRsq/b9TdR5RjqVsVG6Db0sbR4qU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20595},"type":"module","gitHead":"7883a915544589e067c4d0c62d0161a891acfd5e","scripts":{"test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"blaze283","email":"naik.tanmay283@gmail.com"},"_npmVersion":"11.7.0","description":"Stdio MCP wrapper that surfaces social-agent-plugin tools to MCP clients via the plugin's agent-auth dispatch route. Workaround while paperclipai/paperclip#4192 is open.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"zod":"^3.24.2","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.5","typescript":"^5.7.3","@types/node":"^24.6.0"},"_npmOperationalInternal":{"tmp":"tmp/social-agent-mcp_0.4.2_1778515214462_0.9038941229035871","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@blaze283/social-agent-mcp","version":"0.5.0","description":"Stdio MCP wrapper that surfaces social-agent-plugin tools to MCP clients via the plugin's agent-auth dispatch route. Workaround while paperclipai/paperclip#4192 is open.","type":"module","bin":{"paperclip-social-mcp":"dist/stdio.js"},"publishConfig":{"access":"public"},"scripts":{"build":"tsc","clean":"rm -rf dist","typecheck":"tsc --noEmit","test":"vitest run"},"dependencies":{"@modelcontextprotocol/sdk":"^1.29.0","zod":"^3.24.2"},"devDependencies":{"@types/node":"^24.6.0","typescript":"^5.7.3","vitest":"^3.0.5"},"gitHead":"e97bf2fe889e1a8a592ba0ff8e619cdc825cc6a4","_id":"@blaze283/social-agent-mcp@0.5.0","_nodeVersion":"22.16.0","_npmVersion":"11.7.0","dist":{"integrity":"sha512-9I6ESB38yk3xerGN1u8Gu5AfzCiR+ZY/aasjXCx4uR+Juuw/HTHlj1UWxkG9R3OG/1bxPTTCvg4TSNU9m/gv9g==","shasum":"82966ba01cdaaca960b49f1815861ca457f581a5","tarball":"https://registry.npmjs.org/@blaze283/social-agent-mcp/-/social-agent-mcp-0.5.0.tgz","fileCount":14,"unpackedSize":21642,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDvaHFzMG9RjCOD/2/cafC/aeNrDcUD5KrB5EIJ2zIaoQIhAOzOj6jTufVqwa9csr/kW0O+3G23Elec4fS5q8cNyEO9"}]},"_npmUser":{"name":"blaze283","email":"naik.tanmay283@gmail.com"},"directories":{},"maintainers":[{"name":"blaze283","email":"naik.tanmay283@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/social-agent-mcp_0.5.0_1778764459365_0.4763747808426124"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-05T10:08:19.488Z","modified":"2026-05-14T13:14:19.651Z","0.3.0":"2026-05-05T10:08:19.707Z","0.3.1":"2026-05-05T10:29:15.588Z","0.3.2":"2026-05-05T14:31:40.571Z","0.4.0":"2026-05-11T06:57:33.280Z","0.4.2":"2026-05-11T16:00:14.606Z","0.5.0":"2026-05-14T13:14:19.528Z"},"description":"Stdio MCP wrapper that surfaces social-agent-plugin tools to MCP clients via the plugin's agent-auth dispatch route. Workaround while paperclipai/paperclip#4192 is open.","maintainers":[{"name":"blaze283","email":"naik.tanmay283@gmail.com"}],"readme":"# @blaze283/social-agent-mcp\n\nStdio MCP wrapper that surfaces tools from `@blaze283/social-agent-plugin` to MCP clients (Claude Code, etc.) by forwarding each call to the plugin's agent-auth dispatch route.\n\n## Status: workaround\n\nThis package exists because Paperclip does not currently surface plugin-contributed tools to agents as MCP tools. Tracked upstream:\n\n- **[paperclipai/paperclip#4192 — \\[platform\\] Plugin tools should auto-register as MCP tools](https://github.com/paperclipai/paperclip/issues/4192)**\n\nRelated platform bugs that shape the design (board-only auth on the platform's plugin-tool dispatcher):\n\n- [#1198](https://github.com/paperclipai/paperclip/issues/1198) — fix: plugin tool routes block agent access\n- [#3271](https://github.com/paperclipai/paperclip/issues/3271) — Agent JWTs cannot access plugin tool endpoints\n- [#3273](https://github.com/paperclipai/paperclip/issues/3273) — Plugin tool execute requires projectId\n\nWhen #4192 ships, this repo gets deleted. Don't build anything load-bearing on it.\n\n## Architecture\n\n```\nagent (e.g. Claude Code)\n  │   stdio\n  ▼\nsocial-agent-mcp                                  ← this package\n  │   HTTP, agent's own bearer token (PAPERCLIP_API_KEY)\n  ▼\nPOST /api/plugins/<pluginId>/api/tools/dispatch   ← plugin's agent-auth route\n  │   in-process RPC\n  ▼\nsocial-agent-plugin worker (>= 0.3.0)\n  │   HTTPS, OAuth token\n  ▼\napi.linkedin.com\n```\n\nThe MCP holds **no** LinkedIn credentials and makes **no** LinkedIn HTTP calls. It only speaks to Paperclip. The plugin remains the credential vault and the active LinkedIn caller.\n\nThe MCP authenticates as the **agent**. There is no second principal (no board API key, no user identity) — the agent calls plugin tools as itself.\n\n## Requirements\n\n- `@blaze283/social-agent-plugin` **v0.3.0 or newer** installed in the target Paperclip instance. Earlier versions either don't expose the agent-auth dispatch route or register under a different plugin id. `linkedin_comment` additionally requires plugin **v0.4.0 or newer**; `linkedin_repost` requires plugin **v0.6.0 or newer**.\n\n## Tools\n\n| MCP tool | Plugin tool name | Purpose |\n|---|---|---|\n| `social_list_channels` | `social-list-channels` | List supported social channels and whether each is enabled. |\n| `social_list_connections` | `social-list-connections` | List connected accounts on a channel. Use first to get a `connectionId`. |\n| `linkedin_post` | `linkedin-post` | Publish a post. Posts immediately. Confirm with the user first. |\n| `linkedin_react` | `linkedin-react` | React (LIKE by default) to a LinkedIn post URL or URN. |\n| `linkedin_comment` | `linkedin-comment` | Post a top-level text comment (≤ 1250 chars) on a LinkedIn post URL or URN, with optional inline `@mentions`. |\n| `linkedin_repost` | `linkedin-repost` | Reshare a LinkedIn post (URL or URN), optionally with quote `commentary` (≤ 3000 chars). |\n\nSchemas mirror `social-agent-plugin/src/manifest.ts`.\n\n## Configuration\n\nRead at startup from the inherited process env. Normally injected by Paperclip's adapter when launching an agent run.\n\n| Variable | Required | Default |\n|---|---|---|\n| `PAPERCLIP_API_KEY` | yes | — (agent bearer token) |\n| `PAPERCLIP_COMPANY_ID` | yes | — (UUID of the company that owns the connection) |\n| `PAPERCLIP_API_URL` | no | `http://localhost:3100` |\n\nIf a required var is missing, the MCP **fails at startup** — it logs `Failed to start social-agent MCP server: Missing <VAR>...` to stderr and exits with code 1. The MCP client will see the connection close, not a graceful per-tool error. This matches the model: outside a Paperclip-launched agent run, the MCP has nothing to do.\n\nFor desk-use under MCP inspector or any other non-agent context, supply the vars explicitly on the command line — see *Manual verification* below.\n\n## Install (local-path)\n\n```sh\ncd /path/to/your/directory/social-agent-mcp\npnpm install\npnpm build\n```\n\nRegister at user scope:\n\n```sh\nclaude mcp add --scope user paperclip-social \\\n  -- node /path/to/your/directory/social-agent-mcp/dist/stdio.js\n```\n\nNo `-e` flags. The MCP inherits `PAPERCLIP_API_KEY`, `PAPERCLIP_COMPANY_ID`, and `PAPERCLIP_API_URL` from the agent's process env.\n\n## Manual end-to-end verification\n\nRequires a running local Paperclip with `@blaze283/social-agent-plugin@0.3.0+` installed and at least one LinkedIn account connected.\n\n1. `pnpm install && pnpm build && pnpm test`\n2. **Inside an agent run** (the normal path). Trigger a Paperclip agent run on an issue in the company that owns the connection. Have the agent call:\n   - `social_list_connections { channel: \"linkedin\" }` → expect connections with `status: \"active\"`.\n   - `linkedin_react { connectionId, post: \"<linkedin URL>\", reactionType: \"LIKE\" }` → verify the reaction appears on LinkedIn, then delete it.\n3. **Desk-use under MCP inspector** (debugging only). Supply the env explicitly so startup doesn't fail:\n   ```sh\n   PAPERCLIP_API_URL=http://localhost:3100 \\\n   PAPERCLIP_API_KEY=<agent key> \\\n   PAPERCLIP_COMPANY_ID=<your company UUID> \\\n     npx @modelcontextprotocol/inspector node dist/stdio.js\n   ```\n   The agent key must belong to an agent in the same company as the connection — the plugin's `auth: \"agent\"` route resolves the company from the request body and requires it to match the calling agent's company.\n\nIf a tool call fails, the response identifies the source: `schema` (your call args), `paperclip` (HTTP / auth — see `cta` field for hint), or `tool-dispatch` (plugin's own error code, e.g. `CONNECTION_NOT_FOUND`, `CHANNEL_NOT_CONFIGURED`).\n\n## Development\n\n- `pnpm test` — vitest, all `fetch` mocked. No live Paperclip or LinkedIn.\n- `pnpm typecheck` — `tsc --noEmit`.\n- `pnpm build` — emits `dist/`.\n\n## Out of scope\n\n- Any change to Paperclip core.\n- A board-user / non-agent dispatch path. The plugin route is `auth: \"agent\"` by design — there's no parallel `auth: \"board\"` surface. Desk-use under MCP inspector still works, but only when authenticated as an agent (see *Manual verification*).\n","readmeFilename":"README.md"}