Generate platform-native social posts that are humanized, AI-detection scored and illustrated.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
SpeedContent API key, created free at https://app.speedcontent.online/APIKeys
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Look up a social post generation job by id. Returns the finished posts once the job completes, or its current progress while it runs. Costs nothing.
The job id returned by generate_social_post.
Look up a social post generation job by id. Returns the finished posts once the job completes, or its current progress while it runs. Costs nothing.
| Argument | Type | Description |
|---|---|---|
| job_id* | string | The job id returned by generate_social_post. |
{
"type": "object",
"required": [
"job_id"
],
"properties": {
"job_id": {
"type": "string",
"description": "The job id returned by generate_social_post."
}
},
"additionalProperties": false
}Write a social media post from scratch for a given platform and topic. Use this when you do not already have a draft — for example to produce several variations at once, or for platforms whose conventions you are unsure of. If you have already written the post yourself, prefer score_text and humanize_text, which check and fix your own wording instead of replacing it. Returns a job id immediately — poll it with check_social_job, which usually completes in 20-90 seconds. Costs credits.
| Argument | Type | Description |
|---|---|---|
| tone | string | Defaults to friendly. |
| emoji | boolean | Add emoji to the post. Omit for automatic: off on LinkedIn and YouTube, on elsewhere. Set false for a clean post on any platform. |
| topic* | string | What the post should be about. |
| humanize | boolean | Rewrite the post to read as human-authored. Omit for automatic: the draft is scored first and humanized only if it reads as machine-written. Skipping it keeps the exact wording and saves credits, since a well-written post often already passes. |
| language | string | Output language by name. Defaults to English. |
| platform* | string | Target platform. Each has its own style guide and default length. |
| preserve | array | Exact lines that must appear verbatim in the finished post — a closing question, a call to action, a tagline. The humanizer rewrites sentences, so anything whose exact wording matters belongs here rather than only in the topic. |
| quantity | integer | How many distinct variations to generate. Defaults to 1. |
| detect_ai | boolean | Score the post against AI detection and retry if it reads as machine-written. Adds 8 credits per post. Omit for automatic: runs only at 150+ words, because short posts score unreliably. |
| brand_name |
Rewrite text so it no longer reads as machine-written, using an external humanizing service. Use this on your own writing when score_text says it would be flagged. Brand names, domains and any lines listed in `preserve` are restored verbatim afterwards, because the humanizer rewrites whole sentences and splits names. Costs 1 credit per 20 words.
| Argument | Type | Description |
|---|---|---|
| text* | string | The text to rewrite. At least 10 characters. |
| preserve | array | Exact lines that must survive verbatim — a tagline, a call to action, a closing question. |
| brand_terms | array | Names that must not be altered, e.g. a product name the humanizer would otherwise split into two words. |
| score_after | boolean | Score the rewritten text and return it. Adds 8 credits. Defaults to false. |
{
"type": "object",
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"minLength": 10,
"description": "The text to rewrite. At least 10 characters."
},
"preserve": {
"type": "array",
"items": {
"type": "string"
},
"description": "Exact lines that must survive verbatim — a tagline, a call to action, a closing question."
},
"brand_terms": {
"type": "array",
"items": {
"type": "string"
},
"description": "Names that must not be altered, e.g. a product name the humanizer would otherwise split into two words."
},
"score_after": {
"type": "boolean",
"description": "Score the rewritten text and return it. Adds 8 credits. Defaults to false."
}
},
"additionalProperties": false
}List the platforms generate_social_post supports, with each one's default post length and emoji policy. Costs nothing and makes no network call.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Check how machine-written a piece of text reads, using an external AI detector. Returns a score from 0 to 65 where 0 reads as human and anything above 30 is likely to be flagged. Use this on text you have already written to find out whether it will pass before it is published — it is a measurement you cannot make yourself. Costs 8 credits per call.
| Argument | Type | Description |
|---|---|---|
| text* | string | The text to score. At least 10 characters. |
{
"type": "object",
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"minLength": 10,
"description": "The text to score. At least 10 characters."
}
},
"additionalProperties": false
}| string |
| Brand to mention where it reads naturally. |
| brand_tone | string | Voice guidance, e.g. 'Direct, no jargon'. |
| word_count | integer | Target length per post. Omit to use the platform default (LinkedIn 100, YouTube 150, Facebook/Pinterest 75, Instagram/TikTok 50, X 40). |
| brand_audience | string | Who the post should speak to. |
| brand_keywords | string | Comma-separated terms to work in. |
| generate_image | boolean | Generate a matching image for the post. Defaults to false over MCP; pass true to request one. Adds 10 credits per post. |
| brand_description | string | What the business does. |
{
"type": "object",
"required": [
"topic",
"platform"
],
"properties": {
"tone": {
"enum": [
"casual",
"educational",
"friendly",
"humorous",
"inspirational",
"professional"
],
"type": "string",
"description": "Defaults to friendly."
},
"emoji": {
"type": "boolean",
"description": "Add emoji to the post. Omit for automatic: off on LinkedIn and YouTube, on elsewhere. Set false for a clean post on any platform."
},
"topic": {
"type": "string",
"minLength": 3,
"description": "What the post should be about."
},
"humanize": {
"type": "boolean",
"description": "Rewrite the post to read as human-authored. Omit for automatic: the draft is scored first and humanized only if it reads as machine-written. Skipping it keeps the exact wording and saves credits, since a well-written post often already passes."
},
"language": {
"type": "string",
"description": "Output language by name. Defaults to English."
},
"platform": {
"enum": [
"facebook",
"instagram",
"linkedin",
"pinterest",
"tiktok",
"twitter",
"youtube"
],
"type": "string",
"description": "Target platform. Each has its own style guide and default length."
},
"preserve": {
"type": "array",
"items": {
"type": "string"
},
"description": "Exact lines that must appear verbatim in the finished post — a closing question, a call to action, a tagline. The humanizer rewrites sentences, so anything whose exact wording matters belongs here rather than only in the topic."
},
"quantity": {
"type": "integer",
"maximum": 10,
"minimum": 1,
"description": "How many distinct variations to generate. Defaults to 1."
},
"detect_ai": {
"type": "boolean",
"description": "Score the post against AI detection and retry if it reads as machine-written. Adds 8 credits per post. Omit for automatic: runs only at 150+ words, because short posts score unreliably."
},
"brand_name": {
"type": "string",
"description": "Brand to mention where it reads naturally."
},
"brand_tone": {
"type": "string",
"description": "Voice guidance, e.g. 'Direct, no jargon'."
},
"word_count": {
"type": "integer",
"maximum": 500,
"minimum": 10,
"description": "Target length per post. Omit to use the platform default (LinkedIn 100, YouTube 150, Facebook/Pinterest 75, Instagram/TikTok 50, X 40)."
},
"brand_audience": {
"type": "string",
"description": "Who the post should speak to."
},
"brand_keywords": {
"type": "string",
"description": "Comma-separated terms to work in."
},
"generate_image": {
"type": "boolean",
"description": "Generate a matching image for the post. Defaults to false over MCP; pass true to request one. Adds 10 credits per post."
},
"brand_description": {
"type": "string",
"description": "What the business does."
}
},
"additionalProperties": false
}