Skip to main content
Glama

qpost-mcp

MCP server for QPost — lets AI agents schedule and publish video/image posts to YouTube, TikTok, and Instagram through QPost's REST API.

Install

Generate an API key from your QPost dashboard (Settings → API Keys), then pick one of the two options below.

QPost runs the same server at https://qpost.dev/mcp over Streamable HTTP:

claude mcp add --transport http qpost https://qpost.dev/mcp \
  --header "x-api-key: YOUR_API_KEY"

Any MCP client that speaks Streamable HTTP can point at that URL with an x-api-key (or Authorization: Bearer) header. The endpoint is stateless, so there is no session to manage.

Local (stdio) via npx

Use this if you self-host QPost or would rather run the server yourself:

claude mcp add qpost -e QPOST_API_KEY=your_key_here -- npx -y qpost-mcp

Claude Desktop / other MCP clients

{
  "mcpServers": {
    "qpost": {
      "command": "npx",
      "args": ["-y", "qpost-mcp"],
      "env": {
        "QPOST_API_KEY": "your_key_here"
      }
    }
  }
}

Set QPOST_BASE_URL too if you're self-hosting QPost (defaults to https://qpost.dev).

Related MCP server: Outpost

Tools

Tool

Description

list_connected_accounts

List connected YouTube/TikTok/Instagram accounts and their status

create_post

Create and publish (or schedule) a post, with video or image media from a URL or local path

list_posts

List posts, optionally filtered by status/platform

get_post

Get a single post by ID

update_post

Update a post's caption/schedule/timezone/status

delete_post

Delete a post

retry_post

Retry a failed post

Media handling differs by transport

The local stdio server can read files from your machine, so create_post accepts mediaPath as well as mediaUrl. The hosted endpoint obviously cannot reach your disk — it takes mediaUrl/imageUrls, or mediaBase64 with an optional mediaFilename to set the MIME type.

Full request/response shapes and per-platform metadata options (YouTube category/privacy, TikTok privacy level, Instagram media type, etc.) are documented at qpost.dev/docs — this server is a thin wrapper over that same REST API.

Local development

npm install
npm run dev   # runs src/index.ts directly via tsx
npm run build # compiles to dist/

License

MIT

Available Tools

7 tools
create_postAInspect

Create and publish (or schedule) a post to one or more connected social platforms (YouTube, TikTok, Instagram). Provide media as either a remote URL (mediaUrl fetched by the server) or a local file path (mediaPath read from disk) — exactly one media source per call. Omit scheduledFor to publish immediately.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoOptional title (used by YouTube)
captionYesMain text/caption content of the post
mediaUrlNoPublicly fetchable URL of the video, or of a single image
timezoneNoIANA timezone, default "UTC"
imageUrlsNoMultiple image URLs (mediaKind=image, carousel posts)
mediaKindYesWhether the attached media is a single video or one or more images
mediaPathNoLocal filesystem path to the video, or to a single image
platformsYesTarget platforms and their per-platform metadata
imagePathsNoMultiple local image file paths (mediaKind=image, carousel posts)
scheduledForNoISO datetime; if omitted the post publishes immediately

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses key behaviors: media is fetched from remote URLs or read from disk, exactly one media source per call, and omitting scheduledFor publishes immediately. This goes beyond schema information, though it does not cover error handling, authentication, or side effects like partial failures.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact (two sentences) and front-loaded with the tool's primary action. It avoids redundancy with the schema and earns every word by explaining media constraints and scheduling behavior.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the main creation flow and scheduling, but with no output schema, it omits what the caller should expect in return (e.g., post IDs, confirmation of scheduling). It also doesn't mention timezone or carousel options, though those are in the schema. The lack of return/error information leaves a gap for a tool with 10 parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds meaningful clarification: mediaUrl is server-fetched while mediaPath is read from disk, exactly one media source is required, and scheduledFor omitted means immediate publish. This enriches the parameter meaning beyond the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb ('Create and publish') and resource ('post') along with target platforms (YouTube, TikTok, Instagram). It distinguishes this tool from siblings like update_post and delete_post by focusing on creation and immediate/scheduled publishing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool (creating new posts) and even explains scheduling vs. immediate publishing. It does not explicitly name alternatives or exclusions, but the intended use is unambiguous given the tool name and sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_postAInspect

Permanently delete a post you own.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral burden. It discloses two key traits: deletion is permanent and ownership is required. However, it does not mention potential consequences like cascading effects or error responses, which are relevant for a destructive tool. The core behaviors are covered, though not exhaustively.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence with no wasted words. 'Permanently' and 'you own' are essential qualifiers that add value, and the structure is front-loaded with the action verb. It is a model of brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity—one parameter, no output schema, no annotations—the description provides the essential action but leaves out important context such as the meaning of the 'id' parameter and success/failure behavior. It is minimally viable but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema defines only an 'id' parameter with no description, and the description does not mention it. Since schema coverage is 0%, the description should clarify that 'id' refers to the post being deleted, but it remains implicit. This creates a gap in parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly specifies the tool's function: 'Permanently delete a post you own.' The verb 'delete' and resource 'post' make the action explicit, and the qualifier 'you own' distinguishes it from sibling tools like list_posts or update_post. This fully captures the tool's unique purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context—use when you own a post and want to permanently remove it—but does not explicitly mention alternatives or exclusions. There is no guidance such as 'use update_post to modify instead' or 'do not use for posts you don't own,' leaving the decision-making to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_postAInspect

Get a single post by ID, including its per-platform publish status.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It adds context about the response including publish status, but doesn't disclose permissions, error cases, or other operational behaviors. It's not contradictory, but it's minimal for a full burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The entire description is a single, front-loaded sentence with no filler. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter get tool with no output schema, the description covers the core purpose and key return detail (publish status). It's not exhaustive but sufficient for the simplicity of the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate. It clarifies that 'id' is the post identifier, but beyond restating the parameter name, it adds little detail about format or constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Get' and resource 'single post by ID', clearly distinguishing it from sibling tools like list_posts. It also adds useful scope by mentioning per-platform publish status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The usage is implied: use when you need a single post by ID. It doesn't explicitly contrast with list_posts or other tools, nor does it state when not to use it, so it's not fully explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_connected_accountsAInspect

List the social media accounts (YouTube, TikTok, Instagram) currently connected to this QPost account, including connection status. Call this before creating a post to know which platforms are actually available.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description is the sole source of behavioral information. It discloses that the output includes 'connection status,' adding useful context beyond the verb 'List.' While it does not explicitly state that this is a read-only operation, the nature of 'List' makes that clear, and no side effects are implied.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is exactly two sentences: the first states the tool's purpose and scope, the second provides usage context. Every clause earns its place with no wasted words, and the key information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with no parameters and no output schema, the description fully covers the needed context: what is listed (specific platforms), the scope (QPost account), and a key attribute of the output (connection status). The sibling tools are all about posts, so there is no ambiguity about when this tool is relevant.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the baseline is 4 per the rubric. The description correctly does not spend space on parameters, as there is nothing to explain.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'List' with a clear resource ('the social media accounts... currently connected to this QPost account') and mentions the key detail of including connection status. It is clearly distinct from the sibling tools, which all operate on posts rather than account connections.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit guidance: 'Call this before creating a post to know which platforms are actually available.' This tells the agent exactly when to use the tool and why, which is sufficient for a tool with no relevant siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_postsAInspect

List posts on this QPost account, optionally filtered by status or platform.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNo
platformNo

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. The verb 'List' implies a read-only operation, but the description does not explicitly state non-mutating behavior, pagination, return format, or other caveats. It adds little beyond the basic purpose.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence with no unnecessary words. It is front-loaded and directly states the core action and filtering options.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity (2 optional parameters, no output schema), the description covers the essential usage. It mentions the account scope and filter dimensions. Minor gaps like pagination or return format are not critical for a simple list tool, but without annotations there is room for more detail.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description compensates by saying 'optionally filtered by status or platform,' indicating the parameters are filters. However, it does not explain enum semantics or default behavior; the schema provides the allowed values. This adds some meaning but is not extensive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb+resource construction: 'List posts on this QPost account, optionally filtered by status or platform.' It clearly distinguishes from siblings like list_connected_accounts (which lists accounts) and get_post (which retrieves a single post).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use when you need to list posts, with optional filters. It does not explicitly mention alternatives or when not to use this tool, relying on the name and resource reference to differentiate it from siblings like update_post or get_post.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

retry_postAInspect

Retry publishing a post that previously failed.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden for side effects. It only says 'retry' without disclosing what that entails (e.g., whether it creates a new publishing attempt, updates status, or is idempotent). This leaves the agent uncertain about consequences.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The one-sentence description is concise and front-loaded, with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Although the tool is simple with one parameter and no output schema, the lack of behavioral details and the vague parameter meaning mean the description is not fully complete for an agent to safely invoke it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has a single 'id' parameter with no documentation. The description implies 'id' refers to the post that previously failed, adding some meaning, but it does not clarify if this is the post ID or an attempt ID, nor does it provide examples.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action (retry) applied to a specific resource (publishing a post) with a precondition (previously failed). This distinguishes it from sibling tools like create_post or update_post.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'previously failed' gives a clear condition for when to use the tool. However, it does not explicitly name alternatives or state when not to use it, so it lacks exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_postAInspect

Update a post's caption, schedule, timezone, or status. Only works on posts you own.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
statusNo
captionNo
timezoneNo
scheduledForNo

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description is the sole source of behavioral disclosure. It mentions the ownership constraint but fails to explain consequences of failing ownership checks, side effects of status changes, or whether updates are reversible. This is minimal transparency for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that efficiently lists the updatable fields and includes an ownership caveat. Every word contributes meaning with no fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with five parameters, no annotations, and no output schema, the description is far too sparse. It omits critical details like validation rules, state transition behaviors (e.g., posting side effects), error handling for unauthorized use, and expected outcomes, leaving the agent underinformed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must add meaning. It maps 'caption, schedule, timezone, or status' to parameters but does not clarify formats, optionality beyond the schema's enum, or the relationship between 'schedule' and 'scheduledFor'. It adds some value but is incomplete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool updates a post's caption, schedule, timezone, or status, which is a specific verb+resource combination. It distinguishes itself from sibling tools like create_post and delete_post by focusing on modifying an existing post's fields.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides clear context by noting the tool only works on posts the user owns, implying a prerequisite for use. However, it does not explicitly list alternatives or exclusion scenarios, leaving some inference to the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 7 tool updatesv0.2.0
    • First observedcreate_post
    • First observeddelete_post
    • First observedget_post
    • First observedlist_connected_accounts
    • First observedlist_posts
    • First observedretry_post
    • First observedupdate_post

TDQS

A4.2/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: account listing, post CRUD, and retry. No two tools could be confused, as create/list/get/update/delete/retry operate on different actions and list_connected_accounts is separate.

Naming Consistency5/5

All tool names follow the same snake_case verb_noun pattern (list_, create_, get_, update_, delete_, retry_). This is highly predictable and consistent.

Tool Count5/5

Seven tools is well-scoped for a social media posting server. Each tool earns its place, covering the essential operations without unnecessary bloat.

Completeness5/5

The set covers the full lifecycle of posts: create, list, get, update, delete, plus retry for failures and account listing for platform awareness. No obvious gaps for the stated purpose.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Upload-Post is the all-in-one social media MCP server the Model Context Protocol server for social media publishing, scheduling and analytics. Connect any MCP-compatible AI agent (Claude, Cursor, ChatGPT, Claude Desktop, n8n, and more) and publish, schedule and analyze content across 13+ social networks from one API: TikTok, Instagram, YouTube, YouTube Shorts, Instagram Reels, LinkedIn, Facebook
    51
    58
    5
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Social media API and MCP server for AI agents that enables publishing to X, Instagram, LinkedIn, Reddit, Bluesky, and Threads from a single endpoint.
    28
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    MCP server to manage social media accounts from AI assistants, enabling post creation, scheduling, publishing, and media uploads across multiple platforms.
    13
    193
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server that enables AI agents to schedule and publish posts to 13+ social platforms via PostBolt's API with zero code.
    54
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/arslan2012/qpost-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server