Skip to content

Available MCP Tools

The Nuelink MCP server exposes six tools. You rarely need to call them by name, your assistant picks the right one based on what you ask for, and most users never look at this page.

If you do end up here, it’s usually for one of three reasons: you want to know what’s technically possible, you’re debugging an unexpected behavior, or you’re evaluating before adoption. For all three, the structured details (required input, return shape, underlying endpoint) matter. So they’re kept below, skim past them if you don’t need them.

Each tool maps directly to a REST API endpoint. Behavior, response shapes, and error codes are identical.

Returns the profile of the Nuelink account whose API key is in use.

When the assistant calls this: confirming identity, troubleshooting “wrong account” issues, or as a quick health check at the start of a session.

Prompt patterns that trigger it:

  • “Which Nuelink account am I connected as?”
  • “Am I signed in?”
  • “What’s my plan?”

Returns: account email, name, plan tier, and account-level metadata.

Underlying endpoint: GET /me

Lists every brand the connected account has access to.

When the assistant calls this: any time you mention a brand by name, switch brands, or ask “what do I have?” the assistant needs the brand ID (and its timezone) to call anything else.

Prompt patterns that trigger it:

  • “List my brands.”
  • “What brands am I working with?”
  • “Post to Fernwood Botanicals…” (assistant calls this to resolve the name to an ID)

Returns: an array of brands, each with id, name, timezone, and metadata. The timezone is the one used to interpret scheduledAt timestamps on that brand.

Underlying endpoint: GET /brands

Lists collections inside a specific brand. Each collection has its own default channels and weekly queue.

When the assistant calls this: before creating a post, to find the right collection ID. Also when you’re exploring or comparing collections.

Prompt patterns that trigger it:

  • “Show me my collections in Fernwood Botanicals.”
  • “Which collections post to Instagram?”
  • “Add this to my Product Launches collection…” (to resolve the name)

Required input: brand ID (the assistant gets this from nuelink_list_brands first, usually invisibly).

Returns: an array of collections with id, name, default channels, and queue settings.

Underlying endpoint: GET /brands/{brandId}/collections

Lists the social accounts connected to a specific brand: Instagram handles, X profiles, TikTok accounts, etc.

When the assistant calls this: when you ask which platforms are connected, or want to audit a brand’s setup. Channels aren’t passed to nuelink_create_post directly (the collection determines that), so this is mainly for inspection.

Prompt patterns that trigger it:

  • “Which social accounts are connected to Fernwood?”
  • “Do I have TikTok connected on this brand?”
  • “List all my channels.”

Required input: brand ID.

Returns: an array of channels with id, platform, handle, and connection status.

Underlying endpoint: GET /brands/{brandId}/channels

Creates a post in a collection. The single tool that handles queuing, scheduling, drafting, and immediate publishing - the publishMode parameter decides which.

When the assistant calls this: the final step of any publishing prompt. Everything else exists to feed this tool the right IDs.

Prompt patterns that trigger it:

  • “Add this to the queue for Product Launches.”
  • “Schedule this for Friday at 9am.”
  • “Save this as a draft.”
  • “Post this right now.”

Required input:

  • Brand ID, collection ID
  • caption (1-3000 characters) required unless poll is set
  • publishMode: one of QUEUE, SCHEDULE, IMMEDIATE, DRAFT
  • scheduledAt (only if publishMode = SCHEDULE): timestamp in Y-m-d H:i:s format, interpreted in the brand’s timezone

Optional input:

  • media: array of media IDs from nuelink_upload_file (or direct URLs, see below)
  • title: used by YouTube, Pinterest, etc.
  • alt: alt text for accessibility
  • link: URL to attach to the post
  • postAsStory: publishes as a Story on Instagram and Facebook only. Channels on other platforms in the collection will publish as a regular feed post.
  • poll: poll object (question, options, period). Supported on LinkedIn, X, Telegram, Threads, Mastodon, Bluesky. Other channels in the collection ignore the poll or fall back to caption-only.
  • comment: an auto-comment posted after publishing, applied globally to every channel that supports comments. There is no per-platform comment customization in the alpha.
  • platforms: platform-specific non-content options like Instagram collab tags and locations, TikTok send-to-inbox, YouTube tags and playlists. The caption is global, you cannot customize caption text per platform.

Returns:

{
"status": "success",
"data": {
"id": 4364709,
"message": "Post created successfully"
}
}

The id is the Nuelink post ID. Per-channel publishing status (whether each platform actually pushed the post successfully) is not returned in the response, you can check post status in the Nuelink dashboard.

Important: you don’t pick which channels receive the post. That’s determined by the collection’s configuration. If you want the post to go to a different set of channels, post to a different collection.

Underlying endpoint: POST /brands/{brandId}/collections/{collectionId}/posts

Uploads an image or video to a brand’s media library. The returned media ID is passed to nuelink_create_post. These two tools are designed to work together, upload_file rarely runs on its own.

When the assistant calls this: any time your post includes media that isn’t already a public URL, whether you pasted an image into the chat, pointed at a local file, or asked the assistant to generate one.

Prompt patterns that trigger it:

  • “Upload /path/to/photo.jpg to my brand.”
  • (implicit) “Queue this image with the caption…”, assistant uploads first, then creates the post.

Required input: brand ID, the file itself.

Returns: a media object with id (use this in nuelink_create_post), url, and type.

Underlying endpoint: POST /brands/{brandId}/media

Tip: you can skip uploading entirely with public URLs. If your media is already hosted somewhere publicly accessible (a Google Drive, Dropbox, or OneDrive share link, Unsplash, your CDN, anywhere) you can pass the URL directly to nuelink_create_post instead of uploading. The assistant handles this automatically when you give it a link. See Media in Example Prompts for details.

ValueWhat it does
QUEUEAdds the post to the collection’s next available time slot. Recommended default.
SCHEDULEPublishes at the exact scheduledAt timestamp (in the brand’s timezone).
IMMEDIATEPublishes right now.
DRAFTSaves the post without publishing or scheduling. Review and approve in the dashboard.

Most AI assistants let you choose, per tool, whether to:

  • Allow always: no confirmation, useful for read-only tools like nuelink_list_brands.
  • Ask each time: confirm before every call, useful for nuelink_create_post if you want a checkpoint before anything actually goes live.
  • Deny: block the tool entirely.

A reasonable default setup:

ToolRecommended permission
nuelink_get_meAllow always
nuelink_list_brandsAllow always
nuelink_list_collectionsAllow always
nuelink_list_channelsAllow always
nuelink_create_postAsk each time (it publishes to the world, unless using DRAFT)
nuelink_upload_fileAsk each time (it writes to your media library)

You can adjust these any time in your assistant’s settings.

MCP tool calls return the same error codes as the underlying API. See Errors for the full list. Your assistant will usually summarize the error in plain English rather than showing the raw response. Common ones:

  • 401: Your API key is missing, invalid, or revoked. See Authentication.
  • 422: Validation error (for example, missing caption with no poll, past scheduledAt).
  • 404: Brand, collection, or referenced resource doesn’t exist or doesn’t belong to your account.
  • 429: Rate limited. The assistant should retry after a brief wait.