The letmepost.dev MCP server exposes the full publishing API as MCP tools. One tool per OpenAPI operation — posts, media, accounts, webhooks, API keys, Pinterest boards — autogenerated at startup so every documented endpoint is reachable. Works with Claude Code, Cursor, Cline, Claude Desktop, and anything else that speaks the Model Context Protocol.Documentation Index
Fetch the complete documentation index at: https://docs.letmepost.dev/llms.txt
Use this file to discover all available pages before exploring further.
Install
Two install paths. The hosted URL needs zero local setup. The npx path runs everything locally — useful for self-hosters and for keeping platform credentials off our servers.Hosted (zero install)
Point your MCP client athttps://api.letmepost.dev/mcp with your API key as a Bearer token. Works with any client that supports Streamable HTTP. A vanity mcp.letmepost.dev alias is coming.
Local (npx)
Getting an API key
Two paths. Either:- Via the CLI —
npm install -g @letmepost/cli && lmp login. Opens a browser for OAuth, then mints and stores an API key for you. Print the key withcat ~/.letmepost/config.json | jq .accessTokenand paste into your MCP client config. - Via the dashboard — dashboard.letmepost.dev/api-keys, click “Create API key”, copy the
lmp_live_...value.
Configuration
| Variable | Required | Default | Description |
|---|---|---|---|
LMP_API_KEY | yes (local) | Bearer token from the dashboard or CLI mint | |
LMP_API_BASE | no | https://api.letmepost.dev | Override when pointing at a self-hosted instance |
Tools (autogenerated)
The tool surface is generated from the canonical OpenAPI spec at startup. Tool names follow{method}_{path} with {param} segments rewritten as by_{param}. Today’s surface — 21 tools across every documented endpoint:
| Group | Tools |
|---|---|
| Posts | post_v1_posts, get_v1_posts, get_v1_posts_by_id |
| Media | get_v1_media |
| Accounts | get_v1_accounts, get_v1_accounts_by_id, delete_v1_accounts_by_id, post_v1_accounts_connect_by_platform, post_v1_accounts_connect_by_platform_complete |
| Pinterest boards | get_v1_accounts_by_id_pinterest_boards, post_v1_accounts_by_id_pinterest_boards, patch_v1_accounts_by_id_pinterest_default_board |
| API keys | post_v1_api_keys, get_v1_api_keys, delete_v1_api_keys_by_id |
| Webhooks | post_v1_webhook_endpoints, get_v1_webhook_endpoints, get_v1_webhook_endpoints_by_id, patch_v1_webhook_endpoints_by_id, delete_v1_webhook_endpoints_by_id, post_v1_webhook_endpoints_by_id_test |
inputSchema is a flat JSON schema with path / query / body fields merged into one object — the agent never has to think about which slot a field lives in. Idempotency keys are auto-injected on writes.
When endpoints are added to the API, they appear as tools on the next server restart. No code change.
Example: cross-post
Once installed, the agent composes a multi-target post in plain English:“Post ‘Shipping the MCP server today’ to X, Bluesky, and Threads.”Claude calls
post_v1_posts with:
Publish to a specific profile
When an org has multiple profiles, passprofileId to scope the publish:
profileId is forbidden when the API key is already scoped to a different profile — that surfaces as a clean validation_failed with rule: profile.scope_mismatch.
OAuth discovery
The hosted endpoint advertises full OAuth 2.1 metadata at the standard well-known URLs:https://api.letmepost.dev/.well-known/oauth-authorization-serverhttps://api.letmepost.dev/.well-known/oauth-protected-resourcehttps://api.letmepost.dev/.well-known/openid-configuration
lmp login uses this flow today; direct OAuth from MCP clients (Claude Desktop’s “OAuth connector” UI) is supported on the discovery surface and will be a one-line wiring once their UI ships. For now, paste your API key as the Bearer header.