Browse docs

Agent guidance · public package

Operating brief

A human authorizes a remote OAuth connection without showing a key, or configures a local MCP connection with a workspace key. The agent reads status, hands authorization back to the human, discovers accounts, and reads the brief before planning.

Required configuration

Use boundary

This page begins after a human authorizes a supported Postdom MCP connection. Remote OAuth does not require a visible key. For the local stdio guides below, an owner, admin or member creates a workspace key in Connect → Agents → Advanced: Use a workspace key and keeps the generated configuration private. Social authorization and accepted media delivery remain separate.

14 released tools

The pinned helper exposes 14 tools. Current source adds list_posts; it is not a prerequisite for the released workflow. Inspect the connected inventory and schemas rather than assuming hosted parity.

destination IDs

The agent reads valid account IDs from list_accounts after human authorization.

credential boundary

Credentials remain inside the configured connection or environment and never enter chat.

media delivery

The environment supplies an accepted video URL through its separately provisioned media path.

Four current clients

Client placement

Select the agent client and place the same operating brief in its project-level instruction surface. ChatGPT project instructions do not create a live MCP connection.

First workspacePublic MCP package · 14 released tools
  1. 01
    Create one workspace key

    An owner, admin or member opens Connect → Agents → Advanced: Use a workspace key. Keep the configuration private.

  2. 02
    Connect Codex

    Node.js 22+ runs npx -y @postdom/mcp@0.4.0.

  3. 03
    Complete social OAuth

    Your agent hands you the platform link. You enter the credentials.

  4. 04
    Let the brief lead

    Your agent reads the Workspace Brief before it plans or writes.

Set up Codex

Connect it once.

Operating instructionsAGENTS.md
  1. Paste the MCP configuration generated in Postdom Agents → Advanced: Use a workspace key into Codex.
  2. Add the operating brief to the project AGENTS.md file.
  3. Ask Codex to check workspace status and read the Workspace Brief before planning.

Postdom generates the package, API URL, and workspace key together. Keep that configuration out of chat and source control.

Codex instruction-file documentation
POSTDOM OPERATING RULESReady to copy

Keep Codex on the rails.

Paste these rules into AGENTS.md.

14 released toolsHuman OAuthExact wire states

Brand guidance stays in the Workspace Brief. These rules govern tool use and human handoffs.

Preview operating brief
Use Postdom only after a human has created the workspace and authorized a supported Postdom MCP connection. Remote OAuth authorizes the workspace without showing a key; a local stdio connection instead requires a workspace agent key from Agents → Advanced: Use a workspace key. Read credentials only through that configured connection or environment. Never print them, paste them into chat, or commit them.

1. Discover the connected server's tools and inspect their schemas. The released helper's baseline is get_workspace_status, get_brief, get_digest, get_learning, list_accounts, connect_account, upload_media, get_media, publish_video, submit_plan, get_plan, get_publish, get_performance, get_best_posts. Current source also defines list_posts and create_slideshow; they are absent from the released helper and are not prerequisites for the bounded workflow below. Do not infer hosted parity from either inventory. If a tool needed for the requested action is missing, stop that action and ask the human for a supported connection or manual handoff. For Codex, Claude Code, or Cursor, the exact local configuration shown in Connect → Agents → Advanced: Use a workspace key uses the public package @postdom/mcp@0.4.0 and requires Node.js 22 or newer. ChatGPT project instructions do not connect this local server; live ChatGPT tools require a supported remote MCP connection. Never invent a credential or server URL.
2. Inspect the tool schemas before calling them. The configured publish_video schema accepts an optional publish_at UTC datetime. Never invent platform settings or any other argument the connected schema does not expose.
3. Call get_workspace_status first. If connections are locked, stop and return its exact connection-gate detail to the human. If connections are unlocked but no destinations are connected, call connect_account for the requested platform and give its authorization URL to the human. Never enter or handle the human's social credentials.
4. After the human completes authorization, call list_accounts and use only its returned account IDs. Do not guess, reuse an ID from another workspace, or claim connection succeeded before it appears.
5. Call get_brief before planning or writing content. Follow its advisory brand guidance and retain the returned version. Pass brief_version to submit_plan whenever plan-level review is used.
6. Read get_learning before planning to see what has already been observed on the account. Treat advice as exploratory.
7. Before submit_plan, call get_digest and read the prior plan's outcome through get_plan when one exists. Treat both as descriptive evidence of what happened, never as a recommendation. Read workspace and account policy before creating approval work. If plan-level review is required, use submit_plan for the bounded account set, time window, objective, maximum post count, and intent. Poll get_plan with exponential backoff, starting at 30 seconds and capping at 2 minutes. Stop after 10 minutes and give the human the plan ID if it is still pending.
8. When the finished video is not already at an accepted URL, call upload_media with its exact content type, byte length, target platforms, and measured dimensions and duration. The released helper requires all six fields; if target platforms are unknown, stop and ask the human. Optional-platform behavior in newer source is not the released contract. PUT the bytes directly to the returned short-lived URL using the returned method and headers. Never send bytes through MCP, change the object key, reuse an expired URL, or expose the signed URL. Call get_media until it returns stored; stop and preserve pending or failed exactly.
9. Use publish_video only with fields accepted by its connected schema. For the released video workflow, provide exactly one of video_url or the stored media_handle. Current source also exposes surface, title and description; do not send these unless the connected schema supports them. Its schema advertises exactly one top-level source: video_url, media_handle or media, with each media item naming exactly one media_url or media_handle. The corrected source adapter forwards ordered media in synthetic contract tests; this is not proof of a published npm release, hosted deployment or provider publication. The pinned @postdom/mcp@0.4.0 release is unchanged. Do not attempt an MCP carousel merely because discovery lists media; require verification that the connected implementation includes the adapter fix and supports the intended destinations, otherwise hand that workflow to a human. Include the approved plan ID when the work is plan-backed and, when exact-time scheduling is intended, an RFC 3339 UTC publish_at value ending in Z. Never guess a timezone. Obtain the human's review of the actual media, audience, disclosures and destination settings before submitting. Fixed consent or disclosure flags do not establish human preview or express consent; stop if the adapter defaults do not fit the intended post.
10. For any submitted plan, keep polling requires_approval and proceed only after approved. For changes_requested, rejected, expired, or cancelled, stop and return the exact state and plan ID to the human.
11. Poll get_publish with exponential backoff, starting at 15 seconds and capping at 2 minutes. Continue polling scheduled or publishing. Stop after 15 minutes and give the human the post ID if any destination is still nonterminal.
12. If get_publish returns draft, requires_approval, changes_requested, rejected, missed_approval, missed_schedule, partial, or failed, return the exact state and post ID to the human. Never rename a wire state to action_required, approve yourself, or expand trust.
13. Read get_performance after published or partial. After failed, read measurement eligibility and any available evidence. Preserve null values and availability states. Never and unverified nulls retain an explicit reason; other nulls may not.
14. Use get_best_posts only with an exact account ID, supported metric, and 7d or 30d window. Preserve excluded observations and their availability reasons; never rank missing evidence as zero.
15. Use the returned execution and measurement evidence when planning the next schedule.

If the workspace is missing, a human can create one at https://app.postdom.com/signup. The human creates and may revoke workspace agent keys in Agents → Advanced: Use a workspace key.

Schedule to measurement

Brief behavior

  1. STARTget_workspace_status

    Read the connection gate and current setup progress before doing anything else.

  2. HANDOFFconnect_account

    Give the authorization URL to the human; never handle their social credentials.

  3. DISCOVERlist_accounts

    Use only destination IDs returned for this workspace.

  4. BOUNDget_brief

    Read advisory guidance before planning or writing content.

  5. LEARNget_digest

    Before a new plan, read the completed week and the prior plan outcome as descriptive evidence only.

  6. RETURNstates

    Preserve exact wire states and return exceptions to the human supervisor.

  7. MEASUREevidence

    Preserve zero, null, availability states, and guaranteed reasons exactly.

  8. COMPAREget_best_posts

    Rank only available account metrics and preserve every excluded post reason.

The operating brief is agent guidance, not a callable schema. The connected schemas remain authoritative.

Editorial recommendations

Polling guidance

These intervals are recommendations from the reviewed operating brief. They are not enforced by the configured tool contract.

plan state

Start at 30 seconds, cap at two minutes, and stop after ten minutes.

publish state

Start at 15 seconds, cap at two minutes, and stop after fifteen minutes.

handoff

Return the plan or post ID when the recommended polling window ends.

global pause

If agent_paused is returned, stop write activity and hand control to a human. Only a human can resume it.

Human handoff

Missing access

Stop and return

Stop when a tool, account ID, accepted media URL, credential, or human decision is missing. Do not invent a setup path.

Documentation reviewed · 21 September 2026Released helper and current source distinguished; no authenticated publishing test

Client instruction surfaces may change. Follow the linked primary client documentation when placement differs.