About letmepost
@letmepost/mcp connects AI agents to letmepost.dev's social publishing API through a single MCP server. Its tools are generated from the OpenAPI specification and support publishing, account operations, webhooks, and API keys.
Key features
- 01OpenAPI-generated tool set
- 02Publish or schedule posts
- 03Manage connected accounts
- 04Manage webhooks and API keys
- 05Automatic idempotency keys for writes
Use cases
- 01Publish or schedule posts across accounts
- 02Review publishing status and attempts
- 03Connect or disconnect social accounts
- 04Configure outbound webhooks
MCP support
The MCP server exposes letmepost.dev API endpoints as tools, with JSON schemas generated from the canonical OpenAPI specification. It supports writes with automatically injected idempotency keys.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
npx -y @letmepost/mcpLMP_API_KEYSecretYour letmepost.dev API key (lmp_live_... or lmp_test_...). Create one at https://dashboard.letmepost.dev/api-keys.LMP_API_BASEOverride for self-hosted deployments. Defaults to https://api.letmepost.dev.Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.
Tools
23Saved tool list · updated 2w ago
| Parameter | Type | Required | Description |
|---|---|---|---|
| text | string | No | Default text applied to any target that omits its own `text`. |
| media | array | No | Default media applied to any target that omits its own `media`. |
| targets | array | Yes | |
| profileId | string | No | Profile scope for this batch. Use to target a specific workspace when the API key or OAuth token is org-wide. Forbidden when the key is already scoped to a different profile (rule `profile.scope_mismatch`). Omit to fall back to the key's bound profile. |
| publishNow | boolean | No | Explicit immediate-publish mode. Mutually exclusive with `scheduledAt` (`mode_conflict`). When neither is set the request publishes immediately. |
| scheduledAt | string | No | ISO-8601 timestamp at least 1 second in the future. When set, every target row is queued and the response is 202. Scheduled posts currently accept text only — media and firstComment require an immediate publish. |
| firstComment | object | No | Auto-posted reply to the published post. Bluesky-only today; ignored on platforms that don't support it. |
| firstComment.text | string | Yes |
Details
From the project README@letmepost/mcp
MCP server for letmepost.dev. Lets AI agents drive the full publishing API — posts, media, accounts, webhooks, API keys — through one MCP connection. The tool surface is generated from the canonical OpenAPI spec at startup, so every documented endpoint is reachable without a bespoke wrapper.
Install
npx @letmepost/mcp
Or wire it into Claude Code:
claude mcp add letmepost npx @letmepost/mcp --env LMP_API_KEY=lmp_live_...
Cursor / Cline / any MCP client:
{
"mcpServers": {
"letmepost": {
"command": "npx",
"args": ["@letmepost/mcp"],
"env": { "LMP_API_KEY": "lmp_live_..." }
}
}
}
Configuration
| Variable | Required | Default | Description |
|---|---|---|---|
LMP_API_KEY | yes | — | Bearer token from https://dashboard.letmepost.dev |
LMP_API_BASE | no | https://api.letmepost.dev | Override for self-hosted deployments |
Tools
Tool names follow {method}_{path} with {param} segments rewritten as by_{param}. The current surface, generated from the OpenAPI spec:
post_v1_posts— Publish or schedule a multi-target post. One call fans out to up to 25 connected accounts.get_v1_posts— List posts with cursor pagination, filterable by platform, status, error code, and time window.get_v1_posts_by_id— Fetch a single post with all its publish attempts.get_v1_media— List uploaded media. (Upload itself is multipart-only and exposed via the REST API; the MCP surface stays JSON-only.)get_v1_accounts,get_v1_accounts_by_id,delete_v1_accounts_by_id— Read and disconnect platform accounts.post_v1_accounts_connect_by_platform,post_v1_accounts_connect_by_platform_complete— Drive the connect handshake.get_v1_accounts_by_id_pinterest_boards,post_v1_accounts_by_id_pinterest_boards,patch_v1_accounts_by_id_pinterest_default_board— Pinterest board lifecycle.post_v1_api_keys,get_v1_api_keys,delete_v1_api_keys_by_id— Mint / list / revoke API keys.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— Outbound webhook management.
Each tool's inputSchema is a flat JSON schema with path / query / body fields merged into one object — the agent doesn't need to know which slot a field lives in. Idempotency keys are auto-injected on writes.
Self-host
Self-host bypasses every platform approval gate. Bring your own credentials, every platform works the day you clone the repo. See docs.letmepost.dev/self-host/quick-start.
License
Apache 2.0.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.