tokportal-mcp
Officialtokportal-mcp is an MCP server for the TokPortal API that enables managing TikTok/Instagram account infrastructure, bundles, videos, warming, analytics, comments, webhooks, and coverage/billing.
Manage workspace settings, credit balance, pricing, transactions, countries, and platforms.
Create, list, update, publish/unpublish bundles (single or bulk), add video/edit slots, configure account profiles, request corrections, finalize accounts, and manage video slots including configure, batch, patch, publish, reset, unschedule, finalize, corrections, fix downloads, and CSV import.
Manage delivered accounts: list/get accounts, bans/appeals, commenting profile, edit requests, verification codes, credential reveal, refresh analytics, and rewarm.
Handle TokPortal Coverage subscriptions: get status, reactivate, and cancel.
Perform Advanced Niche Warming: generate terms, configure bundle warming terms, list/get sessions, and order rewarm.
Upload media: create upload URLs or direct uploads for videos/images, and import images from URL.
Access analytics: dashboard, contract, series, account drilldowns, video analytics, comment pulse, raw snapshots, export CSV/HTML, and create reports.
Manage comment tasks: create (single/batch), list, get, cancel/refund, approve, dispute, and list verifications.
Manage webhooks: event catalog, endpoints (CRUD), deliveries, retry, and test.
Request ad codes for finalized videos (TikTok Spark/Instagram Partner).
Enables management of Instagram accounts through TokPortal's managed social infrastructure API, including creating bundles, uploading videos, configuring and publishing accounts, reading analytics, and managing webhooks.
Enables management of TikTok accounts through TokPortal's managed social infrastructure API, including creating bundles, uploading videos, configuring and publishing accounts, reading analytics, and managing webhooks.
Enables management of YouTube accounts through TokPortal's managed social infrastructure API, including creating bundles, uploading videos, configuring and publishing accounts, reading analytics, and managing webhooks.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@tokportal-mcp Upload a video to my TikTok account and publish it."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
tokportal-mcp
TokPortal is the managed social infrastructure API: real TikTok and Instagram brand accounts created, warmed and operated by human account managers in 16+ countries, exposed as a REST API and an MCP server. Run geo-sharding across markets without connecting every social account through OAuth. YouTube bundle creation is not available through this API.
Upgrade before using the sandbox: local tokportal-mcp requires 1.15.1 or newer for dry_run. Version 1.15.0 advertised the argument but did not send the sandbox header, so a preview could execute a real operation. Update your local server or use the remote connector.
Docs https://developers.tokportal.com · API base https://app.tokportal.com/api/ext · OpenAPI https://developers.tokportal.com/openapi.json · MCP remote https://app.tokportal.com/api/ext/mcp · Get an API key https://app.tokportal.com/developer/api-keys?utm_source=npm&utm_medium=readme&utm_campaign=tokportal-mcp · llms.txt https://developers.tokportal.com/llms.txt
tokportal-mcp is the official Model Context Protocol server for the TokPortal API. Its core tools remain available to Claude, Cursor, VS Code, Windsurf, Codex, Gemini CLI and other MCP clients. When AI is enabled for your workspace, seven additional curated tools cover model discovery, quoted generation, media management and the separate AI USD wallet. Model-specific schemas are fetched on demand, not exposed as hundreds of tools.
Two ways to use it:
Mode | Transport | When to use |
Local ( | stdio | Desktop clients, local agents, file uploads from disk |
Remote ( | Streamable HTTP | Hosted agents, no install; same tool catalogue |
Requires Node.js 20 or newer. The local server runs on it directly. Get an API key at https://app.tokportal.com/developer/api-keys?utm_source=npm&utm_medium=readme&utm_campaign=tokportal-mcp (format sk_ + 64 hex chars).
30-second quickstart
npm install -g tokportal-mcp@1.22.0
TOKPORTAL_API_KEY=sk_your_key_here tokportal-mcpThe server speaks MCP over stdio. Point any MCP client at it and ask, for example:
"Read the available countries, credit prices and my balance. Preview a TikTok account-only bundle in the USA with dry_run: true. Show me the immediate and recurring costs, and wait for my GO before any live purchase."
The preview calls tokportal_create_bundle with { "dry_run": true, "body": { "bundle_type": "account_only", "platform": "tiktok", "country": "USA" } }. It validates the request and returns credits_would_charge with credits_charged: 0, without creating work. Creation in live mode is charged immediately. Preview IDs are synthetic and must never be reused in live requests. After GO, create the real resources and use their live IDs. See the sandbox contract.
Programmatic smoke test with the MCP SDK:
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
const client = new Client({ name: "demo", version: "1.0.0" });
await client.connect(
new StdioClientTransport({
command: "npx",
args: ["-y", "tokportal-mcp"],
env: { ...process.env, TOKPORTAL_API_KEY: process.env.TOKPORTAL_API_KEY },
}),
);
const { tools } = await client.listTools(); // Core tools, plus 7 when AI is enabled
const me = await client.callTool({ name: "tokportal_get_current_user", arguments: {} });
console.log(tools.length, me.content[0].text);Related MCP server: Publora MCP Server
AI generation (staged availability)
AI discovery calls authenticated GET /ai/status. If unavailable, only the existing catalogue is shown; no provider fallback or automatic payment is attempted. Local AI support requires 1.16.0 or newer and server-side availability. Installing this package does not enable generation, grant spending permissions or activate billing. Version 1.15.1 retains the existing account-management tools without AI discovery. Remote availability is controlled server-side.
Generation requires body: { quote_id, max_cost_usd } and idempotency_key. Reuse the same key after an uncertain response. Quotes expire within 15 minutes; use the returned expiry. The AI dollar wallet is independent of account-management credits. AI tools do not accept the legacy dry_run contract; use the quote operation, which does not start paid provider work. Cancellation is best effort, not a refund guarantee. Creation does not publish: review the returned assets, then use existing TokPortal scheduling tools.
Client configuration
Replace sk_your_key_here with your key. Every snippet below is the local stdio server; the remote URL variant is listed at the end.
Cursor
~/.cursor/mcp.json (or .cursor/mcp.json in a project):
{
"mcpServers": {
"tokportal": {
"command": "npx",
"args": ["-y", "tokportal-mcp"],
"env": { "TOKPORTAL_API_KEY": "sk_your_key_here" }
}
}
}Claude Desktop
claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\):
{
"mcpServers": {
"tokportal": {
"command": "npx",
"args": ["-y", "tokportal-mcp"],
"env": { "TOKPORTAL_API_KEY": "sk_your_key_here" }
}
}
}Claude Code
claude mcp add tokportal -e TOKPORTAL_API_KEY=sk_your_key_here -- npx -y tokportal-mcp
# or the remote server:
claude mcp add --transport http tokportal https://app.tokportal.com/api/ext/mcp --header "X-API-Key: sk_your_key_here"VS Code (GitHub Copilot agent mode)
.vscode/mcp.json:
{
"servers": {
"tokportal": {
"type": "stdio",
"command": "npx",
"args": ["-y", "tokportal-mcp"],
"env": { "TOKPORTAL_API_KEY": "sk_your_key_here" }
}
}
}Windsurf
~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"tokportal": {
"command": "npx",
"args": ["-y", "tokportal-mcp"],
"env": { "TOKPORTAL_API_KEY": "sk_your_key_here" }
}
}
}OpenAI Codex CLI
~/.codex/config.toml:
[mcp_servers.tokportal]
command = "npx"
args = ["-y", "tokportal-mcp"]
env = { TOKPORTAL_API_KEY = "sk_your_key_here" }Gemini CLI
~/.gemini/settings.json:
{
"mcpServers": {
"tokportal": {
"command": "npx",
"args": ["-y", "tokportal-mcp"],
"env": { "TOKPORTAL_API_KEY": "sk_your_key_here" }
}
}
}Remote server (Streamable HTTP)
Any client that supports remote MCP servers can connect to
https://app.tokportal.com/api/ext/mcp with either an X-API-Key: sk_... header
or Authorization: Bearer sk_.... Example for clients using the url form:
{
"mcpServers": {
"tokportal": {
"url": "https://app.tokportal.com/api/ext/mcp",
"headers": { "X-API-Key": "sk_your_key_here" }
}
}
}Environment variables
Variable | Required | Description |
| yes | API key ( |
| no | Defaults to |
How the tools work
The server exposes TokPortal API actions as MCP tools over stdio. It is generated from the public API schema and uses the same X-API-Key authentication as the HTTP API.
Tool names are
tokportal_<operation_id_snake_case>(tokportal_create_bundle,tokportal_list_accounts, ...). Path and query parameters are top-level inputs; JSON bodies go inbody.Every tool carries
title,readOnlyHint,destructiveHint,idempotentHintandopenWorldHint. Read the annotations on each tool: paid operations and irreversible actions can be destructive even when they do not delete anything.Every non-GET tool accepts top-level
dry_run: true, sent asX-TokPortal-Dry-Run: true. It is never placed in the query or request body. Dry runs consume normal rate limits but do not consume anidempotency_key; use the same key for a later live request if its operation supports idempotency.Multipart upload tools are generated from OpenAPI too. Binary fields are exposed as local path inputs such as
file_path, with the remaining form fields exposed by their schema names.Mutations accept an optional
idempotency_key(sent asIdempotency-Key) except for secret-bearing operations (credential reveal, verification codes, webhook creation, signed upload URLs, report creation) which are never replayed.
The MCP server sends X-TokPortal-Client: tokportal-mcp/1.22.0 on API requests for observability and support diagnostics.
Failed tool calls return an error result with a diagnostics object containing request_id, retry_after_seconds, and rate_limit when those headers are available.
Legacy config using the globally installed binary still works:
{
"mcpServers": {
"tokportal": {
"command": "tokportal-mcp",
"env": {
"TOKPORTAL_API_KEY": "sk_your_key_here"
}
}
}
}Source of truth
This package is generated from the TokPortal public OpenAPI schema
(https://developers.tokportal.com/openapi.json) in the private TokPortal
monorepo. src/generated.ts is regenerated on every release — do not edit it by
hand. See CONTRIBUTING.md for what we accept as PRs and
SECURITY.md for vulnerability reporting.
Links
Documentation: https://developers.tokportal.com
MCP guide: https://developers.tokportal.com/mcp
SDKs & CLI: https://developers.tokportal.com/sdks-cli
API reference (OpenAPI): https://developers.tokportal.com/openapi.json
Other packages:
@tokportal/node·@tokportal/cli·tokportal(PyPI) ·github.com/tokportal/tokportal-go
MIT © TokPortal
Connected analytics (1.18.0)
Use tokportal_get_analytics_account_insights with { "id": "saved-account-uuid" } to read Instagram account-period reach/views/engagement and eligible TikTok post watch time/completion/traffic data. Requires Creator or above; existing tiers remain enforced. A disconnected or unverified account returns available: false with connected_analytics: null. This is read-only and never starts a refresh. Missing metrics are omitted, completion is a 0–1 fraction, traffic/audience splits are 0–100 percentages, and watch times are seconds. The same block appears on tokportal_get_analytics_account. Full contract.
Inbox actions and Business setup (1.19.0)
Read scoped received comments and Instagram messages with tokportal_get_account_inbox. Reply publicly with tokportal_create_account_comment_reply (0 credits, requires a signed reply capability, stable request key, current Coverage and account quota). Check delivery with tokportal_get_account_comment_reply; never blindly resend an unknown result.
tokportal_get_account_business_setup reads progression; tokportal_request_account_business_setup orders the manager task for 5 credits once per Instagram account, after explicit music-limit acknowledgment. TikTok DMs are unavailable. Public metadata webhooks notify connection, incoming activity, reply result and Business task changes. See the Connection & Inbox guide for contracts and limits.
Keyword comment moderation
tokportal_get_account_comment_moderation reads account rules and result history.
tokportal_update_account_comment_moderation saves explicit keyword/exception rules for Instagram and TikTok. Read the settings version first. Disabled by default; no DM or credit charge. Only new comments are processed after saving. TikTok unhide is currently unreliable, and disabling rules does not restore hidden comments. Use dry_run: true to validate without saving.
Instagram messaging and comment-to-DM
Use tokportal_send_account_inbox_message for replies in an existing Instagram
conversation within 24 hours of an incoming message. Use
tokportal_create_account_private_reply once per comment within seven days.
Creator and Business are eligible when connection permissions allow. Fetch
account-bound references through tokportal_get_account_inbox; arbitrary
recipient IDs are not accepted. These actions currently charge no credits.
tokportal_get_account_comment_dm and tokportal_update_account_comment_dm
manage one opt-in keyword rule per account, optionally scoped to an owned post.
Rules start disabled, process only new original comments and expose durable
history. Shared account cooldowns, Coverage, strict identity checks and durable
request-key dedupe apply. Unknown delivery must never trigger a blind resend.
Use tokportal_get_account_message_operation for status. A private reply alone
does not permit follow-up DMs. TikTok DMs are not offered.
Full guide: https://developers.tokportal.com/account-connection-inbox
Manual comment controls (1.22.0)
tokportal_create_account_comment_action supports delete, hide, Instagram unhide
and TikTok top-level pin/unpin only when returned in the comment's actions.
Pass the exact signed action reference and post reference. Confirm permanent
deletion with the user first. Costs 0 credits. The server checks permissions,
Coverage, current connection and provider capabilities before reserving a shared
account lease. Use a stable request_key; use
tokportal_get_account_comment_action after an uncertain result. Never blindly
repeat pending/unknown writes. dry_run: true verifies without modifying comments.
inbox.comment.action.updated contains result metadata only. TikTok unhide and
likes are not exposed in this release. Wait for Retry-After; quotas are not
safe activity targets and cannot guarantee that an account will not be restricted.
Available Tools
91 toolstokportal_add_edit_slotsBInspect
Add edit slots to a bundle.
Inputs: id (required), body (required), idempotency_key.
tokportal_add_video_slotsCInspect
Add video slots to a bundle.
Inputs: id (required), body (required), idempotency_key.
tokportal_approve_comment_taskAInspect
Approve a manually confirmed comment task. Approves and finalizes an owned manually_confirmed task. Execution is blocked while TokPortal Coverage is inactive; inspect MANAGED_ACCOUNT_TASK_BLOCKED and reactivate a recoverable account first.
Inputs: id (required), idempotency_key.
tokportal_batch_configure_bundle_videosAIdempotentInspect
Configure video slots in bulk. Configures several slots after one account-level Coverage preflight. When this bundle resolves to a delivered saved account, the account must have active TokPortal Coverage or be permanently grandfathered. A due active period can renew automatically at the account's stored rate immediately before execution. If Coverage cannot renew, no task or media mutation starts.
Inputs: id (required), body (required), idempotency_key.
tokportal_cancel_account_managed_subscriptionADestructiveInspect
Pause TokPortal Coverage. Immediately blocks new and ongoing TokPortal work for the account. Payments are not refunded. If a paid or included current period remains, reactivation is free until its original end. Otherwise it costs exactly the unpaid 30-day periods at the rate returned by the Coverage status endpoint.
Inputs: id (required), idempotency_key.
tokportal_can_refresh_account_analyticsBRead-onlyIdempotentInspect
Check analytics refresh availability.
Inputs: id (required).
tokportal_configure_bundle_accountAIdempotentInspect
Configure bundle account profile. Sets the account identity (username, visible name, biography, profile picture). For backward compatibility it can also accept the exact purchased advanced_warming_terms list, but PUT /bundles/{id}/warming-terms is the recommended one-shot deferred-target endpoint because it remains available at any account status. When this bundle resolves to a delivered saved account, the account must have active TokPortal Coverage or be permanently grandfathered. A due active period can renew automatically at the account's stored rate immediately before execution. If Coverage cannot renew, no task or media mutation starts. A new account that has not produced a saved account yet remains configurable before delivery.
Inputs: id (required), body (required), idempotency_key.
tokportal_configure_bundle_videoAIdempotentInspect
Configure a video slot. Configure a slot as a video, carousel, or story. A story (TikTok/Instagram only) is a single video OR a single image (provide exactly one of video_url or story_image_url), has no description, and is verified by an account-manager screenshot. The optional story_repost_url makes the story repost an existing post from the SAME platform and costs +1 credit. When this bundle resolves to a delivered saved account, the account must have active TokPortal Coverage or be permanently grandfathered. A due active period can renew automatically at the account's stored rate immediately before execution. If Coverage cannot renew, no task or media mutation starts.
Inputs: id (required), body (required), position (required), idempotency_key.
tokportal_configure_bundle_warming_termsAIdempotentInspect
Configure the niche targets of a count-only Advanced Niche Warming purchase. Sets the niche targets for a bundle created with advanced_warming_terms_count (deferred configuration). Must provide EXACTLY the purchased number of targets. One-shot: once configured the targets cannot be changed. Unlike PUT /bundles/{id}/account, this stays available at any account status after the manager accepted the mission or submitted the account, in which case the warming session starts immediately. When this bundle resolves to a delivered saved account, the account must have active TokPortal Coverage or be permanently grandfathered. A due active period can renew automatically at the account's stored rate immediately before execution. If Coverage cannot renew, no task or media mutation starts. A new account that has not produced a saved account yet remains configurable before delivery.
Inputs: id (required), body (required), idempotency_key.
tokportal_create_account_edit_requestAInspect
Request profile edits for a delivered account. Requests profile changes and debits 8 credits. Active TokPortal Coverage and a routable active account manager are required. TokPortal uses the account's current active manager, then its still-active manager relationship, then eligible non-cancelled order history. Completed bundles remain eligible without a delivery-age limit; cancelled orders are never restored. Assignment, debit, and task creation are atomic, so an unavailable manager never costs credits. The task appears directly in that manager's calendar.
Inputs: id (required), body (required), idempotency_key.
tokportal_create_analytics_reportAInspect
Create analytics web report. Creates a shareable Analytics v2 web report and returns its bearer-like access token and URL. Do not send Idempotency-Key. The successful response contains a secret and is never stored in the replay ledger. A request with the header is rejected with IDEMPOTENCY_KEY_NOT_ALLOWED_FOR_SENSITIVE_RESPONSE (400) before any ledger claim or operation execution.
Inputs: body (required).
tokportal_create_bundleAInspect
Create a bundle. Creates and pays an account-only, account-and-videos, or videos-only bundle in one atomic creation checkout. Credits are debited immediately on a successful POST, not when the bundle is published. Credit cost is calculated server-side from the workspace cohort and any contract_bundle_allowance returned by getCreditCosts. A qualifying allowance slot is consumed in the same transaction as the credit debit; failed requests consume nothing. The exact new-customer and saved-account cutoff is the immutable production PRE-migration instant returned by getCreditCosts. A real TikTok or Instagram saved account created on or after that cutoff receives its first 30 days of TokPortal Coverage included unless the creation response marks it contractually exempt. For Advanced Niche Warming, either pass advanced_warming_terms now, or buy a target count with advanced_warming_terms_count at the effective workspace rate and configure the targets later via PUT /bundles/{id}/warming-terms. Count-only purchases that are never configured are auto-cancelled and fully refunded after 14 days. external_ref is a client correlation and duplicate-detection aid, not a retry mechanism; only Idempotency-Key provides exact request replay.
Inputs: body (required), idempotency_key.
tokportal_create_bundles_bulkAInspect
Create bundles in bulk. Creates and pays several bundles in one atomic creation checkout. Credits are debited immediately on a successful POST, not at publication. The complete batch is checked against rolling workspace capacity and any contract_bundle_allowance returned by getCreditCosts. Qualifying allowance slots are consumed in deterministic bundle-ID order in the same transaction as all debits; if any bundle fails, the entire batch rolls back and consumes nothing. A batch crossing the final allowance slot receives the contract price only for the remaining qualifying bundles. For Advanced Niche Warming, either pass advanced_warming_terms, using the same terms for every account, or buy a per-account target count with advanced_warming_terms_count and configure each bundle's targets later via PUT /bundles/{id}/warming-terms. external_ref is one optional batch-level reference copied to the resulting bundles, not a unique per-bundle key or a retry mechanism; use returned bundle IDs for identity and Idempotency-Key for exact replay.
Inputs: body (required), idempotency_key.
tokportal_create_comment_tasksAInspect
Create comment tasks. Creates one comment task or a partial-success batch of up to 200. Each accepted task costs 1 credit. The saved account must be client-owned, manager-assigned, and allowed to execute tasks by TokPortal Coverage, unless it is permanently grandfathered. TokPortal locks and revalidates the account and Coverage before the accepted-task debit and all accepted inserts commit in one transaction. Rejected rows are never charged. Read credits_charged instead of calculating it from the request. Send an Idempotency-Key and reuse the same key, method, path, and body after an uncertain transport result so the completed response is replayed without a second charge.
Inputs: body (required), Idempotency-Key, idempotency_key.
tokportal_create_video_ad_code_requestAInspect
Request an ad code (TikTok Spark Code / Instagram Partner Code) for a finalized video. Requests an ad code (TikTok Spark Code or Instagram Partner Code) for one finalized video and debits 7 credits. The video must be finalized on TikTok or Instagram with a live post link. Active TokPortal Coverage and a routable active account manager are required. TokPortal uses the account's current active manager, then its still-active manager relationship, then eligible non-cancelled order history. Completed bundles remain eligible without a delivery-age limit; cancelled orders are never restored. Assignment, debit, and task creation are atomic. Only one open request per video is allowed. Poll the GET endpoint to retrieve the code once the manager submits it.
Inputs: id (required), body (required), idempotency_key.
tokportal_create_webhook_endpointAInspect
Create a webhook endpoint. Creates a webhook endpoint and returns its signing secret once. Store the secret to verify TokPortal webhook signatures. Do not send Idempotency-Key. The successful response contains a secret and is never stored in the replay ledger. A request with the header is rejected with IDEMPOTENCY_KEY_NOT_ALLOWED_FOR_SENSITIVE_RESPONSE (400) before any ledger claim or operation execution.
Inputs: body (required).
tokportal_delete_comment_taskADestructiveIdempotentInspect
Cancel a pending comment task. Cancels an owned task only while its status is pending. The terminal transition and refund of the task's exact stored credit cost commit atomically and are idempotent. Current tasks refund 1 credit; credits_refunded remains authoritative for historical tasks. Cancellation remains available when Coverage is paused because it stops pending work rather than executing it. Reuse the same Idempotency-Key after an uncertain transport result.
Inputs: id (required), Idempotency-Key, idempotency_key.
tokportal_delete_webhook_endpointBDestructiveIdempotentInspect
Delete a webhook endpoint.
Inputs: id (required), idempotency_key.
tokportal_dispute_comment_taskAInspect
Dispute a manually confirmed comment task. Returns an owned manually_confirmed task to pending corrections. Execution is blocked while TokPortal Coverage is inactive; inspect MANAGED_ACCOUNT_TASK_BLOCKED and reactivate a recoverable account first.
Inputs: id (required), body (required), idempotency_key.
tokportal_export_analytics_report_htmlBInspect
Export analytics report HTML. Creates a standalone downloadable HTML analytics report.
Inputs: body (required), idempotency_key.
tokportal_export_analytics_videosCRead-onlyIdempotentInspect
Export analytics videos CSV.
Inputs: q, to, from, account, +3 more.
tokportal_finalize_bundle_accountAInspect
Finalize account review. Approves an in-review account and marks it finalized.
Inputs: id (required), idempotency_key.
tokportal_finalize_bundle_videoAInspect
Finalize video review. When this bundle resolves to a delivered saved account, the account must have active TokPortal Coverage or be permanently grandfathered. A due active period can renew automatically at the account's stored rate immediately before execution. If Coverage cannot renew, no task or media mutation starts.
Inputs: id (required), position (required), idempotency_key.
tokportal_fix_bundle_video_downloadAInspect
Fix a broken video download. Replaces a manager-flagged broken video or carousel download URL and clears the download issue flag. When this bundle resolves to a delivered saved account, the account must have active TokPortal Coverage or be permanently grandfathered. A due active period can renew automatically at the account's stored rate immediately before execution. If Coverage cannot renew, no task or media mutation starts.
Inputs: id (required), body (required), position (required), idempotency_key.
tokportal_generate_warming_termsAInspect
Generate Advanced Niche Warming search terms. Generates platform-appropriate Advanced Niche Warming search terms (niche targets) from a free-text niche description (max 1000 characters). This is free and no credits are charged. Pass the result to advanced_warming_terms (bundle creation or PUT /bundles/{id}/warming-terms deferred configuration) or search_terms (rewarm).
Inputs: body (required), idempotency_key.
tokportal_get_accountCRead-onlyIdempotentInspect
Get a delivered account.
Inputs: id (required).
tokportal_get_account_analyticsCRead-onlyIdempotentInspect
Get account analytics compatibility view.
Inputs: id (required).
tokportal_get_account_edit_requestARead-onlyIdempotentInspect
Get active account edit request.
Inputs: id (required).
tokportal_get_account_managed_subscriptionARead-onlyIdempotentInspect
Get TokPortal Coverage status. Returns the effective TokPortal Coverage status, current 30-day period, account-specific rate, unpaid periods, task access, and an exact timestamped reactivation quote for one eligible saved account. At current_period_end, status and task_access change immediately even if recorded_status remains included or active for a few minutes until the renewal worker persists the transition; period_expired makes that boundary explicit. A zero-credit quote is valid. Use its current_period_end and lock_version snapshot for reactivation. An eligible TikTok or Instagram account created before the global Coverage cutoff is grandfathered and has no subscription record. A missing record can also mean the account is not Coverage-eligible or has not reached delivery, so clients must not infer grandfathering from a generic 404. Coverage is independent from bundle completion or closure.
Inputs: id (required).
tokportal_get_analytics_accountCRead-onlyIdempotentInspect
Get account analytics drilldown.
Inputs: id (required).
tokportal_get_analytics_contractARead-onlyIdempotentInspect
Get analytics data contract. Returns the Analytics v2 contract, current access payload, metric semantics, freshness targets, and redaction rules.
Inputs: no named parameters.
tokportal_get_analytics_dashboardCRead-onlyIdempotentInspect
Get analytics dashboard.
Inputs: to, from, account, country, +2 more.
tokportal_get_analytics_seriesCRead-onlyIdempotentInspect
Get analytics time series.
Inputs: to, from, mode, metric, +2 more.
tokportal_get_bundleDRead-onlyIdempotentInspect
Get a bundle.
Inputs: id (required).
tokportal_get_bundle_accountBRead-onlyIdempotentInspect
Get bundle account configuration.
Inputs: id (required).
tokportal_get_bundle_publish_readinessARead-onlyIdempotentInspect
Check bundle publish readiness. Returns every current publish blocker without mutating the bundle, settling Coverage, or debiting credits. MANAGED_ACCOUNT_TASK_BLOCKED includes details.account_id and details.reason. Fetch GET /accounts/{account_id}/managed-subscription for the authoritative state and exact reactivation quote. A due included or active period can temporarily appear blocked until renewal is settled by cron or an approved mutation.
Inputs: id (required).
tokportal_get_bundle_videoCRead-onlyIdempotentInspect
Get video slot configuration.
Inputs: id (required), position (required).
tokportal_get_comment_pulseCRead-onlyIdempotentInspect
Get comment pulse analytics.
Inputs: to, from, post, limit, +4 more.
tokportal_get_comment_taskARead-onlyIdempotentInspect
Get a comment task. Returns one owned comment task, including whether inactive TokPortal Coverage currently blocks manager execution and the stable block reason.
Inputs: id (required).
tokportal_get_credit_balanceBRead-onlyIdempotentInspect
Get credit balance.
Inputs: no named parameters.
tokportal_get_credit_costsBRead-onlyIdempotentInspect
Get credit pricing.
Inputs: no named parameters.
tokportal_get_current_userARead-onlyIdempotentInspect
Get authenticated user.
Inputs: no named parameters.
tokportal_get_video_ad_code_requestARead-onlyIdempotentInspect
Get / poll the ad code for a video. Returns the latest ad code request for the video. The code field is null until the manager submits it (status in_review) or it is delivered (status finalized).
Inputs: id (required).
tokportal_get_video_analyticsBRead-onlyIdempotentInspect
Get single video analytics.
Inputs: id (required).
tokportal_get_warming_sessionARead-onlyIdempotentInspect
Get an Advanced Niche Warming session. Returns one Advanced Niche Warming session you own: status, per-term tasks (with 3-calendar-day dispatch in the manager's timezone, verification status, client report and proof video link), and the aggregated report on completion. Created tasks remain open until completed; they do not expire.
Inputs: id (required).
tokportal_get_webhook_endpointBRead-onlyIdempotentInspect
Get a webhook endpoint.
Inputs: id (required).
tokportal_import_bundle_videos_csvAInspect
Import video slots from CSV. Uploads a CSV file, downloads referenced media, and configures available video slots. Coverage is checked before TokPortal fetches or stores referenced media. When this bundle resolves to a delivered saved account, the account must have active TokPortal Coverage or be permanently grandfathered. A due active period can renew automatically at the account's stored rate immediately before execution. If Coverage cannot renew, no task or media mutation starts.
Inputs: id (required), file_path (required), auto_publish, idempotency_key.
tokportal_list_account_bansARead-onlyIdempotentInspect
List ban reports and appeals. Pollable list of validated ban reports for the caller's delivered accounts, covering the whole lifecycle: appeal_pending (platform appeal filed, account unavailable but NOT yet banned), appeal_accepted (account survived), appeal_refused / no_appeal_banned (confirmed ban), and the staff commercial resolution (refund / remake / no_remake with a machine-readable reason_code such as tos_ban). This is the REST counterpart of the account.banned, account.ban_appeal.submitted, account.ban_appeal.resolved and account.ban_resolution.decided webhook events. Only staff/CM-validated bans appear here — detections from TokPortal's internal health scan are never listed. Poll with the since parameter (updated_at watermark) to pick up new reports and status changes.
Inputs: page, since, status, per_page, +3 more.
tokportal_list_account_bundlesBRead-onlyIdempotentInspect
List bundles for a delivered account.
Inputs: id (required), page, status, per_page.
tokportal_list_accountsBRead-onlyIdempotentInspect
List delivered accounts.
Inputs: page, banned, country, per_page, +1 more.
tokportal_list_account_video_analyticsARead-onlyIdempotentInspect
List post analytics for an account.
Inputs: id (required), page, sort_by, per_page, +1 more.
tokportal_list_account_warming_sessionsARead-onlyIdempotentInspect
List Advanced Niche Warming sessions for an account. Lists Advanced Niche Warming sessions (newest first) for a saved account you own, including per-term tasks, per-term reports, proof links, and the aggregated session report when completed. Tasks unlock over 3 calendar days in the manager's timezone and, once created, do not expire.
Inputs: id (required).
tokportal_list_analytics_account_commentsBRead-onlyIdempotentInspect
List comments for an account post.
Inputs: id (required), limit, postId, trackedPostId.
tokportal_list_analytics_account_raw_snapshotsARead-onlyIdempotentInspect
List raw account analytics snapshots. Returns owner-scoped stored raw analytics payloads for a saved account. Full analytics tier only.
Inputs: id (required), to, from, limit, +1 more.
tokportal_list_analytics_post_raw_snapshotsARead-onlyIdempotentInspect
List raw post analytics snapshots. Returns owner-scoped stored raw analytics payloads for a tracked post. Full analytics tier only.
Inputs: id (required), to, from, limit, +1 more.
tokportal_list_bundlesCRead-onlyIdempotentInspect
List bundles.
Inputs: page, status, per_page, platform, +3 more.
tokportal_list_bundle_videosARead-onlyIdempotentInspect
List bundle video slots.
Inputs: id (required).
tokportal_list_comment_tasksARead-onlyIdempotentInspect
List comment tasks. Lists owned comment tasks. execution_blocked and execution_block_reason identify tasks paused by inactive TokPortal Coverage; reads remain available while execution is paused.
Inputs: page, status, per_page, saved_account_id.
tokportal_list_comment_task_verificationsARead-onlyIdempotentInspect
List comment task verification events. Lists verifier attempts for one owned task. This read remains available while TokPortal Coverage pauses task execution.
Inputs: id (required).
tokportal_list_countriesARead-onlyIdempotentInspect
List available countries.
Inputs: no named parameters.
tokportal_list_credit_transactionsCRead-onlyIdempotentInspect
List credit transactions.
Inputs: page, date_to, per_page, date_from.
tokportal_list_platformsBRead-onlyIdempotentInspect
List available platforms.
Inputs: no named parameters.
tokportal_list_webhook_deliveriesBRead-onlyIdempotentInspect
List webhook deliveries.
Inputs: id (required), page, success, per_page, +1 more.
tokportal_list_webhook_endpointsCRead-onlyIdempotentInspect
List webhook endpoints.
Inputs: page, event, enabled, per_page.
tokportal_list_webhook_eventsARead-onlyIdempotentInspect
List webhook event catalog. Returns the supported webhook event types, delivery envelope, signature scheme, and example payloads. This endpoint is public so teams can inspect webhook contracts before creating an API key.
Inputs: no named parameters.
tokportal_patch_bundle_videoAInspect
Patch video metadata or schedule. When this bundle resolves to a delivered saved account, the account must have active TokPortal Coverage or be permanently grandfathered. A due active period can renew automatically at the account's stored rate immediately before execution. If Coverage cannot renew, no task or media mutation starts.
Inputs: id (required), body (required), position (required), idempotency_key.
tokportal_publish_all_bundle_videosAInspect
Publish all configured videos on an active bundle. When this bundle resolves to a delivered saved account, the account must have active TokPortal Coverage or be permanently grandfathered. A due active period can renew automatically at the account's stored rate immediately before execution. If Coverage cannot renew, no task or media mutation starts.
Inputs: id (required), idempotency_key.
tokportal_publish_bundleAInspect
Publish a bundle. Publishes a fully configured bundle. When this bundle resolves to a delivered saved account, the account must have active TokPortal Coverage or be permanently grandfathered. A due active period can renew automatically at the account's stored rate immediately before execution. If Coverage cannot renew, no task or media mutation starts.
Inputs: id (required), idempotency_key.
tokportal_publish_bundle_videoAInspect
Publish one video slot. When this bundle resolves to a delivered saved account, the account must have active TokPortal Coverage or be permanently grandfathered. A due active period can renew automatically at the account's stored rate immediately before execution. If Coverage cannot renew, no task or media mutation starts.
Inputs: id (required), position (required), idempotency_key.
tokportal_reactivate_account_managed_subscriptionAInspect
Reactivate TokPortal Coverage. Reactivates Coverage from an explicit GET snapshot. Reactivation is free while the current billing period is already paid or included; Coverage benefits and tasks remain paused until reactivation. At and after current_period_end, the endpoint accepts the effective lapsed state even if recorded_status has not yet been updated by the renewal worker, and charges exactly the projected unpaid periods without adding an extra period. The expected credits, period end, and lock version are checked atomically before any debit or task resume. Scheduled videos receive new future dates while preserving their cadence.
Inputs: id (required), body (required), idempotency_key.
tokportal_refresh_account_analyticsBInspect
Refresh account analytics. Backward-compatible account analytics refresh path. Supports forced refresh and post import options. Refresh is blocked for revealed/detached, banned or inactive-Coverage accounts; permanently grandfathered accounts remain eligible.
Inputs: id (required), body (required), idempotency_key.
tokportal_refresh_analytics_accountAInspect
Refresh analytics account. Refreshes an owner-scoped account through Analytics v2. Refresh is blocked for revealed/detached, banned or inactive-Coverage accounts; permanently grandfathered accounts remain eligible.
Inputs: id (required), body (required), idempotency_key.
tokportal_request_bundle_account_correctionsAInspect
Request account corrections. Moves an in-review account back to pending corrections with reviewer feedback.
Inputs: id (required), body, fields, comment, +1 more.
tokportal_request_bundle_video_correctionsBInspect
Request video corrections. When this bundle resolves to a delivered saved account, the account must have active TokPortal Coverage or be permanently grandfathered. A due active period can renew automatically at the account's stored rate immediately before execution. If Coverage cannot renew, no task or media mutation starts.
Inputs: id (required), position (required), body, fields, +2 more.
tokportal_reset_bundle_videoBDestructiveInspect
Reset one video slot. When this bundle resolves to a delivered saved account, the account must have active TokPortal Coverage or be permanently grandfathered. A due active period can renew automatically at the account's stored rate immediately before execution. If Coverage cannot renew, no task or media mutation starts.
Inputs: id (required), position (required), idempotency_key.
tokportal_retrieve_account_verification_codeAInspect
Retrieve latest account verification code. Retrieving a verification code is the same irreversible first-access event as revealing credentials. Its policy is determined by this saved account's created_at timestamp against the immutable managed_pricing_new_customer_cutover_at value, never by the workspace action-pricing cohort or August 14 grace deadline. A saved account created before the cutoff permanently keeps the prior API contract: 0 credits, no new versioned acknowledgment body required, no TokPortal detachment, existing task access remains available, and support plus ban coverage end after access. A saved account created at or after the cutoff follows the managed policy: normally 150 credits, or the stored $10 legacy / $15 new per-30-day rate when Account Owning is already admin-approved. Managed access permanently detaches the account, makes it read-only, and ends TokPortal Coverage, task access, analytics updates, support, ban protection, replacement, refunds, compensation and credit restoration. For a new-policy account, missing explicit acceptance fails with 428 and returns the exact account-specific terms, price and policy version. A changed quote returns 409 before any debit or reveal. Reaching the Account Owning eligibility threshold only submits an admin review request; it never activates the agreement automatically. While approval is pending, reveal remains available for 150 credits on a post-cutoff account. Do not send Idempotency-Key: this response contains a verification secret and is never stored in the replay ledger. A request that includes the header is rejected before any ledger claim, reveal, debit, or inbox access with IDEMPOTENCY_KEY_NOT_ALLOWED_FOR_SENSITIVE_RESPONSE (400). After an uncertain transport result, fetch the safe account state before deciding whether to call this endpoint again without the header.
Inputs: id (required), body.
tokportal_retry_webhook_deliveryAInspect
Retry a webhook delivery. Resends the stored webhook payload to the endpoint's current URL with a fresh TokPortal-Signature header. The event ID is preserved so receivers can keep idempotent processing.
Inputs: id (required), delivery_id (required), idempotency_key.
tokportal_reveal_account_credentialsBInspect
Reveal delivered account credentials. The first credential or verification-code access is priced from this saved account's created_at timestamp against the immutable managed_pricing_new_customer_cutover_at value, never from the workspace action-pricing cohort or August 14 grace deadline. A saved account created before the cutoff permanently keeps the prior API contract: the reveal costs 0 credits, requires no new versioned acknowledgment body, and is irreversible; support and ban coverage end, but the account is not detached and existing TokPortal task access remains available. A saved account created at or after the cutoff follows the managed policy and requires the explicit versioned acknowledgment handshake: normally 150 credits, or the stored $10 legacy / $15 new per-30-day rate when Account Owning is already admin-approved. Crossing the Account Owning eligibility threshold only submits an admin review request and never activates it automatically. While approval is pending, reveal remains available for 150 credits on a post-cutoff account. Under the managed policy the charge is final and non-refundable, and reveal permanently detaches the account, makes it read-only, and ends TokPortal Coverage, all task access, analytics updates, support, ban protection, replacement, refunds, compensation and credit restoration. TokPortal is not responsible for later access, performance, reach, security, restrictions or bans. The debit or Account Owning activation, reveal marker and Coverage shutdown commit atomically. Previously revealed accounts are not charged a second time. Do not send Idempotency-Key: this response contains credentials and is never stored in the replay ledger. A request that includes the header is rejected before any ledger claim, reveal, debit, or secret access with IDEMPOTENCY_KEY_NOT_ALLOWED_FOR_SENSITIVE_RESPONSE (400). After an uncertain transport result, fetch the safe account state before deciding whether to call this endpoint again without the header.
Inputs: id (required), body.
tokportal_rewarm_accountAInspect
Order Advanced Niche Warming (rewarm) on a delivered account. Starts an Advanced Niche Warming session on a saved account: for each provided term the manager screen-records a session that opens on the account profile (handle visible), searches the term on the account's platform, watches videos from the results, engages with them (likes/saves) and leaves a comment. Every recording is verified before completion. The standard rate is 5 credits per term, charged per target and never per day (3-30 terms, multiples of 3). GET /credit-costs returns the effective rate; the announced legacy grace window closed on 2026-08-14T11:00:00Z. Requires active TokPortal Coverage, a routable active account manager backed by a non-cancelled support order, TikTok or Instagram, and no already-active warming session. A completed bundle remains eligible. Terms are split evenly over 3 calendar days in the manager's timezone; earlier-day tasks remain available until completed and sessions with tasks do not expire.
Inputs: id (required), body (required), idempotency_key.
tokportal_test_webhook_endpointAInspect
Send a test webhook. Sends a signed webhook.test event to the endpoint and records the delivery result.
Inputs: id (required), idempotency_key.
tokportal_unpublish_bundleBDestructiveInspect
Unpublish a bundle.
Inputs: id (required), idempotency_key.
tokportal_unschedule_bundle_videoBDestructiveInspect
Unschedule one video slot. When this bundle resolves to a delivered saved account, the account must have active TokPortal Coverage or be permanently grandfathered. A due active period can renew automatically at the account's stored rate immediately before execution. If Coverage cannot renew, no task or media mutation starts.
Inputs: id (required), position (required), idempotency_key.
tokportal_update_account_commenting_profileAInspect
Update account commenting profile. Updates client-owned commenting/autopilot profile fields for a delivered account. The account must belong to the API key owner and must have active TokPortal Coverage, unless it is permanently grandfathered. Revealed/detached, banned, paused, lapsed and unrecoverable accounts are read-only.
Inputs: id (required), body (required), idempotency_key.
tokportal_update_bundleAInspect
Update bundle settings. Updates mutable bundle metadata such as title, external_ref, and auto_finalize_videos.
Inputs: id (required), body (required), idempotency_key.
tokportal_update_current_user_settingsAInspect
Update safe workspace settings. Updates client-owned workspace profile fields used by Operator context. Does not expose auth, role, credit, staff, or manager settings.
Inputs: body (required), idempotency_key.
tokportal_update_webhook_endpointCInspect
Update a webhook endpoint.
Inputs: id (required), body (required), idempotency_key.
tokportal_upload_imageAInspect
Create an image upload URL. Returns a short-lived signed upload URL and upload token. Do not send Idempotency-Key. The successful response contains a secret and is never stored in the replay ledger. A request with the header is rejected with IDEMPOTENCY_KEY_NOT_ALLOWED_FOR_SENSITIVE_RESPONSE (400) before any ledger claim or operation execution.
Inputs: body (required).
tokportal_upload_image_directBInspect
Upload an image file directly. Uploads multipart/form-data directly through TokPortal and returns storage details. HEIF/HEIC may be converted to JPEG.
Inputs: bundle_id (required), file_path (required), purpose, idempotency_key.
tokportal_upload_image_from_urlAInspect
Import an image from URL. Fetches a public direct image URL and stores it permanently in TokPortal storage.
Inputs: body (required), idempotency_key.
tokportal_upload_videoAInspect
Create a video upload URL. Returns a short-lived presigned upload capability. Do not send Idempotency-Key. The successful response contains a secret and is never stored in the replay ledger. A request with the header is rejected with IDEMPOTENCY_KEY_NOT_ALLOWED_FOR_SENSITIVE_RESPONSE (400) before any ledger claim or operation execution.
Inputs: body (required).
tokportal_upload_video_directBInspect
Upload a video file directly. Uploads multipart/form-data directly through TokPortal and returns the public video URL.
Inputs: bundle_id (required), file_path (required), idempotency_key.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 91 tools
Most tools target distinct resources, but there are multiple nearly interchangeable analytics endpoints (refresh_account_analytics vs refresh_analytics_account; get_account_analytics vs get_analytics_account) that an agent could easily confuse. The sheer volume of similarly structured bundle, account, and upload tools also makes misselection likely despite detailed descriptions.
Tool names consistently follow a tokportal_ + verb_noun snake_case pattern, which is a strong convention. Minor inconsistencies exist, such as swapped noun order in refresh_account_analytics vs refresh_analytics_account and get_account_analytics vs get_analytics_account, plus a few singular/plural mismatches.
With 91 tools, this is far beyond the reasonable 3-15 range for a single MCP server and well past the 50+ extreme threshold. Even if every endpoint is individually useful, the count overwhelms an agent's tool-selection space.
The surface covers extensive lifecycles for bundles, accounts, analytics, comment tasks, webhooks, uploads, and warming, including corrections, finalization, and retries. There are minor gaps (e.g., no remove_video_slots or bundle deletion), but agents can generally complete workflows without dead ends.
Related MCP Connectors
Official MCP server for subfeed.app — the cloud for agents. 15+ tools for AI agents to register, build, and deploy other agents. Zero human required. Start here: subfeed.app/skill.md
Hosted MCP server for DataLikers — Instagram & TikTok data API. 51 tools: Instagram user search by demographics (gender/age/race/country/city), profiles, bulk lookup, engagement, posts & reels, comments, hashtags, locations, stories, highlights, music, business accounts, top users; TikTok users, videos, comments, hashtags, playlists and top charts. Streamable HTTP, Bearer API key. Free tier: 100 requests on signup at https://datalikers.com/p/1by27bwg
Official MCP server for Agentwork — delegate tasks to AI agents with human-in-the-loop
Official MCP server for Lovable, the AI-powered full-stack app builder.
Related MCP Servers
- AlicenseBqualityNot gradedmaintenanceA comprehensive MCP server that enables AI assistants to search, download, and analyze TikTok content while also performing active tasks like publishing videos and interacting with posts. It provides full automation capabilities for TikTok through browser session management and anti-detection features.122MIT

Publora MCP Serverofficial
AlicenseBqualityCmaintenanceOfficial MCP server for Publora that enables AI assistants to schedule posts, manage accounts, and retrieve analytics across multiple social media platforms through natural language.1816 npm6MIT- AlicenseBqualityDmaintenanceOfficial MCP server for ZapifyAPI, providing AI agents access to 32 tools across image conversion, text analysis, network diagnostics, developer utilities, and data conversion.3213 npmMIT
- AlicenseAqualityDmaintenanceMCP server for TikTok that publishes videos to your own TikTok account and retrieves video performance metrics through TikTok's official Content Posting and Display APIs.61MIT