Skip to content

MCP tool reference

All 20 tools, grouped as the server registers them. Arguments use the same names and types as the REST API — an MCP tool is a thin wrapper over the corresponding endpoint.

Every tool returns the endpoint’s JSON response. Failures come back as tool errors carrying the API’s code and message (see Errors) rather than ending the turn, so the assistant can correct itself and retry.


Plan, subscription state and feature limits. No arguments.

Wraps GET /api/v1/me. Call it first when a request might hit a plan limit.

Brand name, industry, audience, tone sliders, vocabulary, forbidden words, colors and hashtag strategy. No arguments.

Wraps GET /api/v1/brand-profile. Read this before drafting copy.

Wraps PATCH /api/v1/brand-profile. Send only what changes.

ArgumentTypeNotes
brand_namestring1–160 chars.
industrystring | nullUp to 80 chars.
target_audiencestring | nullUp to 500 chars.
company_descriptionstring | nullUp to 2000 chars.
website_urlstring | nullMust be a URL.
tone_formalityinteger0 = casual, 10 = formal.
tone_humorinteger0 = serious, 10 = playful.
tone_energyinteger0 = calm, 10 = high energy.
vocabularystring[]Words the brand favours. Max 100.
forbidden_wordsstring[]Words the brand must never use. Max 100.
primary_color / secondary_color / accent_colorstring | null
hashtag_strategystring | nullUp to 500 chars.

Connected platforms, usernames and active state. No arguments.

Wraps GET /api/v1/social-accounts. A post can only target a platform that appears here.

Uploaded assets with URLs, dimensions and tags.

ArgumentTypeNotes
limitinteger1–100. Default 25.
cursorstringFrom a previous next_cursor.

Wraps GET /api/v1/media-library. Use the returned url values in nativpost_create_content.

Approved templates from the shared library, with source platform, content type, engagement metrics and niches.

ArgumentTypeNotes
limitinteger1–100. Default 25.
cursorstringFrom a previous next_cursor.

Wraps GET /api/v1/templates.

Published totals and a per-platform breakdown for a trailing window.

ArgumentTypeNotes
daysinteger1–365. Default 30. Capped by the plan’s analytics history.

Wraps GET /api/v1/analytics/overview.

Registered webhook endpoints with their events and enabled state. No arguments.

Wraps GET /api/v1/webhooks.


ArgumentTypeNotes
statusstringe.g. draft, approved, scheduled, published.
content_typeenumSee below.
limitinteger1–100. Default 25.
cursorstringFrom a previous next_cursor.

Wraps GET /api/v1/content. Newest first.

ArgumentTypeNotes
idstringRequired. Content id (UUID).

Wraps GET /api/v1/content/{id}.

ArgumentTypeNotes
captionstringRequired. 1–4000 chars.
content_typeenumDefault single_image.
hashtagsstring[]Without the leading #. Max 50.
topicstringUp to 280 chars.
media_urlsstring[]Absolute URLs, in order. Max 20.
target_platformsstring[]Max 10. Must be connected.
platform_specificobjectPer-platform overrides, keyed by platform.
aspect_ratiostringe.g. 9:16, 1:1.
scheduled_forstringISO 8601. Pair with status: "scheduled".
statusenumdraft (default), pending_review, approved, scheduled.

Valid content_type values: text_only, single_image, slideshow, reel, talking_head, video_hook, video_hook_demo, carousel.

Wraps POST /api/v1/content.

Same fields as create, all optional, plus id (required). status additionally accepts rejected. Setting status to approved is what makes an item eligible to publish.

Wraps PATCH /api/v1/content/{id}.

ArgumentTypeNotes
idstringRequired.

Wraps DELETE /api/v1/content/{id}. Archives the item. Marked destructive — prefer status: "rejected" if it might be wanted back.

ArgumentTypeNotes
idstringRequired.
scheduled_forstringISO 8601. Omit to publish immediately.

Wraps POST /api/v1/content/{id}/publish. Marked open-world — this posts to live social accounts. The item must be approved, and must have media for content types that require it.


ArgumentTypeNotes
limitinteger1–100. Default 25.
cursorstringFrom a previous next_cursor.

Wraps GET /api/v1/campaigns.

ArgumentTypeNotes
idstringRequired. Campaign id (UUID).

Wraps GET /api/v1/campaigns/{id}.

ArgumentTypeNotes
namestringRequired. 1–160 chars.
descriptionstringUp to 1000 chars.
posts_per_dayinteger1–50. Default 3.
campaign_length_daysinteger1–365. Default 7.
start_datestringISO 8601. Defaults to tomorrow.
content_mixobjectContent type → percentage weight.

content_mix keys are camelCase: ugc, slideshow, talkingHead, videoHookDemo, greenScreen, videoHook, carousel. For example {"ugc": 25, "talkingHead": 25, "videoHookDemo": 50}.

Creating a campaign defines the plan only — no posts exist until it is launched.

Wraps POST /api/v1/campaigns.

Same fields as create, all optional, plus id (required) and status.

Wraps PATCH /api/v1/campaigns/{id}.

ArgumentTypeNotes
idstringRequired.

Wraps DELETE /api/v1/campaigns/{id}. Marked destructive. Posts already generated are not deleted with it.

ArgumentTypeNotes
idstringRequired.

Wraps POST /api/v1/campaigns/{id}/launch. Marked open-world — starts generation, which consumes plan quota and AI credits.

Generation is asynchronous. Poll nativpost_get_campaign and watch generated_posts.


  1. nativpost_get_brand_profile — so the copy sounds like the brand.
  2. nativpost_list_social_accounts — confirm the target platform is connected.
  3. nativpost_list_media — get real asset URLs.
  4. nativpost_create_content — write the draft.
  5. Show the user, then nativpost_update_content with status: "approved".
  6. nativpost_publish_content — with scheduled_for to queue, or bare to post now.