PostBazooka

Remote OAuth MCP server for sourced social ideas, team feedback, scheduling, and publishing approved posts across eight networks.

Documentation

Use PostBazooka with an AI agent

Connect your agent to https://postbazooka.com/mcp with OAuth. PostBazooka MCP is a text/data and action interface; it does not embed a PostBazooka widget.

Use your agent to research, create, edit, analyze, react, comment, schedule, publish, and learn from feedback conversationally. Use the PostBazooka Feed to browse and preview content, and use Scheduled to visually manage upcoming and past publishing.

How an agent starts

The first PostBazooka call must always be get_workflow. That response contains the complete current workflow and an opaque value at structuredContent.workflowVersion. The agent copies that exact value into the required workflowVersion input of every later tool call. It must never guess the value or ask you for it.

If PostBazooka reports that the value is outdated, the rejected action did not run. The agent fetches get_workflow again and retries the unchanged action once. If a tool named by the workflow is absent, refresh or reconnect the PostBazooka connection so the agent receives the current 26-tool schema.

What completion means

PostBazooka is the system of record. Research, written drafts, and generated images made with an agent's native tools are intermediate results. A request to add or change PostBazooka content is complete only after the matching mutation persists the result:

  • Ideas through create_ideas;
  • Posts and every requested media attachment through create_posts;
  • revisions through edit_post;
  • schedules through set_post_publishing or set_connection_schedule;
  • immediate publishing through publish_post_now.

A mutation succeeds only when that exact direct tool result contains matching structuredContent.operation.name and .requestId, has .operationCommitted: true, and includes POSTBAZOOKA COMMIT CONFIRMED in the text. That proof is authoritative, so the agent reports it without a separate verification read or unnecessary retry. Null or missing output, a connector error, timeout, isError: true, generated media, submitted arguments, or a later read is not proof; the agent must say the requested change was not committed.

Media, feedback, and scheduling

Agents can pass existing library media, generated image data, generated public URLs, user-owned public URLs, or licensed public media directly when creating or editing a Post. Post media must be AI-generated, user-provided, or include verifiable source, license, and display-ready attribution evidence. Returned media uses mediaId as its public asset identifier and includes a usable HTTPS URL and provenance information.

Media inputs are deliberately flat for connector reliability. Creating with generated data uses a media object shaped like { source: "generated_data", dataUrl, generator }. Replacing Post media uses { action: "replace", source: "generated_data", dataUrl, generator }; removing it uses { action: "remove" }. Platform-text removals use explicit removePlatformText or clearPlatformText fields rather than null values.

Likes and dislikes are feedback. Automatic publishing uses the reaction score, but explicit scheduling does not create a like and is not silently cancelled by a dislike. Each destination can independently be automatic, scheduled, or held. publish_post_now is a separate explicit action that immediately creates immutable Publication snapshots.

Schedule calls also use flat inputs. A publishing decision contains destinationId, mode, and optional scheduledFor; schedule reads select either view: "upcoming" or view: "history" in one object.

My Agent is one workspace-wide instruction set. Human reactions, comments, and website edits become feedback for later agent review; agent and scheduling actions do not create feedback loops.

The agent follows continuation cursors when the requested data spans multiple pages. Workspace project results contain connection counts instead of an unbounded destination list; the agent selects one project and follows its independent connection cursor when destination details are needed. Free plan capacity and the pricing page are included when a limit affects a request. Paid plans have no ordinary product quotas and remain subject to fair use and social-provider limits.

For example, generating an image for an existing Post is only the intermediate step. The agent must then call edit_post with that generated media source and finish only when the direct edit result provides the matching structured commit proof and POSTBAZOOKA COMMIT CONFIRMED. Existing unlocked publishing decisions for destinations that remain on the Post are preserved. If the edit produces no direct result or an error, it did not commit; a generated image or later read cannot turn it into a success.