Agents × jobs · Hermes Agent

Post 100 TikTok videos a day with Hermes Agent

Post 100+ TikTok videos a day from Hermes Agent: spread slots across ≥34 TokPortal bundles (3 videos/day/bundle cap), batch-configure, publish, track fi…

Posting 100 videos a day from Hermes Agent is a scheduling problem, not an API problem: TokPortal caps each bundle at 3 videos per calendar day, so 100 posts/day means at least 34 accounts each carrying 3 dated slots, filled with batch_configure_bundle_videos or import_bundle_videos_csv and pushed with publish_bundle. Human managers post through the native app on real, geo-targeted accounts, so there is no per-account OAuth, no app review and no official 6-requests-per-minute token limit in the loop.

Connect TokPortal to Hermes Agent

Hermes Agent is an autonomous agent: Nous Research's open-source agent runtime; MCP servers are declared under mcp_servers in ~/.hermes/config.yaml.

~/.hermes/config.yaml:

mcp_servers:
  tokportal:
    url: "https://app.tokportal.com/api/ext/mcp"
    headers:
      Authorization: "Bearer sk_..."

Or the local stdio form:

mcp_servers:
  tokportal:
    command: "npx"
    args: ["-y", "tokportal-mcp"]
    env:
      TOKPORTAL_API_KEY: "sk_..."

Reload with /reload-mcp. Use tools.include to expose only the read-only tokportal_get_* / tokportal_list_* tools to an unattended agent.

Snippet status: verified against Hermes Agent's documentation (source).

Once connected, sanity-check the setup with a read-only call — "What is my TokPortal credit balance?" should trigger tokportal_get_credit_balance. Every tool runs as your TokPortal account and spends your credits; read-only tools (get_*, list_*, export_*) never do.

How it works

Start from the cap: target_publish_date accepts at most 3 videos per day per bundle and rejects the 4th with VIDEOS_PER_DAY_EXCEEDED. So the agent first decides on a fleet size — 34 accounts for 100/day, 50 for 150/day — and either reuses delivered accounts (videos_only bundles pointing at an account_id) or orders new ones with create_bundles_bulk (accounts_count, videos_per_account). One bundle of 90 videos on one account is 30 days of posting; ten bundles of 90 spread over ten accounts is 30 posts a day.

Media comes first: upload_video returns a presigned URL you PUT the file to (or use upload_video_direct for a multipart upload from a script), and the resulting public_url goes into each slot's video_url. Then the agent fills slots. batch_configure_bundle_videos accepts up to 500 items in one call with position, video_type, description, target_publish_date, video_url and optional tiktok_sound_url, ai_content_disclaimer, disclose_as_ads. From a spreadsheet, import_bundle_videos_csv does the same with one file. When a bundle passes get_bundle_publish_readiness, publish_bundle sends it to the manager, and every video moves configured → published → in_review → finalized, with video.published / video.finalized webhooks if you register an endpoint. auto_finalize_videos (default true) closes the review loop after 72 hours without you.

Because managers post by hand, TokPortal does not offer minute-level timing; you schedule per day and the manager posts within that day. That is the trade for accounts that behave like local creators rather than API-flagged publishers.

Run it from Hermes Agent

Hermes Agent runs autonomously, so the prompt below is written as a goal with an explicit stop before the first write tool. Give it the goal, let it read (get_*, list_*), then confirm before it continues to publish_bundle.

Tool sequence

  1. tokportal_get_credit_costs — 2 credits per video slot at the standard rate; multiply by the daily volume before committing.
  2. tokportal_list_accounts — Find delivered accounts to reuse (platform=tiktok, banned=false); each account = 3 slots/day.
  3. tokportal_create_bundles_bulk — Or order the fleet: platforms:["tiktok"], country, accounts_count, videos_per_account (≤500).
  4. tokportal_create_bundle — For existing accounts: bundle_type: videos_only, account_id, videos_quantity.
  5. tokportal_upload_video — Presigned upload per file → public_url used as video_url (or upload_video_direct for multipart).
  6. tokportal_batch_configure_bundle_videos — Up to 500 slots in one call; the server enforces the 3/day cap per bundle and returns per-item errors.
  7. tokportal_import_bundle_videos_csv — Alternative: one CSV per bundle with position, description, target_publish_date, video_url…
  8. tokportal_get_bundle_publish_readiness — Ensures every slot has media and a date before publishing.
  9. tokportal_publish_bundle — Sends the bundle to the manager; repeat per bundle.
  10. tokportal_create_webhook_endpoint — Subscribe to video.published, video.finalized, video.pending_corrections to track the 100 daily posts without polling.

Prompt to paste

Use the TokPortal MCP tools. Goal: 100 TikTok posts per day in the US for 30 days.
1) list_accounts (tiktok, US, banned=false) and count how many I can reuse.
2) Compute how many extra accounts are needed given 3 videos/day/bundle and quote it via get_credit_costs.
3) Draft the create_bundles_bulk and batch_configure_bundle_videos payloads for the first bundle
   (dates 2026-09-01 → 2026-09-30, 3 per day) and stop before publishing.

Send the prompt to Hermes; MCP tools are namespaced by server, so look for tokportal_* in the tool list after /reload-mcp.

REST equivalent (same operations, X-API-Key header, base URL https://app.tokportal.com/api/ext)

# Fleet: 34 accounts × 90 slots (30 days × 3/day)
curl -X POST https://app.tokportal.com/api/ext/bundles/bulk \
  -H "X-API-Key: sk_..." -H "Content-Type: application/json" -H "Idempotency-Key: $(uuidgen)" \
  -d '{"platforms":["tiktok"],"country":"US","accounts_count":34,"videos_per_account":90}'

# Fill one bundle's slots (3 per day)
curl -X PUT https://app.tokportal.com/api/ext/bundles/BUNDLE_ID/videos/batch \
  -H "X-API-Key: sk_..." -H "Content-Type: application/json" \
  -d '{"videos":[
    {"position":1,"video_type":"video","description":"Day 1 – hook A #fyp","target_publish_date":"2026-09-01","video_url":"https://.../a.mp4"},
    {"position":2,"video_type":"video","description":"Day 1 – hook B","target_publish_date":"2026-09-01","video_url":"https://.../b.mp4"},
    {"position":3,"video_type":"video","description":"Day 1 – hook C","target_publish_date":"2026-09-01","video_url":"https://.../c.mp4"}
  ]}'

curl -X POST https://app.tokportal.com/api/ext/bundles/BUNDLE_ID/publish -H "X-API-Key: sk_..."

Key parameters

ParameterValuesNotes
target_publish_dateYYYY-MM-DDMax 3 videos per day per bundle → VIDEOS_PER_DAY_EXCEEDED on the 4th.
videos_quantity / videos_per_account0–500Slots per bundle; add more later with add_video_slots.
accounts_count1–100 per bulk call100 posts/day needs ≥34 accounts.
video_typevideo · carousel · storydescription required for video/carousel (≤2200 chars).
video_urlURIFrom upload_video / upload_video_direct public_url, or any public URL.
tiktok_sound_urlURIManager uses this sound; volume fields cost 1 credit.
auto_finalize_videosboolean (default true)Auto-closes review after 72 h in in_review.

Full schemas: OpenAPI reference · openapi.json.

Example configurations

30-day schedule on an existing account

{"bundle_type":"videos_only","account_id":"ACCOUNT_UUID","videos_quantity":90,"title":"Sept schedule"}

Batch item with sound and AI label

{"position":7,"video_type":"video","description":"POV: first day at the gym #gymtok",
 "target_publish_date":"2026-09-03","video_url":"https://pub-xxx.r2.dev/videos/b/7.mp4",
 "tiktok_sound_url":"https://www.tiktok.com/music/original-sound-7300000000000000000",
 "ai_content_disclaimer":true}

Webhook for tracking

{"url":"https://hooks.example.com/tokportal","events":["video.published","video.finalized","video.pending_corrections"]}

Credits

Video slots cost 2 credits each at the standard rate (100 posts/day ≈ 200 credits/day), plus 32 credits per new account if you order the fleet with create_bundles_bulk. Sound volume control adds 1 credit per video. Read the live rates with get_credit_costs; see Credits & Pricing.

Why not the official API

The official TikTok Content Posting API needs one OAuth grant per account with the video.publish scope, limits each user access token to 6 requests per minute, keeps every post private until your app passes TikTok's audit, and returns spam_risk_too_many_posts when a user hits the (unpublished) daily cap — commonly reported at roughly 15–25 posts per account per day. Running 100 posts a day that way means dozens of audited OAuth grants and constant cap handling. TokPortal moves the volume onto many human-operated accounts, three dated posts each per day.

As of August 2026 the first-party routes look like this. TikTok's Content Posting API (Direct Post) requires each account owner to authorize your app with the video.publish scope, limits every user access token to 6 requests per minute, keeps all posts from unaudited apps in private viewing mode until TikTok audits the app, and enforces an unpublished daily post cap per user (spam_risk_too_many_posts) that integrators commonly report at roughly 15–25 posts per account per day. Meta's Instagram Content Publishing API allows 100 API-published posts per professional account in a 24-hour moving window and only for accounts you own and connect via OAuth. Neither creates accounts, warms them, or reports third-party bans. TokPortal is human-operated infrastructure: accounts created and run by managers in the target country, one X-API-Key for all of them, dated slots (max 3 per day per bundle) instead of per-account tokens.

Sources: TikTok Content Posting API – Direct Post, TikTok Content Posting API – Get started, Instagram Platform – Content Publishing.

FAQ

Why exactly 3 videos per day per bundle?

It is the platform-safe cadence TokPortal enforces since 2026-08-16 to keep accounts healthy; the cap counts every non-cancelled slot with a date on that day. Scale horizontally with more accounts, not more posts per account.

Can the agent set the posting hour?

No — target_publish_date is a day. The manager posts within that day in local time; if you need a specific hour, say so in editing_instructions and it is best-effort.

What happens if a manager misses a day?

The slot stays configured/published and is carried over; you can unschedule_bundle_video and reconfigure the date, or request_bundle_video_corrections. Late posts never silently disappear.

Is there a request rate limit on my side?

Yes, 120 requests/minute per API key (X-RateLimit-* headers, 429 + Retry-After). Batch calls (500 items) and CSV import keep you far below it even at 100 posts/day.

Also works with

All 25 agents for "Post 100 TikTok videos a day"

Other jobs with Hermes Agent