Check a social post against a platform's real character limit: X, Bluesky, LinkedIn, Threads.
MCPpedia last refreshed this data
io.github.conorbronsdon/postlint-mcp is an MCP server that check a social post against a platform's real character limit: X, Bluesky, LinkedIn, Threads. Its tool list has not been published yet over stdio, sse and http, requires no API key, and scores 85/100 on MCPpedia's security, maintenance and efficiency rubric.
Config is the same across clients — only the file and path differ.
{
"mcpServers": {
"postlint": {
"args": [
"/absolute/path/to/postlint-mcp/dist/index.js"
],
"command": "node"
}
}
}Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
Check a social post against a platform's real character limit before it ships. X, Bluesky, LinkedIn, Threads, Mastodon, Discord. Pure compute — no API, no auth, no network.
Run this in your terminal to verify the server starts. Then let us know if it worked — your result helps other developers.
npx -y '@conorbronsdon/postlint-mcp' 2>&1 | head -1 && echo "✓ Server started successfully"
After testing, let us know if it worked:
Five weighted categories — click any category to see the underlying evidence.
No known CVEs.
Checked @conorbronsdon/postlint-mcp against OSV.dev.
Click any tool to inspect its schema.
Be the first to review
Have you used this server?
Share your experience — it helps other developers decide.
Sign in to write a review.
Others in other
Compress tool outputs, logs, files, and RAG chunks before they reach the LLM. 60-95% fewer tokens, same answers. Library, proxy, MCP server.
Transport for TMCP using STDIO
The graph based agentic IDE
Buddhist canon tools: search, passages, cross-canon parallels, dictionaries — all URN-cited.
MCP Security Weekly
Get CVE alerts and security updates for io.github.conorbronsdon/postlint-mcp and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
Check a social post against a platform's real character limit before it ships. X, Bluesky, LinkedIn, Threads, Mastodon, Discord. Pure compute — no API, no auth, no network.
Recorded from docs/demo.tape with vhs. The posts and counts come from scripts/fixtures.mjs, which the regression tests import too.
An MCP server that answers one question: does this post fit?
A language model cannot count characters by inspection, and on these platforms neither can you. The limits are not what they look like. X bills every URL at 23 characters through t.co whether the link is 12 characters or 200. Bluesky counts extended grapheme clusters, so a four-person family emoji is 1 and not 11. Mastodon charges nothing for the domain on a remote mention. Getting any of that wrong shows up as a rejected post, or a truncated one, at publish time.
Counting is what a tool call is for. The model cannot do it by inspection, and a deterministic function can do it exactly.
Why this exists. Two posts went out of a podcast promo workflow over the limit. A Bluesky post shipped at 302 against 300, with the line "Under 300 graphemes. Audit clean." sitting directly beneath it. An X post was drafted at 308 against 280 and would have been rejected on launch morning. Both were invisible to eyeballing, because in both cases the count was a claim and not a measurement. Both are regression tests in this repo.
| Tool | What it returns |
|---|---|
check_post | Verdict for one platform: counted length, the limit, headroom, and what drove the count |
check_post_all | One row per platform, with the breakdown attached only to the rows that fail |
platform_limits | Each platform's limit, its counting unit, why that unit is not a character count, and the source |
Responses are small on purpose. check_post_all omits the arithmetic on passing rows because agents pay tokens per response.
| Platform | Limit | Unit | The part that surprises people | Source |
|---|---|---|---|---|
x | 280 | weighted characters | Every URL costs exactly 23. CJK, Hangul, and emoji cost 2 each; Latin, Greek, Cyrillic, Hebrew, and Arabic cost 1. An emoji sequence is one unit of 2, not 2 per code point. | twitter-text v3 config |
x_premium | 25,000 | weighted characters | Same weighting, higher ceiling. | X help center |
bluesky | 300 | graphemes | Flags, ZWJ emoji, skin-tone modifiers, and combining accents each count as 1. UR |