@link.me/mcp 0.2.56 → 0.3.1

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.
Files changed (2) hide show
  1. package/README.md +85 -29
  2. package/package.json +6 -6
package/README.md CHANGED
@@ -83,7 +83,9 @@ linkme config show --json | jq -r '.token'
83
83
 
84
84
  ## Available Tools
85
85
 
86
- The MCP server exposes 100+ tools covering the full Linkme platform. All tools return structured JSON. Destructive operations (delete, cancel, reset) auto-confirm without prompting.
86
+ The MCP server exposes 170+ tools covering the full Linkme platform. All tools return structured JSON (both a text block and, on success, matching `structuredContent`).
87
+
88
+ Every tool is annotated with [MCP tool annotations](https://modelcontextprotocol.io/docs/concepts/tools#tool-annotations) (`readOnlyHint`, `destructiveHint`, `idempotentHint`) so hosts can surface expected behavior before a call. Tools backed by a destructive CLI command (delete, cancel, reset, etc.) are marked `destructiveHint: true` and their description is suffixed with `(Destructive: executes immediately without a confirmation prompt.)` — the underlying `--force` flag is auto-injected and these tools run immediately with no confirmation step, so check annotations/descriptions before calling them.
87
89
 
88
90
  ### Profile & Identity
89
91
 
@@ -107,33 +109,40 @@ The MCP server exposes 100+ tools covering the full Linkme platform. All tools r
107
109
 
108
110
  | Tool | Description |
109
111
  |------|-------------|
110
- | `links_list` | List profile links |
111
- | `links_add` | Add a link |
112
- | `links_edit` | Edit a link |
113
- | `links_delete` | Delete a link |
114
- | `featured_list` | List featured links |
115
- | `featured_add` | Add a featured link |
116
- | `featured_edit` | Edit a featured link |
117
- | `featured_delete` | Delete a featured link |
118
- | `social_list` | List social links |
119
- | `social_set` | Set a social link |
112
+ | `links_list` | List custom and platform links |
113
+ | `links_add` | Add a custom link |
114
+ | `links_edit` | Edit a custom link |
115
+ | `links_delete` | Delete a custom link |
116
+ | `links_set` | Set a platform/social link |
117
+ | `links_unset` | Remove a platform/social link |
118
+ | `links_platform_list\|set\|delete` | Platform links (shared link system) |
119
+ | `links_schedule_list\|create\|edit\|delete\|publish-now\|cancel` | Scheduled links |
120
+ | `featured_list\|add\|edit\|delete\|reorder` | Featured links |
121
+ | `featured_headers_*`, `featured_multilinks_*` | Featured headers and multilinks |
120
122
 
121
123
  ### AP (Post on All Platforms)
122
124
 
123
125
  | Tool | Description |
124
126
  |------|-------------|
125
127
  | `ap_accounts` | List connected accounts |
126
- | `ap_connect` | Connect a provider |
127
128
  | `ap_disconnect` | Disconnect a provider |
129
+ | `ap_upload` | Upload a video for posting |
130
+ | `ap_limits` | Show plan limits and remaining quota |
128
131
  | `ap_post_list` | List posts |
132
+ | `ap_post_calendar` | Posts in a date range |
129
133
  | `ap_post_create` | Create a post |
130
134
  | `ap_post_status` | Check post status |
131
135
  | `ap_post_publish` | Publish a draft |
132
- | `ap_post_cancel` | Cancel a post |
136
+ | `ap_post_cancel` | Cancel a post (whole post or specific targets) |
133
137
  | `ap_post_retry` | Retry a failed post |
134
- | `ap_analytics` | Post analytics |
138
+ | `ap_post_reschedule` | Update caption/schedule of a scheduled post |
139
+ | `ap_post_insights` | Per-target live insights |
140
+ | `ap_post_comments` | Per-target comments |
141
+ | `ap_analytics_post` | Post analytics |
135
142
  | `ap_analytics_accounts` | Account-wide analytics |
136
143
 
144
+ Connecting a provider (`linkme ap connect`) is an interactive OAuth flow and is CLI-only.
145
+
137
146
  ### Analytics
138
147
 
139
148
  | Tool | Description |
@@ -152,52 +161,99 @@ The MCP server exposes 100+ tools covering the full Linkme platform. All tools r
152
161
  | `email_test` | Send a test email |
153
162
  | `email_history` | Campaign history |
154
163
  | `email_detail` | Campaign details |
164
+ | `email_recipients` | List campaign recipients |
155
165
  | `email_cancel` | Cancel a campaign |
156
- | `email_domains` | Sending domains |
157
166
  | `email_upload-image` | Upload an image |
158
- | `email_templates_list` | List templates |
159
- | `email_templates_create` | Create a template |
160
- | `email_templates_delete` | Delete a template |
167
+ | `email_domains_list` | List sending domains (verified and pending) |
168
+ | `email_domains_add` | Add a sending domain |
169
+ | `email_domains_verify` | Check DNS verification status |
170
+ | `email_templates_list\|get\|create\|update\|delete` | Email templates |
161
171
 
162
172
  ### Commerce & Shop
163
173
 
164
174
  | Tool | Description |
165
175
  |------|-------------|
166
176
  | `commerce_products_list` | List digital products |
167
- | `commerce_products_create` | Create a product |
168
- | `commerce_products_delete` | Delete a product |
169
- | `shop_products_list\|add\|edit\|delete` | Shop products |
177
+ | `commerce_products_create` | Create a digital product |
178
+ | `commerce_products_edit` | Edit a digital product |
179
+ | `commerce_products_reorder` | Reorder digital products |
180
+ | `commerce_products_orders` | List digital product sales |
181
+ | `commerce_products_delete` | Delete a digital product |
182
+ | `commerce_merch_list\|categories` | Merch catalog |
183
+ | `shop_products_list\|add\|edit\|delete` | Physical shop products |
170
184
  | `shop_categories_list\|add\|edit\|reorder\|delete` | Shop categories |
171
185
 
172
186
  ### Other Tools
173
187
 
174
188
  | Tool | Description |
175
189
  |------|-------------|
190
+ | `search` | Search Linkme users |
191
+ | `username_check` | Check username availability |
192
+ | `waitlist_status\|join` | Feature waitlists (e.g. AP) |
176
193
  | `contacts_list` | List contacts |
177
194
  | `contacts_stats` | Contact analytics |
178
- | `gallery_list\|delete` | Gallery media |
179
- | `auth_login\|logout\|sessions\|switch` | Authentication |
195
+ | `gallery_upload\|list\|delete` | Gallery media |
196
+ | `profile_video_show\|set\|remove` | Profile video |
197
+ | `profile_forms_*`, `profile_events_*` | Forms and events |
198
+ | `auth_login\|logout\|resume` | Authentication |
199
+ | `auth_sessions_list\|revoke` | Session management |
180
200
  | `config_show\|set\|reset` | Configuration |
181
- | `automations_*` | Instagram automations (20+ tools) |
182
- | `courses_*` | Course management |
201
+ | `automations_*` | Instagram automations (16 tools) |
202
+ | `courses_*` | Course management (incl. `courses_videos_upload`) |
183
203
  | `feeds_*` | Feed subscriptions |
184
204
  | `reviews_*` | Review subscriptions |
185
205
  | `agency_*` | Agency management |
206
+ | `skill_list\|show` | Bundled agent skill docs |
207
+
208
+ ## Hosted / Remote Server (Streamable HTTP)
209
+
210
+ Besides the stdio binary, the server can run as a remote MCP endpoint over [Streamable HTTP](https://modelcontextprotocol.io/specification/basic/transports#streamable-http) — the transport required for the claude.ai connectors directory and the ChatGPT Apps ecosystem:
211
+
212
+ ```bash
213
+ PORT=8788 linkme-mcp-http # or: bun run start:mcp-http
214
+ ```
215
+
216
+ - `POST /mcp` — the MCP endpoint (stateless; one request per call, safe for serverless).
217
+ - Auth is per-request: `Authorization: Bearer <linkme-token>`. Requests without a token get a `401` with a `WWW-Authenticate` header pointing at the RFC 9728 metadata.
218
+ - `GET /.well-known/oauth-protected-resource/mcp` — protected-resource metadata.
219
+ - `GET /healthz` — health probe.
220
+
221
+ ### Sign in with Linkme (claude.ai / Claude Desktop / ChatGPT)
222
+
223
+ The hosted server supports OAuth 2.1, so no token setup is needed: add `https://mcp.link.me/mcp` as a custom connector in claude.ai, Claude Desktop, or ChatGPT and sign in with your Linkme account when prompted. No CLI or npm install required.
224
+
225
+ Self-hosting operators: see `docs/mcp-oauth.md` in the source repository for configuration.
226
+ - The process is multi-tenant safe: the bearer token is scoped to the request, local CLI profiles are never read, and only `LINKME_API_URL` / `LINKME_AUTH_URL` / `LINKME_AP_URL` are forwarded from the host environment.
227
+
228
+ The handler is built on the SDK's web-standard transport (`Request`/`Response`), so `createMcpHttpHandler()` from `mcp/http-server.ts` also runs unchanged on Cloudflare Workers, Deno, or any fetch-based runtime.
229
+
230
+ ### Cloudflare Workers deploy
231
+
232
+ A ready-to-deploy Worker lives in `workers/` (`mcp-worker.ts` + `wrangler.jsonc`):
233
+
234
+ ```bash
235
+ bun run dev:mcp-worker # local workerd via wrangler dev
236
+ bun run deploy:mcp-worker # wrangler deploy (requires wrangler login)
237
+ ```
238
+
239
+ - Requires the `nodejs_compat` compatibility flag (already configured) — commands write config to workerd's in-memory virtual `/tmp`, never to real disk.
240
+ - `workers/stubs/` aliases two transitive deps that misbehave on workerd: `when-exit` (browser build references `window`) and `atomically` (temp-file rename fails on the virtual fs; a plain write is equivalent there).
241
+ - Set `LINKME_OAUTH_ISSUERS` (and optionally `LINKME_API_URL` / `LINKME_AUTH_URL` / `LINKME_AP_URL`) as Worker vars.
242
+ - Known limitation: `skill_list` / `skill_show` return an in-band tool error on Workers — skill markdown files are not bundled into the Worker.
186
243
 
187
244
  ## Environment Variables
188
245
 
189
246
  | Variable | Description |
190
247
  |----------|-------------|
191
248
  | `LINKME_TOKEN` | Auth token (required) |
192
- | `LINKME_API_URL` | Override API base URL |
193
- | `LINKME_AUTH_URL` | Override auth service URL |
194
- | `LINKME_AP_URL` | Override AP service URL |
249
+ | `LINKME_API_URL` | Override core API gateway (fallback for user/analytics/commerce/email) |
250
+ | `LINKME_<SERVICE>_URL` | Per-service overrides see `linkme config endpoints` for the full list |
195
251
 
196
252
  ## How It Works
197
253
 
198
254
  The MCP server uses stdio transport and exposes each CLI command as an MCP tool. Tool inputs are derived from the same Zod schemas used by the CLI. All tools run in JSON mode with color disabled, returning structured responses suitable for LLM consumption.
199
255
 
200
- Interactive commands (shell completion, video upload) are excluded from the MCP tool set.
256
+ Commands that genuinely require a terminal are excluded from the MCP tool set: shell completion, browser OAuth flows (`ap connect`, `automations authorize`), profile switching (`auth switch`), and interactive reordering (`links reorder`). Upload commands (`ap_upload`, `gallery_upload`, `courses_videos_upload`, `email_upload-image`, `profile_video_set`) are fully flag-driven and ARE available as tools.
201
257
 
202
258
  ## CLI
203
259
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@link.me/mcp",
3
- "version": "0.2.56",
3
+ "version": "0.3.1",
4
4
  "description": "Linkme platform MCP server for Claude, Cursor, and other AI agents",
5
5
  "license": "UNLICENSED",
6
6
  "bin": {
@@ -16,10 +16,10 @@
16
16
  "ai"
17
17
  ],
18
18
  "optionalDependencies": {
19
- "@link.me/mcp-darwin-arm64": "0.2.56",
20
- "@link.me/mcp-darwin-x64": "0.2.56",
21
- "@link.me/mcp-linux-x64": "0.2.56",
22
- "@link.me/mcp-linux-arm64": "0.2.56",
23
- "@link.me/mcp-windows-x64": "0.2.56"
19
+ "@link.me/mcp-darwin-arm64": "0.3.1",
20
+ "@link.me/mcp-darwin-x64": "0.3.1",
21
+ "@link.me/mcp-linux-x64": "0.3.1",
22
+ "@link.me/mcp-linux-arm64": "0.3.1",
23
+ "@link.me/mcp-windows-x64": "0.3.1"
24
24
  }
25
25
  }