Tool catalogue
The tools an assistant can call, and which of them spend your money.
Read-only tools
This group is safe: nothing changes, nothing is charged.
| Tool | Returns | Inputs |
|---|---|---|
list_channels | Connected channels and whether they can publish | limit |
get_credit_balance | Spendable credits and the part currently held | — |
list_sources | Feeds being scanned on a schedule | limit |
list_videos | Account videos, newest first; filter by channel to see its publishing history | limit, status, channelIds |
get_video | Render state, download link, credits charged, per-channel outcome | videoId |
list_campaigns | Campaigns rendering and publishing on a schedule | limit |
get_campaign | State, credits spent, next slot time | campaignId |
limit tops out at 50 and defaults to 10, so one long list cannot eat the assistant's context window.
History tools
Also read-only. Used when you ask where credits went, who called what, or how posted videos are doing.
| Tool | Returns | Inputs |
|---|---|---|
list_credit_transactions | Every balance change (top-up, charge, refund, revoke) with the balance after it | type, videoId, from, to, page, limit |
list_usage_logs | API and MCP call history: operation, result, error code, calling key or app | channel, outcome, apiKeyId, from, to, page, limit |
get_usage_stats | Total calls, error rate, p95 response time over time and the most called operations | channel, apiKeyId, from, to, timeZone |
get_analytics_overview | Views and engagement across channels over 30 days | channelIds |
list_video_analytics | Per-video stats for posted videos, read from the platform itself | channelIds, sort, limit |
list_campaign_slots | A campaign's render-and-post slots: posted, failed, upcoming | campaignId, page, limit |
list_source_items | Items a news source has scanned, and which became videos | sourceId, page, limit |
Every tool call an assistant makes is recorded; see it on the AI Agent or API keys page.
Tools that spend credits
| Tool | Does | Inputs |
|---|---|---|
create_video | Renders a video from a script and images, then publishes to the chosen channels | title, script, caption, hashtags, channelIds, voiceId, mediaUrls, scheduleAt, keepAsReady |
publish_video | Publishes a rendered video to a real channel | videoId, scheduleAt |
create_ad_video | Ad video from a template (find templates with list_ad_video_templates) | templateId, productImageKeys, fieldValues, connectionIds |
create_talk_video | Talk video built scene by scene from voiceover lines | moduleKey, scenes, voiceId, connectionIds |
create_storytelling_video | Storytelling video stitched from clips | script, clips, voiceId, connectionIds |
create_ai_video | AI video from a prompt or an effect (find effects with list_ai_effects) | aiPrompt, effectScene, aiImageKeys, connectionIds |
render_comic | Renders a saved comic (created with create_comic_from_story) into a video | comicId, channelIds |
create_ai_presenter_video | AI presenter video in a studio, 10 seconds per scene (dialogue from write_ai_presenter_script, or let the model write it) | presenterImageKey, style, topic, scenes, channelIds |
create_video_clone | Builds a new video in the style of a sample analysed with analyze_video_clone | analysisId, inputImageKeys, sceneCount, channelIds |
- AI presenter and video clone run in the background: the tool returns a
jobIdand the assistant callsget_generation_jobfor the result.write_ai_presenter_scriptandanalyze_video_cloneare preparation steps and spend no credit. channelIdscome fromlist_channels; assistants usually call that first.keepAsReady: truerenders and stops, so you can review before asking forpublish_video. This is the pattern to prefer when the assistant writes the script.- Omitting
scheduleAtonpublish_videopublishes now.
These two spend real credits and post to real channels
Their descriptions tell the assistant to confirm with you first, but that is guidance, not a fence. Asking get_credit_balance first is a good habit.
The assistant cannot choose the billing model and cannot set server-side storage paths — both are pinned by the server, exactly as on the API key path.
Campaign controls
| Tool | Does | Reversible? |
|---|---|---|
pause_campaign | Stops rendering and publishing until resumed | Yes |
resume_campaign | Starts again — and spends credits again | Yes |
Calling either twice equals calling it once. Both re-read the campaign after the change, so the assistant reports the new state rather than the old one.
Deliberately absent
There is no delete_video, delete_media, delete_source or cancel_campaign. No channel connection, no plan purchase, no top-up.
That is not an oversight. A vague sentence turning into a delete has no undo. Do those in the web app, or through an API key where you control each call.
Things to try saying
How many credits do I have left? List my 5 most recent videos and tell me which ones failed. Which of my channels has the most followers? Pause the "Personal finance — October" campaign. Write a 30-second script about compound interest, create the video but don't publish it — I want to review it first.
That last one is the pattern to prefer: the assistant calls create_video with keepAsReady, you review the render, and only then ask it to publish.
