Skip to main content
Glama

Submit Post for Review

submit_post

Sends a draft to review. If the channel is set to auto-approve and there are no claim flags, Mark approves it. The result says which happened and, for website channels, names the next CMS step (queued at a time, or a CMS draft that does not go live); an auto-approved LinkedIn Article stays approved, since a person publishes it on LinkedIn. Refuses a post the channel would reject at publish (no media on Instagram, TikTok, Pinterest or YouTube; more than 10 Instagram carousel items; a PDF on a channel other than LinkedIn, with other media, or over 100 MB; no Pinterest board; over the length limit; missing required meta, including the language of a website post whose CMS collection stores pages per language) and a post that uses a phrase this workspace blocks (the error names each phrase and why) or still has a placeholder such as [needs source] or TODO (the error names each one), and lists what to fix. Content-check warnings never stop it; Mark stores every result for the new revision. After it returns, Mark also checks the revision against the confirmed brand voice and offer and stores a brand_fit result (warn or pass, never blocking) that get_post's revisionChecks shows once it lands. Does not publish immediately unless the post is already scheduled and auto-approved. If this refuses because the workspace is not set up, call get_setup_status and check its rows, including skipped ones. Related: save_post, get_post, approve_posts, get_connect_link.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "postId": "<postId>"
    },
    "name": "submit_post"
  }
}

Input Schema

NameRequiredDescriptionDefault
postIdYesThe draft to submit.

Output Schema

NameRequiredDescriptionDefault
revYes
appUrlYes
postIdYes
statusYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.1/5.0
Behavior5/5

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

Beyond the annotations (idempotent=false, openWorld=true) it discloses the auto-approve decision logic, the exact class of posts that will be refused with the reason surfaced in the error, that content-check and brand_fit results are non-blocking and stored asynchronously for get_post's revisionChecks, and that it does not publish immediately. That is substantial behavior an agent could not infer from structured fields.

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

Conciseness4/5

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

It is front-loaded with the core action and the outcome branches, and the long refusal enumeration is a single structured sentence. The block is nonetheless heavy for a one-parameter tool, and the brand_fit paragraph buries a secondary side effect inside a dense run of text.

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?

An output schema exists so return values need not be explained, yet the description still covers outcome reporting, the website-CMS next step, refusal causes with remediation, and the post-return brand_fit check. For a mutation tool with real validation rules, nothing an agent needs in order to call it correctly is missing.

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?

There is a single parameter with 100% schema description coverage, so the schema already documents postId as 'The draft to submit.' The description adds context about what properties of that draft drive refusal (channel, media, length, meta, language) but nothing about ID format or lookup, so the baseline 3 applies.

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

Purpose4/5

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

The opening sentence, 'Sends a draft to review,' gives a specific verb and resource, and the following sentences clarify that review can result in auto-approval rather than publication. Sibling differentiation is only partial: approve_posts, review_post and check_draft are listed as 'Related' but the description never states how this tool differs from them.

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 clearly states the trigger condition (submitting a draft) and gives an explicit fallback ('If this refuses because the workspace is not set up, call get_setup_status and check its rows, including skipped ones'). No exclusion says when to prefer review_post or approve_posts instead, so it stops short of full when/when-not guidance.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources